1. 软件工程概述与核心概念
软件工程是一门系统化、规范化、可量化的学科,它关注软件开发的全生命周期管理。1968年北约会议上首次提出这个概念时,正是为了解决当时日益严重的"软件危机"——项目延期、预算超支、质量低下成为普遍现象。经过半个多世纪发展,软件工程已经形成完整的知识体系。
1.1 软件工程的定义与特征
软件工程的核心特征体现在三个方面:
- 系统性:采用工程化的方法管理开发过程
- 规范性:遵循标准化的文档和流程
- 可量化:通过度量指标控制质量
与传统的程序设计不同,软件工程更强调团队协作、过程管理和质量保证。一个典型的软件项目开发中,编写代码的时间通常只占30%左右,其余时间都用于需求分析、设计、测试和维护。
1.2 软件开发的本质特性
软件开发具有几个独特性质:
- 不可见性:软件是逻辑实体而非物理实体
- 复杂性:软件系统往往包含数百万个交互部件
- 可变性:需求变更贯穿整个生命周期
- 一致性:必须与运行环境、硬件、用户习惯等保持一致
这些特性决定了软件开发不能简单套用传统工程方法,需要发展专门的技术和管理手段。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 软件生命周期与过程模型
2.1 传统瀑布模型
瀑布模型是最早提出的软件开发模型,将过程划分为:
- 需求分析 → 2. 系统设计 → 3. 实现 → 4. 测试 → 5. 维护
优点:
- 阶段划分清晰
- 文档驱动
- 适合需求明确的项目
局限:
- 难以应对需求变更
- 前期的错误后期才发现
- 客户直到最后才能看到产品
2.2 迭代与增量模型
现代项目更常采用迭代开发方式,典型代表包括:
- 螺旋模型:结合瀑布与原型法的优点,强调风险分析
- RUP(Rational统一过程):用例驱动、架构为中心、迭代增量
- 敏捷方法:Scrum、XP等强调快速交付和持续改进
迭代开发的核心优势在于:
- 早期交付部分功能
- 及时获取用户反馈
- 降低项目风险
- 更灵活应对变更
3. 软件工程知识体系
3.1 需求工程
需求工程是项目成功的关键,包含:
- 需求获取:访谈、问卷、观察等方法
- 需求分析:建立用例模型
