Lazy loaded image
考研
软件工程
字数 4671阅读时长≈ 12 分钟
2026-10-20
2026-10-20

一、软件

1. 软件定义:

程序 + 文档 + 数据

2. 软件分类

① 基于软件功能:
  • 系统软件:操作系统、编译程序
  • 支撑软件:协助用户开发软件的工具型软件
  • 应用软件:商业数据处理、工程与科学软件、智能产品嵌入软件、人工智能软件、个人软件
② 基于软件规模:
类别
参加人员数
开发周期
产品规模(LOC)
微型
1
1~4周
0.5K
小型
1
1~6月
1K~2K
中型
2~5
1~2年
5K~50K
大型
5~20
2~3年
50K~100K
甚大型
100~1000
4~5年
1M
极大型
2000~5000
5~10年
1M~10M

二、软件工程

1. 软件发展

① 程序设计阶段:
没有成体系的程序开发,没有科学的文档记录,开发者没有明确分工
② 程序系统阶段:
程序开发者忙于软件维护,出现软件危机
③ 软件工程阶段
工程化的设计原则与流程,软件危机得到缓解
④ 第四阶段
出现新技术,出现新挑战

2. 软件危机

① 定义:
在计算机软件开发和维护过程中遇到的一系列严重问题
② 表现:
  • 软件开发成本和进度估计不准
  • 产品不符合用户需求
  • 软件产品的质量不可靠
  • 软件的可维护性差
  • 软件没有适当的文档资料

3. 1993年IEEE的定义

把系统化、规范化、可度量的途径应用于软件开发、运行和维护过程中;研究其实现途径

4. 技术

  • 软件开发方法学
  • 软件开发过程
  • 软件工具和软件工程环境

5. 管理

  • 软件管理学
  • 软件经济学
  • 软件心理学

三、软件生存周期

1. 定义:

软件从产生、发展到成熟、直至衰亡为止

2. 组成:

软件定义、软件开发、软件维护

3. 国标《计算机软件开发规范》的8个阶段:

① 可行性研究与计划(可行性分析)
  • 关键任务:解决问题是什么?有行得通解决方法?粗略计划?
  • 问题定义报告:问题性质、工程目标、工程规模
  • 可行性研究报告:经济、技术、社会(操作)可行性
  • 项目开发计划:粗略
② 需求分析
  • 关键任务:目标系统必须做什么?要求完整、准确、清晰、具体
  • 需求规格说明书:目标系统需求
③ 总体设计
  • 关键任务:如何实现目标系统?根据需求设计方案
  • 总体设计说明书:记录总体设计结果
④ 详细设计
  • 关键任务:如何具体实现系统?设计每个模块的算法和数据结构
  • 详细设计说明书:用适当表达工具表达算法和数据结构
⑤ 实现(编码和测试单元)
  • 关键任务:选择语言、工具翻译详细设计结果、测试模块
  • 程序清单
  • 单元测试报告
⑥ 集成测试
  • 关键任务:将经过单元测试的模块组装起来进行测试,通过测试使软件达到预定要求
  • 测试报告:测试计划、测试方案、测试结果
⑦ 确认测试(验收测试:由用户进行的测试)
  • 关键任务:由用户按需求规格说明书规定进行测试
⑧ 使用和维护
  • 关键任务:通过必要维护活动使系统持久满足用户需求
  • 维护类型:
    • 改正性维护:软件运行过程中发现错误,进行维护
    • 适应性维护:软件运行软硬件环境变化,进行维护
    • 完善性维护:用户要求改进或扩充软件,进行维护
    • 预防性维护:为将来的维护做准备
  • 改正性维护:软件运行过程中发现错误,进行维护
  • 适应性维护:软件运行软硬件环境变化,进行维护
  • 完善性维护:用户要求改进或扩充软件,进行维护
  • 预防性维护:为将来的维护做准备

四、软件过程模型

1. 瀑布模型

① 基本模型:使用最早,应用最广
② 带反馈环:更具实际性
③ 优点:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  • 提高软件质量
  • 降低维护成本
  • 缓解软件危机
④ 缺点:
  • 模型缺乏灵活性
  • 无法解决需求不明确问题
  • 用户不经过实践提出完整准确需求不切实际

2. 快速原型模型

① 模型:
快速建立反应用户主要需求的原型系统,反复由用户评价修正需求,开发出最终产品
② 优点:
在这里插入图片描述
在这里插入图片描述
  • 确定需求上优于瀑布模型(通过原型与用户交互)
  • 提供学习手段,通过开发原型与演示原型对开发者和使用者了解系统都有积极作用
  • 有的软件原型可以成为最终产品的一部分
③ 缺点:
  • 快速建立的系统结构加连续修改可能导致产品质量低下
  • 原型系统的内部结构可能不好

3. 增量模型

① 模型:
又称渐增模型,开发软件时将软件产品做一系列增量构建设计、编码、集成和测试
② 区别:
瀑布和快速原型模型是一次把满足所有需求产品提交给用户,增量模型是分批向用户提交产品
③ 优点:
在这里插入图片描述
在这里插入图片描述
  • 较短时间向用户提交可完成有用工作产品
  • 用户有充裕时间学习和适应产品
  • 软件结构必须开放,方便向现有产品加入新构件
  • 在实现构件前完成总体的需求分析、规格说明和概要设计,相对来说风险较小
④ 缺点:
  • 做到第三个优点比较困难
⑤ 风险更大的增量模型:
确定用户需求后,各构件级并行构建

4. 螺旋模型

① 模型:
在这里插入图片描述
在这里插入图片描述
  • 加入风险分析,常指导大型软件项目
  • 软件风险:超期、超预算、行业竞争
  • 笛卡尔坐标四象限表达四方面活动,延螺线自内向外每旋转一圈开发出更完善新版本:
    • 制定计划:确定目标、选定方案、设定约束条件
    • 风险分析:评估方案、识别和消除风险
    • 实施工程:软件开发
    • 客户评估:评价开发工作,计划下一阶段工作
  • 制定计划:确定目标、选定方案、设定约束条件
  • 风险分析:评估方案、识别和消除风险
  • 实施工程:软件开发
  • 客户评估:评价开发工作,计划下一阶段工作
② 优点:
在这里插入图片描述
在这里插入图片描述
  • 大型软件开发项目有较好的风险控制
③ 缺点:
  • 需要风险评估的经验
  • 契约开发通常需要事先指定过程模型和发布产品
  • 普及不如前述模型

5. 喷泉模型

① 模型:
面向对象生命周期模型,体现迭代和无缝特性
  • 迭代:求精,系统某部分常被重复工作多次,相关功能在每次迭代中逐渐加入演进系统
  • 无缝:分析、设计、编码各阶段不存在明显边界
② 优点:
在这里插入图片描述
在这里插入图片描述
  • 无缝,可同步开发,提高开发效率,节省开发时间
  • 适应面向对象软件
③ 缺点:
  • 可能随时添加各种信息、需求与资料
  • 需严格管理文档,审核的难度加大

6. Rational统一过程

① 模型:
强调迭代的二维模型,具有四个连续阶段,九个核心工作流
② 优点:
在这里插入图片描述
在这里插入图片描述
  • 不断地版本发布成为一种团队日常工作的直正驱动力
  • 将发现问题、制定方案和解决过程集成到下一次迭代
  • 迭代开发,降低风险
  • 更好的安排产品开发的辅助过程

7. 微软公司软件开发过程

① 模型:
  • 微软公司在实践过程中开发,具有五个阶段:
    • 规划阶段:开展市场调查研究,结合公司战略形成产品的远景目标
    • 设计阶段:根据产品远景目标,完成软件功能规格说明和总体设计,确定产品开发的主要进度
    • 开发阶段:完成产品中所有构件的开发工作
    • 稳定阶段:实行全面的内部和外部测试,最终形成可发布的RTM版本
    • 发布阶段:确认产品质量符合发布标准后,发布产品及相关消息
  • 规划阶段:开展市场调查研究,结合公司战略形成产品的远景目标
  • 设计阶段:根据产品远景目标,完成软件功能规格说明和总体设计,确定产品开发的主要进度
  • 开发阶段:完成产品中所有构件的开发工作
  • 稳定阶段:实行全面的内部和外部测试,最终形成可发布的RTM版本
  • 发布阶段:确认产品质量符合发布标准后,发布产品及相关消息
  • 递进式的开发策略:解决问题的及时性、不确定和变更因素可控性、缩短产品上市周期
② 缺点:
在这里插入图片描述
在这里插入图片描述
  • 过于依赖实践,理论依据不足

五、结构化分析

1. 核心思想:

  • 分解化简问题
  • 物理与逻辑表示分开
  • 进行数据与逻辑抽象

2. 分析步骤

① 发现需求
  • 与用户交谈,向用户提问题
  • 参观用户的工作流程,观察用户的操作
  • 向用户群体发调查问卷
  • 与同行、专家交谈,听取他们的意见
  • 分析已经存在的同类软件产品,提取需求
  • 从行业标准、规则中提取需求
  • 从互联网上搜索相关资料
② 求精
对初步需求反复求精多次细化
③ 建模
建立模型,用图形符号和组织规则书面描述事物
  • 核心:数据字典
    • 用于描述软件使用和产生的所有数据对象
  • 用于描述软件使用和产生的所有数据对象
  • 数据模型:数据对象模型、实体—关系图
    • 描述数据对象间关系
    • 图中数据对象属性用“数据对象描述”表达
  • 描述数据对象间关系
  • 图中数据对象属性用“数据对象描述”表达
  • 功能模型:数据流图、处理规格说明
    • 描绘数据在软件中移动、变换及相应功能
    • 图中功能用“处理规格说明”表达
  • 描绘数据在软件中移动、变换及相应功能
  • 图中功能用“处理规格说明”表达
  • 行为模型:状态转换图、控制规格说明
    • 描绘系统状态和在不同状态间转换方式
    • 图中软件控制附加信息用“控制规格说明”表达
  • 描绘系统状态和在不同状态间转换方式
  • 图中软件控制附加信息用“控制规格说明”表达
④ 规格说明
书写软件需求规格说明,作为分析阶段最终成果
⑤ 复审
再次审核

3. 数据模型:实体—关系图

① 数据对象:
软件必须理解的复合信息表示,复合信息是具有一系列不同性质或属性的事物
  • 事务(报表)
  • 地点(教室)
  • 角色(学生)
  • 单位(学校)
  • 行为(上课)
② 数据对象间的关系:
对象彼此间相互连接的方式,也称联系
  • 老师教学生:教
  • 一对一
  • 一对多
  • 多对一
③ 属性:
定义数据对象的性质
  • 姓名
  • 学号
  • 班级
④ E—R 图:
  • 实体:矩形框
  • 属性:圆角矩阵、椭圆
  • 关系:菱形

4. 功能模型:数据流图

① 符号:
在这里插入图片描述
在这里插入图片描述
  • 数据的源点或终点:正方形
  • 变换数据的处理:圆角矩阵
  • 数据存储:开口矩形或两条平行线
  • 特定数据的流动方向:箭头
  • 且:乘号
  • 或:加号
  • 异或:圆圈加号
② 层次结构的数据流图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  • 顶层数据流图:包含一个加工项
  • 底层数据流图:加工项不再分解
  • 中间层数据流图:对低层的细化
    • 在这里插入图片描述
在这里插入图片描述
  • 编号:
    • 子图的编号是父图相应的处理逻辑的编号
    • 子图中处理逻辑编号由子图号、小数点与局部号组成
      • 在这里插入图片描述
  • 子图的编号是父图相应的处理逻辑的编号
  • 子图中处理逻辑编号由子图号、小数点与局部号组成
    • 在这里插入图片描述
在这里插入图片描述
  • 平衡:
    • 子图详细地描述父图中处理逻辑
    • 子图的输入、输出数据流应同父图处理逻辑的输入、输出数据流相一致
      • 在这里插入图片描述
  • 子图详细地描述父图中处理逻辑
  • 子图的输入、输出数据流应同父图处理逻辑的输入、输出数据流相一致
    • 在这里插入图片描述
在这里插入图片描述
  • 局部数据存贮:在子图中出现的数据存贮,可以不出现在父图中,画父图时只需画出处理逻辑之间的联系,不必画出各个处理逻辑内部的细节
  • 命名规则:
    • 用名词,区别于控制流
    • 充分反映全部功能,不能出现描述不充分
    • 不用缺乏具体含义名字(不能引发歧义)
  • 用名词,区别于控制流
  • 充分反映全部功能,不能出现描述不充分
  • 不用缺乏具体含义名字(不能引发歧义)
③ 作用:
  • 作为交流信息的工具
  • 作为分析和设计的工具
  • 物理系统不同时需标注自动化边界

5. 行为模型:状态转换图

① 组成:
在这里插入图片描述
在这里插入图片描述
  • 状态:被观察到的系统的行为模型
  • 事件:引起状态转换的外界事件抽象
  • 行为:进入某状态所做动作
② 符号:
  • 初始状态:实心圆
  • 终止状态:实心圆+圆环
  • 中间状态:圆角矩形(表格化处理)
    • 状态名
    • 状态变量
    • 行为
  • 事件:箭头表示,需标注箭头名,后跟状态转换的条件
  • 行为:状态框内do+行为名

6. 数据字典

对系统使用的所有元素定义的集合,半形式化方法表达
① 定义:
在这里插入图片描述
  • 数据流:
    • 数据流名
    • 说明:简要介绍作用即产生的因果
    • 数据流去向
    • 数据流组成:数据结构
    • 每个数据的数据量、流通量
      • 在这里插入图片描述
        在这里插入图片描述
  • 数据元素:
    • 数据元素名
    • 类型:数字(离散值、连续值)、文字(编码类型)
    • 长度
    • 取值范围
    • 相关数据元素及数据结构
      • 在这里插入图片描述
  • 数据存储:
    • 数据存储名
    • 简述:存放的是什么数据
    • 输入数据
    • 输出数据
    • 数据文件组成:数据结构
    • 存储方式:顺序、直接、关键码
    • 存取频率
      • 在这里插入图片描述
        在这里插入图片描述
  • 处理:
    • 处理名
    • 处理编号:反映该处理的层次
    • 简要描述:加工逻辑及功能简述
    • 输入数据流
    • 输出数据流
    • 加工逻辑:简述加工程序、加工顺序
② 定义数据方法:自顶向下
由数据元素组成数据的方式:
在这里插入图片描述
  • 顺序:以确定次序连接两个或多个数据元素
  • 选择:从两个或多个可能元素中选一个
  • 重复:把指定数据元素重复零次或多次
  • 可选:一个数据元素可有可无的
③ 符号:
符号
含义
举例
===
等价于/定义为
+++
与/连接
[ ∣ ][~\mid~][ ∣ ]
或/选择
m { } n
重复m…n次
( )(~)( )
可选
" ""~"" "
基本数据元素
⋅⋅
范围
④ 示例:
在这里插入图片描述
在这里插入图片描述
原创存证 · 本地哈希 · 7535e0d7369b...
算法:SHA-256
时间:2026-10-20
哈希:7535e0d7369b41167df4beea6faeba4502f6a9d2d1eb9215ecf2b1a5509da5a6

该信息用于辅助证明当前内容版本,不等同于法律公证或版权登记。

上一篇
植被覆盖度时空变化规律分析实例
下一篇
计算机网络复试问题笔记

评论
Loading...