Skip to content

Commit ad100ee

Browse files
committed
docs: update 计算机科学/软件工程导论/1 初识软件工程
1 parent 874e481 commit ad100ee

File tree

10 files changed

+301
-1
lines changed

10 files changed

+301
-1
lines changed

index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ features:
1515
details: 概率论与数理统计<br>计算方法(数值分析)
1616
link: /数学
1717
- title: 计算机科学
18-
details: 数据结构<br>面向对象设计与 Java 编程
18+
details: 数据结构<br>面向对象设计与 Java 编程<br>软件工程导论
1919
link: /计算机科学
2020
- title: 物理
2121
details: 大学物理

计算机科学/index.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,15 @@ Java 是一门面向对象的编程语言,吸收了 C++ 语言的各种优点
2929
::: info Completed.
3030
本学科的笔记更新已完结,后续或有修改与拓展。
3131
:::
32+
33+
---
34+
35+
### [《软件工程导论》](软件工程导论/index.html)
36+
37+
**软件工程是将系统化、规范化、可度量的方法应用于软件的开发、运行和维护的过程**。它是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
38+
39+
<CourseLink text="软件工程导论" href="软件工程导论/index.html" />
40+
41+
::: warning Incomplete!
42+
本学科的笔记更新尚未完结。
43+
:::
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# 初识软件工程
2+
3+
## 软件危机的概念与包含的问题
4+
5+
**概念**
6+
7+
软件危机是指在计算机软件**开发及维护的过程中**所遇到的**一系列严重问题**
8+
9+
**包含的问题**
10+
11+
- 如何开发软件,以**满足不断增长、日趋复杂的需求**
12+
- 如何**维护数量不断膨胀**的软件产品?
13+
14+
## 产生软件危机的原因
15+
16+
**客观原因**
17+
18+
- **软件管理****控制开发过程**相当**困难**
19+
- 软件在**运行时发现的错误**很可能是**开发时期引入的、在测试阶段没能检测出来的**错误。
20+
- 软件**规模庞大**,且程序**复杂性**将随着规模的增加而**呈指数上升**
21+
22+
**主观原因**
23+
24+
- **开发人员对开发和维护有错误的认识**。如忽视需求分析的重要性,认为开发就是写程序,轻视软件维护等。
25+
- **只重视程序而忽视软件配置其余成分**的糊涂观念。
26+
27+
## 消除软件危机的途径
28+
29+
- **对软件有正确的认识**。一个软件必须由一个完整的配置组成。软件是程序、数据及相关文档的完整集合。
30+
- 充分认识到软件开发是一种**组织良好、管理严密、各类人员协同配合、共同完成**的工程项目。
31+
- **使用在实践中成功的技术和方法**,并且**研究探索更好、更有效**的技术和方法。
32+
- **在测试阶段做好充分的检测工作**,提交给客户高质量的软件。
33+
34+
## 什么是软件?什么是程序?什么是数据?什么是文档?
35+
36+
软件是**程序****数据****相关文档**的完整集合。
37+
38+
- **程序****能够完成预定功能和性能的可执行的指令序列**
39+
- **数据****使程序能够适当地处理信息的数据结构**
40+
- **文档****开发、使用和维护程序所需要的图文资料**
41+
42+
## 软件工程的定义
43+
44+
- **1969 年 Fritz Bauer 的基本定义**
45+
46+
软件工程是建立和使用合理的工程化原则来活得经济的软件,并且在实现中是可靠和有效的。
47+
48+
- **1983 年 IEEE 定义**
49+
50+
软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护,以及对这些方法的研究,也就是说,将工程方法应用于软件领域的过程。
51+
52+
## 软件工程的三要素及各要素的含义
53+
54+
- **过程**
55+
56+
为了获得高质量的软件所需要完成的**一系列任务的框架**,它规定了**完成各项任务的工作步骤**
57+
58+
- **方法**
59+
60+
完成软件开发的各项任务的**技术方法**,回答“**怎样做**”的问题
61+
62+
- **工具**
63+
64+
为运用方法而提供的自动的或半自动的**软件工程支撑环境**
65+
66+
## 软件的生命周期包含哪些阶段?
67+
68+
**需求分析**阶段、**描述与定义**阶段、**设计**阶段、**实现**阶段、**测试**阶段、**维护**阶段和**淘汰**阶段。
69+
70+
## 软件需求分析阶段的任务是什么?阶段性成果是什么?
71+
72+
**任务**
73+
74+
软件工程师需要了解客户(或用户)**需要什么样的软件产品**,即需要软件具备哪些功能、完成何种任务、处理什么数据等等。
75+
76+
**阶段性成果****软件需求规格说明书**
77+
78+
## 软件设计阶段的任务是什么?阶段性成果是什么?
79+
80+
**任务**
81+
82+
依据软件需求规格说明文档的内容,具体设计软件的结构、方法、数据、界面及各个软件功能模块的接口、数据和算法。
83+
84+
**阶段性成果****软件设计文档**
85+
86+
## 软件设计阶段分为哪两个子阶段?各子阶段的工作分别是什么?
87+
88+
这个阶段分为**概要设计****详细设计**两个子阶段:
89+
90+
- **概要设计阶段**完成**对软件总体结构的设计和模块的划分工作**
91+
- **详细设计阶段**完成**各个软件模块的设计工作**
92+
93+
## 软件的维护阶段具体是指什么阶段?
94+
95+
软件的维护阶段是指**软件交付给客户之后****直到软件被淘汰**的阶段。
96+
97+
## 软件维护阶段的主要工作包括什么?
98+
99+
- **正确性维护**:对软件中发现的错误进行更正。
100+
- **扩充性维护**:为增加软件的功能而进行的修改。
101+
- **性能性维护**:为提升软件的运行性能而进行的修改。
102+
- **适应性维护**:为软件适应不同应用环境而进行的修改和升级。
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# 软件生命周期模型
2+
3+
## 软件过程包含哪几个具体过程?
4+
5+
## 何时开发者才可以开始制定软件项目管理计划?
6+
7+
## 软件结构设计文档和软件详细设计文档包含的主要内容有哪些?
8+
9+
## 编写实现代码时需要对程序进行注释,注释的内容包括哪些?
10+
11+
## 软件的集成阶段的任务是什么?
12+
13+
## 集成测试包括哪几种测试方法?简述这几种测试方法的基本步骤
14+
15+
## 什么是 Alpha 和 Beta 测试?
16+
17+
## 瀑布模型开发软件有哪几个特点?
18+
19+
## 喷泉模型的概念、开发过程与适用场合
20+
21+
## 什么是敏捷开发方法?其中最有影响的两个敏捷开发方法是什么?
22+
23+
## 敏捷开发的重要原则是什么?
24+
25+
## 什么情况下可以考虑采用敏捷开发过程?
26+
27+
## 能根据具体项目背景描述判断采用瀑布模型、快速原型模型、增量模型、螺旋模型、面向对象模型、Rational 统一过程、敏捷过程和微软过程中的哪种模型,并说明采用它的具体原因
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# 结构化的软件工程
2+
3+
## 结构化程序设计的基本思想是什么?
4+
5+
## 给出结构化分析的定义
6+
7+
## 结构化分析步骤包括哪些?
8+
9+
## 软件需求包括哪几种需求?分别解释这几种需求
10+
11+
## 结构化分析模型包括哪几种模型?分别解释这几种模型
12+
13+
## 数据模型包括哪些内容?数据模型用什么来表示?
14+
15+
## 简述功能模型的概念,功能模型常用的表述方式有哪些?
16+
17+
## 理解数据流图并能根据给出的具体系统描述画出数据流图
18+
19+
## 结构化设计方法的基本原理包括哪些?
20+
21+
## 概要设计的主要任务是什么?
22+
23+
## 模块的定义是什么?
24+
25+
## 构成程序的基本构件是什么?
26+
27+
## 模块化的概念,其实质是什么?
28+
29+
## 为什么模块的独立性很重要?
30+
31+
## 模块的独立程度可以由哪两个定性标准度量?
32+
33+
## 内聚与耦合的概念是什么?
34+
35+
## 模块耦合分为哪几种?
36+
37+
## 最高程度的耦合是哪种耦合?
38+
39+
## 模块耦合应该采取的设计原则是什么?
40+
41+
## 内聚分为哪几大类?
42+
43+
## 能够对求解问题画出正确的 IPO 图和 HIPO 图
44+
45+
## 能够对求解问题画出正确的程序流程图和盒图(N-S 图)
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# 面向对象的软件工程
2+
3+
## 面向对象的软件开发过程一般分为哪几个阶段?
4+
5+
## 面向对象程序的特点有哪些?
6+
7+
## 多态性的概念是什么?
8+
9+
## 面向对象的多态性包含哪两类?
10+
11+
## 什么是面向对象分析(Object Oriented Analysis,OOA)?OOA 有哪几个层次?
12+
13+
## 面向对象分析(OOA)的分析结果是什么?
14+
15+
## OOD 的过程分为哪两个阶段?两个阶段的具体任务是什么?
16+
17+
## 面向对象设计中常用的设计准则有哪 7 种?
18+
19+
## 什么是 UML 的模型元素?
20+
21+
## 列出至少 6 种 UML 的图示模型
22+
23+
## 在面向对象软件开发不同阶段分别应用 UML 的什么模型?
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# 需求分析与描述
2+
3+
## 什么是需求?
4+
5+
## 什么是功能需求?什么是非功能需求?
6+
7+
## 什么是系统需求?系统需求包括哪些分析模型?
8+
9+
## 面向对象的系统需求模型的描述有哪几种方法?
10+
11+
## 需求工程的活动可以划分为哪几个独立的阶段?
12+
13+
## 面向对象的需求分析需建立系统的哪几种模型?
14+
15+
## 使用什么图来建立数据模型?
16+
17+
## 什么是 ER 模型?
18+
19+
## ER 图中包含哪几种基本元素?分别都用什么来描述?
20+
21+
## 什么是联系?数据对象的联系分为哪几种类型?
22+
23+
## 什么是数据字典?
24+
25+
## 什么是原型化方法?它可以分为哪几种?
26+
27+
## 能根据具体的场景描述画出系统的用例图
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# 实现与测试
2+
3+
## 编程语言的类型包括哪几种?
4+
5+
## 好的编程风格与原则是什么?
6+
7+
## 软件重用包括哪几种类型?
8+
9+
## 软件设计阶段的重用包括哪些?
10+
11+
## 举例 2 个主流的代码托管平台
12+
13+
## 集成开发环境的定义是什么?
14+
15+
## 举例 3 个常见的集成开发环境
16+
17+
## 版本管理工具的核心及关键功能是什么?举 2 个常见的版本管理工具的例子
18+
19+
## 单元测试的概念及常用方法是什么?
20+
21+
## 黑盒测试及白盒测试的概念是什么?
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# 软件维护
2+
3+
## 软件维护的定义是什么?
4+
5+
## 客户对系统进行验收测试,包括哪两个方面?
6+
7+
## 软件维护的种类有哪些?
8+
9+
## 什么是软件维护管理?
10+
11+
## 什么是正向工程?
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# 《软件工程导论》
2+
3+
::: info Contributors
4+
本学科笔记由 [<img src="https://github.com/TouHikari.png" alt="TouHikari" style="display: inline-block; max-width: 20px; max-height: 20px; border-radius: 100%; vertical-align: text-bottom;"> TouHikari](https://github.com/TouHikari/) 整理并贡献。
5+
:::
6+
7+
**软件工程是将系统化、规范化、可度量的方法应用于软件的开发、运行和维护的过程**。它是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
8+
9+
对于本学科不作具体课程讲解,只整理了西北工业大学软件学院开课的《软件工程》课程的 2025 年秋季学期的结课考试的重点问题及其答案。
10+
11+
## 目录
12+
13+
### 第 1 章 [初识软件工程](1%20初识软件工程/index.html)
14+
15+
### 第 2 章 [软件生命周期模型](2%20软件生命周期模型/index.html)
16+
17+
### 第 3 章 [结构化的软件工程](3%20结构化的软件工程/index.html)
18+
19+
### 第 4 章 [面向对象的软件工程](4%20面向对象的软件工程/index.html)
20+
21+
### 第 5 章 [需求分析与描述](5%20需求分析与描述/index.html)
22+
23+
### 第 6 章 [实现与测试](6%20实现与测试/index.html)
24+
25+
### 第 7 章 [软件维护](7%20软件维护/index.html)
26+
27+
### 参考资料
28+
29+
| 名称 | 作者 | 出版社 |
30+
| :-------------------------- | :--------------- | :----------------- |
31+
| 《软件工程基础(第 2 版)》 | 郑江滨等著 | 西北工业大学出版社 |
32+
| 《软件工程导论(第 6 版)》 | 张海藩、牟永敏著 | 清华大学出版社 |

0 commit comments

Comments
 (0)