软件工程习题解答.docx
《软件工程习题解答.docx》由会员分享,可在线阅读,更多相关《软件工程习题解答.docx(37页珍藏版)》请在冰豆网上搜索。
![软件工程习题解答.docx](https://file1.bdocx.com/fileroot1/2023-6/22/3d1af0fc-b2a6-4155-952c-53605dc0adf9/3d1af0fc-b2a6-4155-952c-53605dc0adf91.gif)
软件工程习题解答
软件工程习题解答
一、软件生存周期各阶段的基本任务?
1.问题定义:
(1)回答要解决的问题是什么。
(2)系统分析员应该提出关于问题性质、工程目标和规模的书面报告。
(3)经过和用户讨论,澄清含糊不清的地方,改正理解不正确的地方,得出一份双方都满意的文档。
(4)问题定义是软件生命周期中最简短的阶段。
2.可行性研究:
(1)前一阶段定义的问题有可行的解决办法吗?
(2)系统分析员要进行一次大大压缩和简化了的系统分析和设计。
导出高层逻辑模型(用数据流图表示)。
确定工程规模和目标,准确估计系统的成本和效益。
(3)使用部门的负责人根据可行性研究的结果决定是否继续进行该工程的开发工作。
3.需求分析:
(1)主要确定目标系统必须具备哪些功能。
(2)系统分析员和用户密切配合,充分交流,得出经用户确认的系统逻辑模型(数据流图、数据字典、算法描述)。
4.总体设计:
(1)回答如何解决问题。
(2)系统分析员
应使用系统流程图或其他工具描述每种可能系统;
估计每种方案的成本和效益。
推荐一较好的系统──有其详细计划。
设计软件的结构(用层次图或结构图描述)。
5.详细设计:
(1)回答应该怎样具体地实现这个系统。
(2)设计出程序的详细规格说明(用HIPO层次图加输入/处理/输出图)或PDL语言(过程设计语言)。
6.编码和单元测试:
(1)写出正确的容易理解,容易维护的程序模块。
(2)程序员:
选取一种适当的用高级语言书写程序(或汇编语言)。
仔细测试编写出的每一个模块。
7.综合测试:
(1)通过各种类型的测试,使软件达到预定的要求。
(2)最基本的测试是集成测试和验收测试方法。
集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配的过程中对程序进行必要的测试。
验收测试是按照需求规格说明书的规定,由用户对目标系统进行验收。
(3)用正式文档将测试计划、详细测试方案以及实际测试结果保存。
(4)以正式或非正式的方式对用户进行培训。
8.软件维护:
(1)使系统持久地满足用户的需要。
(2)四类维护:
改正性维护:
诊断和改正使用过程中发现的软件错误。
适应性维护:
修改软件以适应环境变化。
完善性维护:
根据用户要求,改进或扩充软件。
预防性维护:
修改软件为将来的维护预先准备。
第二章可行性研究
1.已知某软件包具有三个主要功能:
输入数据、更新数据、产生报表。
根据历史资料记载,实现每个功能所需源代码行数估算如下:
①输入数据:
a=l00m=200b=300
②更新数据:
a=200m=300b=400
③产生报表:
a=300m=400b=500
三个功能的软件生产率都是200行/人月,每行成本lO元/行,请用LOC技术估算出该软件包的成本和工作量。
解:
2.某计算机系统投入使用后、5年内每年可节省人民币2O0O元,假设系统的投资额为5000元,年利率为12%。
试计算投资回收期和纯收入。
解:
1、投资回收期
最初投资额为5000元,经过3年后可以节省4814.28元,比最初投资还少185.72元,
第4年一年再次节省1273.89元,则
185.72÷1273.89=0.15
3+0.15=3.15
因此这项工程的投资回收期是3.15年。
2、纯收入
7224.53-5000=2224.53元>0,值得投资。
第三章需求分析
1.什么是数据流图?
其作用是什么?
其中的基本符号各表示什么含义?
数据流图:
简称DFD,是SA(结构化分析)方法中用于表示系统逻辑模型的一种工具,是一种功能模型。
作用:
它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能.
基本符号有四种:
→,箭头,表示数据流;○,圆或椭圆,表示加工;=,双杠,表示数据存储;□,方框,表示数据的源点或终点.
2.某银行的计算机储蓄系统功能是:
将储户填写的存款单或取款单输入系统,如果是存款,系统记录存款人姓名、住址、存款类型、存款日期、利率等信息,并打印出存款单给储户;如果是取款,系统计算清单储户。
请用DFD和IDEF0描绘该功能的需求,并建立相应的数据字典。
(1)数据流条目:
数据流名称:
存款单
别名:
无
简述:
储户存款时填写的项目
来源:
储户
去向:
记帐
数据流量:
未知
组成:
姓名+住址+存款类型+存款日期+利率
数据流名称:
取款单
别名:
无
简述:
储户取款时填写的项目
来源:
储户
去向:
统计
数据流量:
未知
组成:
姓名+住址+取款类型+取款日期+利率
数据流名称:
清单
别名:
无
简述:
储户取款后得到的项目
来源:
记录
去向:
储户
数据流量:
未知
组成:
姓名+住址+取款类型+取款日期+利率+余额
(2)数据存储条目:
数据存储名称:
账单
别名:
无
简述:
存放储户信息及其账目
组成:
姓名+住址+余额+存款类型+最后修改日期+利率
组织方式:
未知
查询要求:
能立即查询
(3)数据项条目:
未知
(4)加工条目:
加工名:
分类检查
编号:
无
激发条件:
接收到存/取款单
优先级:
优先
输入:
存/取款单
输出:
存/取款单
加工逻辑:
IF存款单THEN把存款单输出到统计
ELSE
把取款单输出到统计
ENDIF
加工名:
统计
编号:
无
激发条件:
取款单
优先级:
无
输入:
取款单
输出:
清单
加工逻辑:
根据账单检查此储户是否存在,不存在输出错误{
IF取款数<余额THEN余额=余额-取款数
输出清单到储户,输出现金到储户
ELSE
输出错误清单到储户
ENDIF
}
加工名:
记录
编号:
无
激发条件:
存款单
优先级:
无
输入:
存款单
输出:
存款单
加工逻辑:
根据账单检查此储户是否存在,不存在则建立此储户{
余额=余额+存款数
输出存款单到储户
}
3.某公司承担空中和地面运输业务。
计算货物托运费的比率规定如下:
空运,如果货物重量小于等于2kg.则一律收费6元;如果货物重量大于2kg而
又小于等于20kg,则收费3元/kg;如果货物重量大于20kg,则收费4元/kg。
地运,若为慢件每kg收费为l元,若为快件,当重量小于等于20kg时,收费为2
元/kg,当货物重量大于20kg时,则收费为3元/kg。
请画出对应于计算托运费比率的判定树和判定表。
解:
判定表:
方式
空运
空运
空运
地运
地运
地运
货物重量
≤20Kg
>2Kg、≤20Kg
>20Kg
慢件
重量≤20Kg
>20Kg
收费
6元
3元/Kg
4元/Kg
1元/Kg
2元/Kg
3元/Kg
4.选择一个系统(例如人事档案管理系统、图书管理系统、医院监护系统、足球俱乐部管理系统、财务管理系统、学生选课系统、飞机订票系统等),用SA方法对它进行分析,画出系统的分层DFD图。
解:
下面是一个学生选课系统的DFD。
新补充:
1、某图书出版公司希望每月定期向固定客户邮寄最近一个月的图书分类目录。
客户可在其收到的目录上圈定自己要买的书。
出版公司按照客户的反馈信息邮寄图书。
要求为出版公司设计软件,以实现以下功能:
(1)自动生成图书分类目录;
(2)自动处理客户反馈信息。
试用面向数据流的方法给出系统的数据流图,并设计出软件结构图。
第四章概要设计
3.衡量模块独立性的两个标准是什么?
它们各表示什么含义?
两个定性的度量标准:
耦合与内聚性
耦合性:
也称块间联系。
指软件系统结构中各模块间相互联系紧密程度的一种度量。
模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
内聚性:
也称块内联系。
指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。
模块内元素联系越紧密,内聚性越高。
6.什么是软件结构?
简述软件结构设计优化准则。
软件结构:
软件系统的模块层次结构,反映了整个系统的功能实现,即将来程序的控制体系。
软件结构设计优化准则:
a.划分模块时,尽量做到高内聚,低耦合,保持模块相对独立性,以此为原则优化初始的软件结构。
b.一个模块的作用范围应在其控制范围之内,且判定所在的模块应与受其影响的模块在层次上尽量靠近
c.软件的深度、宽度、扇入、扇出应适当。
D.模块的大小要适中。
E.模块的控制范围模块的接口要简单、清晰、含义明确,便于理解,易于实现、测试与维护。
2、已知模块C中的一个判定影响到模块B,如图所示,它违反了SD的设计原则。
试问:
可以采用哪些手段对结构图作改进,请说明改进办法并画出改进的结构图。
3、已知有一抽象的DFD图如下所示,请用SD方法画出相应的结构图。
答:
4、高考录取统分子系统有如下功能:
(1)计算标准分:
根据考生原始分计算,得到标准分,存入考生分数文件;
(2)计算录取线分:
根据标准分、招生计划文件中的招生人数,计算录取线,存入录取线文件。
试根据要求画出该系统的数据流程图,并将其转换为软件结构图。
答:
(1)数据流图:
(2)软件结构图:
①原始分②标准分③招生计划④录取线
5、图书馆的预定图书子系统有如下功能:
(1)由供书部门提供书目给订购组。
(2)订书组从各单位取得要订的书目。
(3)根据供书目录和订书书目产生订书文档留底。
(4)将订书信息(包括数目,数量等)反馈给供书单位。
(5)将未订书目通知订书者。
(6)对于重复订购的书目由系统自动检查,并把结果反馈给订书者。
试根据要求画出该问题的数据流程图,并把其转换为软件结构图。
答:
(1)数据流图:
(2)软件结构图:
第五章详细设计
1.给出一组数从小到大的排序算法,分别用下列工具描述其详细过程:
(1)流程图;
(2)N—S图;(3)PAD图;
PAD图
N-S图
第六章实现
第七章软件测试
1、对下列子程序进行调试:
procedureexample(y,z:
real;varx:
real)
begin
if(y>1)and(z=0)thenx:
=x/y;
if(y=2)or(x=l)thenx:
=x+l;
end.
该子程序接受x,y,z的值,并将计算结果x的值返回给调用程序。
答题要求:
(1)画出流程图。
(2)用白盒法设计测试用例,并写出它所满足的是何种覆盖标准、预期结果以及路径。
答:
(1)流程图
(2)用白盒法中条件组合覆盖设计测试用例:
①y=2,z=0,x=4;
②y=2,z=1,x=1;
③y=1,z=0,x=2;
④y=1,z=1,x=1.
2、某报表处理系统要求用户输入处理报表的日期,日期限制在2003年1月至2008年12月,即系统只能对该段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。
系统日期规定由年、月的6位数字字符组成,前四位代表年,后两位代表月。
现要求用黑盒测试法中的边界值法写出测试用例。
答:
输入条件测试用例说明测试数据
报表日期的1个数字字符5
类型及长度5个数字字符20035
7个数字字符2003005
有1个非数字字符2003.5
全部是非数字字符MAY---
6个数字字符200305
日期范围在有效范围200301
边界上选取200812
数据200300
200813
月份范围月份为1月200301
月份为12月200312
月份<1200300
月份>12200313
3、对以下程序进行测试:
PROCEDUREEX(A,B:
REAL;VARX:
REAL);
BEGIN
IF(A=3)OR(B>1)THENX:
=A×B
IF(A>2)AND(B=0)THENX:
=A-3
END
先画出程序流程图。
再按不同逻辑覆盖法设计一种(写出名称)测试数据。
答:
语句覆盖 A=3B=0
4、程序功能说明书指出,某程序的输入条件为:
每个学生可以选修1至3门课程,试用黑盒法设计测试用例。
(1)按等价分类法设计测试用例(要求列出设计过程)
(2)按边缘值分析法设计测试用例。
答:
1)合理等价类
选修1门
选修2门
选修3门
不合理等价类
没选课
选3门以上
测试用例
选修=2
选修=0
选修>3
2)边缘值法
0,1,3,4
5、设被测试的程序段为:
begin
s1;
if(x=0)and(y>2)
thens2;
if(x<1)or(y=1)
thens3;
s4;
end
可供选择的测试数据组为:
xy
Ⅰ03
Ⅱ12
Ⅲ-12
Ⅳ31
找出实现
(1)语句覆盖;
(2)条件覆盖;(3)判定覆盖至少要选择的数据组。
答:
(1)Ⅰ
(2)Ⅰ,Ⅳ(3)Ⅰ,Ⅱ
二.某电力公司有A、B、C、D共四类收费标准,并规定,居民用电每月200度以下按A类收费,200度以上按B类收费。
动力电以每月1万度为分界,非高峰用电不足1万度按B类收费,达到或超过1万度按C类收费。
高峰用电不足1万度按C类收费,达到或超过1万度按D类收费。
试用基于逻辑的测试方法为它设计足够的测试用例实现条件组合的完全覆概。
规则号
1
2
3
4
5
6
居民
用电
200度以下
Y
200度以上
Y
动力用电
非高峰
1万度以下
Y
1万度以上
Y
高峰
1万度以下
Y
1万度以上
Y
收费
标准
A类
▲
B类
▲
▲
C类
▲
▲
D类
▲
测试用例
用电类型
输入数据
预期结果
居民
用电
90度/月
A
110度/月
B
动力用电
非
高峰
8000度/月
B
12000度/月
C
高峰
9000度/月
C
11000度/月
D
三.如图显示某程序的逻辑结构。
试为它设计足够的测试用例,分别实现对程序的判定覆概、条件覆概和条件组合覆概。
设计测试方案
覆盖种类
需满足的条件
测试数据
期望结果
判定覆盖
A>1,B=0
A=2,B=0
执行S1
A>1,B0或
A1,B=0或
A1,B0
A=2,B=1或
A=1,B=0或
A=1,B=1
执行S2
条件覆盖
以下四种情况各出现一次
A>1
B=0
A=2,B=0
执行S1
A1
B0
A=1,B=1
执行S2
条件组合
覆盖
A>1,B=0
A=2,B=0
执行S1
A>1,B0
A=2,B=1
执行S2
A1,B=0
A=1,B=0
执行S2
A1,B0
A=1,B=1
执行S2
四.某城市电话号码由三部分组成。
它们的名称和内容分别是:
地区码:
空白或三位数字;
前缀:
非‘0’或‘1’的三位数字;
后缀:
4位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。
根据该程序的规格说明,作等价类的划分,并设计测试方案。
1.划分等价类
输入条件
有效等价类
无效等价类
地区码
1.空白;
2.三位数;
1. 有非数字字符;2.少于三位数字;
3.多于三位数字。
前缀
3.从200到999之间的三位
4.有非数字字符;5.起始位为‘0’;
6.起始位为‘1’;7.少于三位数字;
8.多于三位数字。
后缀
4.四位数字。
9.有非数字字符;10.少于四位数字;
11.多于四位数字。
设计测试方案
方案
内容
输入
预期
输出
地区码
前缀
后缀
1
空白
200~999之间的三位数字
四位数字
()276-2345
有效
2
三位数字
四位数字
(635)805-9321
有效
3
有非数字字符
(20A)723-4567
无效
4
少于三位数字
(33)234-5678
无效
5
多于三位数字
(5555)345-6789
无效
6
有非数字字符
(345)5A2-3456
无效
7
起始位为‘0’
(345)012-3456
无效
8
起始位为‘1’
(345)132-3456
无效
9
少于三位数字
(345)92-3456
无效
10
多于三位数字
(345)4562-3456
无效
11
有非数字字符
(345)342-3A56
无效
12
少于四位数字
(345)342-356
无效
13
多于四位数字
(345)562-34567
无效
第八章软件维护
1、软件维护有哪些内容?
a、校正性维护b、适应性维护c、完善性维护d、预防性维护
第九章
第十章面向对象技术
1、 说明对象、类、类结构、消息的基本概念?
答:
对象:
是客观实体在问题域中的抽象。
类:
具有相似或相同性质的对象的抽象就是类。
类结构:
类的结构通常有一般----具体(分类结构)整体---抽象(组装结构)
消息:
对象之间通信的构造。
2、 面向对象的特征和要素?
答:
特征:
一致性、多态性、分类性、继承性。
要素:
共享、封装、抽象。
第十二章软件工程管理
3、软件开发成本估算方法有哪几种?
答:
COCOMO、PUTANM。
。
。
。
4、 什么软件配置管理?
什么是基线?
答:
软件配置管理:
软件配置管理(SCM)用于整个软件工程过程,目标是表示变更,控制变更,确保变更的正确实施,报告变更。
SCM是用在整个软件生存周期个阶段中的变更活动。
基线:
是软件生存周期中各开发阶段的一个特定点,它的作用是把开发各阶段的工作划分的更加明确化,使本来连续的工作在这些点上断开,便于检查于肯定阶段成果。
图书馆信息系统UML实例
一、如何理解UML
1、UML统一建模语言
统一建模语言(UnifiedModelingLanguage,UML)是一个通用的可视化建模语言,跨越软件开发的整个生命过程,详细描述系统结构的方法,为规范化、可视化、文档化软件系统提供了一致的建模语言。
使用UML主要目的是是便于用户、开发人员、分析人员、测试人员、管理人员、其他涉及项目人员之间的通信。
建立“立体”的模型需要:
点、线、面
UML描述模型有三种词汇:
要素、关系、图
2、UML有四种要素:
(1)表示结构的要素:
UseCase、类、接口、协作
(2)表示行为的要素:
交互、状态机
(3)表示组织的要素:
包(Package)
(4)表示辅助说明的要素:
注释(Notes)
3、UML中有四种类型的关系:
(1)关联关系:
表示两个类之间存在稳定的连接(传递消息)
关联关系(Association)的访问方向:
单箭头表示一方的实例能够访问另一方实例
关联关系有两种强化形式:
聚合关系(Aggregation)、组合关系(Composition)
聚合关系:
表示两个类的实例之间“整体”与“部分”关系,处于空心菱形符号一端的类是整体。
组合关系:
是进一步强化的聚合关系,增加“皮之不存,毛将焉附”的语义,“整体”一端用实心的菱形表示。
(2)依赖关系:
表示“被依赖者”类的变化有可能影响“依赖者”类,用带有箭头的虚线表示。
(3)泛化关系:
表示类A是类B的一种。
(4)实现关系:
一方提出请求,另一方履行要求中声明的任务。
4、UML中有九种图,共三大类:
三种静态图
(1)业务用例图(BusinessUseCaseDiagram):
显示整个系统提供的功能。
(2)用例图(UseCaseDiagram):
从系统的用户角度出发,描述系统应该具有的功能。
主要用于展示用例(UseCase)、角色(Actor)及其关系。
用例是系统中的一个功能单元,可以被描述为参与者与系统之间的一次交互作用
(3)类图(ClassDiagram):
主要用于展示类、接口、包及其关系。
类(Class)是指一些具有相同属性(Attribute))和操作(Operation)的对象的集合,其中操作包含一组有序的参数(parameter),类之间的关系有联系(Association)和泛化(Generation)等。
四种动态图:
(4)状态图(StatechartDiagram):
展示对象在其生命周期中可能经历的状态、在这些状态上对事件的响应能力。
(5)活动图(ActivityDiagram):
是状态机的一个变体,用来描述执行算法的工作流程中涉及的活动,活动状态代表着一个活动、一个工作流程步骤或一个操作的执行,活动视图描述一组顺序的或并发的活动,
展示系统从一个活动转到另一个活动的可能路径与判断条件。
(6)顺序图(SequenceDiagram):
用于按时序展示对象间的消息传递。
当执行一个用例行为时,顺序图中的每条消息对应一个类操作或状态机中引起转换的触发事件。
(7)协作图(CollaborationDiagram):
其核心内容与序列图相对应,强调(收发消息的)对象间的结构组织。
两种执行图:
(8)组件图(ComponentDiagram):
显示系统中的组件及其相互依赖性。
开发人员知道有哪些代码库,相互间有什么关系,编译人员知道组件所需的编译的顺序。
(9)部署图(DeploymentDiagram):
它考虑应用程序的物理部署,如网络布局和组件在网络上的位置的问题。
显示网络上的所有结点、结点间的连接、每个结点上运行的进程。
二、图书馆信息系统UML实例介绍
1、理解需求
图书馆信息系统文本需求说明:
(1)图书馆将书和杂志借给读者,读者、书、杂志系统中注册。
(2)图书馆负责购买图书、删除书目。
(3)