三要素:
方法、工具、过程
研究内容:
开发技术(开发方法学、开发过程模型、开发工具和环境);工程管理(软件管理学、软件工程经济学、软件心理学)
过程:
PDCA
plan:软件规格说明,规定软件的功能及其使用的限制
do:软件开发,产生满足规格说明的软件
check:软件确认,通过有效性验证保证软件满足客户的需求
action:软件演进,满足客户的变更要求,在使用过程中不断地改进
生命周期的基本活动PDDDCA
P 指定计划:确定要开发软件的总目标,给出他的功能、性能、可靠性和接口等方面的要求;研究可行性,探讨解决问题的可能性;指定开发计划和可行性研究报告
D 需求分析:需求说明书和用户手册
D 涉及:核心技术,对每个模块要完成的工具进行具体的描述,编写设计说明书
D 程序编写:把软件设计转换成计算机的程序代码
C 测试:测试软件的各个组成部分
A 运行维护:开发的软件投入使用,在使用过程总进行适当的维护
软件生命周期模型
瀑布模型
优点:
- 降低开发复杂度,提高软件开发透明性,提高软件开发过程的可管理性
- 软件实现前必须分析和设计
- 保证各个阶段之间的正确衔接,可以及时发现开发过程中存在的缺陷
缺点:
- 缺乏灵活性,只适合性需求明确的软件项目
- 时间长,风险和错误只有在测试阶段才可以发现
- 文档多,增加工作了
V模型和W模型
测试还是独立的阶段,没有提高模型抗风险的能力
测试和开发同步进行
原型方法
最开始:完整准确的需求规格说明很难得到
用户先使用原型系统,提出需求,开发者根据需求对原型进行修改,获得新的版本,一直重复,知道产品满足用户需求。
种类:探索型(弄清对目标系统的要求)实验型(系统实现前考察系统的可行性)进化型(将原型扩展到开发过程,通过原型开发逐步实现所有系统功能)
优点:增长开发者和用户对系统需求的理解;易确定系统的系统、服务的可能性、设计的可行性和产品的结果;原型可作为最终产品的一部分
缺点:文档易忽略;项目难以规划和管理
演化模型
针对需求不是很明确的项目
缺点:开发过程不透明;属于探索式,会导致系统结构比较差;开发过程会用到一些不符合主流、要求和不成熟的工具和技术
增量模型
优点:
- 客户可以逐步提出需求,且需求的增量不影响系统体系结构
- 项目总体失败的风险较低
- 增量从高到低的优先级保证了系统重要功能部分的可靠性
- 系统稳定和维护
缺点:粒度选择???确定所有的业务比较难
螺旋模型
大型项目(事先不能清晰定义需求,存在很多的风险因素)
比较难:因为风险分析需要丰富的评估经验
喷泉模式
特征:迭代(多次重复、演进)无间隙(各阶段没有明显的界限,分析和设计结果的自然复用)
构建组装模型
开发过程式迭代的,侧重以软件组件的复用和组装,不是从0开始编写代码
快速应用开发(RAD)模型
构件组装的方法进行开发
- 以什么信息驱动业务过程运作? 要生成什么信息? 谁生成它? 信息流的去向? 由谁处理? 数据流图
- 建立数据对象集合,定义数据对象属性,与其它数据对象的关系构成数据模型 E-R图
- 如何使数据对象在信息流中完成各业务功能。描述数据对象的增加、修改、删除、查找。细化数据流图中的处理框
- 利用环境提供的工具,自动生成,整个应用系统
- 由于大量使用,一般是整体测试,但新的构建需要测试。一轮需求完成后迭代下一轮需求的开发