参考原著:链接: link
软件工程定义
将系统化的、规范的、可度量的方法用于软件的开发、运行和维护的过程,即将工程化应用于软件开发中。
(Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).)
简述:就是要用工程化方法去规范软件开发,让项目可以按时完成、成本可控、质量有保证。
软件开发模型
瀑布模型
- 问题定义及规划:
- 需求分析:
- 软件设计:
- 程序编码:
- 软件测试:
- 运行维护:
快速原型模型
适用于:在客户需求不明确的情况下,快速编写,快速修改,反复和客户确认,直到最后需求明确。
简述:原型模型因为能快速修改,所以能快速对用户的反馈和变更作出响应,同时原型模型注重和客户的沟通,所以最终开发出来的软件能够真正反映用户的需求。但这种快速原型开发往往是以牺牲质量为代价的
增量模型
适用于:需求比较清楚,能模块化的软件系统,并且可以按模块分批次交付。
优缺点:因为增量模型的根基是模块化,所以,如果系统不能模块化,那么将很难采用增量模型的模式来开发。另外,对模块的划分很抽象,这本身对于系统架构的水平是要求很高的。
迭代模型
迭代模型则是按照时间来拆分,看单位时间内能完成多少功能。
**迭代模型最难的部分,在于规划每次迭代的内容和要达到的目标。**多了可能完不成,少了可能造成每次迭代工作量不饱和,这需要在实践中去摸索,一个迭代一个迭代的去调整。
螺旋模型
适用于:做一个风险很高的项目,客户可能随时不给你钱了。
特点:每一个阶段都需要进行风险分析。
Aspice
V模型: