《软件工程》期末习题答案_第1页
《软件工程》期末习题答案_第2页
《软件工程》期末习题答案_第3页
《软件工程》期末习题答案_第4页
《软件工程》期末习题答案_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《软件工程》期末习题答案一、选择题1.软件工程的三要素是()A.方法、工具和过程B.建模、方法和工具C.建模、方法和过程D.方法、工具和文档答案:A。软件工程包括方法、工具和过程三个要素。方法是完成软件开发的各项任务的技术方法,回答“怎样做”的问题;工具是为运用方法而提供的自动的或半自动的软件工程支撑环境;过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。2.瀑布模型的关键不足在于()A.过于简单B.不能适应需求的动态变更C.过于灵活D.各个阶段需要进行评审答案:B。瀑布模型是一种线性顺序模型,它将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。其关键不足在于不能很好地适应需求的动态变更,因为在后续阶段发现前期的错误时,修改成本较高。3.需求规格说明书的作用不包括()A.软件设计的依据B.软件可行性研究的依据C.软件验收的依据D.用户与开发人员对软件要做什么的共同理解答案:B。需求规格说明书是需求分析阶段的成果,它是软件设计的依据,为开发人员提供了软件功能和性能的详细描述;是软件验收的依据,可用于判断软件是否满足用户需求;也是用户与开发人员对软件要做什么的共同理解的文档。而软件可行性研究是在需求分析之前进行的,需求规格说明书不是其依据。4.软件设计中划分模块的一个准则是()A.低内聚低耦合B.低内聚高耦合C.高内聚低耦合D.高内聚高耦合答案:C。模块的内聚性是指模块内部各元素之间联系的紧密程度,耦合性是指模块之间相互联系的紧密程度。高内聚意味着模块内部的元素联系紧密,功能单一,便于维护和修改;低耦合意味着模块之间的联系松散,一个模块的修改对其他模块的影响较小。所以软件设计中划分模块的准则是高内聚低耦合。5.黑盒测试方法是根据软件的()来设计测试用例的。A.功能B.输入数据C.内部逻辑D.应用范围答案:A。黑盒测试又称功能测试,它把测试对象看作一个黑盒子,不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。通过输入一组数据,检查输出结果是否符合预期,从而验证软件的功能是否正确。6.软件维护的类型不包括()A.改正性维护B.适应性维护C.完善性维护D.预防性维护E.功能性维护答案:E。软件维护主要包括四种类型:改正性维护是指在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段,这些隐藏的错误在某些特定的使用环境下就会暴露出来,对它们的修改就是改正性维护;适应性维护是指为了使软件适应变化了的环境而进行的维护活动;完善性维护是指在软件的使用过程中,用户往往会对软件提出新的功能与性能要求,为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性;预防性维护是指为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础而进行的维护工作。7.面向对象方法中,对象是类的实例。对象的状态通过()来体现,对象的行为通过()来实现。A.属性,方法B.方法,属性C.数据,操作D.操作,数据答案:A。在面向对象方法中,类是对具有相同属性和行为的一组对象的抽象描述。对象是类的实例,对象的状态由其属性来体现,属性是对象所具有的特征和数据;对象的行为通过方法来实现,方法是对象所能执行的操作。8.下列关于软件项目管理的说法中,错误的是()A.软件项目管理的主要任务是对软件项目的开发过程进行有效的管理和控制B.软件项目管理包括项目计划、项目组织、人员安排、成本估算、进度控制等方面C.软件项目管理只需要关注技术方面的问题,不需要考虑人员和管理方面的因素D.有效的软件项目管理可以提高软件的质量和开发效率答案:C。软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动。它不仅要关注技术方面的问题,如软件的开发技术、算法等,还要充分考虑人员的管理、沟通协调,以及项目的进度、成本、质量等多方面的因素。有效的软件项目管理可以合理安排资源,提高软件的质量和开发效率。9.软件配置管理的主要任务不包括()A.版本控制B.变更控制C.配置审计D.代码优化答案:D。软件配置管理是通过技术或行政手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施。其主要任务包括版本控制,即管理软件产品的不同版本,记录版本的变更历史;变更控制,对软件的变更进行严格的管理和控制,确保变更的合理性和正确性;配置审计,检查软件配置项的完整性、一致性等。而代码优化主要是为了提高代码的性能和效率,不属于软件配置管理的主要任务。10.软件的复杂度主要包括()A.时间复杂度和空间复杂度B.逻辑复杂度和物理复杂度C.代码复杂度和文档复杂度D.结构复杂度和功能复杂度答案:A。软件复杂度是对软件系统的复杂性进行度量的指标,主要包括时间复杂度和空间复杂度。时间复杂度是指算法执行所需要的计算工作量,它反映了程序执行时间随输入规模增长而增长的趋势;空间复杂度是指算法在执行过程中所需要的存储空间,它反映了程序运行时所需的内存空间随输入规模增长而增长的趋势。二、简答题1.简述软件工程的定义和目标。软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护,即将工程化应用于软件开发和管理之中。同时,它还包括对上述方法的研究。软件工程的目标是在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。具体来说,包括以下几个方面:-提高软件的质量:确保软件的功能正确、性能良好、可靠性高,能够满足用户的需求和期望。-控制软件的开发成本:在预算范围内完成软件的开发,避免成本超支。-保证软件的开发进度:按照预定的时间计划完成软件的开发,及时交付使用。-增强软件的可维护性:使软件易于理解、修改和扩展,降低维护成本。-促进软件的可重用性:提高软件的开发效率,减少重复劳动。2.比较瀑布模型、快速原型模型和敏捷开发模型的特点。-瀑布模型:-特点:-阶段明确:具有明确的阶段划分,如需求分析、设计、编码、测试、维护等,每个阶段都有明确的输入和输出。-顺序性:各个阶段按照线性顺序依次进行,前一个阶段完成后才进入下一个阶段,如同瀑布流水一样,逐级下落。-文档驱动:强调每个阶段都要产生完整的文档,作为阶段成果和后续阶段的依据。-风险后置:如果在后期阶段发现前期的错误,修改成本较高,因为需要回溯到前面的阶段进行修改。-不适合需求变化:对于需求不明确或容易变化的项目,瀑布模型难以适应,可能导致项目失败。-快速原型模型:-特点:-快速构建原型:在项目开始阶段,快速构建一个可以运行的软件原型,该原型通常只包含了目标系统的部分核心功能和基本架构。-强调用户参与:通过让用户尽早接触和使用原型,获取用户的反馈和意见,从而明确用户的真正需求。-渐进式开发:根据用户的反馈,对原型进行不断的修改和完善,逐步增加系统的功能和特性,直到满足用户的需求。-灵活性高:能够较好地适应需求的变化,因为可以在原型的基础上进行快速调整。-前期成本相对较低:与瀑布模型相比,快速原型模型在前期不需要投入大量的时间和精力进行详细的需求分析和设计,降低了前期成本。-敏捷开发模型:-特点:-以人为本:强调团队成员之间的沟通、协作和互动,注重人的因素在软件开发中的作用。-快速迭代:将软件开发过程划分为多个短周期的迭代,每个迭代都包含了从需求分析、设计、编码到测试的完整过程,不断交付可运行的软件版本。-客户参与:客户在整个开发过程中密切参与,及时提供反馈和需求变更,确保软件能够满足客户的实际需求。-轻量级文档:相比于瀑布模型,敏捷开发更注重可工作的软件而不是详尽的文档,只产生必要的文档。-适应变化:能够快速响应需求的变化,在迭代过程中灵活调整开发计划和方向。3.简述需求分析的任务和方法。需求分析的任务是准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么,并用需求规格说明书的形式准确地表达出来。具体任务包括:-问题识别:通过与用户的交流和沟通,识别用户的需求和问题,明确系统的边界和范围。-分析与综合:对收集到的需求进行分析和整理,去除冗余和矛盾的信息,将需求进行分类和归纳,形成清晰的需求结构。-制定需求规格说明书:将分析后的需求以文档的形式进行规范的描述,包括功能需求、性能需求、数据需求、界面需求等,作为后续开发和测试的依据。-需求评审:组织相关人员对需求规格说明书进行评审,确保需求的完整性、准确性、一致性和可行性。需求分析的方法主要有以下几种:-访谈法:通过与用户进行面对面的交流,了解用户的需求和期望。访谈可以是结构化的,即按照预先设计好的问题进行提问;也可以是非结构化的,更注重自由交流和启发用户表达需求。-问卷调查法:设计一系列问题,以书面形式向用户发放问卷,收集用户的需求信息。问卷调查可以覆盖较多的用户,适合大规模的需求收集。-观察法:观察用户在实际工作中的操作流程和行为习惯,了解用户的实际需求和使用场景。观察法可以获取到用户在自然状态下的真实需求。-原型法:快速构建一个软件原型,让用户通过使用原型来提出需求和反馈意见。原型可以帮助用户更直观地理解系统的功能和界面,从而更准确地表达自己的需求。-用例分析法:通过识别系统的参与者和用例,描述系统的功能和行为。用例图可以清晰地展示系统的功能需求和参与者之间的交互关系。4.简述软件设计的原则和步骤。软件设计的原则主要包括以下几点:-抽象原则:将事物的本质特征提取出来,忽略非本质的细节,形成抽象的概念和模型。在软件设计中,通过抽象可以将复杂的问题简化,便于理解和处理。-模块化原则:将软件系统划分为若干个模块,每个模块具有相对独立的功能。模块化可以提高软件的可维护性、可扩展性和可重用性,降低系统的复杂度。-信息隐藏原则:每个模块应该将其内部的实现细节隐藏起来,只对外提供必要的接口。这样可以减少模块之间的相互依赖,提高系统的安全性和稳定性。-高内聚低耦合原则:模块内部的元素应该具有较高的内聚性,即功能单一、联系紧密;模块之间的耦合性应该较低,即相互联系松散。高内聚低耦合可以提高软件的可维护性和可扩展性。-可重用原则:设计软件时应尽量使用已有的模块和代码,提高软件的开发效率和质量。软件设计一般分为概要设计和详细设计两个步骤:-概要设计:-系统总体结构设计:确定软件系统的总体架构,划分各个模块,并定义模块之间的接口和调用关系。-数据结构设计:设计软件系统中所使用的数据结构,如数据库表结构、文件结构等。-数据库设计:根据需求分析的结果,设计数据库的概念模型、逻辑模型和物理模型。-编写概要设计文档:将概要设计的结果以文档的形式进行描述,包括系统总体结构、模块说明、数据结构等。-详细设计:-模块详细设计:对每个模块进行详细的设计,确定模块的内部算法和数据流程。-界面设计:设计软件的用户界面,包括界面布局、交互方式等,提高用户体验。-代码设计:根据详细设计的结果,编写具体的代码实现。-编写详细设计文档:将详细设计的结果以文档的形式进行描述,包括模块详细说明、算法描述、界面设计等。5.简述软件测试的目的和方法。软件测试的目的主要有以下几点:-发现软件中的缺陷和错误:通过对软件进行各种测试,找出软件中存在的功能错误、性能问题、兼容性问题等,确保软件的质量。-验证软件是否满足需求:检查软件是否实现了需求规格说明书中规定的功能和性能要求,确保软件能够满足用户的需求。-提供软件质量的评估依据:通过测试结果,对软件的质量进行评估,为软件的发布和使用提供决策依据。-预防软件缺陷的产生:在软件开发过程中尽早进行测试,可以发现潜在的问题,避免问题在后期阶段积累,降低修复成本。软件测试的方法主要分为黑盒测试和白盒测试:-黑盒测试:-等价类划分法:将输入数据划分为若干个等价类,从每个等价类中选取一个或多个代表性的数据作为测试用例。等价类分为有效等价类和无效等价类,有效等价类是指符合需求规格说明的数据集合,无效等价类是指不符合需求规格说明的数据集合。-边界值分析法:选取输入数据的边界值作为测试用例,因为边界值附近往往容易出现错误。边界值包括输入数据的最小值、最大值、略小于最小值、略大于最大值等。-因果图法:分析输入条件之间的因果关系,绘制因果图,然后根据因果图提供测试用例。因果图法可以考虑输入条件之间的组合和约束关系。-错误推测法:根据经验和直觉推测软件可能存在的错误,从而设计测试用例。-白盒测试:-语句覆盖:设计测试用例,使得程序中的每条语句至少执行一次。-判定覆盖:设计测试用例,使得程序中的每个判定的取真分支和取假分支至少执行一次。-条件覆盖:设计测试用例,使得每个判定中的每个条件的可能取值至少执行一次。-判定-条件覆盖:设计测试用例,使得每个判定的所有可能结果至少出现一次,并且每个判定中的每个条件的可能取值也至少出现一次。-条件组合覆盖:设计测试用例,使得每个判定中的各个条件的所有可能组合至少出现一次。三、应用题1.某学校要开发一个学提供绩管理系统,该系统需要实现以下功能:-学生信息管理:包括学生基本信息(学号、姓名、性别、班级等)的添加、修改、删除和查询。-课程信息管理:包括课程基本信息(课程号、课程名、学分等)的添加、修改、删除和查询。-成绩录入:教师可以为学生录入每门课程的成绩。-成绩查询:学生可以查询自己的成绩,教师可以查询某个班级或某个学生的成绩。-成绩统计:统计每个班级的平均成绩、最高分、最低分等。请画出该系统的用例图和数据流图(DFD)。用例图参与者:学生、教师、系统管理员用例:-学生:查询成绩-教师:录入成绩、查询成绩-系统管理员:学生信息管理(添加、修改、删除、查询学生信息)、课程信息管理(添加、修改、删除、查询课程信息)、成绩统计用例图的绘制:以矩形表示系统边界,在系统边界外分别画出学生、教师、系统管理员三个参与者,用线条连接参与者和他们对应的用例。例如,学生与“查询成绩”用例相连,教师与“录入成绩”“查询成绩”用例相连,系统管理员与“学生信息管理”“课程信息管理”“成绩统计”用例相连。数据流图(DFD)-顶层数据流图:-外部实体:学生、教师、系统管理员-处理过程:学提供绩管理系统-数据流:学生查询成绩请求、教师录入成绩数据、教师查询成绩请求、系统管理员管理学生信息请求、系统管理员管理课程信息请求、系统管理员统计成绩请求、成绩查询结果、成绩录入反馈、学生信息管理结果、课程信息管理结果、成绩统计结果-第一层数据流图:-处理过程:学生信息管理、课程信息管理、成绩录入、成绩查询、成绩统计-数据流:学生基本信息、课程基本信息、学提供绩数据、查询条件(学生学号、班级等)、统计结果(平均成绩、最高分、最低分等)学生信息管理模块接收系统管理员的学生信息管理请求,处理学生基本信息的添加、修改、删除和查询操作,输出学生信息管理结果;课程信息管理模块接收系统管理员的课程信息管理请求,处理课程基本信息的添加、修改、删除和查询操作,输出课程信息管理结果;成绩录入模块接收教师的成绩录入数据,完成成绩录入操作,输出成绩录入反馈;成绩查询模块接收学生和教师的成绩查询请求,根据查询条件查询成绩,输出成绩查询结果;成绩统计模块接收统计请求,对学提供绩进行统计,输出成绩统计结果。2.请使用Java语言实现一个简单的学提供绩管理系统,包含学生类、课程类和成绩管理类,实现学生信息和课程信息的添加、成绩的录入和查询功能。```javaimportjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;//学生类classStudent{privateStringstudentId;privateStringname;privateStringgender;privateStringclassName;publicStudent(StringstudentId,Stringname,Stringgender,StringclassName){this.studentId=studentId;=name;this.gender=gender;this.className=className;}publicStringgetStudentId(){returnstudentId;}publicStringgetName(){returnname;}publicStringgetClassName(){returnclassName;}}//课程类classCourse{privateStringcourseId;privateStringcourseName;privateintcredits;publicCourse(StringcourseId,StringcourseName,intcredits){this.courseId=courseId;this.courseName=courseName;this.credits=credits;}publicStringgetCourseId(){returncourseId;}publicStringgetCourseName(){returncourseName;}}//成绩管理类classGradeManagement{privateList<Student>students;privateList<Course>courses;privateMap<String,Map<String,Integer>>grades;publicGradeManagement(){students=newArrayList<>();courses=newArrayList<>();grades=newHashMap<>();}//添加学生信息publicvoidaddStudent(Studentstudent){students.add(student);}//添加课程信息publicvoidaddCourse(Coursecourse){courses.add(course);}//录入成绩publicvoidenterGrade(StringstudentId,StringcourseId,intgrade){if(!grades.containsKey(studentId)){grades.put(studentId,newHashMap<>());}grades.get(studentId).put(courseId,grade);}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论