跳转至

CH 02 Software Engineering

约 559 个字 预计阅读时间 2 分钟

IEEE 计算机协会将软件工程定义为: 1. 应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即,将工程应用到软件。 2. 对 1. 中各种方法的研究。

2.2 开发软件的流程 [KEY]

一套完整的流程架构应该是:

  • 沟通 (Communication)。与客户沟通需求。(非功能性需求也需要关心!)
  • 计划 (Planning)。建立工程工作计划,阐述技术风险,列出资源需求与预期产出的工作产品,并制定工作时间表。
  • 建模 (Modeling)。建立模型让开发者和客户理解要求和软件设计。
  • 建设 (Construction)。代码开发和测试。
  • 部署 (Deployment)。软件交付以收到来自客户的评价和反馈。

Umbrella Activities

保护性活动。

2.3 软件工程实践

一些实践中的精髓:

  1. 理解问题所在(划分问题)。
  2. 策划解决问题。
  3. 实施计划。
  4. 检查结果正确性。

David Hooker 在 1996 年提出了着眼于整个软件工程实践的七项基本原则:

  1. 存在价值
  2. 保持简单 (KISS)
  3. 保持愿景
  4. 关注用户
  5. 面向未来
  6. 提前计划复用
  7. 认真思考

2.4 软件开发谬误

以下是对一些常见误区的 纠正

  • 即使有软件开发标准和过程规程,想要落实和实施它也不容易,何况软件开发是很多团队共同协作的过程。
  • 软件开发难以通过增加人手直接性的提高进度。有序且有计划有实施,才是保障进度的最好方法。也只有在这样的情况下,增加人手才有意义。
  • 与客户的沟通不畅,没有互相理解,及时纠正错误的信息,会导致不好的结果。
  • 变更需求的时间越是早期,变更成本就越小。在设计框架建立,资源分配,甚至项目启动之后再变更需求,成本会只增不减。
  • 文档和设计,是非常重要的一部分。

过程模型

4.1 惯用过程模型

  • 瀑布模型 (The Waterfall Model)
    • 变种: V-model
  • 增量过程模型 (Incremental Process Model)
  • 演化过程模型 (Evolutionary Process Model)

评论