概论
计算机软件
软件的定义: 软件=程序+数据+文档
软件的特点:
- 软件的开发成本和进度难以估算
- 软件是被开发的,不是制造
- 软件没有硬件的老化和磨损问题
软件的分类:
- 系统软件;eg.操作系统
- 支撑软件; eg.数据库管理软件
- 应用软件;eg,人力管理系统
软件的语言:
- 需求定义语言
- 功能性语言
- 设计性语言
- 程序设计语言
- 文档语言
软件工程
定义:应用计算机科学技术和工程管理原则,设计出满足用户需要的软件工程
软则:
- 选取适宜的开发风范
- 采用合适的设计方法
- 提供高质量的工程支持
- 有效的软件工程管理
生存周期:
计算机系统工程、需求分析、设计、编码、测试、运行、维护
软件过程
软件过程是生产一个最终满足需求且达到工程目标的软件产品所需的步骤
过程是活动的集合,活动是任务的集合
能力成熟度模型:
CMM(capability maturity nodel)
软件过程成熟度等级
- 初始级
- 可重复级
- 已定义级
- 优化级
软件过程模型
瀑布模型
特征
- 接受上一阶段的结果作为本阶段的输入。
- 利用这一输入实施本阶段应完成的活动。
- 对本阶段的工作进行评审。
- 将本阶段的结果作为输出,传递给下一阶段
缺点
- 缺乏灵活性,难以适应需求不明确或需求经常变化的软件开发。
- 开发早期存在的问题往往要到交付使用时才发现,维护代价大
演化模型
适用于对于软件需求缺乏准确认识的情况
增量模型
每个线性序列产生软件的一个可发布的增量版本,后一个版本是对前一版本的修改和补充
增量模型融合了瀑布模型的基本成分和演化模型的迭代特征。
增量模型特别适用于:
需求经常变化的软件开发。
市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品的软件开发。
增量模型能有计划地管理技术风险,如早期增量版本中避免采用尚未成熟的技术。
原型模型
螺旋模型
是瀑布模型和演化模型的结合,并增加了风险分析
喷泉模型
支持面向对象
基于构件的开发模型
分为领域工程和应用系统工程