《软件工程》1软件工程硕士研究生课程考试试题第一部分概念部分1.软件。答:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。2.软件工程。答:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料3.软件需求。答:(1)用户解决问题或达到目标所需的条件或能力(Capability)。(2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力。(3)一种反映上面(1)或(2)所描述的条件或能力的文档说明。软件需求包括三个不同的层次——业务需求、用户需求和功能需求——也包括非功能需求。4.软件配置。答:软件配置管理是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。5.软件体系结构。答:是产生软件设计的第一步,它将需求规格说明中确定的系统能力与实现这些能力的构件关联起来。并描述构件间的相互联系,定义从子系统创建系统的相关操作。6.软件维护种类。答:软件维护分为:(1)改正性维护:针对故障导致的问题所进行的处理称为改正性维护。(2)适应性维护:对系统的一部分改变要求改变系统的其他部分,适应性维护实现这种改变。(3)完善性维护:是为了对系统的某些方面进行改进而做出的改变。(4)预防性维护:改变系统的某些方面以预防失效的发生。《软件工程》27.软件文档。答:文档(document)是指某种数据媒体和其中所记录的数据。它具有永久性,并可以由人或机器阅读,通常仅用于描述人工可读的东西。在软件工程中,文档常常用来表示对活动、需求、过程或结果进行描述、定义、规定、报告或认证的任何书面或图示的信息。它们描述和规定了软件设计和实现的细节,说明使用软件的操作命令。文档也是软件产品的一部分,没有文档的软件就不成其为软件。软件文档的编制(documentation)在软件开发工作中占有突出的地位和相当大的工作量。高质量、高效率地开发、分发、管理和维护文档对于转让、变更、修正、扩充和使用文档,对于充分发挥软件产品的效益有着重要的意义。8.软件可靠性。答:一个系统对于给定的时间间隔内,在给定条件下无失效运作的概率。第二部分方法部分一、软件计划软件计划书的主要撰写要素。答:一个好的软件项目计划书应该包含下面几项内容:(1)项目范围。(2)项目进度。(3)项目团队组织结构。(4)打算构建的系统的技术描述。(5)项目的标准、过程和提议的技术及工具。(6)质量保证计划。(7)配置管理计划。(8)文档计划。(9)数据管理计划。(10)资源管理计划。(11)测试计划。(12)培训计划。(13)安全计划。(14)风险管理计划。(15)维护计划。二、需求分析选择实例,用实体-关系图、状态机、数据流图、代数规格说明四种方法之一完成需求表示。答:用状态机表示公园凭票单行门。《软件工程》3三、软件设计选择实例用管道和过滤器、隐式调用、分层、信息库四种方法之一完成设计。答:根据分层的方法设计安全体系结构:分层的安全体系结构:最内层是加密层,它的功能是加密和解密用于系统的基本加密方案中的钥匙。第二层是文件接口层,它的功能是对文件进行加密和解密。第三层是密钥管理,它允许某个构件签名一个文件,验证签名并计算散列代码以获得文件访问权。最后,第四层是认证层,这一层负责管理按照加密格式存储的密码文件,而且它要求用户提供身份和一个密码。用户可以根据在需求中表述的要求,在不通层次访问系统。认证钥匙管理文件接口加密用户《软件工程》4四、软件实现选择一个算法实例用程序编码文档化和可视化的思路和相关方法完成算法编码。答:火车站托运行李收费计算算法编码(C语言):/*程序功能:计算火车站托运行李收费编写日期:算法描述:若行李重量不超过50公斤,每公斤收费1.6元;超过50公斤,每公斤收费2.0元,两部分之和为总共收费。*/#includestdio.hdoublecompute(inti,doublew){doubles;/*定义double型自动变量s,存放根据重量w(实参)求得的一件行李托运费*/staticdoubletotal=0;//定义double型内部静态变量total,存放托运费的累加值if(w=50.0)s=1.6*w;//行李重量w不超过50公斤,每公斤收1.6元的托运费elses=50.0*1.6+(w-50.0)*2.0;//行李重量w超过50公斤的部分,每公斤收2.0元托运费total+=s;/*由内部静态变量total累加,每称一件行李累加一次,s是一件行李的托运费,total是几件行李累加的托运费*/printf(\n行李件数:%d\t总计:%.2f\n,i,total);//输出行李件数和总共应付的托运费returns;//把由重量w(实参)求得的一件行李托运费作为函数的返回值}voidmain(){doublew,s;//自动变量w记录每件行李的重量,s记录每件行李的托运费inti;//自动变量i记录行李的件数for(i=1;;++i)//for语句无第二分量,无穷循环语句{printf(\n\n(%d)输入每件行李的重量:,i);scanf(%lf,&w);/*用键盘输入每件行李的重量,存放在自动变量w中,也可用电子秤采样读出存放在w中*/if(w==0)break;//当输入的行李重量为0时,则结束无穷循环s=compute(i,w);//每称一次行李,调用一次compute(),求得一件行李的托运费printf(\n重量:%.1lf\t托运费:%.2lf,w,s);//输出这件行李的重量和托运费}}五、软件测试1.选一实例并设计测试用例,完成正整数值的测试。答:要完成对一个正整数的测试,可以用该程序的外部规格来生成初始测试用例,这些实例不仅应该考虑预期的输入数据,还应该考虑输入和输出的边界条件以及无效数据的几种情况。可以针对以下每种情况生成一个测试用例:(1)一个非常大的正整数如99999999999(2)一个正整数如25(3)一个正的小数如2.3《软件工程》5(4)一个大于0小于1的数如0.25(5)0(6)一个负整数如-9(7)一个负小数如-2.3(8)一个非数字符号如@对每个测试用例测试后做出预期结果和是否符合正整数的判定,就完成了正整数的测试。2.选一实例并设计测试用例,完成语句测试、判定测试及路径测试中之一的测试。解:对如下程序进行路径测试:voidSort(intiRecordNum,intiType)1{2intx=0;3inty=0;4while(iRecordNum--0)5{6if(iType==0)7x=y+2;8else9if(iType==1)10x=y+10;11else12x=y+20;13}14}该程序流程图如下:(流程图中标号为程序行号)671410111384《软件工程》6选择适当的数据分别测试四条路径,下面是测试路径及预期输出数据值:路径1:4-14;输入数据:iRecordNum=0,或者取iRecordNum0的某一个值;预期结果:x=0路径2:4-6-7-14;输入数据:iRecordNum=1,iType=0;预期结果:x=2路径3:4-6-8-10-13-4-14;输入数据:iRecordNum=1,iType=1;预期结果:x=10路径4:4-6-8-11-13-4-14;输入数据:iRecordNum=1,iType=2;预期结果:x=20第三部分软件设计以“银行取款”事务处理为例,请做:1)画出取款业务的数据流图;2)定义“存折”数据中的5项(见本题第三小题)数据定义;classAccount{private:char*name;shortnumber[16];doublemoney;shortpassword[6];chartime[10];public:voidwithdraw(doublemoney);voiddeposit(doublemoney);};其中,姓名=2{汉字}10《软件工程》7账号=0000000000000001到9999999999999999余额=0.00到9999999999999.99密码=000000到999999开户日期=1980至2009+/+01至12+/+01至313)给出数据定义中相关边界值测试描述。(提示:存折=姓名+账号+余额+密码+开户日期)姓名边界值测试描述:测试编号输入预期结果符合与否001张三返回false,提示输入不能为一个汉字不符合002李四返回true符合003可爱又好玩的蜡笔小新返回true符合004可爱又好玩的蜡笔小新心返回false,提示输入不能超过10个汉字不符合账号边界值测试描述:测试编号输入预期结果符合与否0010返回false,提示输入账号不能为一位数字不符合00211111111返回false,提示输入账号必须为16位数字不符合0030000000000000000返回true符合0049999999999999999返回true符合00533333333333333333333返回false,提示输入账号必须为16位数字不符合006@#!返回false,提示输入账号必须为数字不符合余额边界值测试描述:测试编号输入预期结果符合与否0010.00返回true符合0021000.00返回true符合0039999999999999.99返回true符合004@#$返回false,提示输入必须为数字不符合005MONEY-返回false,提示输入必须为数字不符合《软件工程》8密码边界值测试描述:测试编号输入预期结果符合与否0011返回false,提示输入密码必须为6位数字不符合002000000返回true符合003999999返回true符合0041000000返回false,提示输入密码必须为6位数字不符合005¥xiaoxin返回false,提示输入密码必须为6位数字不符合开户日期边界值测试描述:测试编号输入预期结果符合与否0011919/01/11返回false,提示开户日期不能小于1980年不符合0021980/01/01返回true符合0032008/01/20返回true符合0042009/01/01返回true符合0052008/30/30返回false,提示月份不能大于12不符合0062020/03/11返回false,提示年份不能大于2009不符合0072004/02/50返回false,提示日期不能大于31不符合008—xiaoxin返回false不符合