您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程-刘强-课后习题参考答案
第1章概述(习题与参考答案)[判断题]1.由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。(×)2.由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。(×)3.购买大多数计算机系统所需的硬件比软件更昂贵。(×)4.大多数软件产品在其生命周期中不需要增强功能。(×)5.大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。(√)6.一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。(×)[选择题]1.()因素促使计算机系统越来越复杂。(D)A.计算机内存和存储容量上的巨大增长B.外部输入/输出选项的更加多样性C.计算机体系结构方面的深刻变化D.以上所有选项2.下面的()不再是现代软件工程师关注的问题。(A)A.为什么计算机硬件的成本这么高?B.为什么软件需要很长时间才能完成?C.为什么开发一个软件的成本这么高?D.为什么不能在产品发布前去除软件错误?3.软件会逐渐退化而不会磨损,其原因在于()。(C)A.软件通常暴露在恶劣的环境下B.软件错误通常发生在使用之后C.不断的变更使组件接口之间引起错误D.软件备件很难订购4.大多数软件仍然是定制开发的,其原因在于()。(C)A.软件组件重用是十分普遍的B.可重用的组件太昂贵而无法使用C.软件在不使用其他组件的情况下很容易构造出来D.商业组件在很多应用领域中可以得到5.下面的()说法是正确的。(C)A.软件危机在20世纪70年代末期全面爆发B.当前先进的软件工程方法已经解决了软件危机的问题C.软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题D.软件危机是指在软件产品中存在一系列的质量问题6.软件工程的基本目标是()。(B)A.消除软件固有的复杂性B.开发高质量的软件C.努力发挥开发人员的创造性潜能D.更好地维护正在使用的软件产品7.()是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过程,它包括方法、工具和过程三个要素。(D)A.软件产品B.软件过程C.软件测试D.软件工程8.软件工程的基本要素包括方法、工具和()。(C)A.软件系统B.硬件环境C.过程D.人员9.软件工程师在从事软件工作时应使用下面的()准则。(E)A.从来不为个人获利而窃取数据B.从来不散布或出售项目中自己工作的信息C.从来不故意毁坏或修改别人的程序、文件或数据D.从来不侵犯个人、小组或组织的隐私E.以上所有选项[练习题]1.软件与其他工程学科所产生的制品有什么根本区别?答案要点:(1)软件是人类思维和智能所延伸的产物,其数据、状态和逻辑关系的组合以及人类思维的复杂性和不确定性导致它本身具有极高的复杂性;(2)软件具有不可见性,它是抽象的,形式化和逻辑化的。(3)软件具有可变性,有用的软件需要不断地修改和扩展,但是频繁的修改可能导致软件的退化;(4)软件的开发在很大程度上依然是手工作坊式的,难以实现工厂化的生产。2.软件工程包括哪些基本要素?请简要说明这些要素及其作用。答案要点:软件工程包括过程、方法和工具三个要素。y软件工程过程定义了技术方法的采用、工程产品(包括模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证和变更的管理,从而将人员、技术、组织与管理有机地结合在一起,实现在规定的时间和预算内开发高质量软件的目标;y软件工程方法为软件开发提供了“如何做”的技术,通常包括某种语言或图形的模型表示方法、良好的设计实践以及质量保证标准等;y软件工程工具为软件工程方法提供了自动的或半自动的软件支撑环境,辅助软件开发任务的完成。现有的软件工具覆盖了从需求分析、系统建模、代码生成、程序调试和软件测试等多个方面,形成了集成化的软件工程开发环境CASE。3.软件工程是以系统的、可控的、有效的方式产生高质量的软件,请说明你对“高质量软件”含义的理解。答案要点:软件质量是软件产品与明确的和隐含的需求相一致的程度,它通常由一系列的质量特性来进行描述,包括正确性、可靠性、有效性、可用性、复用性、可维护性、可移植性等。例如,除了要求软件正确运行之外,人们可能还希望软件运行的响应时间符合要求、软件使用方便快捷、程序代码易于理解等,而“程序代码易于理解”往往是一种用户没有明确提出的需求,但却是影响软件演化的重要因素。4.有人认为“软件工程过于耗费时间,并且妨碍开发人员的编程效率。”你是否认同这种观点?请阐述理由。答案要点:这一观点是不正确的。y软件开发远不只是编程,管理不当导致的混乱、工作重复、交流不畅等才是大多软件项目效率低下的主要原因。虽然直接编程在开发前期看来效率高,但是不完整的、不清晰的或错误的需求和设计将导致在开发后期反复地修改程序,反而降低了整个开发效率,其质量也无法保证,甚至导致软件开发最终失败的结果。y软件工程是帮助人们在有限的时间、金钱预算和人力、物力资源的约束下开发出质量尽量高的软件的一系列理论和工具,虽然它在编程之外的工作上花费了大量时间,但所耗费的时间与精力并不像其表面上所看起来的那样冗余与低效,而是从总体上做好整个体系的设计与把握,全方位地规划开发过程,对节省成本、提高效率、保证最终产品质量起到了事半功倍的作用。第2章软件过程(习题与参考答案)[选择题]1.()是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开发、软件确认、软件改进等活动组成。(A)A.软件过程B.软件工具C.软件产品D.软件工程2.软件过程的基本活动是()。(A)A.分析、设计、实现、测试、演化B.沟通、计划、建模、构造、部署C.计划、分析、设计、实现、调试D.沟通、风险管理、度量、产品化、评审3.()软件需求规格说明书在软件开发过程中具有重要的作用,它是软件可行性分析的依据。(B)A.真B.假4.软件开发的瀑布模型是()。(A)A.适用于需求被清晰定义的情况B.一种需要快速构造可运行程序的好方法C.昀适合于大规模团队开发的项目D.已不能用于现代环境的过时模型5.软件开发的增量模型是()。(B)A.适用于需求被清晰定义的情况B.一种需要快速构造核心产品的好方法C.昀适合于大规模团队开发的项目D.一种不适用于商业产品的创新模型6.快速原型开发模型是()。(B)A.适用于客户需求被明确定义的情况B.适用于客户需求难以清楚定义的情况C.昀适合于大规模团队开发的项目D.很难产生有意义产品的一种冒险模型7.演进式软件过程模型()。(D)A.本质上是迭代的B.可以很容易适应需求的变化C.通常不会抛弃所产生的系统D.以上所有选项8.螺旋模型()。(C)A.在软件产品发布时结束B.比增量模型更加混乱C.在每一次迭代过程中包含项目风险评价D.以上所有选项9.基于组件的开发模型()。(C)A.只适用于计算机硬件设计B.不能支持可重用组件的开发C.在面向对象技术获得支持的情况下应用得更好D.增加了开发风险和成本10.形式化方法模型是将数学方法用于()。(D)A.定义计算机系统的规格说明B.开发无错误的计算机系统C.验证计算机系统的正确性D.以上所有选项11.下面的()不是RUP模型的阶段。(D)A.启动阶段B.精化阶段C.构造阶段D.确认阶段[练习题]1.请简要说明软件过程的概念和基本元素。答案要点:软件过程是软件工程人员为了获得软件产品在软件工具支持下实施的一系列软件工程活动,它应该明确定义以下元素:y过程中所执行的活动及其顺序关系y每一个活动的内容和步骤y团队人员的工作和职责2.请描述快速原型过程模型的各个阶段。答案要点:快速原型方法的目的是解决软件需求不明确给开发带来风险的问题,其关键在于尽可能“快速”地建造原型,通过用户对原型的评价昀终确定系统的需求。快速原型过程模型包括以下阶段:y原型需求分析:分析和提炼所收集到的客户需求;y原型开发:基于初步的需求快速建造一个可以运行的软件原型,实现客户或未来的用户与系统的交互;y原型评价:由用户或客户对该原型进行评价,需要的话再进一步细化待开发软件的需求,并继续调整原型直至需求确定下来为止。3.对于下列每一个过程模型,分别列举一个可以适用的具体软件项目,并说明在开发中如何应用该模型。(1)瀑布模型(2)快速原型模型(3)增量模型(4)形式化方法模型(5)基于组件的开发模型答案要点:(1)瀑布模型项目举例:某项目需要在一种新型机器上,为一种已知语言开发一个普通的编译器。选用分析:由于该项目的语言是已知的,需求是明确的和稳定的,整个系统属于中小规模,因此适合采用瀑布模型进行软件开发。阶段说明:略。(2)快速原型模型项目举例:某公司需要给火车站开发一个交互式火车车次查询系统,这是火车站首次使用该系统。选用分析:本项目的主要问题在于用户需要方面,该系统与昀终用户的交互是十分关键的,但是在项目初期用户的需求基本上是不知道的,因此适合采用快速原型方法来确定用户需求,在需求确定的基础上再开发昀终系统。阶段说明:略。(3)增量模型项目举例:某公司开发一个通用CAD软件产品,产品需求是逐步完善的,某些需求在一定范围内是明确的,某些需求需要进一步细化,但是迫于市场竞争的压力产品需要尽快上市。选用分析:通用CAD软件产品具有一定的成熟度,总体需求和软件系统结构是可以确定的,但是实现该产品所有功能需要比较长的开发周期。为了尽快上市可以采用增量模型实行多版本的发布策略,既可以很快占领市场又可以为后续版本的需求定义奠定基础。阶段说明:略。(4)形式化方法模型项目举例:某公司开发一个汽车防抱死刹车控制系统。选用分析:由于该系统对安全性和可靠性要求极高,需要在系统运行之前进行相关性能的检验,因此适合采用形式化方法开发该系统。阶段说明:略。(5)基于组件的开发模型项目举例:某公司开发企业管理ERP系统,包括销售、库存、生产、财务、物流、人力资源等部分,在系统实施过程中不同的企业具有一定的需求差异。选用分析:企业ERP系统具有组件化的结构,在不同企业实施时应该尽量重用已有的组件,因此适合采用基于组件的开发模型开发该系统,在直接应用或者修改使用的基础上,昀终进行组件开发和系统集成。阶段说明:略。4.在螺旋模型中,风险分析的作用是什么?答案要点:在螺旋模型中,软件开发是在风险等级的指导下进行的。首先确定该阶段的目标,完成这些目标的选择方案及其约束条件;其次从风险角度分析方案的开发策略,努力排除各种潜在的风险,在需求不适当的情况下可能需要建造原型系统;如果某些风险不能排除,该方案可能立即终止,否则继续启动下一步的软件开发和验证工作,并再次通过风险分析规定过程遵循的策略;昀后,评价该阶段的结果,并规划下一个迭代。从上述过程中可以看出,风险分析的作用是通过识别项目中的高风险问题,使开发人员制定适当的开发策略消除这些风险。5.某大学准备开发一个新的学生注册选课系统,以替换一个现有的系统。请设计一个适用于该系统开发的过程模型,并进一步描述该模型。答案要点:假设原有的学生注册课程系统是由学生手工提交书面选课单,教师手工提交成绩单,教务管理人员在客户端录入学生选课结果和课程成绩;而在新的选课系统中,所有用户在自己的计算机上通过Internet访问和操作该系统,该软件系统需要更新服务器和数据库等系统,并扩充一些新功能和提高系统性能。从该系统的具体情况来看,系统的需求是比较容易明确的,整个系统的结构需要重新设计,但是原有的遗留系统中有些部分是可以重用的,因此我们可以采用组件模型实施软件开发:y系统需求分析:由于该系统是现有系统的扩展,因此首先可以经过一个简单的需求分析阶段,从而确定新系统的需求。y遗留系统分析:在需求确定的基础上,开发人员分析遗留系统并研究新系统的总体结构,选择重用原有的课程信息管理部分,重新开发选课部分,必要时适当修改系统需求,昀终确定系统需求和总体结构。y设计开发阶段:开发人员进一步设计相关子系统,将原有的课程信息管理部分封装为子系统,重新开发学生选课子系统,并实现与外部付费系统的接口。y系统测试阶段:开发人员将所有子系统集成在一起,交给测试人员开始全面的功能测试和性能测试。根据所报告的测试问题,开发人员调试和修改程序。y系统交付阶
本文标题:软件工程-刘强-课后习题参考答案
链接地址:https://www.777doc.com/doc-5018451 .html