第九章面向对象方法学引论 ■传统方法学的缺点 ■软件工程的新途 ■基本概念 ■面向对象建模 ■对象模型 ■动态模型 ■功能模型
第九章 面向对象方法学引论 ◼ 传统方法学的缺点 ◼ 软件工程的新途径 ◼ 基本概念 ◼ 面向对象建模 ◼ 对象模型 ◼ 动态模型 ◼ 功能模型
传统方法学的缺点 ■91.1存在的问题 ■9.1.2出现问题的原因
传统方法学的缺点 ◼ 9.1.1 存在的问题 ◼ 9.1.2 出现问题的原因
传统方法学的缺点 存在的问题 生产率提高的幅度远不能满足需要 ■软件重用程度很低 ■软件仍然很难维护 ■软件往往不能真正满足用户需要
传统方法学的缺点 ◼ 存在的问题 ◼ 生产率提高的幅度远不能满足需要 ◼ 软件重用程度很低 ◼ 软件仍然很难维护 ◼ 软件往往不能真正满足用户需要
传统方法学的缺点 出现问题的原因 ■瀑布模型的缺点 僵化 ■瀑布模型要求 生命周期各阶段间遵守严格的顺序 预先定义并“冻结”软件需求 ■实际情况 软件开发往往在反复实践中完成 支需釜劉获成哥龍巴的诗程,且预先定
传统方法学的缺点 ◼ 出现问题的原因 ◼ 瀑布模型的缺点 ◼ 僵化 ◼ 瀑布模型要求 ◼ 生命周期各阶段间遵守严格的顺序 ◼ 预先定义并“冻结”软件需求 ◼ 实际情况 ◼ 软件开发往往在反复实践中完成 ◼ 某些系统的需求的一个逐渐明确的过程,且预先定 义的需求到软件完成时可能已经过时
软件工程的新途径 ■921快速原型法 ■922面向对象方法学 ■92.3两种新途径的结合
软件工程的新途径 ◼ 9.2.1 快速原型法 ◼ 9.2.2 面向对象方法学 ◼ 9.2.3 两种新途径的结合
软件工程的新途径 ■快速原型法 ■适用于用户驱动的系统(即需求模糊或随时间 变化的系统) ■抛弃原型法 ■演化原型法 ■螺旋模型 渐增模型 演化原型法与传统方法最大的不同,在于它是 种高度迭代的动态方法,系统的初始版本很 早就交付用户试用
软件工程的新途径 ◼ 快速原型法 ◼ 适用于用户驱动的系统(即需求模糊或随时间 变化的系统) ◼ 抛弃原型法 ◼ 演化原型法 ◼ 螺旋模型 ◼ 渐增模型 ◼ 演化原型法与传统方法最大的不同,在于它是 一种高度迭代的动态方法,系统的初始版本很 早就交付用户试用
软件工程的新途径 面向对象方法学 特点 ■尽可能模拟人类习惯的思维方式,即问题域与求解 域在结构上尽可能一致。与传统方法相反,OOM以 数据或信息为主线,把数据和处理结合构成统 体—对象。这时程序不再是一系列工作在数据上 的函数集合,而是相互协作又彼此独立的对象的集
软件工程的新途径 ◼ 面向对象方法学 ◼ 特点 ◼ 尽可能模拟人类习惯的思维方式,即问题域与求解 域在结构上尽可能一致。与传统方法相反,OOM以 数据或信息为主线,把数据和处理结合构成统一 体 —— 对象。这时程序不再是一系列工作在数据上 的函数集合,而是相互协作又彼此独立的对象的集 合
软件工程的新途径 面向对象方法学 四要素 ■对象 object 世界由对象组成 类(l 对象可划分为类;单个对象可视为某一类的实例 继承 inheritance 类可分层,下层子类与上层父类有相同特征,称为继承 消息( message) ■对象间只能通过发送消息进行联系,外界不能处理对象的内部 数据,只能通过消息请求它进行处理(如果它提供相应消息的
软件工程的新途径 ◼ 面向对象方法学 ◼ 四要素 ◼ 对象(object) ◼ 世界由对象组成 ◼ 类 (class) ◼ 对象可划分为类;单个对象可视为某一类的实例 ◼ 继承(inheritance) ◼ 类可分层,下层子类与上层父类有相同特征,称为继承 ◼ 消息(message) ◼ 对象间只能通过发送消息进行联系,外界不能处理对象的内部 数据,只能通过消息请求它进行处理(如果它提供相应消息的 话)
软件工程的新途径 ■面向对象方法学 优点 ■与人类习惯的思维方法一致 ■稳定性好 ■可重用性好 可维护性好 ■面向对象的软稳定性好 面向对象的软件比较容易修改 比较容易理解 易于测试和调试
软件工程的新途径 ◼ 面向对象方法学 ◼ 优点 ◼ 与人类习惯的思维方法一致 ◼ 稳定性好 ◼ 可重用性好 ◼ 可维护性好 ◼ 面向对象的软稳定性好 ◼ 面向对象的软件比较容易修改 ◼ 比较容易理解 ◼ 易于测试和调试
软件工程的新途径 ■两种新途径的结合 ■瀑布模型 需求稳定少变化 对环境较熟悉(低风险) 用户很少参与开发 ■面向过程编程 ■螺旋模型 需求可能在开发早期有变化 对环境较熟悉(中风险) 用户不同程度地参与整个过程 面向对象编程OOP
软件工程的新途径 ◼ 两种新途径的结合 ◼ 瀑布模型 ◼ 需求稳定少变化 ◼ 对环境较熟悉(低风险) ◼ 用户很少参与开发 ◼ 面向过程编程 ◼ 螺旋模型 ◼ 需求可能在开发早期有变化 ◼ 对环境较熟悉(中风险) ◼ 用户不同程度地参与整个过程 ◼ 面向对象编程OOP