• 201.00 KB
  • 2022-04-22 11:43:12 发布

软件工程项目管理习题解答.doc

  • 9页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'2.如果一个程序有两个输入数据,每个输入都是一个32位的二进制整数,那么这个程序有多少个可能的输入?如果每微秒可进行一次测试,那么对所有可能的输入进行测试需要多长时间?答:每个32位的二进制整数具有232个可能的值,因此,具有两个整数输入的程序应该具有264个可能的输入。每微秒可进行一次测试,即每秒可进行106个测试,因此,每天可进行的测试数为:60×60×24×106=8.64×1010这等于每年大约可进行3.139×1013个测试。因为210=1024≈103,所以264=(210)6.4≈1019.2。,所以做完全部测试将至少需要105年(即10万年)。4.设计下列伪码程序的语句覆盖和路径覆盖测试用例:STARTINPUT(A,B,C)IFA>5THENX=10ELSEX=1ENDIFIFB>10THENY=20ELSEY=2ENDIFIFC>15THENZ=30ELSEZ=3ENDIFPRINT(X,Y,Z)STOP答:(1)语句覆盖的测试用例因为每个判定表达式为真或为假时均有赋值语句,为了使每个语句都至少执行一次,总共需要两组测试数据,以便使得每个判定表达式取值为真或为假各一次。下面是实现语句覆盖的典型测试用例:①使3个判定表达式之值全为假输入:A=1,B=1,C=1预期的输出:X=1,Y=2,Z=3②使3个判定表达式之值全为真输入:A=20,B=40,C=60预期的输出:X=10,Y=20,Z=30(2)路径覆盖的测试用例本程序共有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=306.使用基本路径测试方法,设计测试下面列出的伪码程序的测试用例:1:STARTINPUT(A,B,C,D)2:IF(A>0)3:AND(B>0)4:THENX=A+B5:ELSEX=A-B6:END7:IF(C>A)8:OR(D>B)9:THENY=C-D10:ELSEY=C+D11:END12:PRINT(X,Y)STOP答:用基本路径测试方法设计测试用例的过程,有下述4个步骤:(1)根据过程设计的结果画出流图与本题给出的伪码程序相对应的流图如图4.1所示。 图4.1与第6题伪码程序对应的流图(2)计算流图的环形复杂度使用下述3种方法中的任一种都可以算出图4.1所示流图的环形复杂度为5。①该流图共有15条边,12个结点,所以环形复杂度为15-12+2=5②该流图共有5个区域,因此环形复杂度为5。③该流图中共有4个判定结点,因此环形复杂度为4+1=5(3)确定线性独立的路径的基本集合所谓线性独立路径是指至少引入程序的一个新语句集合或一个新条件的路径,用流图术语来描述,独立路径至少包含一条在定义该路径之前不曾用过的边。使用基本路径测试法设计测试用例时,程序的环形复杂度决定了程序中独立路径的数量,而且这个数值是确保程序中所有语句至少被执行一次所需的测试数量的上界。对于图4.1所示流图来说,由于它的环形复杂度为5,因此共有5长独立路径。下面列出了5条独立路径:路径1:1—2—3—4—6—7—9—11—12路径2:1—2—5—6—7—9—11—12路径3:1—2—3—5—6—7—9—11—12路径4:1—2—3—4—6—7—8—9—11—12路径5:1—2—3—4—6—7—8—10—11—12(4)设计可强制执行基本路径的测试用例①执行路径1(两个判定表达式全为真)输入:A=1,B=1,C=2,D=2(任意)预期的输出:X=2,Y=0②执行路径2(第一个判定表达式为假,第二个判定表达式为真)输入:A=0,B=1,C=2,D=0(任意) 预期的输出:X=-1,Y=2③执行路径3(第一个判定表达式为假,第二个判定表达式为真)输入:A=1,B=0,C=2,D=2(任意)预期的输出:X=1,Y=2④执行路径4(两个判定表达式全为真)输入:A=1,B=1,C=0,D=-1预期的输出:X=2,Y=1⑤执行路径5(第一个判定表达式为假,第二个判定表达式为真)输入:A=1,B=1,C=0,D=2(任意)预期的输出:X=2,Y=2第十章习题1.下面叙述对一个计算机辅助设计(CAD)软件的需求:该CAD软件接受由工程师提供的二维或三维几何图形数据。工程师通过用户界面与CAD系统交互并控制它,该用户界面应该表现出良好的人机界面设计特征。几何图形数据及其他支持信息都保存在一个CAD数据库中。开发必要的分析、设计模块,以产生所需要的设计结果,这些输出将显示在各种不同的图形设备上。应该适当地设计软件,以便与外部设备交互并控制它们。所用的外部设备包括鼠标、数字化扫描仪和激光打印机。要求:(1)进一步精化上述要求,把CAD软件的功能分解成若干个子功能;(2)用代码行技术估算每个子功能的规模;(3)用功能点技术估算每个子功能的规模;(4)从历史数据得知,开发这类系统的平均生产率是620LOC/PM,如果软件工程师的平均月工资是8000元,请估算开发本系统的工作量和成本。(5)如果从历史数据得知,开发这类系统的平均生产率是6.5FP/PM,请估算开发本系统的工作量和成本。答:(1)习题中仅对需求做出了粗略描述,每项都都应该进一步扩展,以提供细节需求和定量约束。例如,在开始估算软件规模之前,需要确定“良好的人机界面设计特征”的具体含义,以及对“CAD数据库”的规模和复杂度的具体需求。经过对需求的进一步精化,分解出软件的下述7个主要的子功能:•用户界面及控制机制;•二维几何图形分析;•三维几何图形分析;•数据库管理;•计算机图形显示机制;•外部设备控制;•设计分析模块。(2)为了用代码行技术估算软件规模,应该针对每个子功能都分别估计出下述3个值:乐观值(即最小规模a),悲观值(即最大规模b)和可能值(即最可能规模m)。分别算出这3种规模的平均值,然后用下式的加权平均法计算每个子功能规模,结果示于表10.4 表10.4代码行技术的估算表功能乐观值可能值悲观值估计值用户界面及控制机制二维几何图形分析三维几何图形分析数据库管理计算机图形显示机制外部设备控制设计分析模块估算出的总代码行数1500380046001850310014006200220054006900320049002150850035006400860054507000260010200230053006800335049502100840033200(3)使用功能点技术估算软件规模时,对软件的分解是基于信息域特性而不是基于软件功能。表10.5给出了对5个信息域特征的估计值。为了计算未调整的功能点数,假设每个信息域都是平均级的。接下来估计14个技术复杂性因素的值,并且计算DI的值,表10.6列出了得到的结果。表10.5估算调整的功能点数功能乐观值可能值悲观值估计值特性系数UFP数输入数输出数查询数文件数外部接口数总计数值20121642241522423022285324162424541079680884014318表10.6估算复杂性因素因素估计值因素估计值数据通信分布式数据处理性能标准高负荷硬件高处理率联机数据输入终端用户效率联机更新20424443复杂的计算可重用性安装方便操作方便可移植性可维护性DI54345549然后用下式计算技术复杂性因子:TCF=0.65+0.01×DI=1.14最后计算功能点数FP=UFP×TCP=31×1.14=363(4) 用代码行估算,开发本系统的工件量为    E=33200/620≈54(人月) 开发本系统的成本为8000×54=432000(元)(5)用功能点技术估算,开发本系统的工作量为E=363/6.5≈56(人月)开发本系统的成本为8000×56=448000(元)2.计算下述的牙科诊所预约系统的未调整功能点数;王大夫在小镇上开了一家牙科诊所。他有一个牙科助手、一个牙科保健员和一个接待员。王大夫需要一个软件系统来管理预约。当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间以安排病人尽早得到诊治。如果病人同意建议的就诊时间,接待员将输入约定时间和病人的名字。系统将核实病人的名字并提供记录的病人数据,数据包括病人的病历号等。在每次治疗或清洗后,助手或保健员将标记相应的预约诊治已经完成,如果必要的话会安排病人下一次再来。系统能够按病人姓名和按日期进行查询,能够显示记录的病人数据和预约信息。接待员可以取消预约,可以打印出前两天预约尚未接诊的病人清单。系统可以从病人记录中获知病人的电话号码。接待员还可以打印出关于所有病人的每天和每周的工作安排。答:输入数据有“病人名”、“预约时间”、“完成的预约”和“取消预约”,其中前3项链的复杂级别为“简单”,第4项的复杂度级别为“平均”。输出数据有“病情说明”(简单复杂度)、“预约登记表”、“支持细节”、“预约信息”、“未就诊病人清单”(以上4项复杂度级别为“平均”)、“日安排”和“周安排”(以上2项复杂度级别为“复杂”)。查询有“按名字查询”、“按日期查询”(这2项复杂度为“简单”)、“核实病人”、“查看预约登记表”和“查看完成的预约”(以上3项的复杂度为“平均”)。文件有“病人记录”,其复杂度为“平均”级别。本系统无外部接口。最后,用下式计算未调整的功能点数UFP=3×3+1×4+1×4+4×5+2×7+2×3+3×4+1×10=799.假设你被指定为项目负责人,你的任务是开发一个应用系统,该系统类似于你的小组以前做过的那些系统,只不过规模更大且更复杂一些。客户已经写出了完整的需求文档。你将选用哪种项目组结构?为什么?你打算采用哪种软件过程模型?为什么?答:由于待开发的应用系统类似于以前做过的系统,开发人员已经积累了较丰富的经验,没有多少技术难题需要攻克。为了减少通信开销,充分发挥技术骨干的作用,统一意志统一行动,提高生产率,加快开发进度,项目组的组织结构以基于主程序员组的形式为宜。针对待开发的系统,客户已经写出了完整的需求文档,项目组又有开发类似系统的经验,因此,可以采用广大软件工程师熟悉的瀑布模型来开发本系统。10.一个程序能既正确又不可靠吗?请解释你的答案。答:所谓软件可靠性,是程序在给定的时间间隔内按照规格说明书的规定成功地运行的概率。通常认为,软件可靠性既包含正确性又包含健壮性,也就是说,不仅在预定环境下程序应该能正确地完成预期功能,而且在硬件发生故障、输入的数据无效或用户操作错误等意外环境下,程序也应该能做出适当的响应。 如果一个程序在预定环境下能够正确地完成预期的功能,但是在意外环境下不能做出适当的响应,则该程序就是既正确又不可靠。11.为什么在开发软件的过程中变化既是必要的又是不可避免的?为什么必须进行配置管理?答:在开发软件开发的过程中,下述原因会导致软件配置项发生变化;·新的市场条件导致产品需求或业务规则发生变化。·客户提出了新需求,要求修改信息系统产生的数据或产品提供的功能。·企业改组或业务缩减,引起项目优先级或软件工程队伍结构变化。·预算或进度限制,导致对目标系统的重新定义。·发现了在软件开发过程的前期阶段所犯的错误,必须加以改正。但是,变化也很容易失去控制,如果不能适当地管理和管制变化,必然会造成混乱并产生许多严重的错误。软件配置管理就是在软件的整个生命期内管理和控制变化的一组活动。可以把软件配置管理看作是应用于整个软件过程的软件质量保证活动,是专门用来管理和控制变化的软件质量保证活动。软件配置管理的目标是:使变化更正确且更容易被适应,在必须变化时减少为此而花费的工作量。从上面的叙述可以知道,软件配置管理是十分必要的。12.CMM的基本思想是什么?为什么要把能力成熟度划分成5个等级?答:CMM的基本思想是,由于软件危机是因我们对软件过程管理不善而引起的,所以新软件技术的运用并不会自动提高软件的生产率和质量,提高软件生产率和软件质量的关键,是改进对软件过程的管理。能力成熟度模型有助于软件开发机构建立一个有规律的、成熟的软件过程。对软件过程的改进不可能一蹴而就,只能是在完成一个又一个小的改进步骤基础上不断进行的渐进过程。因此,CMM把软件过程从无序到有序的进化过程分成5个阶段,并把这些阶段排序,形成5个成熟度等级定义了一个有序的尺度,用以测量软件机构的软件过程成熟度和评价其软件过程成熟度和评价其软件过程能力,这些等级还能帮助软件机构识别出其现有的软件过程的缺陷,指出应该做哪些改进,并且帮助他们把应做的改进工作排出优先次序。成熟度等级是妥善定义的向成熟软件机构前进途中的平台,每个成熟度等级都为软件过程的继续改进提供了一个台阶。例:要开发一个计算机辅助设计软件,该CAD软件的需求如下:该CAD软件接受由工程师提供的二维或三维几何图形数据。工程师通过用户界面与CAD系统交互并控制它,该用户界面应该表现出良好的人机界面设计特征。几何图形数据及其他支持信息都保存在一个CAD数据库中。开发必要的分析、设计模块,以产生所需要的设计结果,这些输出将显示在各种不同的图形设备上。应该适当地设计软件,以便与外部设备交互并控制它们。所用的外部设备包括鼠标、数字化扫描仪和激光打印机。要求:(1)进一步精化上述要求,把CAD软件的功能分解成若干个子功能;(2)用代码行技术估算每个子功能的规模;(3)用功能点技术估算每个子功能的规模;(4)从历史数据得知,开发这类系统的平均生产率是620LOC/PM,如果软件工程师的平均月工资是8000元,请估算开发本系统的工作量和成本。(5)如果从历史数据得知,开发这类系统的平均生产率是6.5FP/PM,请估算开发本系统的工作量和成本。解析:(1)在需求描述中对需求描述比较粗略,每项都应该进一步扩展,以提供细节需求和定量约束。例如,在开始估算软件规模之前,需要确定“良好的人机界面设计特征” 的具体含义,以及对“CAD数据库”的规模和复杂度的具体需求。经过对需求的进一步精化,分解出软件的下述7个主要的子功能:l用户界面及控制机制;l二维几何图形分析;l三维几何图形分析;l数据库管理;l计算机图形显示机制;l外部设备控制;l设计分析模块。(2)为了用代码行技术估算软件规模,应该针对每个子功能都分别估计出下述3个值:乐观值(即最小规模a),悲观值(即最大规模b)和可能值(即最可能规模m)。分别算出这3种规模的平均值,然后用下式的加权平均法计算每个子功能规模,结果如表9-5所示。表9-1代码行技术的估算表功能乐观值可能值悲观值估计值用户界面及控制机制二维几何图形分析三维几何图形分析数据库管理计算机图形显示机制外部设备控制设计分析模块估算出的总代码行数1500380046001850310014006200220054006900320049002150850035006400860054507000260010200230053006800335049502100840033200(3)使用功能点技术估算软件规模时,对软件的分解是基于信息域特性而不是基于软件功能。表9-6给出了对5个信息域特征的估计值。为了计算未调整的功能点数,假设每个信息域都是平均级的。接下来估计14个技术复杂性因素的值,并且计算DI的值,表9-7列出了得到的结果。表9-2估算调整的功能点数功能乐观值可能值悲观值估计值特性系数UFP数输入数输出数查询数文件数外部接口数总计数值20121642241522423022285324162424541079680884014318表9-3估算复杂性因素因素估计值因素估计值数据通信分布式数据处理性能标准高负荷硬件高处理率联机数据输入204244复杂的计算可重用性安装方便操作方便可移植性可维护性543455 终端用户效率联机更新43DI49然后用下式计算技术复杂性因子:TCF=0.65+0.01×DI=1.14最后计算功能点数FP=UFP×TCP=31×1.14=363(4)用代码行估算,开发本系统的工件量为E=33200/620≈54(人月)开发本系统的成本为8000×54=432000(元)(5)用功能点技术估算,开发本系统的工作量为E=363/6.5≈56(人月)开发本系统的成本为8000×56=448000(元)'