款件工 内包括 栏机、术文、管看制度 每个软件开发者必接工的能一求行事,不险地自 业文的总合,面不 实行件工 是并分破及学生产寿邮 款件开发方 不是一的。自就件工程出现以来 ,人们已经提出了多种软件开发方法,侧如 干发的各项活动、角色产晶及其相互关赢 代要兰来微龄息量简方法和教工
软件工程的主要内容包括: 针对软件生命周期全过程及其每个具体阶段的工程方法 、技术细则、文档规范、技术支持、管理制度、人员织 组以及质量保证体系等。 每个软件开发者必须按工程的统一要求行事,不能随意地自 由发挥。 每个开发阶段都要产生健全的、符合工程规范的文档。 软件产品是这些文档的总合,而不仅仅是程序。 实行软件工程的主要意义: 提高软件产品的质量 提高了软件生产率 软件工程的推行从根本上改变了软件生产中无章可循、各行 其是的混乱局面,并为软件开发从手工生产转向工业化生产 奠定了基础。 软件开发方法: 软件工程所采用的方法不是唯一的。自软件工程出现以来 ,人们已经提出了多种软件开发方法,例如: 功能分解法、 数据流法(结构化方法)、 快速原型法、 信息模型法、 面向对象方法。 软件过程模型 描述软件开发过程的各项活动、角色、产品及其相互关系 的模型。例如: 瀑布模型、螺旋模型、增量模型和喷泉模型等。 不同的软件开发方法和软件开发模型要求有不同的工程体 系。 从历史看,使用最多的是结构化方法和瀑布模型; 代表当前技术主流的是面向对象方法和喷泉模型。 分析 设计 编程 测试 维护 瀑布模型: 强调严格的 阶段划分和 前后次序 先做完OOA 再进行OOD OOA OOD
喷泉棋型 有工作可9中地行 用选料严拥供了条件 二章为什么需要O0A 21什么是面向对象的分析? 对象的分析〔,就是用面向刈象方进行暴统 分折,是教件生命属的一个阶,具有一最分析方 得换这身斯是方法遗们分,用面向对的 基本任务是量用国向对象方法,对 象的属性、最务以及它值之同的关 目标是建立一个符合题擒足用户警求的①型 22分析面临的主罢阿愿 问题域和系统责任复杂性日益增长 down):被开发系统的应用领域,即 系责任( syst emresponsi bilities):所开发的系统 应该具客的职能 员,多率不是问题域的专家:问题域专家多半 不是软件专家 统所面临的闩题域比以往更为广阔和复杂,系统比 硬件性能提高价格的下降:编程效率不断提高。对雷 求分析的压力比其它开发阶段更为巨大
喷泉模型: 各个阶段之 间没有严格 的界限,其 活动可以交 叠和回溯。 演化 集成 测试 编程 设计 OOA 分析 OOD 有些工作既可在OOA中进行, 也可在OOD中进行。 各阶段概念和表示法的一致为 采用这种模型提供了条件。 面向对象的分析(OOA),就是运用面向对象方法进行系统 分析。 OOA是分析,是软件生命周期的一个阶段,具有一般分析方 法共同具有的内容、目标及策略; 但强调运用面向对象方法进行分析,用面向对象的概念和表 示法表达分析结果。 基本任务是:运用面向对象方法,对问题域和系统责任进行 分析和理解,找出描述问题域及系统责任所需的对象,定义 对象的属性、服务以及它们之间的关系。 目标是建立一个符合问题域、满足用户需求的OOA模型。 2.1 什么是面向对象的分析? 第二章 为什么需要OOA 2.2 分析面临的主要问题 1、问题域和系统责任复杂性日益增长 问题域(pr obl em domai n):被开发系统的应用领域,即 在现实世界中由这个系统进行处理的业务范围。 系统责任(syst em r esponsi bi l i t i es):所开发的系统 应该具备的职能。 困难所在: 分析人员,多半不是问题域的专家;问题域专家多半 不是软件专家; 系统所面临的问题域比以往更为广阔和复杂,系统比 以往更为庞大。 硬件性能提高价格的下降;编程效率不断提高。对需 求分析的压力比其它开发阶段更为巨大
2、交流问题 软件工程是蕃常“面向人的”,是一项思维活动、思想交 流和人为因素十分密集的工作 与用户和领域专家的交流 分析人员之向的交 很什人鹊交袤的交道 与管理人员的交流 如果分析 的文档使分析员以外的其他人 于交流。这会使彼此的思想不 不易沟通 3、需求的不断变化 引起需求变化的因素 观原因,主观原因 软件开发者必须以合作的态度满足用户需求 4、软件复用的要求 复用级别提高—分析结果复用 于多个系统 一个分析模型在多种条件下实 对分新提出了更高解求
2、交流问题 软件工程是非常“面向人的”,是一项思维活动、思想交 流和人为因素十分密集的工作。 ·与用户和领域专家的交流 ·分析人员之间的交流 ·与用户和领域专家的再交流 ·与设计人员的交流 ·与管理人员的交流 如果分析所产生的文档使分析员以外的其他人员都很难 读懂,那就很不利于交流。这会使彼此的思想不易沟通, 并容易隐藏许多错误。 3、需求的不断变化 引起需求变化的因素 用户 客观原因, 主观原因 竞争因素 经费 技术因素 软件开发者必须以合作的态度满足用户需求 易变部分和稳定部分: 功能:最易变 外部接口:很易变 属性:较易变 对象:较稳定 4、软件复用的要求 复用级别提高——分析结果复用 一个分析模型中的可复用部分用于多个系统 一个分析模型在多种条件下实现 对分析提出了更高的要求
22分析方法综述 功能分解法( f unct i on decompose ti on) 功能分解=功能 以系所功能,然后把功能分解为子功能,同时定 的功能为中心来组织系统 较大的子功能进一步分解,直到可给出明确的定义 根据功能/子功能的需要设计数据结构。 对需变挽越圈影 检验分析果的正确性 局部的皓误和局部的修改很容易产生全局性的响 工 层地行功能分解 由换及其搜口构成 嘌 照翻 翩 数据流法( data fI =数据流十数据处理(加工)+数据存储十端 点十处理说明十数据字典 基本策略是跟踪数据流,即研究问题 流动以及在各个环节上进行何种处理,从而 加工,问题域被映射为数据流图(FD 明和数据字典进行详细说明 法则,较强调研究问题域 一,而且没有一种严格的、可操作的 是全以你解起你析
2.2分析方法综述 功能分解法(f unct i on decomposi t i on) 功能分解= 功能 +子功能 +功能接口 以系统需要提供的功能为中心来组织系统。 首先定义各种功能,然后把功能分解为子功能,同时定 义功能之间的接口。 对较大的子功能进一步分解,直到可给出明确的定义。 根据功能/子功能的需要设计数据结构。 优点与缺点: 直接地反映用户的需求,所以工作很容易开始。 不能直接地映射问题域,很难检验分析结果的正确性。 对需求变化的适应能力很差。 局部的错误和局部的修改很容易产生全局性的影响。 功能 功能 功能 系统 子功能 子功能 子功能 子功能 分解 分解 分解 …… …… …… …… 工作过程: 一层层地进行功能分解 功能 模块 功能 模块 功能 模块 功能 模块 功能 模块 功能 模块 功能 模块 功能 模块 功能 模块 功能 模块 得到的系统模型: 由模块及其接口构成 数据流法(dat a f l ow appr oach) 数据流法= 数据流+数据处理(加工)+数据存储+端 点+处理说明+数据字典 又称作结构化分析。基本策略是跟踪数据流,即研究问题 域中数据如何流动以及在各个环节上进行何种处理,从而 发现数据流和加工。问题域被映射为数据流图(DFD), 并用处理说明和数据字典进行详细说明。 优点与缺点: 有严格的法则,较强调研究问题域。 仍然是间接映射; 与结构化设计的表示法不一致,而且没有一种严格的、可操作的 转换规则。因此从分析到设计的过渡比较困难; 大系统数据流和加工的数量常常多到难以控制的程度,引起分析 文档的膨胀