🎓 总站 🏠 本课目录 01 概述 02 软件过程 03 需求工程 04 系统建模 05 概要设计 06 报告与高可信 07 交互与状态图 08 详细设计 09 AOP 10 测试
软件系统综合课程设计 · 第1章

软件工程概述

软件与软件危机、软件工程的定义/目标/三要素、生命周期、SWEBOK 与职业道德——软件工程的入门全景。

📚 学习进度
0%

🎯学习目标

  • 掌握:软件及其特点(软件 = 程序 + 数据 + 文档)
  • 理解:软件危机的表现与原因
  • 理解:软件工程的概念、定义、目标与原则
  • 理解:软件工程人员的职业道德

1软件及其特点

1. 软件的概念(核心公式)

程序 + 数据 + 文档 软 件 =
图1 · 软件的本质:程序 + 数据 + 文档(三者缺一不可)
⭐ 必记软件 = 程序 + 数据 + 文档。软件是逻辑产品(无形),与硬件(hardware,有形物理产品)相对。程序是指令序列,数据是程序处理的对象,文档是开发使用维护的资料。

2. 软件的特点

  • 软件是逻辑产品,不是物理产品,无形。
  • 软件的开发不同于硬件制造,更多是设计/智力活动。
  • 软件不会磨损,但会随需求变化而"退化",需要维护。
  • 复杂性高、成本高;对硬件有依赖又相对独立。

4. 软件相关人员

开发者、用户、维护者、管理者等,各自关注点不同。

2软件产品分类

分类角度类别
按功能系统软件(操作系统等)、支撑软件(工具/中间件)、应用软件
按服务方式通用软件(面向大众)、定制软件(面向特定用户)

典型应用类别:

🎨

图形处理

CAD、CAE、Visio

🗄️

数据处理

数据库、实时处理系统

🔌

嵌入式

嵌入设备的控制软件

🌐

网络/分布式

分布式与网络软件

🤖

人工智能

AI 类软件

3软件危机 ⭐(重点)

软件发展的三个阶段

① 程序设计阶段(1946—1956):个体手工方式,无文档,程序自用。
② 程序系统阶段(1956—1968):软件作坊,多人协作,开始有文档。
③ 软件工程阶段(1968— ):用工程化方法开发软件。

软件危机的背景

时间 → 成本占比 硬件↓ 软件↑ 交叉点
图2 · 成本交叉:硬件成本不断下降,软件成本不断上升 → 软件危机凸显

软件危机的表现(5 条)

  1. 软件开发成本和进度难以控制、估计不准;
  2. 软件质量差、可靠性难以保证;
  3. 软件维护困难、维护成本高;
  4. 用户对完成的软件不满意
  5. 缺少适当的文档资料。

(Standish Group 的 CHAOS Report 统计显示大量项目失败或超支。)

软件危机的原因

  • 软件规模和复杂度急剧增长(如 Windows 各版本代码行数暴涨);
  • 软件本身特点:逻辑产品、难度量、难测试;
  • 开发方法和管理不当;
  • 轻视维护

4软件工程的由来与定义

📅 由来1968 年北约(NATO)会议首次提出"软件工程(Software Engineering)"一词,主张用工程化方法开发软件,使其可使用、可维护、可管理。
💡 通俗理解:什么是软件工程?

软件工程就是把"写程序"这件事从"手工作坊"变成"现代工厂"。

想象盖房子:如果几个工人随便砌砖,小房子还行,但盖高楼大厦就会塌。所以需要图纸(设计文档)施工规范(开发流程)质量检查(测试)——这就是"工程化"。

软件也一样:早期一个人写小程序没问题,但现代软件动辄几百万行代码、几十人合作,没有工程化方法就会延期、超预算、质量差——这就是"软件危机"。软件工程就是用系统化、规范化、可量化的方法来开发软件,让它按时、按质、按预算交付。

两个经典定义

来源定义
Fritz Bauer建立并使用完善的工程化原则,以经济地获得可靠的、能在实际机器上高效运行的软件。
IEEE系统化、规范化、可量化的方法应用于软件的开发、运行和维护

软件工程发展历史:第一代 → 第二代 → 第三代 → 第四代软件工程。

5软件工程目标与生命周期

软件工程目标

在给定成本、进度下,开发出满足用户需求、具有可靠性、可维护性、可理解性、高质量、高效率的软件。

软件生命周期(SDLC)各阶段

可行性研究 需求分析 概要设计 详细设计 编码 测试 运行维护
图3 · 软件生命周期:可行性研究 → 需求分析 → 概要设计 → 详细设计 → 编码 → 测试 → 运行维护

6软件工程三要素 ⭐

过程Process 方法Method 工具Tool
图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