您好,欢迎来到九壹网。
搜索
您的当前位置:首页软件工程复习题

软件工程复习题

来源:九壹网
软件工程练习题 1

一、判断题

1) ( √ )模型是对现实的简化,建模是为了更好地理解所开发的系统。 2) ( × )UML语言支持面向对象的主要概念,并与具体的开发过程相关。

3) ( × )由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。 4) ( × )由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。 5) ( √ )在程序设计中使用括号以改善表达式的清晰性。 6) ( × )在程序设计中应尽可能对程序代码进行优化。 7) ( √ )不要修补不好的程序,要重新写。

8) ( × )购买大多数计算机系统所需的硬件比软件更昂贵。 9) ( × )大多数软件产品在其生命周期中不需要增强功能。

10) ( √ )大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。 11) ( × )一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。

12) ( √ )目前存在一个很普遍的现象,即不同的客户提出的需求是相互矛盾的,但每个人都争辩自己是正确的。

13) ( √ )利益相关者(stakeholders)是将来购买所开发软件系统的人。(B)

14) ( √ )在需求分析过程中,分析员要从用户那里解决的最重要的问题是明确软件做什么。

15) ( × )关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。

16) ( √ )用户界面设计对于一个系统的成功是至关重要的,一个设计得很差的用户界面可能导致用户拒绝使用该系统。

17) ( √ )分析类用于描述系统中概念层次的对象。

18) ( √ )在基于用例的面向对象分析过程中,定义交互行为的关键在于通过描述分析类实例之间的消息传递将用例的职责分配到分析类中。 19) ( × )程序中的注释是可有可无的。

20) ( √ )良好的分层体系结构有利于系统的扩展与维护。

二、选择题

1) ( D )因素促使计算机系统越来越复杂。 (A).计算机内存和存储容量上的巨大增长 (B).外部输入/输出选项的更加多样性 (C).计算机体系结构方面的深刻变化 (D).以上所有选项 2) 下面的( A )不再是现代软件工程师关注的问题。 (A).为什么计算机硬件的成本这么高? (B).为什么软件需要很长时间才能完成? (C).为什么开发一个软件的成本这么高?

(D).为什么不能在产品发布前去除软件错误?

3) 软件工程师在从事软件工作时应使用下面的( E )准则。 (A).从来不为个人获利而窃取数据

(B).从来不散布或出售项目中自己工作的信息

(C).从来不故意毁坏或修改别人的程序、文件或数据 (D).从来不侵犯个人、小组或组织的隐私 (E).以上所有选项

4) 软件会逐渐退化而不会磨损,其原因在于( C ) (A).软件通常暴露在恶劣的环境下 (B).软件错误通常发生在使用之后 (C).不断的变更使组件接口之间引起错误 (D).软件备件很难订购 5) 下面的( C )说法是正确的。

(A).软件危机在20世纪70年代末期全面爆发

软件工程练习题 2

(B).当前先进的软件工程方法已经解决了软件危机的问题

(C).软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题 (D).软件危机是指在软件产品中存在一系列的质量问题 6) 软件工程的基本目标是( B ) (A).消除软件固有的复杂性 (B).开发高质量的软件

(C).努力发挥开发人员的创造性潜能 (D).更好地维护正在使用的软件产品

7) 软件工程的基本要素包括方法、工具和( C ) (A).软件系统 (B).硬件环境 (C).过程 (D).人员 8) 需求规格说明描述了( A ) (A).计算机系统的功能、性能及其约束 (B).每个指定系统的实现 (C).软件体系结构的元素 (D).系统仿真所需要的时间 9) 在各种不同的软件需求中,( B )描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明。 (A).业务需求 (B).功能需求 (C).非功能需求 (D).用户需求

10) 软件的开发工作经过需求分析阶段,进入( B )以后,就开始着手解决“怎么做”的问题。 (A).程序设计 (B).设计阶段 (C).总体设计 (D).定义阶段 11) 进行需求分析可使用多种工具,但( C )是不适用的。 (A).数据流图 (B).判定表 (C).程序流程图 (D).数据词典 12) 在需求分析中,分析员要从用户那里解决的最重要的问题是( A )。 (A).要让软件做什么 (B).要给该软件提供哪些信息 (C).要求软件工作效率如何 (D).要让软件具有什么样的结构

13) 开发人员使用( B )可以将用例的行为分配到所识别的分析类中。 (A).用例图 (B).顺序图 (C).类图 (D).状态图 14) 在分析类中,( D )用于描述一个用例所具有的事件流控制行为。 (A).实体类 (B).界面类 (C).接口类 (D).控制类 15) 内聚表示一个模块( B )的程度。 (A).可以被更加细化 (B).仅关注在一件事情上 (C).能够适时地完成其功能 (D).联接其他模块和外部世界 16) 耦合表示一个模块( D )的程度。 (A).可以被更加细化 (B).仅关注在一件事情上 (C).能够适时地完成其功能 (D).联接其他模块和外部世界 17) 为了使程序能在不同的计算机上运行,程序应当具有较好的( A ) (A).可移植性 (B).可重用性 (C).可维护性 (D).可适用性 18) 对于开发面向数据库应用的软件,应当选择的程序设计语言是( C ) (A).C (B).PASCAL (C).SQL (D).JAVA 19) 在分层体系结构中,( D )实现与实体对象相关的业务逻辑。 (A).表示层 (B).持久层 (C).实体层 (D).控制层 20) 下面对提高程序编码效率没有影响的是( D ) (A).选择良好的设计方法 (B).选择良好的算法 (C).选择良好的数据结构 (D).变量名的使用 21) 下面的( C )不是良好编码的原则。 (A).在开始编码之前建立单元测试 (B).建立一种有助于理解的直观布局 (C).保持变量名简短以便代码紧凑 (D).确保注释与代码完全一致

软件工程练习题 3

22) 为了保证软件的质量,使其具有较好的可维护性,关键在于( B ) (A).选择合适的程序设计语言 (B).选择好的程序设计风格 (C).具有好的数据结构 (D).选择好的运行环境 23) 类的结构是( E ) (A).由代码来表示 (B).由属性和关系来表示 (C).由操作来表示 (D).由对象的交互来表示 (E).选项B和C

24) 类的行为是( A ) (A).由一组操作决定 (B).由类的属性决定 (C).对类的每一个对象唯一的 (D).由父类决定 (E).选项A和B

25) ( C )是把对象的属性和操作结合在一起,构成一个的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。 (A).多态性 (B).继承 (C).封装 (D).消息

26) 为了提高测试的效率,应该( D )。 (A).随机地选取测试数据 (B)取一切可能的输入数据作为测试数据 (C)在完成编码以后制定软件的测试计划

(D)选择发现错误的可能性大的数据作为测试数据 27) 使用测试团队的最好理由是( )。(C) (A).开发人员不需要做任何测试 (B).测试人员在测试开始前不参与项目 (C).测试团队将更彻底地测试软件 (D).开发人员与测试人员间的争论会减少 28) 提高测试的有效性十分重要。“高产”的测试是指( C )。 (A).用适量的测试用例运行程序,证明被测程序正确无误

(B).用适量的测试用例运行程序,证明被测程序符合相应的要求 (C).用少量的测试用例运行程序,发现被测程序尽可能多的错误 (D).用少量的测试用例运行程序,纠正被测程序尽可能多的错误

三、简答题

1) 有人认为“软件工程过于耗费时间,并且妨碍开发人员的编程效率。”你是否认同这种观点?请阐述理由。

答案要点:这一观点是不正确的。

软件开发远不只是编程,管理不当导致的混乱、工作重复、交流不畅等才是大多软件项目效率低下的主要原因。虽然直接编程在开发前期看来效率高,但是不完整的、不清晰的或错误的需求和设计将导致在开发后期反复地修改程序,反而降低了整个开发效率,其质量也无法保证,甚至导致软件开发最终失败的结果。

软件工程是帮助人们在有限的时间、金钱预算和人力、物力资源的约束下开发出质量尽量高的软件的一系列理论和工具,虽然它在编程之外的工作上花费了大量时间,但所耗费的时间与精力并不像其表面上所看起来的那样冗余与低效,而是从总体上做好整个体系的设计与把握,全方位地规划开发过程,对节省成本、提高效率、保证最终产品质量起到了事半功倍的作用。

2) 软件工程包括哪些基本要素?请简要说明这些要素及其作用。 答案要点:软件工程包括过程、方法和工具三个要素。

软件工程过程定义了技术方法的采用、工程产品(包括模型、文档、数据、报告、表格等)的产生、里程碑的建立、质量的保证和变更的管理,从而将人员、技术、组织与管理有机地结合在一起,实现在规定的时间和预算内开发高质量软件的目标;

软件工程练习题 4

软件工程方法为软件开发提供了“如何做”的技术,通常包括某种语言或图形的模型表示方法、良好的设计实践以及质量保证标准等;

软件工程工具为软件工程方法提供了自动的或半自动的软件支撑环境,辅助软件开发任务的完成。现有的软件工具覆盖了从需求分析、系统建模、代码生成、程序调试和软件测试等多个方面,形成了集成化的软件工程开发环境CASE。

3) 什么叫面向对象?面向对象方法的特点是什么? 答案要点:Coad和Yourdon给出了一个定义:“面向对象 = 对象 + 类 + 继承 + 消息通信”。如果一个软件系统是使用这样4个概念设计和实现的,则认为这个软件系统是面向对象的。 面向对象方法的特点是:

 方法的唯一性,即方法是对软件开发过程所有阶段进行综合考虑而得到的。

 从生存期的一个阶段到下一个阶段的高度连续性,即生存期后一阶段的成果只是在前一阶段成果的补充和修改。

 把面向对象分析(OOA)、面向对象设计(OOD)和面向对象程序设计(OOP)集成到生存期的相应阶段。

4) 面向对象设计与面向对象分析的区别是什么?设计包括哪些活动?

答案要点:面向对象分析是重点考虑系统“做什么”的问题,即运用面向对象方法对问题域进行分析和理解,建立系统的分析模型;面向对象设计重点考虑系统“怎样做”的问题,即在分析模型的基础上形成实现环境下的设计模型。

面向对象设计主要涉及系统设计、对象设计(或详细设计)、数据库设计和用户界面设计等活动。

5) 一个典型的软件体系结构是在Smalltalk中使用的MVC软件体系结构,即模型/视图/控制器。试解释模型、视图、控制器所完成的主要功能各是什么。 答案要点:

视图:用户界面相关的部分,负责显示模型中的业务数据,响应模型变化并更新显示形式,向控制器传递用户的界面动作。

控制器:将用户的界面动作映射为模型中的业务处理功能并实际调用之,然后根据模型返回的业务处理结果选择新的视图。

模型:负责维护并保存具有持久性的业务数据,实现业务处理功能,并将业务数据的变化情况及时通知视图。

6) 下面是关于好的程序设计风格的一些观点,你认为它们是否正确?为什么? (1) 使用括号以改善表达式的清晰性。

(2) 对递归定义的数据结构不要使用递归过程。 (3) 尽可能对程序代码进行优化。 (4) 不要修补不好的程序, 要重新写。 (5) 不要进行浮点数的相等比较。 (6) 应尽可能多地输出中间结果。 (7) 利用数据类型对数据值进行防范。

(8) 用计数方法而不是用文件结束符或输入序列结束符来判别输入的结束。 (9) 程序中的注释是可有可无的。 (10) 使用有意义的标识符。

答案要点: (1) 正确。利用括号可以明确地规定表达式中各运算符的优先顺序,这样可以提供表达式运算的清晰性,因此是对的。

(2) 错误。对递归定义的数据结构,应当使用递归过程来解决基于这种数据结构的应用问题。

软件工程练习题 5

(3) 错误。程序代码的优化工作应交给编译器来做,程序设计时应首先考虑程序代码的清晰性、简明性、可读性、正确性、以至于可维护性。

(4) 正确。对于不好的程序,一是程序逻辑混乱以致理解困难,二是隐藏错误多,三是错误定位和修改容易出问题,所以修修补补,越补越糟,不如重新写。

(5) 正确。浮点数的运算有其近似性,两个浮点数可能会非常接近但永远不会相等,所以做浮点数的相等比较可能不会有结果。

(6) 错误。输出中间结果只是在调试程序时才有用,其它时候输出大量中间结果,不但浪费资源,而且给使用者造成麻烦。

(7) 正确。利用数据类型来检查数据值,这是静态分析的一种手段,叫做类型分析,因此是对的。 (8) 错误。从文件输入数据时,应当使用文件结束符来判断输入的结束,使用计数方法判断输入结束不一定是最佳方式。

(9) 错误。程序中的注释是必须的,不是可有可无的。

(10) 正确。使用有意义的标识符,可以提高程序的可读性,因此是对的。

7) 软件测试包括哪些类型的测试?这些测试之间的区别是什么? 参:

软件测试包括单元测试、集成测试、系统测试和验收测试等。 (1) 单元测试集中于每一个的模块; (2) 集成测试集中于模块的组装;

(3) 系统测试确保整个系统与系统的功能需求和非功能需求保持一致; (4) 验收测试是用户根据验收标准(通常来自项目协议),在开发环境或模拟真实环境中执行的可用性功能和性能测试。

8) 单个组件经过代码审查和测试,其有效性已经得到了全面验证,请解释为什么仍然需要进行集成测试。 参:

单个组件正常工作并不意味着所有组件集成在一起可以正常工作,因为组件相互连接时接口会引起许多新问题,集成测试正是将通过单元测试的各个组件组装在一起进行综合测试,以便发现与接口有关的各种错误。

四、综合题

1.请简述瀑布模型软件开发方法的基本过程,并用图示的方法描述其各个阶段的关系。

参:瀑布模型规定了各项软件工程活动,包括:制定软件项目计划,进行需求分析和定义,软件设计,程序编码,测试及运行维护。并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。

2.请描述快速原型过程模型的各个阶段,并用图示的方法描述各阶段间的关系。

答案要点:

快速原型方法的目的是解决软件需求不明确给开发带来风险的问题,其关键在于尽可能“快速”地建造原型,通过用户对原型的评价最终确定系统的需求。 快速原型过程模型包括以下阶段:

(1) 原型需求分析:分析和提炼所收集到的客户需求;

(2) 原型开发:基于初步的需求快速建造一个可以运行的软件原型,实现客户或未来的用户与系统的交互;

软件工程练习题 6

(3) 原型评价:由用户或客户对该原型进行评价,需要的话再进一步细化待开发软件的需求,并继续调整原型直至需求确定下来为止。

3.请分析下面类图表示的系与教师之间的关系,并回答以下问题。 (1)类图中显示了哪些关系?

(2)一个教师可以同时在多个系工作吗?请说明理由。

学校 学校名称 校长 所在地 1 1..n 系 系名 系主任 办公室地点 办公室电话 教师 姓名 职称 专业 联系电话 1..n 0..n

参:(1)类图显示了两个关系:“学校”与“系”之间的一对多关联,“系”与“教师”之间的多对多关联。(2)一个教师可以同时在多个系工作,因为它们之间是多对多关联。

4.某考务处理系统的处理功能要求如下: ①对考生送来的报名表进行检查;

② 对合格的报名表编好准考证号码后将准考证送给考生,并将汇总后的考生名单送给阅卷站; ③ 对阅卷站送来的成绩表进行检查,并根据考试中心指定的合格标准审定合格者; ④ 填写考生通知单(内容包含考试成绩及合格∕不合格标志),送给考生;

⑤ 按地区、年龄、文化程度、职业、考试级别等进行成绩分类统计及试题难度分析,产生统计分析表。 请画出该系统的顶层数据流图,并指出系统的输入和输出数据流。 答案要点:

不合格报名表 考生 报名表 考生通知单 准考证 考务处 理系统 合格标准 统计分析表 考试中心 考生名单成绩表错误成绩表 阅卷站

输入、输出数据流略

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 91gzw.com 版权所有 湘ICP备2023023988号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务