第1章 软件工程 计算机软件是指计算机系统中的程序和文档。 1. 什么 ...
第一章 软件工程
计算机软件是指计算机系统中的程序和文档。
1. 什么是软件危机, 为什么会出现软件危机, 软件危机是指:
在计算机开发和维护过程中所遇到的一系列严重问题。几乎所有的软件都不同程度
地存在这些问题。
出现软件危机的原因是:
1) 取得正确的用户需求和正确地描述需求很困难
2) 开发人员对需求的正确理解也有困难
3) 常常在没有正确理解之前就仓促开始编程
4) 软件项目缺乏有效的组织、管理和内部交流
5) 缺乏软件开发方法、模型和工具的支持
6) 软件维护的困难性
主要表现在:
1) 对软件开发成本和进度的估计不准确
2) 用户对“已完成的”软件不满意
3) 软件产品质量靠不住
4) 软件不可维护
5) 软件没有适当的文档
6) 软件成本上升
7) 软件开发速度跟不上硬件速度,也跟不上计算机应用迅速普及深入的趋势
3 什么是软件工程, 怎样运用软件工程消除/缓解软件危机, 软件工程是指:
开发、运行和维护和修复软件的系统方法 运用软件工程消除/缓解软件危机的途径是:
结合实际软件开发经验和软件工程的7条基本原理来消除/缓解软件危机
软件工程的7条基本原理是:
1) 用分阶段的生命周期计划严格管理
2) 坚持进行阶段评审
3) 实行严格的产品控制
4) 采用现代程序设计技术 (结构化/面向对象程序设计方法)
5) 结果应能清楚地审查
6) 开发小组的人员应该少而精
7) 承认不断改进软件工程实践的必要性
第二章 软件过程
瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型
1. 什么是软件过程, 它与软件工程方法学有何关系,
软件工程过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完
成各项任务的工作步骤。 软件过程的基础是软件生命周期,软件过程在应用时可以采
用各种模型。不同的方法学都必须遵循基本的生命周期过程,但需要选择适当的生命周
期模型。
2. 假设你要开发一个软件, 它的功能是把73624.9385 这个数开平方,所得到的结果应该
精确到小数点后4位。一旦实现并测试完之后,该产品将被抛弃。你打算选用哪种软件
生命周期模型,请说明你做这样选择的理由。
采用基本的瀑布模型
理由:
1) 需求明确,无需原型模型即可取得需求
2) 算法也很成熟,开发后就抛弃,所以不必用增量或者螺旋模型
3. 假设你要为一家生产和销售长筒靴的公司开发一个软件, 该产品将监控该公司的存货:
跟踪从购买橡胶开始到靴子生产,发货给各个连锁店,直接卖给顾客的全过程。你在为
这个项目选择生命周期模型时使用什么准则?
可以采用增量模型,也可以用螺旋模型。因为可以分解成比较独立的几个部分。
螺旋模型则可以取得较明确的需求,而且可以逐步完善。
第三章 结构化分析
1. 银行计算机储存系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系
统,如果是存款则系统记录存款人姓名、住址(或电话号码)、身份证号码、存款类型、
存款日期、到期日期、利率及密码(可选)等信息,并印出存款单给储户;如果是取款
而且存款时留有密码,则系统首先核对储户密码,如密码正确或存款时未留密码,则系
统计算利息并印出利息清单给储户。
请用数据流程图描绘本系统的功能, 并用实体——关系图(ER图)描绘系统中的数据
对象。
顶级数据流图
从这里开始细化对系统的描述
细化的数据流图
ER图:
住址 电话号码 身份证号密码
姓名 码
利率 存款类型
码 存款单 储蓄所名称存款日期 码
操作员姓名
到期日期码
码
取款
利息清单
姓名 储蓄所名称
码
取款日期 操作员姓名
利息 计息标准 码
数据流图: 画信息流,不要画工作的执行顺序,关键是要有信息在其中流动。 用名词描述数据流,用动词描述数据处理,要用有确切意思的词,不要用“系统信息”这样泛泛的词。
要用正确的符号一般不要包含出错处理
ER图: 属性和实体或联系之间的连线是不带箭头的。
5. 办公室复印机的工作过程大致如下: 未收到复印命令时处于闲置状态,一旦接受到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现缺纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,进入卡纸状态,发出警告等待维修人员排除故障,故障排除后回到闲置状态。
请用状态转换图描绘复印机的行为。
等待复印命令
闲置状态
接收复印命令
缺页状态完成复印命令 复印状态 警告
执行复印命令 装纸 缺页
卡纸
故障排除 卡纸状态
警告
维修
6. 某高校可用的电话号码有以下几类: 校内电话号码由4位数字组成,第一位数字不是0;校外电话又分本市电话和外地电话两类,拨校外电话需要先拨0,如果是本地号码再接着拨8位电话号码(第一位不是0),如果是外地电话号码先拨3位区号,再拨8位电话号码(第一位不是0)。
请用
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
描述符号,定义上述电话号码。(编号0开始)
电话号码=[校内电话|校外电话]
校内电话=[1|2|3|4|5|6|7|8|9]+3{数字}3
校外电话=0+[本地电话|外地电话]
本地电话= [1|2|3|4|5|6|7|8|9]+7{数字}7
外地电话= 3{数字}3+[1|2|3|4|5|6|7|8|9]+7{数字}7
第四章 结构化设计
11. 画出下列伪码程序的流程图和盒图:
START
IF p Then
WHILE q DO
f
END DO
ELSE
BLOCK
g
n
END BLOCK
END IF
STOP
程序流程图
盒图
计算方法
判断表 p86 判断树 87
根据P53【图3.17-工资支付系统完整的数据流图】的数据流进行概要设计,
画出得到的H图。(参考p75 图4.22)
首先判断是一个变换流
然后按照变换流的结构构造H图
第五章 结构化实现
黑盒测试: 功能测试 按规格说明书测试 白盒测试: 结构测试 程序逻辑测试
4. 回答下列问题 p135:
(1)什么是模块测试和集成测试,它们各有什么特点,
a) 模块测试:测试单独的模块,确保其作为一个单元来说功能是正确的。
特点:大量采用白盒测试技术,检查模块控制结构中的特定路径,以确保做到
完全覆盖并发现最大数量的错误
b) 集成测试:是测试和组装软件的系统化技术,在把模块按照设计要求组装起来的同时进行测试,主要目标是发现与接口有关的问题
特点:大量采用黑盒测试技术,为了保证覆盖主要的控制 路径,也可能使用
一定数量的白盒测试
(2) 1000行Fortran编译后约5000条机器指令,估计有多少错误, • 根据书上的公式,每1000条指令中约有5-20个错误,由于编译后大约有5000条
指令,因此总共约有25-100个错误。
(3)设计一个程序的语句覆盖和路径覆盖测试用例
START
INPUT(A,B,C)
IF A>5 THEN
X=10
ELSE
X=1
END IF
IF B>10 THEN
Y=20
ELSE
X=2
END IF
IF C>15 THEN
Z=30
ELSE
Z=3
END IF
PRINT(A,B,C)
STOP
语句覆盖
因为每个判定表达式为真或为假时均有赋值语句,为了使每个语句都至少执行
一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一
次。下面是实现语句覆盖的典型测试用例:
a(使3个判定表达式之值全为假:
• 输入A=1,B=1,C=1,预期的输出为X=1,Y=2,Z=3。
b(使3个判定表达式之值全为真:
• 输入A=20,B=40,C=60,预期的输出为X=10,Y=20,Z=30。 路径覆盖
本程序共有8条可能的执行通路,为做到路径覆盖总共需要8组测试数据:
• 3个判定表达式之值全为假:输入:A=1,B=1,C=1;预期的输出:X=1,Y=2,Z=3。
• 3个判定表达式依次为假、假、真:输入:A=1,B=1,C=60;预期的输出:
X=1,Y=2,Z=30。
• 3个判定表达式依次为假、真、假:输入:A=1,B=40,C=1;预期的输出:
X=1,Y=20,Z=3。
• 3个判定表达式依次为假、真、真:输入:A=1,B=40,C=60;预期的输出:
X=1,Y=20,Z=30。
• 3个判定表达式依次为真、假、假:输入:A=20,B=1,C=1;预期的输出:
X=10,Y=2,Z=3。
• 3个判定表达式依次为真、假、真:输入:A=20,B=1,C=60;预期的输出:
X=10,Y=2,Z=30。
• 3个判定表达式依次为真、真、假:输入:A=20,B=40,C=1;预期的输出:
X=10,Y=20,Z=3。
• 3个判定表达式之值全为真:输入:A=20,B=40,C=60;预期的输出:
X=10,Y=20,Z=30。
(4)假设机器字长为16位,若对此程序进行穷尽测试,则共需进行多少次测试,
• 答:假设程序中每个变量一个字长,则需要测试次数为:
163 16*348(2) = 2=2
11. 测试长度为24000条指令的程序,经一个月,甲找到并改正了20个错,使MTTF达到10h,同时乙发现24个错,其中6个甲也发现了,以后甲独自继续测试,问 (1)开始测试前共有多少错误,
答:根据公式,刚开始的错误数估计为:
– ET=(24/6)*20=80;
(2)为使MTTF达到60,需再改正多少个错,还要多长测试时间
由于平均无故障时间与单位长度程序中剩余的错误数成反比,按公式5.6,具体到
本题,得到的方程为:
10=24000/(K*(80-20)),计算出K=40
假设需要改正的错误数为EC,为了MTTF达到60h,必须:
60=24000/(40*(80-EC)),计算得到EC=70
由于已经改正了20个错误,因此还需要再改正50个错误。
假设甲在继续的测试中仍然按每月发现20个错误的速度,则还需要2.5个月
*如果假设乙发现的错误也被改正了,则需要再改正32个错误,需要1.6个月。
第六章 面向对象方法学导论
2 什么是“对象”,与传统的数据有什么关系,有什么不同
定义: 对象是具有相同状态的一组操作的集合
以数据为中心,对象是主动的, 传统的是被动的,实现了数据封装。
第七章 面向对象分析
按照p187第一段指出的错误,图7.9应该做怎样的改变,
• 在图7.9中增加以下内容
画出7.7节所述电梯系统的事件跟踪图 (参考p185) • 作业中的问题
关键是要想清楚整个工作过程中各个对象是怎样协调的
• 要理解图7.17(p193),特别是电梯控制器的作用 图7.16
状态图中要区分事件和状态
• 箭头的两端是状态
• 箭头上标注事件
仅考虑正常情况的事件跟踪图
• 根据表7.4结合对7.16,7.19图及理解画出
画出7.7节所述电梯系统的电梯、电梯按钮的状态图