7.1.1 软件工程概述
本课核心知识点整理
这一节不是孤立概念,而是整章地图
软件工程这一章会一路讲到开发模型、需求分析、系统设计、软件测试、维护、文档和质量保证。开头这节的价值,是先建立一条主线:软件系统从立项到退役,会经历一组相对稳定的活动;不同开发模型只是把这些活动用不同方式组织起来。
课堂特别说明:软件基本生命周期本身在考试中未必直接出成一道“背定义”的题,但后面所有知识点几乎都依附于这条主线。因此这一节要学成“导航图”,而不是只背一句软件工程定义。
软件工程解决什么问题
软件工程的核心是用工程化方法开发和维护软件,让复杂软件项目变得可计划、可控制、可验证、可维护。
| 没有工程化时的问题 | 软件工程的回应 |
|---|---|
| 需求说不清,做到一半反复变 | 需求获取、需求分析、需求管理 |
| 项目凭经验推进,进度不可控 | 项目计划、过程模型、里程碑和评审 |
| 代码能跑但结构混乱 | 概要设计、详细设计、模块化和架构设计 |
| 缺陷到上线后才暴露 | 单元测试、集成测试、系统测试、验收测试 |
| 交付后无法演化 | 维护、文档、配置管理、质量保证 |
软件工程不是“写代码的高级说法”。编码只是生命周期中的一个阶段,前面有需求和设计,后面有测试、部署、运行维护和退役。
本章的学习路线
从“软件产品”到“信息系统”
早期更常说“软件产品”,因为规模可能较小,一个程序、一个工具就能描述主要对象。现在更常说“信息系统开发”,因为软件往往与业务流程、数据库、网络、权限、运维、组织管理绑在一起。
| 视角 | 关注点 |
|---|---|
| 软件产品 | 程序功能、代码实现、版本发布 |
| 信息系统 | 业务流程、用户角色、数据、接口、部署、运维 |
这也是为什么系统开发不可能只从编码开始:用户需求要被转换为系统功能,系统功能要被设计成模块和接口,最后才进入实现和测试。
本章考试重点预告
| 内容 | 考试倾向 |
|---|---|
| 基本生命周期 | 常作为后续知识的背景,不一定直接考定义 |
| 软件过程与过程改进 | CMM、CMMI 等级名称和关键描述需要匹配 |
| 开发模型 | 瀑布、V、原型、螺旋、增量、喷泉、UP、敏捷是高频辨析 |
| 需求、设计、测试 | 常考阶段任务、工具、分类和概念边界 |
例题
软件工程更准确的含义是:
软件基本生命周期在本章中的作用是:
自查要点
- 为什么软件工程不等于编程?
- 生命周期为什么是第 7 章的主线?
- 软件产品和信息系统开发的关注点有什么不同?
- 工程化方法主要解决哪些不可控问题?
- 本章后续哪些内容会依附生命周期展开?