软件工程习题与答案_第1页
软件工程习题与答案_第2页
软件工程习题与答案_第3页
软件工程习题与答案_第4页
软件工程习题与答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

软件工程习题与答案一、选择题1.以下哪项不属于软件工程的目标?()A.可维护性B.高效性C.高成本D.可靠性答案:C解析:软件工程的目标是在给定成本、进度的前提下,开发出具有可维护性、可靠性、高效性、可用性、可移植性等特征的软件产品,而不是高成本。

2.软件生命周期中花费时间最多的阶段是()A.详细设计B.软件编码C.软件测试D.软件维护答案:D解析:软件维护是软件生命周期中花费时间最多的阶段,因为软件在交付使用后需要不断地进行修改、完善和扩展,以适应新的需求和环境变化。

3.软件危机产生的原因主要是()A.软件本身的特点B.硬件发展水平的限制C.软件开发和维护方法不当D.以上都是答案:D解析:软件危机产生的原因主要包括软件本身的特点(如复杂性高、不可见性等)、硬件发展水平的限制、软件开发和维护方法不当等多方面因素。

4.瀑布模型的主要特点是()A.阶段明确,严格按照线性顺序进行软件开发B.强调软件开发的迭代过程C.适用于需求不明确的项目D.允许并发开发答案:A解析:瀑布模型阶段明确,严格按照线性顺序依次进行需求分析、设计、编码、测试、维护等阶段,前一个阶段完成后才进入下一个阶段。

5.快速原型模型的主要特点是()A.开发周期短,能快速响应用户需求B.强调软件开发的计划性C.适合大型复杂项目D.文档完整答案:A解析:快速原型模型通过快速构建一个可运行的软件原型,让用户尽早接触和使用软件,从而快速响应用户需求,确定软件的功能和性能要求,然后在此基础上进行完善和扩展。

6.以下哪项不是面向对象方法的优点?()A.提高软件的可维护性B.提高软件的可扩展性C.降低软件的开发效率D.提高软件的可复用性答案:C解析:面向对象方法具有提高软件的可维护性、可扩展性和可复用性等优点,通常能够提高软件开发效率,而不是降低。

7.软件需求规格说明书的作用不包括()A.软件设计的依据B.用户与开发人员对软件需求的共同理解C.软件验收的依据D.软件可行性研究的依据答案:D解析:软件可行性研究在需求规格说明书之前进行,需求规格说明书是软件设计、验收等阶段的依据,用于明确用户与开发人员对软件需求的共同理解。

8.以下哪种图不属于UML中的行为图?()A.用例图B.顺序图C.活动图D.状态图答案:A解析:用例图属于UML中的静态图,用于描述系统的功能需求;顺序图、活动图、状态图属于行为图,用于描述系统的动态行为。

9.模块独立性的两个定性标准是()A.耦合性和内聚性B.抽象性和信息隐蔽性C.局部化和模块独立性D.数据独立性和程序独立性答案:A解析:耦合性和内聚性是衡量模块独立性的两个定性标准,耦合性越低、内聚性越高,模块独立性越强。

10.以下哪种耦合类型的耦合度最低?()A.内容耦合B.公共耦合C.数据耦合D.控制耦合答案:C解析:数据耦合是指两个模块之间通过参数传递简单数据,耦合度最低;内容耦合是最高的耦合类型,模块之间耦合度过高会影响软件的可维护性和可扩展性。

二、填空题1.软件工程是一门研究如何()、()、()和()软件的学科。答案:开发、维护、管理、应用解析:软件工程涵盖了软件从开发到应用以及整个生命周期的各个方面,包括开发过程的组织、维护的实施、管理的策略以及在不同领域的应用。

2.软件生命周期可分为()、()、()、()、()和()六个阶段。答案:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护解析:软件生命周期完整地描述了软件从提出需求开始,经过开发、测试、交付使用,到在使用过程中不断维护和更新的全过程,每个阶段都有其特定的任务和目标。

3.软件开发模型有()、()、()、()、()等。答案:瀑布模型、快速原型模型、增量模型、螺旋模型、敏捷开发模型解析:不同的软件开发模型适用于不同的项目特点和需求,例如瀑布模型适用于需求明确、稳定的项目;快速原型模型适用于需求不明确,需要快速验证需求的项目等。

4.面向对象方法的主要概念包括()、()、()、()、()等。答案:对象、类、封装、继承、多态解析:这些概念是面向对象编程的核心,对象是系统中用来描述客观事物的一个实体;类是具有相同属性和行为的对象的集合;封装将数据和操作数据的方法封装在一起;继承实现类与类之间的层次关系;多态使得同一个操作可以作用于不同类型的对象上。

5.软件需求分析的任务是准确地定义(),深入描述软件的()、()和(),并建立目标系统的()。答案:系统需求、功能需求、性能需求、可靠性需求、逻辑模型解析:软件需求分析是软件开发的关键环节,要明确软件系统需要做什么,包括功能上的要求、性能指标、可靠性要求等,并通过建立逻辑模型来准确表达这些需求。

6.UML中的图分为()、()、()、()、()和()六大类。答案:用例图、静态图、行为图、交互图、实现图、部署图解析:每一类图都有其特定的用途,例如用例图用于描述系统功能;静态图用于描述系统的静态结构;行为图用于描述系统的动态行为等,共同构成了UML强大的建模能力。

7.模块的内聚类型有()、()、()、()、()、()和()等。答案:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚解析:不同的内聚类型反映了模块内部各个元素之间的关联程度和紧密程度,功能内聚是最理想的内聚类型,模块的功能明确单一,独立性强。

8.软件测试的目的是()。答案:发现软件中的错误解析:软件测试不是为了证明软件没有错误,而是通过各种测试手段尽可能地发现软件中存在的错误,以便及时进行修复和改进。

三、简答题1.简述软件工程的七条基本原理。答案:用分阶段的生命周期计划严格管理:软件开发是一个复杂的过程,需要按照一定的阶段进行规划和管理,每个阶段都有明确的输入、输出和任务,以确保项目按时、按质量要求完成。坚持进行阶段评审:在每个阶段结束时进行评审,及时发现和纠正阶段内的错误和问题,避免错误传递到后续阶段,减少后期修复成本。实行严格的产品控制:软件需求在开发过程中可能会发生变化,需要建立有效的变更控制机制,确保软件产品始终满足用户需求。采用现代程序设计技术:利用先进的编程语言、开发工具和编程范式,提高软件的开发效率和质量。结果应能清楚地审查:软件产品的各个阶段成果应该具有清晰的文档和可审查性,便于开发人员之间的沟通、理解以及后续的维护和扩展。开发小组的人员应该少而精:高素质的开发人员组成的小团队能够更高效地协作,减少沟通成本,提高开发效率。承认不断改进软件工程实践的必要性:软件工程是一个不断发展的领域,随着技术的进步和项目经验的积累,需要不断改进开发方法和实践,以适应新的需求和挑战。

2.比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点及适用范围。答案:瀑布模型:优点:阶段明确,文档驱动,开发过程严格按照线性顺序进行,便于管理和控制。缺点:缺乏灵活性,一旦需求变更,后期修改成本高,风险较大。适用范围:需求明确、稳定,技术成熟的项目。快速原型模型:优点:开发周期短,能快速响应用户需求,用户可以尽早参与和反馈,有助于明确需求。缺点:可能导致系统结构不够稳定,后期可能需要重新开发。适用范围:需求不明确,需要快速验证需求的项目。增量模型:优点:逐步增加功能,降低项目风险,便于维护和升级,用户可以及时看到部分功能的实现。缺点:需要对系统进行良好的架构设计,否则可能导致模块之间的耦合度增加。适用范围:需求较明确,但希望分阶段交付产品的项目。螺旋模型:优点:结合了瀑布模型和快速原型模型的优点,强调风险驱动,逐步深化软件项目。缺点:开发过程复杂,周期长,成本高,对风险管理要求较高。适用范围:规模较大、风险较高、需求不太明确的项目。

3.简述软件需求分析的步骤。答案:问题识别:了解用户的需求,包括功能需求、性能需求、可靠性需求、安全需求等。与用户进行沟通交流,收集用户对软件系统的期望和要求。分析与综合:对收集到的需求进行分析,去除模糊、矛盾和不合理的部分。将需求进行分类和整理,形成系统的功能模型和数据模型。综合考虑各种因素,如用户需求、业务流程、技术可行性等,对需求进行进一步的细化和完善。编制需求规格说明书:将分析和综合得到的需求以规范的文档形式记录下来,形成软件需求规格说明书。需求规格说明书应准确、清晰、完整地描述软件系统的功能、性能、接口等方面的要求,作为软件开发的依据。需求评审:组织相关人员(包括用户、开发人员、测试人员等)对需求规格说明书进行评审。通过评审,检查需求规格说明书是否准确反映了用户需求,是否存在遗漏、错误或不一致的地方。根据评审意见对需求规格说明书进行修改和完善,确保需求的准确性和完整性。

4.简述UML中用例图、类图、顺序图和状态图的作用。答案:用例图:作用:用于描述系统的功能需求,展示系统与外部参与者之间的交互关系。通过用例图,可以清晰地了解系统提供哪些功能,以及哪些外部参与者会使用这些功能,帮助确定系统的边界和功能范围。类图:作用:描述系统的静态结构,展示系统中类的定义、类之间的关系(如继承、关联、依赖等)。类图是面向对象编程的基础,它为系统的设计提供了清晰的结构框架,有助于理解系统的组成部分及其相互关系,指导后续的编码实现。顺序图:作用:描述对象之间的交互顺序,展示对象之间如何通过消息传递来完成特定的任务。顺序图能够直观地反映出系统在运行过程中对象之间的动态协作关系,帮助分析系统的行为逻辑,发现潜在的问题。状态图:作用:描述对象的生命周期和状态变化,展示对象在不同状态下的行为和响应。状态图有助于理解对象在其生命周期内的行为模式,特别是在处理具有复杂状态转换的系统时,能够清晰地展示对象在各种情况下的行为变化。

5.简述模块独立性的重要性及提高模块独立性的方法。答案:重要性:提高软件的可维护性:模块独立性强,当某个模块出现问题时,对其他模块的影响较小,便于定位和修改问题。提高软件的可扩展性:独立的模块可以方便地进行修改、扩展和替换,而不影响其他模块的功能,有利于软件的长期发展。提高软件的可测试性:每个模块功能明确,便于单独进行测试,提高测试的效率和准确性。提高方法:降低模块之间的耦合度:尽量减少模块之间的直接引用,通过接口进行交互。避免模块之间传递复杂的数据结构,简化接口参数。控制模块之间的依赖关系,使依赖关系清晰明确,易于管理。提高模块的内聚性:使模块的功能单一化,一个模块只负责一项明确的任务。增强模块内部元素之间的关联程度,使模块内部的逻辑更加紧密。

四、综合题1.假设要开发一个学生成绩管理系统,功能包括学生信息管理、课程信息管理、成绩录入与查询、成绩统计与分析等。请使用UML绘制该系统的用例图,并描述其中一个用例的详细流程。答案:用例图:```plantuml@startumlactor"学生"asstudentactor"教师"asteacheractor"管理员"asadmin

package"学生成绩管理系统"{usecase"学生信息管理"asmanageStudentInfousecase"课程信息管理"asmanageCourseInfousecase"成绩录入与查询"asinputAndQueryScoreusecase"成绩统计与分析"asanalyzeScore

studentmanageStudentInfostudentinputAndQueryScoreteachermanageCourseInfoteacherinputAndQueryScoreteacheranalyzeScoreadminmanageStudentInfoadminmanageCourseInfoadmininputAndQueryScoreadminanalyzeScore}@enduml```成绩录入与查询用例详细流程:前置条件:学生或教师已登录系统。基本流程:学生或教师进入成绩录入与查询界面。若选择成绩录入:系统显示可选的课程列表。用户选择要录入成绩的课程。系统提示用户输入该课程的成绩。用户输入成绩后提交。系统验证成绩的合法性(如成绩是否在0100分之间)。若成绩合法,保存成绩到数据库;若不合法,提示用户重新输入。若选择成绩查询:系统显示可选的查询条件(如按学生姓名、课程名称等)。用户选择查询条件并输入相应的值。系统根据用户输入的条件在数据库中查询成绩。系统显示查询到的成绩列表。后置条件:成绩录入成功则更新数据库中的成绩记录;成绩查询成功则显示查询结果。

2.请设计一个简单的图书管理系统的模块结构,包括主要模块及其功能,并说明模块之间的调用关系。答案:主要模块及其功能:图书信息管理模块:负责图书基本信息(如书名、作者、出版社、出版日期、ISBN等)的录入、修改、删除和查询。读者信息管理模块:管理读者

温馨提示

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

评论

0/150

提交评论