1. 软件工程的产生与发展
软件工程是为了克服20世纪60年代末国际上出现的“软件危机”的过程逐渐形成与发展的。
1.1 软件危机与软件工程
1. 软件危机的表现
- 软件产品质量低劣,甚至开发过程中就夭折。
- 软件生成效率低,不能满足需要。
2. 软件工程的概念
- 第一代软件工程
20世纪60年代末出现的软件危机 ,其表现为软件生产效率低,大量低劣软件涌入市场,甚至在开发过程中就夭折,使软件产业濒临瘫痪。这一阶段称为传统的软件工程
- 第二代软件工程
20世纪80年代中期,以Smalltalk为代表的面向对象程序设计语言相继推出,面向对象的方法和技术得到发展。这一阶段称为对象工程
- 第三代软件工程
提出了对软件项目管理的计划、组织、成本估算、质量保证、软件配置管理等技术与策略,逐步形成了软件过程工程
- 第四代软件工程
20世纪90年代至今,基于组件的开发方法取得重要进展。软件的复用技术以及组件技术的发展,对于克服软件危机提供了一条有效的途径,将这一阶段称为组件工程或者构件工程
1.2 软件工程的定义以及基本原则
1. 软件工程定义
软件工程研究的目标是以较少的投资获取高质量的软件
2. 软件工程的基本原则
- 必须认识软件的需求变动性,以便采取适当的措施来保证产品能够更好的满足用户要求
- 稳妥的设计方法将大大方便软件开发,以达到软件工程的目标
- 软件项目的质量与经济开销取决于它所提出的支撑质量和效用
- 只有强调对软件过程进行有效管理的情况下,才能实现有效的软件工程。
3. 软件工程研究的内容
- 软件开发方法
- 软件工具为软件工程方法提供支持,研究计算机辅助软件工程,建立软件工程环境。
- 软件工程管理
- 软件工程标准化与规范化
十个领域:
- 软件需求
- 软件设计
- 软件构造
- 软件测试
- 软件维护
- 软件配置管理
- 软件工程管理
- 软件工程过程
- 软件工程工具和方法
- 软件质量
2. 软件与软件过程
2.1 软件的概念和特点
1. 软件及其特点
软件是程序,以及开发、使用和维护程序所需的所有文档。是由应用程序、系统程序、面向用户的文档以及面向开发者的文档四部分构成
2. 软件生存周期
- 问题定义
- 可行性分析与项目开发计划
- 需求分析
- 概要设计
- 详细设计
- 软件构造
- 测试
- 维护
2.2 软件工程过程以及产品
基本过程:
- 软件规格说明
- 软件开发
- 软件确认
- 软件演进
3. 软件过程模型
3.1 瀑布模型
在软件的第一阶段得到广泛的应用,它简单易用,在消除非结构化软件,降低软件复杂性,促进软件开发工程化方面起到了很大作用。
3.2 增量模型
属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早地产生工作软件。
3.3 喷泉模型
- 喷泉模型分为4个阶段:分析、系统设计、软件设计和实现
- 各阶段相互重叠,反映软件过程并行特点
- 喷泉模型以分析为基础,资源消耗成塔形,分析阶段消耗资源最多
- 反映软件过程迭代性的自然特征,从高层返回底层无资源消耗
- 强调增量开发。
- 是对象驱动的过程,对象是所有活动的实体
- 在实现时,由于活动不同,可分为系统实现和对象实现。
3.4 智能模型
智能模型也称基于知识的软件开发模型,是知识工程与软件工程在开发模型上结合的产物。
优点:
- 通过领域专家系统,可使需求说明更完整、准确和无二义性
- 通过软件工程的专家系统,提供一个设计库支持,在开发过程中曾为设计的助手。
- 通过软件工程知识和特定应用领域的知识和规则的应用来提供开发和帮助。