《软件工程——理论与实践》习题答案1习题答案习题一答案一、选择题1.软件的主要特性是(ABC)。A)无形B)高成本C)包括程序和文档D)可独立构成计算机系统2.软件工程三要素是(CD)。A)技术、方法和工具B)方法、工具和过程C)方法、对象和类D)过程、模型、方法3.包含风险分析的软件工程模型是(A)。A)螺旋模型B)瀑布模型C)增量模型D)喷泉模型4.软件工程的主要目标是(C)。A)软件需求B)软件设计C)风险分析D)软件实现5.下列属于面向对象开发方法的是(ABCD)。A)BoochB)UMLC)CoadD)OMT6.软件危机的主要表现是(BD)。A)软件成本太高B)软件产品的质量低劣C)软件开发人员明显不足D)软件生产率低下7.软件开发方法的主要工作模型有(ABC)A)螺旋模型B)循环模型C)瀑布模型D)专家模型8.软件工程的目标有(ABC)。A)易于维护B)低的开发成本C)高性能D)短的开发期9.软件工程学的目的和意义是()。A)应用科学的方法和工程化的规范管理来指导软件开发B)克服软件危机C)作好软件开发的培训工作D)以较低的成本开发出高质量的软件二、判断题1.软件就是程序,编写软件就是编写程序。(×)2.瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。(×)3.结构化方法的工作模型是使用螺旋模型进行开发。(×)4.结构化方法和JSP方法都不适合于大型软件的开发。(√)5.原型化开发方法包括生成原型和实现原型两个步骤。(×)6.面向对象的开发方法包括面向对象的分析、面向对象的设计和面向对象的程序设计。(√)7.软件危机的主要表现是软件的需求量迅速增加,软件价格上升。(×)8.软件工具的作用是为了延长软件产品的寿命。(×)9.软件工程过程应该以软件设计为中心,关键是编写程序。(×)《软件工程——理论与实践》习题答案210.RCP法与RSP法的主要区别是前者采用循环渐进的开发方式,原型将成为最终的产品,而后者将被废弃。(√)三、简答题1.软件产品的特性是什么?答:●软件是一种逻辑产品,具有无形性;●软件产品的生产主要是研制;●软件不存在磨损和老化问题,但存在退化问题;●软件产品的生产主要是脑力劳动;●软件产品的成本非常昂贵,其开发方式目前尚未完全摆脱手工生产方式;●软件具有“复杂性”,其开发和运行常受到计算机系统的限制。2.软件发展有几个阶段?各有何特征?答:①程序设计阶段。硬件特征:价格贵、存储容量小、运行可靠性差。软件特征:只有程序、程序设计概念,不重视程序设计方法。②程序系统阶段。硬件特征:速度、容量及工作可靠性有明显提高,价格降低,销售有爆炸性增长。软件特征:程序员数量猛增,开发人员素质低。③软件工程阶段。硬件特征:向超高速、大容量、微型化及网络化方向发展。软件特征:开发技术有很大进步,但未获得突破性进展,软件价格不断上升,未完全摆脱软件危机。3.什么是软件危机?其产生的原因是什么?答:“软件危机”(SoftwareCrisis)的出现是由于软件的规模越来越大,复杂度不断增加,软件需求量增大。而软件开发过程是一种高密集度的脑力劳动,软件开发的模式及技术不能适应软件发展的需要。致使大量质量低劣的软件涌向市场,有的花费大量人力、财力,而在开发过程中就夭折。软件危机主要表现在两个方面:(1)软件产品质量低劣,甚至开发过程就夭折。(2)软件生产率低,不能满足需要。4.什么是软件生存周期模型?它有哪些主要模型?答:软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。主要模型包括:瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型。5.有哪些主要的软件开发方法?答:主要的软件开发方法有:结构化开发方法、Jackson(JSP、JSD)方法、原型化开发方法、维也纳开发方法(VDM)和面向对象的开发方法。6.软件生命期各阶段的任务是什么?答:软件生命期瀑布模型分为六个阶段:●可行性研究与计划(确定系统的目标和规模,分析项目的可行性);●需求分析与规格说明(明确系统的规格和要求);●设计(包括概要设计和详细设计,将系统分解为模块);●编程(用程序语言实现每个模块,简单容易);●测试(发现并改正错误,分为模块测试、集成测试和系统联调三级);●运行维护(扩充功能、纠错等)。《软件工程——理论与实践》习题答案3习题二答案一、选择题1.需求分析的主要目的是(BC)。A)系统开发的具体方案B)进一步确定用户的需求C)解决系统是“做什么的问题”D)解决系统是“如何做的问题”2.需求分析的主要方法有(CD)。A)形式化分析方法B)PAD图描述C)结构化分析(SA)方法D)OOA法3.面向对象的分析方法主要是建立三类模型,即(D)。A)系统模型、ER模型、应用模型B)对象模型、动态模型、应用模型C)E-R模型、对象模型、功能模型D)对象模型、动态模型、功能模型4.SA法的主要描述手段有(B)。A)系统流程图和模块图B)DFD图、数据词典、加工说明C)软件结构图、加工说明D)功能结构图、加工说明5.画分层DFD图的基本原则有(ACD)。A)数据守恒原则B)分解的可靠性原则C)子、父图平衡的原则D)数据流封闭的原则6.在E-R模型中,包含以下基本成分(C)。A)数据、对象、实体B)控制、联系、对象C)实体、联系、属性D)实体、属性、联系7.画DFD图的主要目的是(AD)。A)作为需求分析阶段用户与开发者之间交流信息的工具B)对系统的数据结构进行描述C)对目标系统的层次结构进行描述D)作为分析和设计的工具8.数据字典是数据流图中所有元素的定义的集合,一般由以下四类条目组成(C)。A)数据说明条目、控制流条目、加工条目、数据存储条目B)数据流条目、数据项条目、文件条目、加工条目C)数据源条目、数据流条目、数据处理条目、数据文件条目D)数据流条目、数据文件条目、数据池条目、加工条目《软件工程——理论与实践》习题答案49.在需求分析阶段主要采用图形工具来描述的原因是(BC)。A)图形的信息量大,便于描述规模大的软件系统B)图形工具能够极好地概括描述一个系统的信息,比文字叙述能够更好地表达重要的细节C)图形能够更加直观地描述目标系统,便于用户理解和交流,有利于开发者与用户之间达成一致的需求D)图形比文字描述简单、形象二、判断题1.在进行了可行性分析后,需求分析就只需要解决目标系统的设计方案。(×)2.SA法是面向数据流,建立在数据封闭原则上的需求分析方法。(√)3.HIPO法既是需求分析方法,又是软件设计方法。(√)4.在面向对象的需求分析方法中,建立动态模型是最主要的任务。(×)5.加工小说明是对系统流程图中的加工进行说明。(×)6.判定表的优点是容易转换为计算机实现,缺点是不能够描述组合条件。(×)7.需求分析的主要方法有SD法、OOA法及HIPO法等。(×)8.分层的DFD图可以用于可行性分析阶段,描述系统的物理结构。(×)9.信息建模方法是从数据的角度来建立信息模型的,最常用的描述信息模型的方法是E-R图。(√)10.用于需求分析的软件工具,应该能够保证需求的正确性,即验证需求的一致性、完整性、现实性和有效性。(√)三、问答题1.什么是需求分析?需求分析阶段的基本任务是什么?答:需求分析是当前软件工程中的关键问题,需求分析阶段的任务是:在可行性分析的基础上,进一步了解、确定用户需求。准确地回答“系统必须做什么?”的问题。获得需求规格说明书。还涉及到软件系统的目标、软件系统提供的服务、软件系统的约束和软件系统运行的环境。它还涉及到这些因素和系统的精确规格说明,以及系统进化之间的关系。需求分析的基本任务包括:(1)抽取需求分析现行系统存在需要解决的问题。获取足够多的问题领域的知识,需求抽取的方法一般有问卷法、面谈法、数据采集法、用例法、情景实例法以及基于目标的方法等;还有知识工程方法,例如,场记分析法、卡片分类法、分类表格技术和基于模型的知识获取等。(2)模拟和分析需求需求分析和模拟又包含三个层次的工作。首先是需求建模。需求模型的表现形式有自然语言、半形式化(如图、表、结构化英语等)和形式化表示等三种。需求概念模型的要求包括实现的独立性:不模拟数据的表示和内部组织等;需求模拟技术又分为企业模拟、功能需求模拟和非功能需求模拟等。(3)传递需求传递需求的主要任务是书写软件需求规格说明。(4)认可需求就是对需求规格说明达成一致,其主要任务是冲突求解,包括定义冲突和冲突求解两方面。常用的冲突求解方法有:协商、竞争、仲裁、强制、教育等,其中有些只能用人的因素去控制。(5)进化需求客户的需要总是不断(连续)地增长,但是一般的软件开发又总是落后于客户需求的增长,如何管理需求的进化(变化)就成为软件进化的首要问题。对于传统的变化管理过程来说,其基本成分包括软件配置、软件基线和变化审查小组。当前的发《软件工程——理论与实践》习题答案5展是软件家族法,即产品线方法。多视点方法也是管理需求变化的一种新方法,它可以用于管理不一致性,并进行关于变化的推理。2.M公司的软件产品以开发实验型的新软件为主。用瀑布模型进行软件开发已经有近十年了,并取得了一些成功。若你作为一名管理员刚加入M公司,你认为快速原型法对公司的软件开发更加优越,请向公司副总裁写一份报告阐明你的理由,切记:副总裁不喜欢报告长度超过一页(B5)。参考答案提示:应先简述瀑布模型的缺点,它已不适宜开发实验型的软件。根据快速原型法的特点,说明它特别适合于开发探索型、实验型的软件。3.如何画分层数据流图?答:总的原则是:至顶而下,逐层分解(画分层数据流图)。比较复杂的系统不能画在一张纸上,逐层分解的画法可以控制每一层的复杂度。顶层:将整个系统作为一个加工,描述系统边界(输入与输出)。中间层:表示某个加工分解为一组子加工,其中的子加工还需进一步分解。底层:由不再进行分解的基本加工组成。4.加工小说明有哪些描述方法?答:●结构化语言:介于自然语言和形式语言(如谓词逻辑)之间。●结构化英语:通常由外层和内层结构组成。●汉语的情况:精确、简明扼要、文体可以灵活。●判定表:适用于表述比较复杂的加工逻辑,如具有多项选择条件的操作。●判定树:本质上与判定表相同,图形表示更易于理解。5.考察下图中子图、父图的平衡。图1图2参考答案:显然,图1中子图与父图不平衡。改正如下:如果有如下数据条目:订货单=客户+账号+数量则子、父图平衡6.画出银行取款过程的DFD图。问题描述为:储户用存折取款,首先填写取款单,《软件工程——理论与实践》习题答案6根据“账卡”中的信息检验取款单与存折,如有问题,将问题反馈给储户,否则,登录“储户存款数据库”,修改相应数据,并更新“账卡”,同时发出付款通知,出纳向储户付款。参考答案:7.常用的软件需求分析方法有哪些?答:结构化分析方法(SA)、功能分解法、信息建模法、面向对象的分析方法(OOA)。习题三答案一、选择题1.模块的基本特征是(AC)。A)外部特征(输入/输出、功能)B)内部特征(输入/输出、功能)C)内部特征(局部数据、代码)D)外部特征(局部数据、代码)2.SD方法的设计总则是(CD)。A)程序简洁、操作方便B)结构清晰、合理C)模块内聚性强D)模块之间耦合度低3.软件设计的主要任务是(ABD)。A)将分析阶段获得的需求说明转换为计算机中可实现的系统B)完成系统的数据结构和程序结构设计C)完成模块的编码和测试D)对模块内部的过程进行设计4.设计阶段应达到的目标有(AD)。A)提高可靠性和可维护性B)提高应用范围C)结构清晰D)提高可理解性和效率5.从工程管理的角度来看,软件设计分两步完成(D)。A)①系统分析②模块设计B)①详细设计②总体设计C)①模块设计②详细设计D)①总体设计②详细设计6.模块独立性准则由以下定性指标来衡量(BD)。A)分解度B)耦合度C)屏蔽性D)内聚性7.用户界面设计的任务包括(ABC)。A)确定用户界面类型B)建立任务模型C)建立用户模型D)建立功能模型8.程序设计语言可以分为(BCD)。A)面向过程的语言B)机器语言《软件工程——理