Appearance
软工导论复习笔记
卷面分占
70%一、30道 选择题(1分/题)
二、5道 简答题 画图+计算(6分/题)三道文字题(俩第一章(本质特征+周期+模型)一个第五章(耦合、内聚))
三、2道 分析题(20分/题)
1.对一个问题定义给出数据流图,软件结构
2.软件测试(设计黑白盒测试用例)
第一章
两道简答题 第2、3、4节
软件工程本质特征
- 软件工程关注于大型程序的构造
- 软件工程的中心课题是控制复杂性
- 软件经常变化
- 开发软件的效率非常重要
- 和谐地合作是开发软件的关键
- 软件必须有效地支持它的用户
- 在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品
软件生命周期概念,阶段,各个阶段内容
软件定义
- 问题定义:确定要解决的问题
- 可行行研究:探索问题是否值得去解,是否有可行的解决办法
- 需求分析:完整地体现用户的要求。提供规格说明书
软件开发
- 总体设计:设计程序的体系结构,确定由哪些模块组成以及模块间的关系
- 详细设计:实现模块功能所需要的算法和数据结构
- 编码与单元测试:写出正确的容易理解、容易维护的程序模块
- 综合测试:分为集成测试和验收测试。通过各种类型的测试使软件达到预定的要求
运行维护
- 软件维护:通过维护时系统持久地满足用户的需要。分为:纠错性维护、适应性维护、完善性维护、预防性维护
五个软件工程模型特点
| 模型名称 | 特点 | 优点 | 缺点 |
|---|---|---|---|
| 瀑布模型 | 1.阶段间具有顺序性和依赖性 2.推迟实现的观点 3.质量保证的观点 4.文档驱动 5.带“反馈环” | 规范的开发方法、完整的文档、高质量的程序 | 由文档驱动,可能不能真正满足用户的需要 |
| 快速原型模型 | 线性顺序进行,本质是快速 1.原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户地需求,因此在开发过程中不会因为发现了规格说明文档地错误而进行较大地返工 2.开发人员通过建立原型系统已经学到了许多东西,因此在设计和编码阶段发生错误地可能性比较小 | 保证用户的真实需求得到满足、快速 | 耗时、需不断与用户沟通 |
| 增量模型 | 先提供核心功能,再逐步完善 | 1.能在较短时间内向用户提交可完成部分工作地产品 2.逐步增加产品功能可以使用户有较充裕地时间学习和适应新产品 3.开发顺序灵活。 | 软件体系结构必须是开放的 |
| 螺旋模型 | 基本思想是降低风险 相当于增加了风险分析的快速模型 使用原型模型及其他方法来降低风险、适用于大规模软件项目 | “风险”驱动(主要)、提高质量、降低风险、有利于已有软件的重用 | 需要有经验的开发人员来评估风险 |
| 喷泉模型 | 主要用于支持面向对象开发过程体现了软件创建所固有的迭代和无缝的特征 是对象驱动的过程,对象是活动作用的主体,也是项目管理的基本内容 以分析为基础,资源消耗呈塔形,在分析阶段消耗资源最多 | 开发迭代无缝衔接、维护时间缩短 | 由于开发阶段重叠,所以需要大量开发人员、要求严格管理文档且可能随时加入信息使得审核难度加大 |
区别于瀑布和快速原型模型:
瀑布和快速原型模型是一次把满足所有需求产品提交给用户。增量模型是分批向用户提交产品。
第二、三章
系统分析
(自顶向下分解方法画数据流图——符号)
选择题
(不用看状态转换图、行为、效益分析计算、ER模型)
第五章
简答题+分析题
面向数据流的设计方法转换成软件结构
总体分析原理,模块独立性(两个评价指标定义,内容,类型)
总体设计原理:模块化,抽象,逐步求精,信息隐藏和局部化,模块独立
内聚、耦合的定义
耦合 定义:软件结构中不同模块间互连程度度量。取决模块间接口复杂程度,通过接口数据追求尽可能松散耦合系统。
内聚 定义:模块内各元素彼此结合紧密程度。
模块独立程度的度量标准
耦合原则:尽量使用数据耦合,少用控制耦合,限制公共环境耦合, 完全不用内容耦合。
内聚原则:力求做到高内聚,如:功能内聚、信息内聚,不要使用低内聚,如:时间内聚、逻辑内聚和偶然内聚
第六章
简答题 三个详细设计工具(程序流程图,盒图,PAD考一个)
程序流程图:描述过程设计的方法,使用混乱在尽量减少使用。
优点:直观、容易掌握
缺点:
不是逐步求精的好工具,使程序员过早考虑控制流程,而不考虑全局结构。
箭头代表控制流,不受约束随意转移。
不易表示数据结构
盒图(N-S图)
功能域明确
不能随意转移控制
容易确定局部和全局数据的作用域
容易表示嵌套关系,可以表示模块的层次结构
问题分析图(PAD图):使用二维树形结构来表示程序的控制流。
PAD设计出的必然是结构化程序
PAD图描绘的程序结构清晰
PAD图表现程序的逻辑易读、易懂、易记
PAD图转换成高级语言容易
可表示程序逻辑,也可表示数据结构
PAD符号支持自动向下,逐步求精
第七章
白盒测试——逻辑覆盖,黑盒测试——等价类划分 + 选择题(多)
测试目标,步骤,重点 样例——输入+输出 不画表,直接写测试数据和设计原因
最后一节 可靠性分析计算错误数,测试时间










第八章
一个选择题
习题
习题 2-4
目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,请分层次地画出描述本系统功能的数据流图。
医院对患者监护系统的基本要求是随时接收每个病人的生理信号(脉搏、体温、血压、心电图等) ,定时记录病人情况以形成患者日志,当某个病人的生理信号超出医生规定的安全范围时向值班护士发出警告信息,此外,护士在需要时还可以要求系统印出某个指定病人的病情报告。

版本1

版本2

习题 2-5
北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第一位数字不是0,校外电话又分为本市电话和外地电话两类。拨校外电话需要先拨0,若是本市电话则接着拨8位数字(第一位不是0),若是外地电话则拨3位区码后再拨8位电话号码(第一位不是0)。
答:
电话号码=[校内电话号码|校外电话号码]
校内电话号码=非零数字+3位数字
校外电话号码=[本市号码|外地号码]
本市号码=数字零+8位数字
外地号码=数字零+3位数字+8位数字
非零数字=[1|2|3|4|5|6|7|8|9]
数字零=0
3位数字=3{数字}3
8位数字=非零数字+7位数字
7位数字=7{数字}7
数字=[0|1|2|3|4|5|6|7|8|9]
其中,[ ]意思是或,从校内电话号码或校外电话号码中选择一个;{ }表示重复,两边的数字表示重复次数的下限和上限;=意思是定义为;+意思是和,连接两个分量。
功能模型、数据模型、行为模型分别指什么
(1)数据模型:实体关系图
(2)功能模型:数据流图
(3)行为模型:状态转换图
盒图练习

求素数、求方程的解

三个数降序排序、十个数求最大值

PAD图

cpp
int a[] = {98,76,109,34,67,190,80,12,14,89,1};
int k = sizeof(a) / sizeof(a[0]);
int j;
for(int I = 1 ; I < k ; i++) {
if(a[i] < a[i-1]) {
int temp = a[i];
for(j = i-1 ; j >= 0 && a[j] > temp ; j--)
a[j+1] = a[j];
a[j+1] = temp;
}
}
for(int f = 0 ; f < k ; f++) {
cout<<a[f]<<" ";
}
return 0;
数据流图 例
假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。
对于每个需要再次定货的零件应该列出下述数据;零件编号、零件名称、定货数量、目前价格、主要供应者和次要供应者。
零件入库或出库称为事务。
通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。


