前置知识: 计算机基础

软件工程

00:00
8 min Intermediate 2026/6/14

软件工程:需求分析、设计模式、敏捷开发、测试策略与项目管理

1. 软件工程概述

1.1 软件危机

1968年 NATO 会议提出”软件危机”概念:

  • 软件项目经常超时、超预算
  • 软件质量低劣、维护困难
  • 缺乏系统化的开发方法

1.2 软件生命周期

需求分析 → 系统设计 → 详细设计 → 编码实现 → 测试 → 部署 → 维护

1.3 软件过程模型

模型特点适用场景
瀑布模型线性顺序,文档驱动需求明确的项目
增量模型分批交付,逐步完善大型项目
螺旋模型风险驱动,迭代高风险项目
喷泉模型面向对象,迭代OO项目
敏捷模型快速迭代,拥抱变化需求变化频繁

2. 需求工程

2.1 需求分类

  • 功能需求:系统应该做什么
  • 非功能需求:系统应该做到什么程度
    • 性能需求:响应时间、吞吐量
    • 安全需求:认证、授权、加密
    • 可靠性需求:MTBF、MTTR
    • 可用性需求:并发用户数

2.2 需求获取方法

方法优点缺点
访谈深入了解耗时
问卷覆盖面广深度不足
观察真实场景受霍桑效应影响
原型直观验证可能偏离实际

2.3 用例建模

用例图要素:

  • 参与者(Actor):与系统交互的外部实体
  • 用例(Use Case):系统提供的功能
  • 关系:包含(include)、扩展(extend)、泛化(generalization)

2.4 需求规格说明

SRS(Software Requirements Specification)应满足:

  • 完整性:覆盖所有需求
  • 一致性:需求之间不矛盾
  • 可验证性:每条需求可测试
  • 可追踪性:需求可追溯到来源

3. 软件设计

3.1 设计原则(SOLID)

原则含义
单一职责(SRP)一个类只有一个变化原因
开闭原则(OCP)对扩展开放,对修改关闭
里氏替换(LSP)子类可替换父类
接口隔离(ISP)客户端不应依赖不需要的接口
依赖反转(DIP)依赖抽象而非具体实现

3.2 设计模式分类

创建型模式

模式意图
单例(Singleton)确保类只有一个实例
工厂方法(Factory Method)由子类决定创建哪个对象
抽象工厂(Abstract Factory)创建一族相关对象
建造者(Builder)分步骤构建复杂对象
原型(Prototype)通过克隆创建对象

结构型模式

模式意图
适配器(Adapter)接口转换
桥接(Bridge)分离抽象与实现
组合(Composite)树形结构统一处理
装饰器(Decorator)动态添加职责
外观(Facade)简化子系统接口
代理(Proxy)控制对象访问

行为型模式

模式意图
观察者(Observer)一对多依赖通知
策略(Strategy)算法族可互换
模板方法(Template Method)定义算法骨架
命令(Command)请求参数化
迭代器(Iterator)顺序访问集合
状态(State)状态驱动行为

3.3 架构模式

模式特点适用场景
分层架构关注点分离企业应用
MVC模型-视图-控制器Web应用
微服务独立部署、松耦合大型系统
事件驱动异步消息通信实时系统
CQRS读写分离高并发系统

4. 敏捷开发

4.1 敏捷宣言

  • 个体和互动 高于 流程和工具
  • 工作的软件 高于 详尽的文档
  • 客户合作 高于 合同谈判
  • 响应变化 高于 遵循计划

4.2 Scrum 框架

角色职责
Product Owner管理产品待办列表
Scrum Master促进 Scrum 实践
Development Team自组织开发
事件时长目的
Sprint1~4周迭代开发
Sprint计划4h确定Sprint目标
每日站会15min同步进展
Sprint评审4h展示成果
Sprint回顾3h持续改进

4.3 看板方法

  • 可视化工作流
  • 限制在制品(WIP)
  • 管理流动
  • 显式化策略
  • 实施反馈环

4.4 极限编程(XP)

实践说明
结对编程两人一台电脑
测试驱动开发先写测试再写代码
持续集成频繁集成到主干
重构改善代码结构
简单设计只实现当前需要

5. 软件测试

5.1 测试层次

层次目标方法
单元测试验证模块功能白盒测试
集成测试验证模块间接口灰盒测试
系统测试验证系统功能黑盒测试
验收测试验证用户需求黑盒测试

5.2 白盒测试

语句覆盖:每条语句至少执行一次。

分支覆盖:每个分支至少执行一次。

路径覆盖:每条路径至少执行一次。

条件覆盖:每个条件的真假至少各取一次。

覆盖路径 > 分支 > 语句

5.3 黑盒测试

等价类划分:将输入分为有效和无效等价类

边界分析测试边界附近的

因果分析输入条件之间的逻辑关系。

正交实验法减少测试用例数量

5.4 测试金字塔

        /  E2E测试  \        少量,慢
       /  集成测试    \      适量
      /   单元测试      \    大量,快

5.5 度量指标

6. 软件度量

6.1 面向规模度量

6.2 面向对象度量(CK度量集)

含义
WMC方法权重总和
DIT继承
NOC子类数量
CBO耦合
RFC方法调用数
LCOM方法内聚

6.3 功能点分析

其中 UFP 为未调整功能,VAF 为价调整因子

7. 软件维护

7.1 维护类型

类型占比说明
完善性维护50%~66%增强功能
适应性维护18%~25%适应环境变化
纠错性维护17%~21%修复缺陷
预防性维护4%维护

7.2 技术债务

技术债务是选择快速方案而非更好方案所产生的额外工作

管理策略:定期重构、代码审查、自动化测试

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式