Spiral Model 的优点:对于潜在的风险可以早期发现避免较大损失,用户可以在早期阶段就看到模型,严格的风险控制的早期引入,设计不需要一开始就完美,用户紧密的跟踪项目,及早给予反馈,即使调整费用。
Spiral Model 的缺点:花费在风险控制上的时间太长,不适用于小的低风险的项目,在计划和完善模型以及风险分析上花费的时间太长,模型复杂,需要富有经验的风险控制专家,开发人员在非开发阶段空闲,难于进行跟踪和控制。
什么时候使用这一模型:。。。。
终于轮到大名鼎鼎的 Agile SDLC
适用是工期紧迫的项目,非正式的开发模式,加速各个开发过程,适用于高质量的开发团队。
一些Agile 方法包括:
Adaptive Software Development (ASD)
Feature Driven Development (FDD)
Crystal Clear
Dynamic Software Development Method (DSDM)
Rapid Application Development (RAD)
Scrum
Extreme Programming (XP)
Rational Unify Process (RUP)
Extreme Programming - XP 适用于小开发团队,快速开发周期,可迅速变更的需求,编码是主要的活动,与团队成员之间的交流和编码一起完成,测试也是在编码过程中完成的。
Planning game
Small releases
Metaphor
Simple design
Testing
Refactoring
Pair-programming (所有代码由两个程序员在一台机器上完成)
Collective ownership (任何人可以在任何地方任何时间改变任何代码)
Continuous integration (每完成一个功能,就发布一个版本)
40-hour week (没后工作不超过40小时)
On-site customer (留有一个用户在守随时回答问题)
Coding standards
如果检查代码是必要的,那就一直检查代码(pair programming)
如果测试是有必要的,那就所有人都一直测试
如果简单是好的,那就总是选择最简单的设计来完成功能
如果设计是好的,那么每个人每天都进行设计(refactoring)
如果结构很重要的,那么每个人随时都可以进行结构改进和调整(metaphor)
如果集成测试是好的,那么就随时进行测试(continuous integration)
如果快速集成是好的,那么就把每次集成和编译时间的间隔缩短(hours rather than weeks, 每天都有几个新版本)
Feature Driven Design (FDD)
Develop an overall model
Build a features list
Plan by feature
Design by feature
Build by feature