软件工程考点(一)
Updated:
第一章 软件工程概述
1. 软件生命周期
软件有一个孕育,诞生,成长,成熟,衰亡的生存过程。这个过程为计算机软件的生存期。
软件生命周期分为三个阶段:
- 计划时期
- 问题定义(问题是什么)
- 可行性研究(有可行的解)
- 开发时期
- 需求分析 (功能)
- 概要设计 (如何解决问题)
- 详细设计 (怎样实现)
- 编码和测试阶段
- 运行时期
- 主要是在运行中完成各类维护
2. 软件生存期模型
软件生存期模型是跨越整个生存期的系统开发,运作和维护所实施的全部过程、活动和任务的结构框架
(1) 瀑布模型
特点:
- 阶段间具有顺序性和依赖性
- 推迟实现的观点
- 质量保证的观点
(2)(快速)原型模型
特点:
- 快速建立一个能反映用户需求的原型系统
- 快速原型模型不带反馈环,产品开发基本上是线性顺序进行的
(3)增量模型
特点:
- 与瀑布模型和原型模型不同(目标在一次就把一个满足是所有需求的产品提交给用户),分批逐步向用户提交产品
- 逐步增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户带来的冲击
(4) 螺旋模型
特点:
- 使用原型及其他方法来尽量降低风险,在每个阶段之前都增加了风险分析过程的快速原型模型
- 适用于内部开发的大规模软件项目中
- 是风险驱动的(是优点也是弱点)
比较
|模型 | 优点 | 缺点 |
|–|–|–|
| 瀑布模型 | 文档驱动 | 系统可能不满足需求|
| 原型模型 | 关注满足需求 | 系统设计差,难于维护 |
| 增量模型 | 及时反馈,易于维护 | 需要开放式结构,设计差 |
| 螺旋模型 | 风险驱动 | 风险分析人员需要经验和训练|
| 面向对象模型 | 工具丰富,自动化程度高 | 对开发人员要求较高|
3. 软件危机
- 软件超出预算,落后于进度表,不可靠
- 在计算机软件的开发和维护过程中所遇到的一系列严重问题
(1)软件危机的表现
- 与软件本身的特点有关
- 与软件开发和维护的方法不正确
第二章 可行性研究
1. 可行性研究的任务
了解客户的要求及现实环境,论证软件项目的可行性,编写可行性研究报告,指定初步项目开发计划
- 技术可行性
研究内容:
对待开发项目的功能,性能和限制条件进行分析,确定在现有的资源条件下,项目能否实现,开发风险有多大
考虑的问题:- 开发风险
- 资源可用性
- 技术
- 经济可行性
研究内容:
对项目的开发成本和预期收益进行评估,确定该项目是否值得去投资开发
研究范围:- 成本–效益分析
- 公司长期的经营策略
- 开发所需要的成本和资源
- 潜在的市场前景
考虑的问题: - 开发成本的估算
- 开发效益的估算
- 运行成本的估算
- 运行效益的估算
- 社会可行性
研究内容:- 开发项目是否存在违反法律
- 开发项目在用户组织内是否行得通
- 现有的管理体制,人员素养和操作方式是否可行
同时可分为:
- 操作可行性
- 法律可行性
2. 成本/效益分析
从经济指标对新系统的投资/获益情况进行评估,以便从经济角度判断该系统是否值得投资。
- 货币的时间价值
采用利率的形式表示货币的时间价值
- i 为年利率
- p 表示为存入的钱
- n 表示年份
- 投资回收期
积累的经济效益==最初投资所需要的时间 - 纯收入
在整个软件的生存期内系统的累计经济效益与投资的差
3. 系统流程图举例
4. 例题:
5. 数据字典
关于数据流程图中出现的所有名字(数据流,处理,数据存储)的定义的集合
组成:
- 数据流条目
- 数据存储条目
- 处理条目
用途:
- 作为分析阶段的工具,与数据流图共同来完整的描述一个系统。(数据流图只是描述了系统的逻辑模型,但是没有给出数据及各个加工处理过程的具体含义,数据字典相当于是有益的补充)
- 开发数据库的基础
组成:
名字,别名,描述,定义,位置
6. 数据流图考题
数据流图基本框架:
例题:
1. 顶层
2. 中间层
3. 底层
7. 数据字典考题
写出这个发票的数据流条目:
第三章 需求分析
1. 用户需求分类
- 功能性需求:定义了系统做什么
- 非功能性需求:定义了系统工作时的特性
2. 用户需求的内容
3. 教学ER图
4. 加工条目
加工类条目及数据处理描述(或称为小说明),描述实现加工的策略而不是加工的细节。
注意:
小说明:可认为是DD的组成部分,也可以在DD中定义只说明每个加工的组成(比如每个处理分解成多少个处理),而在小说明中详细描述它的处理逻辑。
对于基本处理过程给出加工逻辑,也包括一些与加工有关的信息,如执行条件,优先级,出错处理等
加工逻辑描述工具(重点)
- 结构化语言
介于自然语言和形式语言之间
特点:
无确定语法,可分层,嵌套,各层有内外层之分等特点 - 判定表描述
- 判定输描述
例题: