第二部分 面向对象的分析
第二部分 面向对象的分析
关于软件工程的补充知识 软件危机 硬件性能提高,价格则下降,应用领域迅速扩大; 要求计算机做的事越来越多,也越来越复杂; 这使计算机软件的功能、规模及复杂性与日俱增。 软件的复杂性达到了它的开发者难以控制的程度。 大系统的复杂性是小程序无法比拟的 当几十个人开发一个大型软件系统时,没有任何人能对它从全局到 细节都了如指掌。各部分的问题错纵复杂,相互影响,不可避免地 隐藏大量错误,并且没有可靠的方法能彻底发现和排除这些错误。 这种情况导致了严重的后果 软件可靠性下降;开发效率低下;维护极为困难。 这使软件开发者陷入困境,人们称之为“软件危机
关于软件工程的补充知识 软件危机 硬件性能提高,价格则下降,应用领域迅速扩大; 要求计算机做的事越来越多,也越来越复杂; 这使计算机软件的功能、规模及复杂性与日俱增。 软件的复杂性达到了它的开发者难以控制的程度。 大系统的复杂性是小程序无法比拟的。 当几十个人开发一个大型软件系统时,没有任何人能对它从全局到 细节都了如指掌。各部分的问题错纵复杂,相互影响,不可避免地 隐藏大量错误,并且没有可靠的方法能彻底发现和排除这些错误。 这种情况导致了严重的后果—— 软件可靠性下降;开发效率低下;维护极为困难。 这使软件开发者陷入困境,人们称之为“软件危机
寻求摆脱危机的出路: 程序设计方法学的研究 着眼于程序本身,研究怎样才能写出高质量的 程序。如结构化程序设计方法 软件工程学的研究 着眼于软件生产的全过程(编程只是其中的 个阶段),研究用工程学的方法来开发软件。 其它 如并发程序设计、数据结构与算法、以及编程 语言等方面的研究
寻求摆脱危机的出路: 程序设计方法学的研究 ——着眼于程序本身,研究怎样才能写出高质量的 程序。如结构化程序设计方法。 软件工程学的研究 ——着眼于软件生产的全过程(编程只是其中的一 个阶段),研究用工程学的方法来开发软件。 其它 ——如并发程序设计、数据结构与算法、以及编程 语言等方面的研究
软件工程: 软件工程的基本思想,就是用工程学的方法进行软件的开 发与维护,并对软件生产过程进行工程化的管理。 在此之前,软件的生产方式是手工作坊式的。程序员 象是一些个体的手工劳动者,程序设计被当作一种艺 术创造,而不当作是一项工程。这种生产方式只能适 应较小的程序,不能适应大型软件开发。 和其它行业的道理一样,当软件的规模和复杂性达到一定 程度时,即使有大量熟练的程序员也难以胜任它的开发任 务。需要用工程的方法来进行软件生产,这就是软件工程
软件工程: 软件工程的基本思想,就是用工程学的方法进行软件的开 发与维护,并对软件生产过程进行工程化的管理。 在此之前,软件的生产方式是手工作坊式的。程序员 象是一些个体的手工劳动者,程序设计被当作一种艺 术创造,而不当作是一项工程。这种生产方式只能适 应较小的程序,不能适应大型软件开发。 和其它行业的道理一样,当软件的规模和复杂性达到一定 程度时,即使有大量熟练的程序员也难以胜任它的开发任 务。需要用工程的方法来进行软件生产,这就是软件工程
软件生命周期(软件工程理论所揭示的一项规律) 个软件总是要经历从诞生到死亡的过程,其间需要经过 需求分析、设计、编码、测试、维护等一系列生存阶段 需求分析——分析用户需求,研究问题域,搞清楚应该建 立一个什么样的系统才能满足用户的需求。 设计—分为概要设计和详细设计。 概要设计是以需求分析的结果为依据定义系统的主要 构成成分和它们之间的关系。 详细设计是定义每个系统成分内部的构造细节。 编程——按设计的要求来编写程序,并通过调试使之能够 还行。 测试通过一系列测试用例来检验程序正确性,看它是 否能达到预期的要求 维护在系统交付使用之后,根据使用中发现的错误或 用户的需求变化,对软件进行修改
软件生命周期(软件工程理论所揭示的一项规律) 一个软件总是要经历从诞生到死亡的过程,其间需要经过 需求分析、设计、编码、测试、维护等一系列生存阶段。 需求分析——分析用户需求,研究问题域,搞清楚应该建 立一个什么样的系统才能满足用户的需求。 设计——分为概要设计和详细设计。 概要设计是以需求分析的结果为依据定义系统的主要 构成成分和它们之间的关系。 详细设计是定义每个系统成分内部的构造细节。 编程——按设计的要求来编写程序,并通过调试使之能够 运行。 测试——通过一系列测试用例来检验程序正确性,看它是 否能达到预期的要求。 维护——在系统交付使用之后,根据使用中发现的错误或 用户的需求变化,对软件进行修改
软件工程的主要内容包括: 针对软件生命周期全过程及其每个具体阶段的工程方法 技术细则、文档规范、技术支持、管理制度、人员织 组以及质量保证体系等。 每个软件开发者必须按工程的统一要求行事,不能随意地自 由发挥。 每个开发阶段都要产生健全的、符合工程规范的文档 软件产品是这些文档的总合,而不仅仅是程序。 实行软件工程的主要意义: 提高软件产品的质量 提高了软件生产率 软件工程的推行从根本上改变了软件生产中无章可循、各行 其是的混乱局面,并为软件开发从手工生产转向工业化生产 奠定了基础
软件工程的主要内容包括: 针对软件生命周期全过程及其每个具体阶段的工程方法 、技术细则、文档规范、技术支持、管理制度、人员织 组以及质量保证体系等。 每个软件开发者必须按工程的统一要求行事,不能随意地自 由发挥。 每个开发阶段都要产生健全的、符合工程规范的文档。 软件产品是这些文档的总合,而不仅仅是程序。 实行软件工程的主要意义: 提高软件产品的质量 提高了软件生产率 软件工程的推行从根本上改变了软件生产中无章可循、各行 其是的混乱局面,并为软件开发从手工生产转向工业化生产 奠定了基础
软件开发方法: 软件工程所采用的方法不是唯一的。自软件工程出现以来 ,人们已经提出了多种软件开发方法,例如: 功能分解法、 数据流法(结构化方法) 快速原型法、 信息模型法、 面向对象方法。 软件过程模型 描述软件开发过程的各项活动、角色、产品及其相互关系 的模型。例如: 瀑布模型、螺旋模型、增量模型和喷泉模型等。 不同的软件开发方法和软件开发模型要求有不同的工程体 系 从历史看,使用最多的是结构化方法和瀑布模型; 代表当前技术主流的是面向对象方法和喷泉模型
软件开发方法: 软件工程所采用的方法不是唯一的。自软件工程出现以来 ,人们已经提出了多种软件开发方法,例如: 功能分解法、 数据流法(结构化方法)、 快速原型法、 信息模型法、 面向对象方法。 软件过程模型 描述软件开发过程的各项活动、角色、产品及其相互关系 的模型。例如: 瀑布模型、螺旋模型、增量模型和喷泉模型等。 不同的软件开发方法和软件开发模型要求有不同的工程体 系。 从历史看,使用最多的是结构化方法和瀑布模型; 代表当前技术主流的是面向对象方法和喷泉模型
分析 瀑布模型 OOA 强调严格的 设计 OOD 阶段划分和 前后次序 编程 先做完OOA 测试 再进行OOD 维护
分析 设计 编程 测试 维护 瀑布模型: 强调严格的 阶段划分和 前后次序 先做完OOA 再进行OOD OOA OOD
喷泉模型: 各个阶段之 演化 间没有严格 的界限,其 活动可以交 集成 叠和回溯。 测试 编程 有些工作既可在OOA中进行, 也可在OOD中进行。 OOD 设计 各阶段概念和表示法的一致为 采用这种模型提供了条件。 OOA 分析
喷泉模型: 各个阶段之 间没有严格 的界限,其 活动可以交 叠和回溯。 演化 集成 测试 编程 设计 OOA 分析 OOD 有些工作既可在OOA中进行, 也可在OOD中进行。 各阶段概念和表示法的一致为 采用这种模型提供了条件
第二章为什么需要OOA 21什么是面向对象的分析? 面向对象的分析(O0A),就是运用面向对象方法进行系 统分析。 ooA是分析,是软件生命周期的一个阶段,具有一般分析 方法共同具有的内容、目标及策略; 但强调运用面向对象方法进行分析,用面向对象的概念和 表示法表达分析结果。 基本任务是:运用面向对象方法,对问题城和系统责任进 行分析和理解,找出描述问题域及系统责任所需的对象, 定义对象的属性、服务以及它们之间的关系。 目标是建立一个符合问题域、满足用户需求的OoA模型
面向对象的分析(OOA),就是运用面向对象方法进行系 统分析。 OOA是分析,是软件生命周期的一个阶段,具有一般分析 方法共同具有的内容、目标及策略; 但强调运用面向对象方法进行分析,用面向对象的概念和 表示法表达分析结果。 基本任务是:运用面向对象方法,对问题域和系统责任进 行分析和理解,找出描述问题域及系统责任所需的对象, 定义对象的属性、服务以及它们之间的关系。 目标是建立一个符合问题域、满足用户需求的OOA模型。 2.1 什么是面向对象的分析? 第二章 为什么需要OOA