概述
软件工程的本质特征
- 软件工程关注于大型程序的构造
- 软件工程的中心课题是控制复杂性
- 软件经常变化
- 开发软件的效率非常重要
- 和谐地合作是开发软件的关键
- 软件必须有效地支持它的用户
- 在软件工程林谷中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品
基本原理
- 用分阶段的生命周期计划严格管理
- 坚持进行阶段评审
- 实行严格的产品控制
- 采用现代程序设计技术
- 结构应该能清楚地审查
- 开发小组的人员应该小而精
- 承认不断改进软件工程实践的必要性
软件工程方法学
- 传统方法学(生命周期方法学,结构化泛型)
- 面向对象方法学
软件生命周期
1. 软件定义
问题定义
可行性研究
需求分析
2. 软件开发
总体设计
详细设计
编码
单元测试
综合测试
3. 运行维护
软件过程
为了获得高质量的软件所需要完成的一系列任务的框架
- 瀑布模型
特点:
阶段间具有顺序性和依赖性
推迟实现
质量保证——每个阶段就完成各自的文档,且对其评审
- 快速原型模型
快速建造原型供用户使用提供反馈,修改原型,直至原型系统满足要求后,据此书写文档,开始开发软件
- 增量模型
把软件产品作为一系列的增量构建来设计、编码、集成和测试。每个构建由多个相互作用的模块构成,并且能够完成特定功能。第一个增量构件往往实现软件的基本需求
- 螺旋模型
每个阶段前都增加风险分析的快速原型模型
- 喷泉模型
- RUP
初始阶段inception
精化elaboration
构建construction
提交transition
- 敏捷过程
个体和交互胜过过程和工具
好的软件胜过好的文档
客户合作胜过合同谈判
响应变化胜过遵循计划
- 微软过程