【软件工程】软件工程知识点提纲1
1. 软件的含义、特点
1.1 含义
软件=程序+数据+文档
1.2 特点:
- 软件是一种逻辑实体。
- 软件是人类智力产品。
- 软件开发过程复杂。
- 软件需要长期维护。
- 软件成本昂贵。
- 软件可以复制。
2. 软件危机的含义、典型表现、产生原因
2.1 含义
在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.2 典型表现
- 对软件开发成本和进度的估计常常很不准确
- 用户对“已完成的”软件系统不满意的现象经常发生
- 软件产品的质量往往靠不住
- 软件常常是不可维护的
- 软件通常没有适当的文档资料
- 软件成本在计算机系统总成本中所占的比例逐年上升
- 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势
2.3 产生原因
- 与软件本身的特点有关
- 软件开发与维护的方法不正确有关
3. 软件工程的含义、特性、基本原理
3.1 含义
指导计算机软件开发和维护的一门工程学科。把系统的、规范的、可度量的途径应用与软件开发、运行和维护过程。
3.2 特性
- 软件工程关注于大型程序的构造
- 软件工程的中心课题是控制复杂性
- 软件经常变化
- 开发软件的效率非常重要
- 和谐地合作是开发软件的关键
- 软件必须有效地支持它的用户
- 在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品
3.3 基本原理
- 用分阶段的生命周期计划严格管理
- 坚持进行阶段评审
- 实行严格的产品控制
- 采用现代程序设计技术
- 结果应能清楚地审查
- 开发小组的人员应该少而精
- 承认不断改进软件工程实践的必要性
4. 软件生命周期的含义、各个阶段、各个阶段的任务
4.1 含义
软件从提出到最终被淘汰的这个存在期。
4.2 软件生命周期的各个阶段
软件生命周期的各个阶段 | 软件生命周期的各个阶段的任务 |
问题定义 | 回答“要解决的问题是什么” |
可行性研究 | 回答“对于上一阶段所确定的问题有行得通的解决办法吗” |
需求分析 | 确定“为了解决这些问题目标系统必须做什么” |
总体设计(概要设计) | 回答“概括地说应该怎样实现目标系统” |
详细设计 | 以比较抽象概括的方式提出解决问题的办法 |
编码和单元测试 | 写出真确的容易理解、容易维护的程序模块 |
综合测试 | 通过各种类型的测试使软件达到预定的要求 |
5. 软件生命周期模型
5.1 瀑布模型
5.1.1 流程图
5.1.2 优点
- 采用规范的方法;严格规定每个阶段提交的文档;
- 要求每个阶段交出的产品必须经过验证。
5.1.2 缺点
- 在可运行的软件交付之前,用户只能通过文档来了解产品;
- 开发人员与用户缺乏有效的沟通。
5.1.3 适用场合
- 需求比较明确和稳定。
5.2 快速原型模型
5.2.1 流程图
5.2.2 优点
- 不带反馈环,基本上是线性顺序进行。
5.2.2 缺点
- 客户与开发者对原型理解不同
- 准确的原型设计比较困难;
- 不利于开发人员的创新。
5.2.3 适用场合
- 用户需求不确定;
- 开发人员对关键技术缺乏把握。
5.3 增量模型
5.3.1 流程图
5.3.2 优点
- 能较短时间内提交可完成部分工作的产品;
- 可以使用户有充裕的时间学习和适应新产品。
5.3.2 缺点
- 把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。
- 软件体系结构必须是开放的。
5.3.3 适用场合
- 用户需要尽早得到可运行的产品。
5.4 螺旋模型
5.4.1 流程图
5.4.2 优点
- 多次迭代,每次迭代产出不同阶段的产品(比如原型、正式软件的不同版本),在每次迭代之前都增加风险分析。
5.4.2 缺点
- 采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失
5.4.3 适用场合
- 比较大型的软件;
- 风险控制比较重要。