第九章面向对象方法学引论 传统方法学的缺点 软件工程的新途径 面向对象的基本概念 面向对象建模 对象模型 动态模型 功能模型
第九章 面向对象方法学引论 •传统方法学的缺点 •软件工程的新途径 •面向对象的基本概念 •面向对象建模 –对象模型 –动态模型 –功能模型
传统方法学的缺点 几十年的实践证明,传统的生命周期方法 学不能消除软件危机,软件产业仍然存在 以下问题 生产率的提高仍然不能满足日益增长的软件 需求。 软件重用程度很低。 软件维护十分艰难。 软件需求很难把握,目标系统往往不能真正 满足用户的需求
传统方法学的缺点 • 几十年的实践证明,传统的生命周期方法 学不能消除软件危机,软件产业仍然存在 以下问题: – 生产率的提高仍然不能满足日益增长的软件 需求。 – 软件重用程度很低。 – 软件维护十分艰难。 – 软件需求很难把握,目标系统往往不能真正 满足用户的需求
以上问题产生的原因 僵化的瀑布模型 某些类型的系统需求是模糊的 项目参与者之间存在通信鸿沟 预先定义的需求可能是过时的 结构化技术的缺点 系统稳定性差。SA、SD的本质是功能分解,它是围绕实 现一个个处理功能的“过程”来构造系统的,而用户需 求的变化大部分是针对功能的。所以,一旦需求稍有变 化,就会引起系统结构的大变化 难以修改和扩充。SA、SD技术清楚地定义了目标系统的 边界,软件通过界面与客观世界通信 数据和操作分离和模块化的任意性使得软件可重用性差
以上问题产生的原因 • 僵化的瀑布模型 – 某些类型的系统需求是模糊的 – 项目参与者之间存在通信鸿沟 – 预先定义的需求可能是过时的 • 结构化技术的缺点 – 系统稳定性差。SA、SD的本质是功能分解,它是围绕实 现一个个处理功能的“过程”来构造系统的,而用户需 求的变化大部分是针对功能的。所以,一旦需求稍有变 化,就会引起系统结构的大变化。 – 难以修改和扩充。SA、SD技术清楚地定义了目标系统的 边界,软件通过界面与客观世界通信。 – 数据和操作分离和模块化的任意性使得软件可重用性差
软件工程的新途径 快速原型法 面向对象方法学 面向 Agent的软件工程
软件工程的新途径 • 快速原型法 • 面向对象方法学 • 面向Agent的软件工程
快速原型法 两类不同的软件系统 全部需求能够预先精确定义的软件系统 需求难以预先定义的软件系统 原型法的基本思想 快速建立一个能够反映用户主要需求的原型系统, 让用户评价是否符合其需求。如果满足需求,说 明SRS正确、完备和一致;否则,对原型系统进 行修改,再给用户评价。 用原型法开发软件的过程 抛弃原型法 演化原型法
快速原型法 • 两类不同的软件系统 – 全部需求能够预先精确定义的软件系统 – 需求难以预先定义的软件系统 • 原型法的基本思想 – 快速建立一个能够反映用户主要需求的原型系统, 让用户评价是否符合其需求。如果满足需求,说 明SRS正确、完备和一致;否则,对原型系统进 行修改,再给用户评价。 • 用原型法开发软件的过程 – 抛弃原型法 – 演化原型法
基于原型系统的两种开发模型 Behn提出的螺旋模型 分析,建原型,评价与修改; 设计,建原型,评价与修改; 程序设计,建原型,评价与修改 Gib渐增模型 完成一部分分析工作 完成一部分设计工作 完成一部分程序分析工作 建原型并评价 重复上述过程
基于原型系统的两种开发模型 • Boehm提出的螺旋模型 – 分析,建原型,评价与修改; – 设计,建原型,评价与修改; – 程序设计,建原型,评价与修改 • Gilb渐增模型 – 完成一部分分析工作 – 完成一部分设计工作 – 完成一部分程序分析工作 – 建原型并评价 – 重复上述过程
面向对象方法学 人们认识世界的三个构造法则 认识和区分对象及其属性,如一棵树和树的大小 认识和区分整体对象及其组成部分,如区分一棵树 和树枝 认识和区分不同对象类的形成,如所有树的类和所 有石头的类的形成和区分。 OO方法正好适应了以上法则 可题空间和解空间得到进一步的“拟合”,它们的 结构十分一致; 对数据和操作封装而形成一个统一体; 解空间中的对象行为更丰富,削弱了“语义断层
面向对象方法学 • 人们认识世界的三个构造法则 – 认识和区分对象及其属性,如一棵树和树的大小。 – 认识和区分整体对象及其组成部分,如区分一棵树 和树枝。 – 认识和区分不同对象类的形成,如所有树的类和所 有石头的类的形成和区分。 • OO方法正好适应了以上法则 – 问题空间和解空间得到进一步的“拟合”,它们的 结构十分一致; – 对数据和操作封装而形成一个统一体; – 解空间中的对象行为更丰富,削弱了“语义断层
What is Object-Oriented? Object orientation is an approach to software development that organizes both the problem and its solution as a collection of discrete objects It is a kind of representation that describe objects data structure and behaⅴior. It is a kind of modeling technology
What is Object-Oriented? • Object orientation is an approach to software development that organizes both the problem and its solution as a collection of discrete objects; • It is a kind of representation that describe object’s data structure and behavior. • It is a kind of modeling technology
OO方法所具有的四个要点 对象 认为客观世界是由各种对象组成的,任何事物都是 对象,复杂对象由简单对象以某种方式组成 类 把所有对象按类划分形成对象类 继承 整个系统由若干个对象类组成,类的等级形成系统 的层次结构,子类可以继承父类的相同特性 消息传递 对象之间只能通过消息传递实现相互的联系,实现 对象的“封装
OO方法所具有的四个要点 • 对象 – 认为客观世界是由各种对象组成的,任何事物都是 对象,复杂对象由简单对象以某种方式组成。 • 类 – 把所有对象按类划分形成对象类。 • 继承 – 整个系统由若干个对象类组成,类的等级形成系统 的层次结构,子类可以继承父类的相同特性。 • 消息传递 – 对象之间只能通过消息传递实现相互的联系,实现 对象的“封装
Characteristics of OO Representation Identity--name, reference, handle · Abstraction Classification Encapsulation Inheritance Polymorphism · Persistence
Characteristics of OO Representation • Identity—name, reference, handle • Abstraction • Classification • Encapsulation • Inheritance • Polymorphism • Persistence