基本的软件工程活动有哪些?

软件规格说明、软件开发、软件确认和软件演化

软件规格说明、软件开发、软件确认和软件演化”——实际上是软件工程生命周期的核心阶段,构成了一个从概念到维护的完整闭环。

这四个活动通常与经典的瀑布模型紧密相关,但思想也贯穿于其他现代开发模型中。下面我将对每个阶段进行详细解释,并说明它们之间的关系。


1. 软件规格说明

这个阶段也称为需求工程系统分析。其核心目标是弄清楚“做什么”

  • 主要活动
    • 需求获取:与客户、用户、利益相关者沟通,收集原始需求、期望和约束。
    • 需求分析与协商:澄清模糊需求,解决需求之间的冲突,排定优先级。
    • 需求规格化:将分析后的需求以清晰、无歧义、结构化的方式文档化。产出通常是软件需求规格说明书
    • 需求验证:检查SRS是否完整、一致、可测试且符合实际。
  • 关键产出软件需求规格说明书,它是后续所有活动的基石和合同依据。
  • 核心问题:系统应该提供哪些功能和性能?必须满足哪些约束?

2. 软件开发

这个阶段也称为设计与实现。其核心目标是回答“怎么做”,并产出可运行的代码。

  • 主要活动
    • 系统设计:定义系统的总体架构,包括子系统划分、硬件/软件组件、数据存储策略、全局控制流等。
    • 详细设计:细化每个模块或组件的内部结构,定义具体的数据结构、算法、接口细节等。
    • 编码/实现:根据详细设计,使用选定的编程语言编写源代码。这是将设计转化为实际可执行程序的过程。
  • 关键产出:设计文档(架构设计、详细设计)、源代码、可执行的程序单元。
  • 核心问题:系统的结构如何组织?各个部分如何具体实现?

3. 软件确认

这个阶段通常称为软件测试质量保证。其核心目标是验证“做得对不对”,即产品是否符合规格说明和用户期望。

  • 主要活动
    • 验证与确认
      • 验证: “我们是否在正确地构建产品?”(符合规格说明)
      • 确认: “我们是否构建了正确的产品?”(满足用户真实需求)
    • 测试活动
      • 单元测试:测试单个函数或模块。
      • 集成测试:测试模块之间的接口和交互。
      • 系统测试:测试整个系统是否符合需求规格。
      • 验收测试:由用户/客户执行,确认系统是否满足其业务需求。
  • 关键产出:测试计划、测试用例、测试报告、缺陷跟踪记录、经过验证的可交付软件。
  • 核心问题:软件是否没有错误?是否满足所有要求?是否适合使用?

4. 软件演化

这个阶段也称为软件维护。其核心目标是在软件交付后“持续改进和适应变化”

  • 主要活动
    • 更正性维护:修复在运行过程中发现的缺陷(Bug)。
    • 适应性维护:使软件适应变化的外部环境(如新的操作系统、硬件、法律法规)。
    • 完善性维护:根据用户反馈,增加新功能或改进现有性能。
    • 预防性维护:修改软件以提高其未来的可维护性和可靠性。
  • 关键特点:软件演化是一个周期性的过程。对一个系统的修改本身就是一个小的“规格-开发-确认”周期。
  • 核心问题:如何应对变化的需求和环境?如何延长软件的生命周期和价值?

四者之间的关系与模型

  1. 线性顺序(瀑布模型)
    这是最经典的关联方式:规格说明 -> 开发 -> 确认 -> 演化。前一阶段完成后,才能进入下一阶段。适用于需求明确、变化少的项目。
  2. 迭代与增量模型
    在现代敏捷开发中,这四个活动被压缩在一个个短的迭代周期(如2-4周的冲刺)中。每个迭代都包含一小部分需求的规格、开发、确认,并可能产生一个可增量的版本。演化则是通过持续不断的迭代来实现的。
  3. 反馈循环
    • 确认阶段发现的问题,可能会反馈到开发甚至规格说明阶段进行修改。
    • 演化本质上是对已发布系统启动一个新的、更小的“规格-开发-确认”周期。

总结表格

阶段核心问题主要活动关键产出
软件规格说明做什么?需求获取、分析、规格化、验证软件需求规格说明书
软件开发怎么做?系统设计、详细设计、编码设计文档、源代码
软件确认做得对吗?验证与确认、各级测试(单元、集成、系统、验收)测试工件、已验证的软件
软件演化如何适应变化?更正性、适应性、完善性、预防性维护新版本软件、持续的服务

这四个阶段共同构成了软件从诞生到成长、再到持续适应变化的完整生命历程,是软件工程学科的基础框架。