第7章面向对象软件工程的概念 传统软件开发方法的局限性 面向对象的过程模型 面向对象的概念 几种面向对象方法 统一建模语言一UML 安交通大学刘海岩
西安交通大学 刘海岩 1 第7章 面向对象软件工程的概念 ⚫ 传统软件开发方法的局限性 ⚫ 面向对象的过程模型 ⚫ 面向对象的概念 ⚫ 几种面向对象方法 ⚫ 统一建模语言-UML
7.1传统软件开发方法的局限性 传统的软件工具、软件技术和抽象层次越来越难 以适应大规模复杂软件系统的开发特点。软件能力问 题已经成为制约软件发展的因素。 软件工程自70年代以来,有力的推动了软件能力 的解决。自顶向下的分析与设计的方法、软件项目的 工程化管理、软件工具和开发环境、软件质量保证等 都对软件的发展起了非常重要的作用。传统的软件开 发方法在当时的软件工程中起了主导作用,随着系统 复杂性、多变性增强,传统方法的缺陷就显露了出来: (1)面向过程为主。系统围绕着由计算机来实现 功能的复杂过程而建立,在分析和解决问题时与人们 对现实世界的认识有一定差距 安交通大学刘海岩
西安交通大学 刘海岩 2 7.1传统软件开发方法的局限性 传统的软件工具、软件技术和抽象层次越来越难 以适应大规模复杂软件系统的开发特点。软件能力问 题已经成为制约软件发展的因素。 软件工程自70年代以来,有力的推动了软件能力 的解决。自顶向下的分析与设计的方法、软件项目的 工程化管理、软件工具和开发环境、软件质量保证等 都对软件的发展起了非常重要的作用。传统的软件开 发方法在当时的软件工程中起了主导作用,随着系统 复杂性、多变性增强,传统方法的缺陷就显露了出来: (1)面向过程为主。系统围绕着由计算机来实现 功能的复杂过程而建立,在分析和解决问题时与人们 对现实世界的认识有一定差距
(2)软件结构稳定性差。需求分析阶段重点是功能模型 难以彻底明确全部需求。设计阶段的软件体系结构是基于 系统功能建立的。每个模块完成一个基本功能,多个模块 的组合完成一个整体功能。一个模块的变动可能会影响到 多个模块。用户的需求大多针对功能,功能的变化会引起 体系结构的变化,不利于系统的维护 (3)软件开发的抽象力度小。解决问题的类型一般用于 “输入-处理-输出”为核心的数据处理系统,不适应于复 杂的实时、交互、事件驱动、分布式等新型应用的系统开 发 (4)软件重用未能得到很好的解决。传统的方法一般从 零”开始开发软件,数据与操作作为相互分离的实体来 考虑,使软件的可复用性差。重用的实施仅仅是公用模块 的调用。面向对象的封装性、继承性、多态性等特性支持 软件重用且重用的粒度大。软件的重用导致更快地、高质 量地开发软件,为软件工业化生产奠定基础。 安交通大学刘海岩
西安交通大学 刘海岩 3 (2)软件结构稳定性差。需求分析阶段重点是功能模型, 难以彻底明确全部需求。设计阶段的软件体系结构是基于 系统功能建立的。每个模块完成一个基本功能,多个模块 的组合完成一个整体功能。一个模块的变动可能会影响到 多个模块。用户的需求大多针对功能,功能的变化会引起 体系结构的变化,不利于系统的维护。 (3)软件开发的抽象力度小。解决问题的类型一般用于 “输入-处理-输出”为核心的数据处理系统,不适应于复 杂的实时、交互、事件驱动、分布式等新型应用的系统开 发。 (4)软件重用未能得到很好的解决。传统的方法一般从 “零”开始开发软件,数据与操作作为相互分离的实体来 考虑,使软件的可复用性差。重用的实施仅仅是公用模块 的调用。面向对象的封装性、继承性、多态性等特性支持 软件重用且重用的粒度大。软件的重用导致更快地、高质 量地开发软件,为软件工业化生产奠定基础
输入过程1 输出过程2 数据实体 过程3 传统方法数据与过程是分离的 消息 对象 属于该对象 消息 的数据 处理数据的方法 对象把数据和处理数据的方法封状成一个单元
西安交通大学 刘海岩 4 传统方法数据与过程是分离的 输入 过程1 输出 过程2 过程3 数据实体 属于该对象 的数据 对象 处理数据的方法 消息 消息 对象把数据和处理数据的方法封状成一个单元
传统方法与面向对象方法的比较 传统方法 面向对象方法 系统是过程的集合 系统是交互对象的集合 过程与数据实体交互 对象与人或其它对象交互 过程接受输入并产生输出 对象发送与响应消息 安交通大学刘海岩
西安交通大学 刘海岩 5 传统方法与面向对象方法的比较 面向对象方法 系统是交互对象的集合 对象与人或其它对象交互 对象发送与响应消息 传统方法 系统是过程的集合 过程与数据实体交互 过程接受输入并产生输出