第一章 软件工程概论
1. 软件危机
1.1.1 软件危机的介绍
- 对软件开发成本和进度的估计常常很不准确
- 用户对完成的软件系统不满意的现象经常发生;
- 软件产品的质量往往靠不住;
- 软件常常是不可维护的;
- 软件通常没有适当的文档资料;
- 软件成本在计算机系统总成本中所占的比例逐年上升;
- 软件开发生产率提高的速度跟不上计算机应用的发展趋势。
1.1.2 产生软件危机的原因
与软件本身特点有关
- 开发期间没有发现错误
- 程序规模上升,复杂性逐渐上升
- 软件开发过程相对困难
软件开发与维护的方法不正确有关
- 忽视需求分析
- 忽视软件维护
1.1.3 消除软件危机的途径
- “软件就是程序”的错误观念
- 软件开发需要的协作性
- 合理选择开发工具
- 探索更好更有效的技术和方法
例题
软件工程
- 1968年NATO会议:
软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件, 而建立和使用完善的工程原理。 - 1993年IEEE:
软件工程是把系统的、 规范的、 可度量的途径应用于软件开发、 运行和维护过程;
1.2.1 软件工程的介绍
- 大型程序构造
- 控制复杂性
- 软件经常变化
- 开发软件效率非常重要
- 和谐的合作
- 用户需求
- 由具有一种文化背景的人替具有另一种文化背景的人创造产品
1.2.2 软件工程的基本原理
- 分阶段生命周期严格管理
- 阶段评审
- 严格产品控制
- 采用现代程序设计技术
- 结果能清楚地审查
- 开发小组的人员应该少而精
- 承认不断改进软件工程实践的必要性
1.2.3 软件工程方法学
1. 传统方法学
传统方法学也称为生命周期方法学或结构化范型。
2. 面向对象方法学
把数据和对数据的操作紧密结合起来的方法,模拟人类认识世界解决问题的方法和过程。
特点:
降低了软件产品的复杂性,提高了软件的可理解性,简化了软件的开发和维护工作。面向对象方法特有的继承性和多态性,进一步提高了面向对象软件的可重用性。
1.3 软件生命周期
软件生命周期的8个阶段
- 问题定义
- 可行性研究
- 需求分析
- 总体设计(概要设计)
- 详细设计
- 编码与单元测试
- 综合测试
- 维护
软件定义期,包括问题定义、可行性研究、需求分析;软件开发期,包括概要设计、详细设计、实现、测试;运行维护期,即运行维护阶段。
1.4 软件过程
软件过程:为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
目标:开发出客户满意的软件
生命周期模型规定了把生命周期划分成哪些阶段及各阶段执行顺序,也叫过程模型。
1.4.1 瀑布模型
推迟实现的观点
质量保证的观点
优点
• 迫使开发人员采用规范的方法;
• 每个阶段必须提交的文档;
• 每个阶段的产品都必须经过质量验证。
缺点
• 需求难开始完全确定;
• 文档驱动、风险大;
• 灵活性差,一旦修改损失惨重;
• 不支持软件复用和集成技术。
瀑布模型的适用范围
- 需求稳定、变化小且开发人员能够一次性获取全部需求的项目;
- 软件开发人员有丰富经验;
- 软件项目本身的风险很低。
瀑布模型适用于功能、性能明确,完整无变化的软件系统开发,比如 操作系统、财务系统等。
1.4.2. 快速原型模型
快速原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成功能的一个子集。
展示待开发软件的部分功能和性能,用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求,开发人员据此对软件进行修改完善.
特点
不带反馈环开发的系统能够满足用户真实的需求
优点
• 快速构建、容易修改;
• 取代规格说明阶段,容易适应需求的变化;
• 用户参与;
• 能够处理模糊需求
缺点
• 快速构建(弱功能);
• 资源规划和管理较为困难;
• 对开发环境要求高
适用范围
- 对现有软件产品进行升级或功能完善
- 开发人员和用户交流困难,用户需求不完全或不准确需求获取困难
- 开发人员对技术熟悉或把握性不大
- 具有支持快速开发的工具
1.4.3. 增量模型
把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。
特点
系统模块化和构建化
优点
• 能在较短时间内向用户提交可完成部分工作的产品;
• 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品
• 开发顺序灵活。
缺点
• 在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
• 软件体系结构必须是开放的
使用范围
• 待开发系统能够被模块化
• 软件产品可以分批次交付
• 软件开发人员对应用领域不熟悉,或一次性开发的难度很大
• 项目管理人员把握全局的水平很高
1.4.4 螺旋模型
可把它看作在每个阶段之前都增加风险分析的快速原型模型。
特点
• 风险驱动
优点
• 风险分析
• 质量保证
缺点
• 风险分析
• 对开发人员要求高。
适用范围
螺旋模型适用于复杂的、高风险的大型软件项目
1.4.5. 喷泉模型
喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。
迭代
实现软件的每项功能反复求精的过程,是从模糊到清晰的开发过程。不知道用户需要什么
特点
• 迭代
• 无间隙
优点
• 提高软件项目开发效率;
• 节省开发时间
缺点
• 难以管理项目。
适用范围
喷泉模型适用于面向对象的软件开发。
1.4.6. Rational统一过程
RUP是Rational司提出的基于UML一种面向对象软件开发过程模型。它解决了螺旋模型的可操作性问题,采用迭代和增量的开发策略,以用例为驱动,集成了多种软件开发过程模型的特点。
迭代式开发
RUP重复一系列组成软件生命周期的循环。每次循环都经历一个完整的生命周期,每次循环结
束都向用户交付产品的一个可运行的版本。
特点
• 可裁剪定制的软件开发过程模型;
• 为如何适用项目提供了指导;
• 能够有效提高开发效率;
适用范围
适用于大型软件项目。文章来源:https://www.toymoban.com/news/detail-476360.html
1.4.7.敏捷过程与极限编程
- 敏捷过程
具有高效、快速响应变化的开发过程。敏捷开发宣言由4个简单的价值观组成。 - 极限编程
小总结
文章来源地址https://www.toymoban.com/news/detail-476360.html
到了这里,关于第一章 软件工程概论的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!