软件工程概述
软件与软件危机、软件工程的定义/目标/三要素、生命周期、SWEBOK 与职业道德——软件工程的入门全景。
🎯学习目标
- 掌握:软件及其特点(软件 = 程序 + 数据 + 文档)
- 理解:软件危机的表现与原因
- 理解:软件工程的概念、定义、目标与原则
- 理解:软件工程人员的职业道德
1软件及其特点
1. 软件的概念(核心公式)
图1 · 软件的本质:程序 + 数据 + 文档(三者缺一不可)
⭐ 必记软件 = 程序 + 数据 + 文档。软件是逻辑产品(无形),与硬件(hardware,有形物理产品)相对。程序是指令序列,数据是程序处理的对象,文档是开发使用维护的资料。
2. 软件的特点
- 软件是逻辑产品,不是物理产品,无形。
- 软件的开发不同于硬件制造,更多是设计/智力活动。
- 软件不会磨损,但会随需求变化而"退化",需要维护。
- 复杂性高、成本高;对硬件有依赖又相对独立。
4. 软件相关人员
开发者、用户、维护者、管理者等,各自关注点不同。
2软件产品分类
| 分类角度 | 类别 |
|---|---|
| 按功能 | 系统软件(操作系统等)、支撑软件(工具/中间件)、应用软件 |
| 按服务方式 | 通用软件(面向大众)、定制软件(面向特定用户) |
典型应用类别:
🎨
图形处理
CAD、CAE、Visio
🗄️
数据处理
数据库、实时处理系统
🔌
嵌入式
嵌入设备的控制软件
🌐
网络/分布式
分布式与网络软件
🤖
人工智能
AI 类软件
3软件危机 ⭐(重点)
软件发展的三个阶段
① 程序设计阶段(1946—1956):个体手工方式,无文档,程序自用。
② 程序系统阶段(1956—1968):软件作坊,多人协作,开始有文档。
③ 软件工程阶段(1968— ):用工程化方法开发软件。
软件危机的背景
图2 · 成本交叉:硬件成本不断下降,软件成本不断上升 → 软件危机凸显
软件危机的表现(5 条)
- 软件开发成本和进度难以控制、估计不准;
- 软件质量差、可靠性难以保证;
- 软件维护困难、维护成本高;
- 用户对完成的软件不满意;
- 缺少适当的文档资料。
(Standish Group 的 CHAOS Report 统计显示大量项目失败或超支。)
软件危机的原因
- 软件规模和复杂度急剧增长(如 Windows 各版本代码行数暴涨);
- 软件本身特点:逻辑产品、难度量、难测试;
- 开发方法和管理不当;
- 轻视维护。
4软件工程的由来与定义
📅 由来1968 年北约(NATO)会议首次提出"软件工程(Software Engineering)"一词,主张用工程化方法开发软件,使其可使用、可维护、可管理。
💡 通俗理解:什么是软件工程?
软件工程就是把"写程序"这件事从"手工作坊"变成"现代工厂"。
想象盖房子:如果几个工人随便砌砖,小房子还行,但盖高楼大厦就会塌。所以需要图纸(设计文档)、施工规范(开发流程)、质量检查(测试)——这就是"工程化"。
软件也一样:早期一个人写小程序没问题,但现代软件动辄几百万行代码、几十人合作,没有工程化方法就会延期、超预算、质量差——这就是"软件危机"。软件工程就是用系统化、规范化、可量化的方法来开发软件,让它按时、按质、按预算交付。
两个经典定义
| 来源 | 定义 |
|---|---|
| Fritz Bauer | 建立并使用完善的工程化原则,以经济地获得可靠的、能在实际机器上高效运行的软件。 |
| IEEE | 将系统化、规范化、可量化的方法应用于软件的开发、运行和维护。 |
软件工程发展历史:第一代 → 第二代 → 第三代 → 第四代软件工程。
5软件工程目标与生命周期
软件工程目标
在给定成本、进度下,开发出满足用户需求、具有可靠性、可维护性、可理解性、高质量、高效率的软件。
软件生命周期(SDLC)各阶段
图3 · 软件生命周期:可行性研究 → 需求分析 → 概要设计 → 详细设计 → 编码 → 测试 → 运行维护
6软件工程三要素 ⭐
图4 · 软件工程三要素:过程(Process)、方法(Method)、工具(Tool)
⭐ 必记软件工程三要素 = 过程 + 方法 + 工具。过程是框架(做什么、何时做),方法是技术(怎么做),工具是支持(自动化手段)。
7软件工程知识体系 SWEBOK(15 个知识域)
SWEBOK(Software Engineering Body of Knowledge)定义了软件工程的 15 个知识域:
软件需求
软件设计
软件构造
软件测试
软件维护
配置管理
工程管理
工程过程
模型与方法
软件质量
职业实践
工程经济学
计算基础
数学基础
工程基础
8软件工程师职业道德八准则 ⭐
ACM/IEEE《软件工程师职业道德规范》八项基本准则(点击翻转):
①
公众
PUBLIC与公众利益一致,对公众安全负责。
②
客户和雇主
CLIENT/EMPLOYER在符合公众利益前提下维护客户和雇主利益。
③
产品
PRODUCT确保产品及修改达到最高专业标准。
④
判断
JUDGMENT维护职业判断的诚信与独立。
⑤
管理
MANAGEMENT管理者提倡合乎道德的管理方法。
⑥
职业
PROFESSION维护职业的诚信与声誉。
⑦
同行
COLLEAGUES公平对待并支持同行。
⑧
自己
SELF终身学习,提倡合乎道德的从业方法。
💡 记忆八准则口诀:公众、客户雇主、产品、判断、管理、职业、同行、自己。"公众利益"永远优先级最高。
⭐重点例题
例1:软件的定义是什么?软件 = 程序 + 数据 + 文档。程序是指令序列;数据是程序处理的对象及结构;文档是开发、使用、维护所需的图文资料。三者缺一不可——只有程序没有文档,会带来维护困难(软件危机表现之一)。
例2:列举软件危机的表现与原因表现:成本进度难控、质量差、维护难、用户不满意、缺文档。原因:规模复杂度增长、软件本身特点(逻辑/难测)、方法管理不当、轻视维护。
例3:软件工程的三要素及含义过程(做什么、何时做的框架)、方法(如何做的技术)、工具(支持过程与方法的自动化手段)。三者结合才能工程化地开发软件。
例4:职业道德准则辨析"为赶进度隐瞒已知严重缺陷交付"违反了哪条?→ 主要违反原则1 公众(危害公众利益/安全)与原则3 产品(未达专业标准)。
🎯自测(点击展开)
软件的定义(公式)是什么?
软件 = 程序 + 数据 + 文档。
"软件工程"一词最早在何时由谁提出?
1968 年北约(NATO)会议首次提出。
软件危机的主要表现有哪些(至少3条)?
成本/进度难控制、质量差可靠性低、维护困难、用户不满意、缺少文档。
软件工程三要素是什么?
过程(Process)、方法(Method)、工具(Tool)。
软件生命周期包含哪些阶段?
可行性研究→需求分析→概要设计→详细设计→编码→测试→运行维护。
软件与硬件相比最大的特点?
软件是逻辑产品(无形),不会磨损但会退化需维护;开发是设计而非制造。
📝强化题库
选择题点选即时判分;填空题输入后"检查"或"显示答案"。
已答 0/0答对 0正确率 —
已答 0/0答对 0