CH 02 Software Engineering¶
约 559 个字 预计阅读时间 2 分钟
IEEE 计算机协会将软件工程定义为: 1. 应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即,将工程应用到软件。 2. 对 1. 中各种方法的研究。
2.2 开发软件的流程 [KEY]¶
一套完整的流程架构应该是:
- 沟通 (Communication)。与客户沟通需求。(非功能性需求也需要关心!)
- 计划 (Planning)。建立工程工作计划,阐述技术风险,列出资源需求与预期产出的工作产品,并制定工作时间表。
- 建模 (Modeling)。建立模型让开发者和客户理解要求和软件设计。
- 建设 (Construction)。代码开发和测试。
- 部署 (Deployment)。软件交付以收到来自客户的评价和反馈。
Umbrella Activities
保护性活动。
2.3 软件工程实践¶
一些实践中的精髓:
- 理解问题所在(划分问题)。
- 策划解决问题。
- 实施计划。
- 检查结果正确性。
David Hooker 在 1996 年提出了着眼于整个软件工程实践的七项基本原则:
- 存在价值
- 保持简单 (KISS)
- 保持愿景
- 关注用户
- 面向未来
- 提前计划复用
- 认真思考
2.4 软件开发谬误¶
以下是对一些常见误区的 纠正:
- 即使有软件开发标准和过程规程,想要落实和实施它也不容易,何况软件开发是很多团队共同协作的过程。
- 软件开发难以通过增加人手直接性的提高进度。有序且有计划有实施,才是保障进度的最好方法。也只有在这样的情况下,增加人手才有意义。
- 与客户的沟通不畅,没有互相理解,及时纠正错误的信息,会导致不好的结果。
- 变更需求的时间越是早期,变更成本就越小。在设计框架建立,资源分配,甚至项目启动之后再变更需求,成本会只增不减。
- 文档和设计,是非常重要的一部分。
过程模型¶
4.1 惯用过程模型¶
- 瀑布模型 (The Waterfall Model)
- 变种: V-model
- 增量过程模型 (Incremental Process Model)
- 演化过程模型 (Evolutionary Process Model)