软件工程习题解答一、软件生存周期各阶段的基本任务?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=l00 m=200 b=300②更新数据:a=200 m=300 b=400③产生报表:a=300 m=400 b=500三个功能的软件生产率都是200行/人月,每行成本lO元/行,请用LOC技术估算出该软件包的成本和工作量。
解:2.某计算机系统投入使用后、5年内每年可节省人民币2 O0O元,假设系统的投资额为5 000元,年利率为12%。
试计算投资回收期和纯收入。
解:1、投资回收期最初投资额为5000元,经过3年后可以节省4814.28元,比最初投资还少185.72元,第4年一年再次节省1273.89元,则185.72÷1273.89=0.153 + 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元;如果货物重量大于2 kg而又小于等于20 kg,则收费3元/kg;如果货物重量大于20 kg,则收费4元/kg。
地运,若为慢件每kg收费为l元,若为快件,当重量小于等于 20 kg时,收费为 2元/kg,当货物重量大于 20 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)第六章 实现第七章 软件测试1、对下列子程序进行调试: procedure example(y,z: real; var x: real) begin if (y>1) and (z=0) then x:=x/y; if(y=2) or (x=l) then x:=x+l;end.该子程序接受x, y, z 的值,并将计算结果x 的值返回给调用程序。
答题要求: (1)画出流程图。
(2)用白盒法设计测试用例,并写出它所满足的是何种覆盖标准、预期结果以及路径。
N-S 图答:(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个数字字符200357个数字字符2003005有1个非数字字符2003.5全部是非数字字符MAY---6个数字字符200305日期范围在有效范围200301边界上选取200812数据200300200813月份范围月份为1月200301月份为12月200312月份<1 200300月份>12 2003133、对以下程序进行测试:PROCEDURE EX(A,B:REAL;VAR X:REAL);BEGINIF(A=3)OR(B> 1)THEN X:=A×BIF(A>2)AND(B=0)THEN X:=A-3END先画出程序流程图。