当前位置:
文档之家› 《现代软件工程技术》完整版(加精)
《现代软件工程技术》完整版(加精)
1.3 软件工程方法 1. 结构化方法 所谓结构化方法是一种使用功能作为其 构造块的软件开发方法。这种被称为结构 化分析与设计的方法以功能组织软件。20 世纪70年代开始,这种方法成为主流。 结构化方法非常适合科学计算,因为在 大多数科学应用中,功能是十分稳定的, 因为自然法则很少变化。
但是,在企业应用中,在范围十分广阔 的信息管理应用中,功能是人定义的。不 同时间、不同地点、不同的人都会有不同 的定义。 把结构化方法应用到这些领域中,便产 生了不适应性。尤其是对大型软件,这种 不适应性尤为突出。软件设计师按照预先 约定的需求去开发软件,但是还没等到软 件发布,需求已经发生了变化。而且软件 只能定制,无法复用。
本表来源于Butler Bloor。下面的饼图是从各种渠 道得出的平均数:
软件生命周期各阶段的近似花费比例
软件开发阶段的错误率 开发阶段 费用% 引入错误% 发现错误% 纠错费用 需求分析 5 55 18 1.0 设计 25 30 10 1.0~1.5 代码及单 元测试 10 集成测试 50 10 50 1.0~5.0 确认及编 写文档 10 运行维护 5 22 10~100
但是很快就发现,数据建模方法与结构化 方法各占一半优点和缺点。结构化方法实际 上帮助开发者处理数据(尽管它不适应功能 变化),数据建模方法却不能帮助开发者管 理功能(尽管它适应稳定的数据)。 这两种方法的共同缺点是只使用一种系统 的视觉组织系统。 能否有一种支持系统所有视觉的范型的方 法来组织系统呢?有,这就是面向对象的方法.
能提交的功能 提交功能 <25% 25~49% 50~74% 75~99% 100% 所占百分比 4.6% 27.2% 21.8% 39.1% 7.3%
数据来自Standish集团对MIS组织的研究报告
二、问题的原因 造成软件危机的原因是什么呢? 1)软件本身的特殊性 2)真实世界的可变性 3)软件工程方法的不适应性 三、解决问题的办法 改变软件工程的方法使之适应软件的复 杂性和真实世界的可变性。
2. 数据建模方法 到20世纪80年代,Peter Chen开发了实体— 关系图,Ed Codd设计了关系数据库。他们向开 发者提供了一种新的开发软件的方法基础。它 基于称为实体的数据项的集合作为其构造块。 理由是数据是企业中最稳定的部分。 很多人都认为实体是稳定的,并且关系数据 库有一个极好的数学基础。因此在80年代大多 数人使用数据建模方法开发软件。
现代软件工程技术
基于UML、OMT和模式应用的系统分析、建模和 迭代开发技术
200目标 定义面向对象分析和设计 阐述一个简单的OOA/OOD例子 综述UML和可视化敏捷建模
1.1 什么是分析和设计 1. 分析(analysis) :分析强调的是对问题和 需求的调查研究,而非解决方案。 “分析”,主要指需求分析,即对需求的调 查 研究。分析可以有不同方法,如面向对象的分 析方法或面向过程的分析方法等。 2. 设计(design):设计强调的是满足需求的 概念上的解决方案(包括软件和硬件)而不是实 现。“实现”,例如编码表达了真实和完整的 设
3. 面向对象的方法 软件开发急需一种能克服早期方法的弱点 的方法。早期的方法只使用一种系统的视觉, 不能容纳其它视觉。 一些世界顶级的专家开始寻求新的软件工程 方法,这就是现在主流的方法:面向对象的方 法。这种方法提供支持系统的所有视觉的范型 ,并且以纵横的方式管理软件的复杂性。
调查还发现,许多项目从错误的目标开始, 后来才发现错误,不得不从头开始。
Standish发现,每100个启动的项目中,有94个 要重新开始,一些项目多次重新开始。重新开始就 意味着项目超时。 综合统计表明,将近28%的项目,其费用要超支 150~200%。所有公司的平均项目超支费用是原先 所估计的189%。小公司则倾向于更大超支,平均 达214%,严重影响公司的生存能力。 下表显示,大部分项目不能提交完整的功能。 呜呼!现代公司面临灾难!
4. 软件本身和软件工程方法的问题导致: 1) 软件项目的费用不断攀升 2) 软件开发周期越来越长 3) 软件错误越来越频繁,维护成本越来越高 4) 不成功的软件项目比例很大,造成巨大损失 下面是曾经来自美国的权威组织的统计数据:
各开发阶段的软件项目费用比例 开发步骤 需求 设计 编程 测试 维护 % 3 8 7 15 67
此表来源于Hughes DoD Composite Software Error History
统计数据表明,软件开发方法导致系统维护 的费用十分惊人。 数据显示,85%的错误是在需求分析和设 计的时候犯的。改善这两个阶段是提高软件 质量的最有效途径。
费用超支比率 费用超支状况 所占百分比 <20% 15.5% 21~50% 31.5% 51~100% 29.6% 101~200% 10.2% 201~400% 8.8% >400% 4.4%
数据来自Standish集团对MIS组织的研究报告
项目超时率 超时状况 <20% 21~50% 51~100% 101~200% 201~400% >400% 所占百分比 13.9% 18.3% 20.0% 35.5% 11.2% 1.1%
数据来自Standish集团对MIS组织的研究报告
超支与超时的统计数据同样十分可悲。调 查发现有三种基本的项目类型: *成功的: 按时、按预算提交全部功能; *受到挑战的:能提交却不是全部功能,且 超时、超支; *失败的: 在开发中流产。 综合结果是:只有16.2%的项目是成功的, 52.7%是受到挑战的,31.1%在发布前就被取 消了。估计1995年受到挑战的和失败的项目 费用是1400亿美元。
1.2 软件开发面临的问题—软件危机 一、问题的提出 1. 信息社会对软件技术的要求 2. 软件产业对软件技术的要求 *开发周期问题 *开发成本问题 *可复用问题 *可进化问题 *可维护问题
3. 软件本身的问题 1)软件产品开发的高昂费用 2)软件的复杂性问题 3)软件与物理概念的的一致性问题 4)软件对应的领域规则的可变性问题 5)软件的不可见性问题 6)软件的维护与服务问题