软件工程练习题.doc
一 填空题 、需求分析、概要设计、详细设计、软件实现、软件测试及运行维护7个阶段。2. 是最早的软件生存周期开发模型,它将软件开发过程中的各项活动规定为依固定顺序连接的假设干阶段工作,形如瀑布流水,最终得到软件系统或软件产品。3. 是一种软件开发模型,在这种模型的每一个阶段,都要编码产生一个新的构件,并将新构件集成到先前已经构成的产品中并作为一个整体进展测试,直到满足用户需求为止。 软件开发模型。5. 是一种软件开发模型,由需求定义、风险分析、实施开发与方案评审4个局部组成,主要适用于大型软件工程开发。6. 文档说明该软件开发工程的实现在技术上、经济上与社会因素上等方面的可行性,评述为了合理地到达开发目的可供选择的各种可能实施的方案,说明并论证所选定实施方案的理由。8. 用于描述系统的物理模型,用物理符号以黑盒子的形式描绘系统里的每个部件,仅表达信息在系统个部件之间流动的情况。9. (一种图)可以用来进展工程进度管理。10. 构造化分析与设计是一种面向 的分析设计方法。11. 常见的需求获取方式有 、情景分析技术等。12. 在构造化分析中,用于描述加工逻辑的工具主要有构造化语言、判定树与 。13. 数据字典中的条目主要有 、数据流、文件与加工四种。14. 构造化软件开发方法贯穿始终的八字方针为 。15. 在软件生命周期中的每一个阶段完毕后必须进展 ,这是为了能尽早发现工程开发中的错误。16. 是软件生命周期中重要的一步,是软件定义阶段的最后一个阶段,是关系到软件开发成败的关键步骤。17. 数据流图分为变换型与 两种类型。18. 衡量不同模块彼此之间相互依赖的严密程度。19. 衡量不同模块彼此之间相互依赖的严密程度。20在软件模块设计时应该采取的设计原那么是 。21.内聚性与模块独立性的关系为内聚性越高,模块独立性越 。 ,其中应包含对系统模块设计的结果。23. 详细设计阶段生成的文档是 ,它是程序运行过程的描述。24. 详细设计阶段常用的图示工具包括程序流程图、N-S图、 及过程性设计语言。25. 是编码的先导,这个阶段所产生的设计文档的质量将直接影响下一阶段程序的质量。26.除非对效率有特殊的要求,程序编写要做到 第一,效率第二。27. 软件从一个计算机系统或环境转移到另一个计算系统或环境的容易程度成为 。29. 软件工程的风险管理一般包括风险识别、风险分析、 与风险监控4个过程。 与 两个方面。 建模与 建模两大类。35.在UML中,以反映类的构造(属性、操作)以及类之间的关系为主要目的,描述了软件系统的构造的模型是 。36. UML中,参与者的外部用户所能观察到的系统功能的模型图是 。37. UML中, 的任务就是用来描述一个对象所处的可能状态以及状态之间的转移。38.UML中, 是将活动图用线条分成一些纵向的矩形,每一个矩形属于一个特定的对象或部门的责任区。39.UML中, 重点表示了对象之间传送消息的时间顺序。二 选择题1.在软件开发模型中,提出最早、应用最广泛的模型是 。A瀑布模型 B喷泉模型 C快速原型模型 D螺旋模型2.当没有足够的人员在规定的期限内开发完整的产品或者由于不可克制的客观原因而把交付期限规定的太短时应选用 软件开发模型。A瀑布模型 B增量模型 C快速原型模型 D螺旋模型3. 以下哪个选项不是软件工程三要素。 A. 方法 B. 过程 C. 工具 D. 文档4. 软件危机是指 。 A. 计算机病毒的出现 B. 利用计算机进展经济犯罪 C. 软件开发与维护中出现的一系列问题 D. 人们过分迷恋计算机系统5. 螺旋模型将瀑布模型与原型模型结合起来,应且参加两种模型均忽略的 。 A. 制定方案 B. 风险分析 C. 实施工程 D. 客户评估6. 系统流程图是一种传统工具,用于描绘系统的 。7. 可行性分析研究的目的是 。A.争取工程B.工程值得开发否 C.开发工程 D.规划工程8.以下哪个软件可以用来进展工程进度管理。( )A. Visual C+ B. Eclipse C. SVN D. Microsoft Project9.以下哪个选项不是工程方案中需要完成的任务。 10.在数据流图中, (圆圈)代表 。A. 源点 B. 汇点 C. 加工 D. 文件11. 软件需求分析阶段的工作可以分为四个方面:需求获取、需求分析、编写需求规格说明书以及 。 A. 用户 B. 需求评审 C. 总结 D. 可行性分析12. 在数据流图中, (方块)代表 。A. 源点 B. 数据流 C. 加工 D. 文件13. 数据流图是一种传统工具,用于描绘系统的 。14. 构造化分析方法的一个重要指导思想是 。A. 自顶向下,逐步抽象 B. 自底向上,逐步抽象 C. 自顶向下,逐步分解 D.自底向上,逐步分解15.以下哪个软件可以用来进展工程建模。( )A. Visual C+ B. Eclipse C. SVN D. Microsoft Viso16.软件需求分析阶段建立原型的主要目的是( )17.构造分析方法的常用描述工具不包括( )。18.数据流图示面向( )分析方法的描述工具。19. 内聚是对模块功能强度的度量,下面四个选项中内聚性最强的是 。A. 偶然内聚 B. 逻辑内聚 C. 功能内聚 D. 信息内聚20. 内聚是对模块功能强度的度量,下面四个选项中内聚性最弱的是 。 A. 偶然内聚 B. 逻辑内聚 C. 功能内聚 D. 信息内聚21. 下面四个选项中耦合性最强的是 。 A. 内容耦合 B. 外部耦合 C. 数据耦合 D. 标记耦合22. 下面四个选项中耦合性最弱的是 。 A. 内容耦合 B. 外部耦合 C. 数据耦合 D. 标记耦合23. 数据耦合、内容耦合、标记耦合、控制耦合的耦合性从低到高的顺序是 。A. 数据、内容、标记、控制 B. 数据、标记、控制、内容C. 控制、数据、标记、内容 D. 控制、数据、内容、标记24. 功能内聚、顺序内聚、时间内聚、偶然内聚的内聚性从低到高的顺序是 。A. 功能、顺序、时间、偶然 B. 偶然、功能、时间、顺序C. 偶然、时间、顺序、功能 D. 顺序、偶然、功能、时间25.下面对系统模块化思想描述不正确的选项是 。26. 按照软件工程的原那么,模块的作用域与模块的控制域之间的关系是 。27. 以下不属于软件设计原那么的是 。A. 高内聚 B. 自底向上 C. 模块化 D. 低耦合28.概要设计是软件系统构造的总体设计,以下选项中不属于概要设计的是 。29.模块中所有成分结合起来完成一项任务,该模块的内聚度是 。它具有简明的外部界面,由它构成的软件易于理解、测试与维护。偶然内聚 B. 逻辑内聚 C. 功能内聚 D. 信息内聚30.软件总体设计阶段的主要任务是 。 A. 算法设计 B. 数据构造设计 C. 软件模块构造设计 D. 输入/输出设计31. 软件详细设计工具中,采用自左向右的二维图形构造描述算法的是 。 A. N-S B. PAD C. DD D. DFD32.软件详细设计阶段的主要任务是 。A. 算法及数据构造设计 B. 功能模块设计 C. 数据库设计 D. 功能性能分析33.以下关于程序流程图说法不正确的选项是 。A. 独立于任何一种程序设计语言 B. 比拟直观、清晰,易于掌握C. 不支持逐步求精 D. 容易表示程序的层次构造34.以下关于盒图(方块图)说法不正确的选项是 。B. 可以表示模块的层次构造C. 很容易表现嵌套关系 D. 不符合构造化程序设计的要求35. 在软件详细设计阶段,经常采用的工具是 。 A. PAD B. OOA C. DD D. DFD36.下面关于良好的程序设计风格说法正确的选项是 。B. 程序中的注释是可有可无的C. 尽量多使用临时变量 D. 嵌套应尽可能多的使用37.下面关于良好的程序设计风格说法不正确的选项是 。B. 程序的格式应有助于读者理解程序C. 注解应占到整个程序的1/21/3 D. 使用有意义的变量名38.编制一个好的程序首先要确保它的正确性与可靠性,除此之外,通常更注重源程序的 。A.易使用性、易维护性与效率B. 易使用性、易维护性与易移植性C. 易使用性、易维护性与易修改性 D. 易理解性、平安性与效率39.良好的程序设计风格中选择标识符的名字时应考虑 。A.名字长度越短越好,以减少源程序的输入量B. 多个变量共用一个名字,以减少变量名的数目C. 选择含义明确的名字,以正确提示所代表的实体D. 尽量以关键字作为名字,以使名字标准化40.为了形成良好的程序设计风格,在书写语句时应考虑 。A.把多个短的语句写在同一行中,以减少源程序的行数B. 尽量使用标准文本以外的特殊成效的语句,以提高语句的成效C. 尽量消除表达式中的括号,以简化表达式D. 防止使用测试条件“非,以提高程序的可读性41. 以下属于维护阶段的文档是 。 A.软件需求规格说明B.详细设计说明书 C.软件维护申请报告D.软件测试分析报告42.在整个软件维护阶段所花费的全部工作中, 所占比例最大。 A. 改正性维护 B. 适应性维护 C. 完善性维护 D. 预防性维护43.根据引起软件维护的原因,软件维护阶段通常可分为四类,其中不包括 。 A. 改正性维护 B. 系统性维护 C. 完善性维护 D. 预防性维护44.以下表达中不利于软件可维护性提高的是 。A. 为了缩短源程序的程度应删去源程序中的注解B. 尽可能在软件生产过过程中保证各阶段文件的正确性 C. 重视程序构造的设计,使程序具有较好的层次构造D. 在进展需求分析时就应同时考虑维护性问题45.下面关于软件质量管理说法不正确的选项是 。A. 软件质量,是贯穿软件生存期的一个极为重要的问题B. 影响软件质量的要素包括软件的功能性、可移植性、可修改性等多个方面C. 软件能力成熟度模型是用于评价软件承包商能力并帮助改善软件质量的方法D. 在软件质量管理中不应该强调全面质量管理,应该是少数人对质量进展负责46.下面关于软件配置管理说法不正确的选项是 。A. 现代软件开发复杂度高是提出软件配置管理的主要原因B. 软件配置管理包含为两局部配置管理与变更控制管理C. 软件配置管理有助于防止软件开发中混乱情况的发生D. 软件配置管理是对开发过程中所需软硬件进展的管理47.下面关于软件风险管理说法不正确的选项是 。A. 工程风险管理实际上就是贯穿在工程开发过程中的一系列管理步骤B. 在开发初期就应该制定完善的风险管理策略C. 在风险管理中应建立风险清单、制定解决方案及风险躲避方法D. 风险管理包括风险识别、风险评估两个阶段。48.下面说法不符合极限编程思想的是 。A. 极限编程是一种敏捷开发方法 B. 极限编程推崇简单设计与小版本开发C. 极限编程中测试是在编码完成之后才进展设计与实施的 D. 极限编程具有很高的灵活性与实践性,但也备受争议49.下面说法不符合极限编程思想的是 。A. 极限编程是一种敏捷开发方法 B. 极限编程推崇复杂设计与大版本开发C. 极限编程推崇测试先行,测试驱动开发 D. 极限编程具有很高的灵活性与实践性,但也备受争议50UML图不包括( )A用例图B类图 C状态图D流程图51.在类图中,下面哪个符号表示继承关系 (B)(A)(C)(D)52.下面哪个视图属于UML语言的交互图 A行为图B状态图C实现图D顺序图53.RUP中有 个核心过程工作流。A1B3 C6 D954.类之间的关系不包括 D A依赖关系B泛化关系C实现关系 D分解关系55.如果发现一个子类从父类继承来的行为对子类毫无意义或子类不能替代其父类时,这种继承关系违背了 。A. 单一职责原那么 B. 依赖倒置原那么C. Liskov替换原那么 D. 迪米特法那么56.使用多个隔离的接口,比使用单个接口好,这是 的主要思想。A. 单一职责原那么 B.依赖倒置原那么C. Liskov替换原那么 D. 接口隔离原那么57.系统里的每一个对象应该具有单一职责,这个对象的所有效劳都应该聚焦在实现这个职责上,这是 的主要思想。A. 单一职责原那么 B.依赖倒置原那么C. Liskov替换原那么 D. 接口隔离原那么58.要针对接口编程,不针对实现编程,这是 的主要思想。A. 单一职责原那么 B.依赖倒置原那么C. Liskov替换原那么 D. 接口隔离原那么59.下面对RUP说法正确的选项是 。A. RUP是Oracle公司开发与维护的过程产品B. RUP采用瀑布式的开发模型C. RUP的整个开发周期分为初始、细化、交付三个阶段 D. UML是RUP开发方法的一种有力支持工具60.下面对RUP说法不正确的选项是 。A. RUP是Rational公司开发与维护的过程产品B. RUP采用迭代式的开发模型C. RUP的整个开发周期分为初始、细化、交付三个阶段 D. RUP被称为软件统一开发过程三 判断题2.可行性分析阶段需要完成可行性分析报告的书写,不需要进展阶段评审。3. 可行性分析不是解决问题,而是确定为什么要解决这个问题,是否值得去解。4. 在绘制分层数据流图时,最上层的叫做0层图。5. 需求分析解决目标系统“做什么的问题,需求包括功能性需求与非功能性需求。6. 在一套分层数据流图中,如果某张图中的加工需要进一步细化,可以画出该图的子图,单应注意保持父图与子图之间的平衡。7. 对数据流图进展分层细化时必须保持信息连续性,即当把一个处理分解为一系列处理时,分解前与分解后的输入/输出数据流必须一样。8. 总体设计的主要任务是确定系统的总体构造,形成软件的模块构造图,并完成总体设计说明书的编写工作。9.在软件模块构造的设计上应力争做到低内聚、高耦合。10.既然模块化可以减少工作量,那么可以把软件进展无限分解。11提高模块独立性是好的软件设计的关键,而设计又是决定软件质量的关键环节。12. 具有一个线性构造,有明显的逻辑输入与逻辑输出,由输入、变换与输出三局部组成的数据流图为事务性数据流图。13.模块越小,模块化的优点越明显。一般来说,模块的大小都在10行以内。14. 在将这种混合型数据流图转换成软件构造图时,通常以事务分析为主。15.在进展程序编码时,为了代码的完整、精炼应少写注释。16.编码标准有助于程序员形成好的程序设计风格。17.编码标准中一般从文件组织、注释、声明、命名标准等诸多方面对编码进展要求,但其中有些是可有可无的。18在程序编码时,变量的命名通常应具有实际意义,并采用全大写的命名方式。19. 软件测试应该在编码完成后再方案与实施。20. 软件维护会产生副作用,主要反映在三个方面:修改编码的副作用、修改数据的副作用、修改文档的副作用。22.在软件维护时,当有源程序代码发生修改后,不用做全面的测试。23.在软件维护工作中,文档资料也应作及时的更新,不能明确地反映软件的实际状况,可能比没有设计文档更糟糕。24. 在进展面向对象设计时要注意对类进展良好的封装,通常我们是将经常发生变动的局部封装起来。25. 迭代是进展面向对象开发的一种常见方法,在迭代过程中如果发现软件构造不能灵活应对变化,应该进展设计重构。26.软件管理应先于任何技术活动之前,并贯穿于软件的整个生命周期之中。27.工程开发方案与详细设计说明书是软件设计阶段必须生成的文档。28. 在软件开发过程中,应该遵循边开发,边测试的原那么。29 软件团队的组织对于软件工程开发非常重要,一个10人的开发团队一定比一个5人的开发团队更有效率。30.面向对象的软件工程方法包括面向对象分析、面向对象设计、面向对象编程、面向对象测试与面向对象维护,这些局部严密结合在一起,填平了开发过程中的鸿沟。31. UML是面向对象开发方法的有力支持工具。四 名词解释1. 软件工程2. 软件生命周期3. 数据流图4. 构造化分析方法8. 校正性维护9. 适应性维护10. 完善性维护11. 软件配置管理12. 开放封闭原那么五 简答题1. 什么是软件生命周期?分为哪几个阶段? 2.简要说明瀑布模型的主要思想。3.简要说明增量(渐增)模型的主要思想。4.简要说明里程碑模型的主要思想。5. 快速原型法的根本思想是什么?适用于哪些工程的开发?6. 假设你负责某种软件的研发,由于市场竞争剧烈,公司规定了严格的完成期限并且已对外公布。你打算采用哪种软件开发模型或方法?为什么?7.可行性分析报告主要包括哪些内容?8.工程方案应该包含哪些方面?请以学籍管理系统为例进展说明。9.构造化分析方法的主要思想是什么?有哪些常用的工具?10.需求规格说明书主要包括哪些内容?11.需求分析阶段的主要任务是什么?应交付哪些成果?12.软件总体设计阶段的主要任务是什么?需要提交哪些文档?13.概要设计说明书主要包括哪些内容?14.构造化设计的主要思想是什么?其设计结果是什么?15.软件详细设计说明阶段的主要任务是什么?需要提交哪些文档?16.详细设计说明书主要包括哪些内容?17. 在软件编码阶段强调编码标准的目的是什么?请任举两条根本的编码标准。18. 简述软件维护的工作流程。19. 软件开发过程中的各种文档起到什么作用?如果文档不完整或不标准会带来什么不良后果?请说明顺序图与协作图的区别与联系。六 分析设计题1. 下面是一段伪代码描述的程序流程,请画出它的程序流程图。START INPUT(A,B,C,D) While (A>0)AND(B>0) Begin C=C+A+B D=D+A-BAB- END IF(C>D) PRINT(C) ELSE PRINT(D)STOP2.设计算法实现三个数从小到大排列的功能,并用盒图描述该算法。3. 下面是一个吉他搜索系统的类图,仔细分析该类图,答复一下问题:(1)当我们要在GuitarSpec类中参加新的属性时,除了GuitarSpec类本身,还有哪些类可能会受到影响?(2)你有什么改良方法?(3)你的改良方法应用到了什么设计原那么或技术?这样做有什么好处?3.分析下面各个类的关系,在图中添加符号形成一个合理的、完善的类图。4.以下是饮料销售机的类图,请根据下面的场景描述画出该场景的顺序图。5.下面的文字描述了某大学新生报到的过程。 新生首先要填一张新生注册表单。如果填写不正确,那么在别人的帮助下重新填写,直至填写正确,然后进展注册。注册成功后,要进展开学典礼,同时在新生选课系统中注册,然后交齐第一个学期的学费。试使用活动图描述上述过程。6. “远程网络教学系统的功能需求如下:l 学生登录网站后,可以浏览课件、查找课件、下载课件、观看教学视频。l 教师登录网站后,可以上传课件、上传教学视频、发布教学心得、查看教学心得、修改教学心得。学生与教师都需要登录后完成上述操作,请画出学生参与者对应的用例图。7. “远程网络教学系统的功能需求如下:l 学生登录网站后,可以浏览课件、查找课件、下载课件、观看教学视频。l 教师登录网站后,可以上传课件、上传教学视频、发布教学心得、查看教学心得、修改教学心得。学生与教师都需要登录后完成上述操作,请画出教师参与者对应的用例图。8.图书管理系统功能性需求说明如下: ² 图书管理系统能够为一定数量的借阅者提供效劳。每个借阅者能够拥有唯一标识其存在的编号。图书馆向每一个借阅者发放图书证,其中包含每一个借阅者的编号与个人信息。提供的效劳包括:提供查询图书信息、查询个人信息效劳与预定图书效劳等。² 当借阅者需要借阅图书、归还书籍时需要通过图书管理员进展,即借阅者不直接与系统交互,而是通过图书管理员充当借阅者的代理与系统交互。² 系统管理员主要负责系统的管理维护工作,包括对图书、数目、借阅者的添加、删除与修改。并且能够查询借阅者、图书与图书管理员的信息。² 可以通过图书的名称或图书的ISBN/ISSN号对图书进展查找。 答复下面问题:1) 该系统中有哪些参与者2) 确定该系统中的类。3) 找出类之间的关系并画出类图。第 13 页