第 1 页 共 5 页成都学院(成都大学)考试试卷课程名称:__软件规范、测试与维护_ __(开卷/闭卷) __闭卷_ 2011 _-_2012_ _学年 第__2 __学期一、 填空题(在括号内填写正确的答案,每空1分,共10分)请根据表格左边的分类名称,给右边的分类内容填写对应的编号。
二、 单项选择题,请从四个可选项中选择一个正确答案。
(共20小题,每小题1分,共20分)1.如果说用例F 被用例T 扩展,意思是(a )。
A.F 是一个一般用例,T 是一个特殊用例B.F 是一个特殊用户,T 是一个一般用例2.软件生命周期中所花费用最多的阶段是( D )。
A .详细设计B .软件编码C .软件测试D .软件维护3.需求分析中开发人员要从用户那里了解( A )。
A .软件做什么B .用户使用界面C .输入的信息D .软件的规模4.测试的关键问题是( D )。
A .如何组织对软件的评审B .如何验证程序的正确性C .如何采用综合策略D .如何选择测试用例5.( D )是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。
A .软件过程B .软件测试C .软件生命周期D .软件工程方法学6.由于面向对象中的继承和消息机制,使得软件测试(b )。
A .更加简单B .更加复杂C .没变D .不确定7.单元测试的测试用例主要根据( D )的结果来设计。
A .需求分析B .源程序C .概要设计D .详细设计8.随着软硬件环境变化而修改软件的过程是( B )。
A .校正性维护B .适应性维护C .完善性维护D .预防性维护9.在白盒测试技术测试用例的设计中,( A )是最弱的覆盖标准。
A .语句覆盖 B .路径覆盖C .条件组合覆盖D .判定覆盖 10.结构化程序设计的一种基本方法是( C )。
A .筛选法 B .迭代法 C .逐步求精法 D .递归法 11.引起软件改变的原因主要有(D )。
A .运行环境变化B . 需求变化C .系统有错D .以上全部12.(b )不符合软件测试原则。
A .对每个测试结果进行检查,不漏掉已经出现的错误迹象B .程序员应该仔细测试自己编写的程序代码C .程序员要避免测试自己编写的程序代码D .测试工作越早开始越好 13.面向对象的开发方法中,( C )将是面向对象技术领域内占主导地位的标准建模语言。
A .Booch 方法B .Coad 方法C .UML 语言D .OMT 方法 14.瀑布模型本质上是一种( A )。
A .线性顺序模型B .顺序迭代模型C .线性迭代模型D .及早见产品模型 15.软件维护产生的副作用,是指( C )。
A .开发时的错误 B .隐含的错误 C .因修改软件而造成的错误D .运行时误操作 16.软件详细设计的主要任务是确定每个模块的( A )。
A .算法和使用的数据结构 B .外部接口 C .功能 D.编程 17.软件结构图的形态特征能反映程序重用率的是( C )。
A .深度 B .宽度 C .扇入 D .扇出 18.为了提高模块的独立性,模块内部最好是( C )。
A .逻辑内聚 B .时间内聚 C .功能内聚 D .通信内聚 19.软件结构图中,模块框之间若有直线连接,表示它们之间存在( A )。
A .调用关系 B .组成关系 C .链接关系 D .顺序执行关系 20.数据流图(DFD )中的每个数据处理至少需要( D )。
A.一个输入数据流 B.一个输出数据流 C.一个输入或者输出数据流 D.一个输入数据流和一个输出流 三、 阅读以下说明,请按要求答题(共2小题,第1小题6分,第2小题4分,共10分)。
【说明】如果你是一个程序员,可能常常为不能按时完成任务而苦恼。
如果你是一个项目经理,可能会觉得开发符合预算和进度要求的软件简直难于上青天。
实际上,软件项目常常严重超期或超出预算仍是困扰着绝大多数软件机构的难题。
据美国一份评估报告显示,17个主要的国防部软件合同中,平均28个月的进度计划推第 2 页 共 5 页学院________________专业________________班级________________学号________________姓名________________——————————————密——————————封—————————线————————————— 答 题 不 得 超 过 此 线迟了20个月才完成。
一个4年应该完成的任务,7年还未提交,其中没有一个项目按时完成。
由于存在软件问题,B1轰炸机的部署被推迟了,同样的原因,580亿美元的A12飞机计划也被部分取消了。
持续了二三十年的软件危机为什么愈演愈烈?软件开发为什么如此之难?【问题】1、 请分析上述说明中的案例,简述什么原因导致了以上情况,应该用什么途径消除(6分)。
原因所在1软件极大的复杂性大多数大型软件软件产品由几十甚至几百万行源代码构成,例如:Windows95操作系统由大约1100万行代码组成。
每一行代码都可能影响到程序的其它部分,并且各个部分之间都可能互相影响。
这样一个错综复杂的巨大系统当中,每一个小小的错误都可能导致整个系统崩溃。
有些大型软件,例如Windows ,可能是人类曾经建造过的最复杂的事物之一,从古至今最复杂的建筑都无法与之相比。
2软件高度的不确定性一个软件项目从一开始就存在许多不确定性因素。
其一:用户需求很难确定。
这是因为软件开发者很难详细了解用户的需求,甚至用户在看到产品之前也不清楚自己到底需要什么,所以从项目开发的自始至终都可能会有新的需求提出,致使系统结构不断修改,最终面目全非。
其二:设计不完全可以预测。
有时,一个设计时认为可行的方案,在实现时可能行不通,或者最初的设计方案存在很大的缺陷而没有及时发现,或者突然一个设计时没有料到的技术难点阻挡了项目的进度。
从设计到实现实际上有着很大的不可预测性。
其三:用户需求不断变化,如果最初的用户需求没有了解的很清楚,可能整个项目很快就会陷在不断变化的需求之中不能自拔。
其四:客观条件的不确定性。
在项目的进展过程中,可能会有人员的流动,可能会有资源的调整,可能会有这样或那样的客观条件的限制而阻挡了项目的正常进行。
在这样高度的不确定之中,在较早阶段精确估计一个项目不只是很难地,甚至是不可能的。
软件开发造成工期延误的原因 1开发人员的过分乐观许多开发人员倾向于一切都会进展顺利,这种盲目的自信对于项目开发来说是不对的。
如果按照最乐观的估计,可能绝大多数任务都不能按时完成,因为在软件开发中不确定因素实在太多了。
对于任务的复杂性和难度,对于自己能支配的时间,对于可能的突发事件的干扰等没有清楚的认识和估计,即使对自己的时间表作出保证,也可能常常无法按时交货。
2来自外部的压力作为项目的管理者或者客户都希望项目早日结束,因而为项目设置了一个个时间节点, 这些时间节点可能设置的根本就不可能实现或者实现起来会有很大难度,但是开发人员为了按时完工只好加班加点,以最快的速度完成要求的功能,而对于系统结构的考虑就会放到次要的位置上去,这样就为今后程序的维护埋下了隐患。
更可怕的是一个个bug 会随着压力的增大而产生,最后造成更大量的返工。
程序就象程序员的孩子一样,每个人都希望自己的孩子茁壮成长,但是没有办法,多生快生就不能优生。
3项目以外事情的干扰如果一个项目的开发人员经常被项目以外的事情所干扰、牵制,不能全身心地投入到项目开发之中,常常会因此而影响了进度。
这种现象在规模较小的软件企业中比较多见,一个开发人员经常身兼多职,甚至同时参与多个项目的开发。
如果其它项目急于完工,则该项目只好被拖延。
4 项目管理的混乱软件企业内部项目管理的混乱似乎是一个世界性的通病。
卡耐基梅隆大学软件工程研究所(SEI )建立了一套标准,用来衡量软件企业从混乱到持续发展的这种状态,这就是就是CMM 五级标准。
第一级最为混乱,每升高一级情况都有所好转,第五级状况最好。
到2001年1月底,全世界只有1654家软件公司和机构通过了不同级别的认证。
从下图可以看出,这是一个金字塔型的分布状态,图上只显示了二级和二级以上的企业,而处在金字塔最低层的那些一级企业的数目不知有多少个1654家!所以从世界范围来看,软件管理的总体水平还是很低的。
5 开发人员的不足全世界对于人才的竞争可能在IT 界表现的最为激烈。
一方面人才的绝对数量不足导致了许多企业不能招到自己急需的人才;另一方面人才的流动也导致了企业很容易失去自己的员工。
一个项目如果缺少人手或人才频繁流动,将不能保证项目的正常进展。
消除软件开发工期延误办法 1 对不确定性做好充分准备中国人都对《三国演示》中的赤壁之战非常熟悉,诸葛亮在赤壁埋伏了数路伏兵对曹操进行围追堵截,一招不行,还有下一招,对整个过程做了非常周密的准备和部署,所以大获全胜。
软件开发亦是如此,在项目展开的初期就应该对过程中可能会出现各种的情况有所准备,才不至于车到山前无路可走。
2立足于产品的灵活性第 3 页 共 5 页学院________________专业________________班级________________学号________________姓名________________——————————————密——————————封—————————线————————————— 答 题 不 得 超 过 此 线设计的灵活性是一个软件产品的灵魂。
好的设计总是容易维护和升级,而不好的设计却会为今后的维护带来很大的麻烦,甚至整个产品都可能被废弃重来。
因此在软件开发的的初期应花很大力气致力于整体设计,而不是急于编码,磨刀不误砍柴工,前期的投入会获得高额回报的。
3 提高软件管理水平ISO9000质量管理系统的标准系列是建立在这样一个前提上:如果生产和管理系统没有问题,那么其产品和提供的服务也就没有问题,这说明管理水平如何于产品的质量有至关重要的影响。
我认为一个软件企业提高管理水平的最好途径就是为自己制定一个目标,比如实现CMM 的级别认证或者ISO9000质量体系认证,在对这些目标努力的过程中会逐渐提高自己的管理水平。
2、 简述软件生命周期阶段的划分及任务(4分)。
软件生命周期 生命周期任务可行性研究 问题是否可解 需求分析 系统必须做什么 总体设计 系统应实现的功能 详细设计 怎样实现功能 编码 正确的程序 测试 满足要求的软件 维护长期技术支持四、简答题(共3小题,每小题10分,共30分)1、面向对象的分析通常要建立三个模型,请问三个模型的作用?1)功能模型:表达系统的详细需求,为软件的进一步分析和设计打下基础。