教材:《软件工程导论(第六版)》 张海藩 牟永敏 著
一、 软件工程学概述
1. 软件危机及其概念
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
典型表现:
- 1) 估计不准:对软件开发成本和进度的估计常常很不准确。
- 2) 不满意:用户对“已完成的”软件系统不满意。
- 3) 质量不可靠:软件产品的质量往往不可靠。
- 4) 不可维护:软件常常不可维护。
- 5) 文档不适当:软件通常没有适当的文档资料。
- 6) 成本上升:软件成本所占比例逐年上升。
- 7) 供不应求:软件开发生产效率提高的速度,远远跟不上计算机应用普及深入的趋势。
原因:
- 1) 与软件自身特点有关
- 2) 软件开发维护方法不正确
2. 软件工程方法学(传统方法学、面向对象方法学)
传统方法学:采用结构和技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环节来支持结构化技术的运用。传统方法学仍然是软件开发过程中广泛使用的软件工程方法学。
面向对象方法学:把数据和行为看成同等重要,它是一种以数据为主线,把数据和对数据的操作紧密地结合起来的方法。
特点:
- 1)把对象作为融合了数据及在数据上的操作行为的统一的软件构件。
- 2)把所有的对象都划分成类
- 3)按照父类与子类的关系,把若干个相关类组成一个层次结构的系统
- 4)对象彼此间仅能通过发送消息互相联系
3. 软件工程本质特性
- 1) 软件工程关注于大型程序的构造
- 2) 软件工程的中心课题是控制复杂性
- 3) 软件经常变化
- 4) 开发软件的效率非常重要
- 5) 和谐地合作是开发软件的关键
- 6) 软件必须有效地支持他的用户
- 7) 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品
4. 软件工程三要素(方法、工具、过程)
方法:完成软件开发的各项任务的技术方法,回答“怎样做”的问题
工具:为运用方法二提供的自动或半自动的软件工程支撑环境
过程:为了获得高质量的软件所需完成的一系列任务的框架,规定了完成各项任务的工作步骤
5. 软件过程模型
1) 瀑布模型
特点:
- 1* 阶段间具有顺序性和依赖性
- 2* 推迟实现的观点
- 3* 质量保证的观点
优点:
- 1* 可强迫开发人员采用规范的方法
- 2* 严格地规定了每个阶段必须提交的文档
- 3*要求每个阶段交出的产品都必须经过质量保证小组的仔细验证
缺点:瀑布模型是文档驱动的是它的主要缺点
2) 快速原型模型
优点:不带反馈环,基本上是线性顺序进行开发
3) 增量模型
优点:短时间内可交付完成部分工作的产品、逐步增加产品功能可使用户逐步适应新产品。
缺点:增量构件不能破坏已有产品、软件体系架构必须开放。
4) 螺旋模型
螺旋模型的优势在于它是风险驱动的,但是这也是弱点,除非软件开发人员具有丰富的风险评估经验,否则将出现正真的风险:当项目实际上正在走向灾难时,开发热暖可能还认为一切正常。
螺旋模型主要适用于复杂的、大规模的软件项目。
5) 喷泉模型
优点:
- 1* 各个阶段没有明显的界限,开发人员可以同 步进行开发
- 2* 提高软件项目开发效率,节省开发时间
6. 软件维护的目的
7. 软件工程基本原理
- 1) 用分阶段的生命周期计划严格管理
- 2) 坚持进行阶段评审
- 3) 实行严格的产品控制
- 4) 采用现代化程序设计技术
- 5) 结果应能清楚地审查
- 6) 开发小组人员应少而精
- 7) 承认不断改进软件工程实践地重要性
二、 可行性研究
1. 可行性研究的目的、关注的方面
目的:用最小的代价在尽可能短的时间内确定问题是否能够解决。
关注的方面: