软件工程概述

00:00
3 min Beginner 2026/6/14

软件工程定义、软件危机、工程化方法与软件生命周期。

1. 软件工程定义

软件工程是将系统化、规范化、可度量的方法应用于软件的开发、运行和维护的学科。

1.1 核心目标

目标说明
可靠性软件在规定条件下正确运行
可维护性软件易于修改和扩展
可扩展性软件能适应需求增长
高效性合理利用计算资源
可重用性组件可在不同项目中复用

1.2 软件危机

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

表现原因
项目超期超预算需求不明确、估算不准
软件质量低缺乏质量保证流程
维护困难代码结构混乱、文档缺失
需求变更频繁缺乏变更管理
团队协作困难沟通机制不完善

2. 软件生命周期

2.1 主要阶段

需求分析 → 系统设计 → 编码实现 → 测试验证 → 部署运维 → 维护演进
阶段产出物关键活动
需求分析需求规格说明书需求获取、分析、验证
系统设计设计文档架构设计、详细设计
编码实现源代码编码、代码审查
测试验证测试报告单元测试、集成测试、系统测试
部署运维运行系统部署、监控、运维
维护演进版本缺陷修复、功能增强

2.2 开发模型

模型适用场景
瀑布模型线性顺序需求明确的小项目
V模型测试开发对应安全关键系统
增量模型分批交付大型系统
螺旋模型风险驱动风险项目
敏捷模型迭代增量需求变化频繁

3. 软件质量属性

3.1 ISO 25010质量模型

软件产品质量
├── 功能适合性
│   ├── 完备性
│   ├── 正确性
│   └── 适当性
├── 性能效率
│   ├── 时间行为
│   ├── 资源利用
│   └── 容量
├── 兼容性
│   ├── 共存性
│   └── 互操作性
├── 可用性
│   ├── 可辨识性
│   ├── 易学性
│   └── 易操作性
├── 可靠性
│   ├── 成熟性
│   ├── 可用性
│   └── 容错性
├── 安全性
│   ├── 机密性
│   ├── 完整性
│   └── 不可抵赖性
├── 可维护性
│   ├── 模块化
│   ├── 可分析性
│   └── 可修改性
└── 可移植性
    ├── 适应性
    ├── 可安装性
    └── 可替换性

4. 软件工程原则

4.1 核心原则

原则说明
DRYDon’t Repeat Yourself,消除重复
KISSKeep It Simple, Stupid,保持简单
YAGNIYou Aren’t Gonna Need It,不做过设计
关注分离每个模块关注一个职责
信息隐藏模块内部实现对外不可见
最少知识最小模块间的依赖

4.2 工程化实践

实践说明
版本控制Git管理代码变更
持续集成自动化构建和测试
代码审查评审保证质量
自动化测试测试覆盖
文档驱动设计文档与代码同步

知识检测

学习进度

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

学习推荐

专注模式