软件工程 刘强 课后习题参考答案
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
答案要点: 在螺旋模型中,软件开发是在风险等级的指导下进行的。首先确定该阶段的目标,完成这些目 标的选择方案及其约束条件;其次从风险角度分析方案的开发策略,努力排除各种潜在的风险,在 需求不适当的情况下可能需要建造原型系统;如果某些风险不能排除,该方案可能立即终止,否则 继续启动下一步的软件开发和验证工作,并再次通过风险分析规定过程遵循的策略;最后,评价该 阶段的结果,并规划下一个迭代。 从上述过程中可以看出,风险分析的作用是通过识别项目中的高风险问题,使开发人员制定适 当的开发策略消除这些风险。 5. 某大学准备开发一个新的学生注册选课系统,以替换一个现有的系统。请设计一个适用于该 系统开发的过程模型,并进一步描述该模型。 答案要点: 假设原有的学生注册课程系统是由学生手工提交书面选课单,教师手工提交成绩单,教务管理 人员在客户端录入学生选课结果和课程成绩;而在新的选课系统中,所有用户在自己的计算机上通 过 Internet 访问和操作该系统,该软件系统需要更新服务器和数据库等系统,并扩充一些新功能和 提高系统性能。 从该系统的具体情况来看,系统的需求是比较容易明确的,整个系统的结构需要重新设计,但 是原有的遗留系统中有些部分是可以重用的,因此我们可以采用组件模型实施软件开发: y 系统需求分析: 由于该系统是现有系统的扩展, 因此首先可以经过一个简单的需求分析阶
软件工程的基本要素包括方法、工具和( A. B. C. D. 软件系统 硬件环境 过程 人员
9.
软件工程师在从事软件工作时应使用下面的( A. B. C. D. E. 从来不为个人获利而窃取数据 从来不散布或出售项目中自己工作的信息
)准则。 (E)
从来不故意毁坏或修改别人的程序、文件或数据 从来不侵犯个人、小组或组织的隐私 以上所有选项
分析、设计、实现、测试、演化 沟通、计划、建模、构造、部署 计划、分析、设计、实现、调试 沟通、风险管理、度量、产品化、评审 )软件需求规格说明书在软件开发过程中具有重要的作用,它是软件可行性分析
3.
(
的依据。 (B) A. B. 4. 真 假 ) 。 (A)
软件开发的瀑布模型是( A. B. C. D.
软件会逐渐退化而不会磨损,其原因在于( A. B. C. D. 软件通常暴露在恶劣的环境下 软件错误通常发生在使用之后 不断的变更使组件接口之间引起错误 软件备件很难订购
4.
大多数软件仍然是定制开发的,其原因在于( A. B. C. D. 软件组件重用是十分普遍的 可重用的组件太昂贵而无法使用
) 。 (C)
适用于需求被清晰定义的情况 一种需要快速构造可运行程序的好方法 最适合于大规模团队开发的项目 已不能用于现代环境的过时模型 ) 。 (B)
5.
软件开发的增量模型是( A. B. C. D.
适用于需求被清晰定义的情况 一种需要快速构造核心产品的好方法 最适合于大规模团队开发的项目 一种不适用于商业产品的创新模型 ) 。 (B)
答案要点: 软件过程是软件工程人员为了获得软件产品在软件工具支持下实施的一系列软件工程活动, 它 应该明确定义以下元素: y y y 过程中所执行的活动及其顺序关系 每一个活动的内容和步骤 团队人员的工作和职责
2.
请描述快速原型过程模型的各个阶段。
答案要点: 快速原型方法的目的是解决软件需求不明确给开发带来风险的问题, 其关键在于尽可能 “快速” 地建造原型,通过用户对原型的评价最终确定系统的需求。 快速原型过程模型包括以下阶段: y y 原型需求分析:分析和提炼所收集到的客户需求; 原型开发: 基于初步的需求快速建造一个可以运行的软件原型, 实现客户或未来的用户与 系统的交互; y 原型评价:由用户或客户对该原型进行评价,需要的话再进一步细化待开发软件的需求, 并继续调整原型直至需求确定下来为止。 3. 对于下列每一个过程模型,分别列举一个可以适用的具体软件项目,并说明在开发中如何应 用该模型。 ( 1) ( 2) ( 3) ( 4) ( 5) 答案要点: (1) 瀑布模型 项目举例:某项目需要在一种新型机器上,为一种已知语言开发一个普通的编译器。 选用分析:由于该项目的语言是已知的,需求是明确的和稳定的,整个系统属于中小规模, 因此适合采用瀑布模型进行软件开发。 阶段说明:略。 (2) 快速原型模型 项目举例: 某公司需要给火车站开发一个交互式火车车次查询系统, 这是火车站首次使用该 系统。 选用分析:本项目的主要问题在于用户需要方面,该系统与最终用户的交互是十分关键的, 但是在项目初期用户的需求基本上是不知道的,因此适合采用快速原型方法来确定用户需 求,在需求确定的基础上再开发最终系统。 阶段说明:略。 (3) 增量模型 项目举例:某公司开发一个通用 CAD 软件产品,产品需求是逐步完善的,某些需求在一定 范围内是明确的,某些需求需要进一步细化,但是迫于市场竞争的压力产品需要尽快上市。 选用分析: 通用 CAD 软件产品具有一定的成熟度, 总体需求和软件系统结构是可以确定的, 瀑布模型 快速原型模型 增量模型 形式化方法模型 基于组件的开发模型
[练习题] 1. 软件与其他工程学科所产生的制品有什么根本区别?
答案要点: (1) 软件是人类思维和智能所延伸的产物,其数据、状态和逻辑关系的组合以及人类思维的 复杂性和不确定性导致它本身具有极高的复杂性; (2) 软件具有不可见性,它是抽象的,形式化和逻辑化的。 (3) 软件具有可变性,有用的软件需要不断地修改和扩展,但是频繁的修改可能导致软件的 退化;
[选择题] 1. ( A. B. C. D. 2. 下面的( A. B. C. D. 3. )因素促使计算机系统越来越复杂。 (D) 计算机内存和存储容量上的巨大增长 外部输入/输出选项的更加多样性 计算机体系结构方面的深刻变化 以上所有选项 )不再是现代软件工程师关注的问题。 (A) 为什么计算机硬件的成本这么高? 为什么软件需要很长时间才能完成? 为什么开发一个软件的成本这么高? 为什么不能在产品发布前去除软件错误? ) 。 (C)
软件在不使用其他组件的情况下很容易构造出来 商业组件在很多应用领域中可以得到 )说法是正确的。 (C) 软件危机在 20 世纪 70 年代末期全面爆发
5.
下面的( A.
B. C. D. 6.
当前先进的软件工程方法已经解决了软件危机的问题 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题 软件危机是指在软件产品中存在一系列的质量问题 ) 。 (B)
第2章
[选择题] 1. (
软件过程(习题与参考答案)
)是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件
设计与开发、软件确认、软件改进等活动组成。 (A) A. B. C. D. 2. 软件过程 软件工具 软件产品 软件工程 ) 。 (A)
软件过程的基本活动是( A. B. C. D.
第1章
[判断题] 1. 2. 3. 4. 5. 6.
概述(习题与参考答案)
由于今天个人计算机不断发展壮大,人们不再采用软件团队的开发方式。 (×) 由于软件是产品,因此可以应用其他工程制品所用的技术进行生产。 (×) 购买大多数计算机系统所需的硬件比软件更昂贵。 (×) 大多数软件产品在其生命周期中不需要增强功能。 (×) 大多数软件系统是不容易变化的,除非它们在设计时考虑了变化。 (√) 一般来说,软件只有在其行为与设计者的目标一致的情况下才能成功。 (×)
但是实现该产品所有功能需要比较长的开发周期。 为了尽快上市可以采用增量模型实行多版 本的发布策略,既可以很快占领市场又可以为后续版本的需求定义奠定基础。 阶段说明:略。 (4) 形式化方法模型 项目举例:某公司开发一个汽车防抱死刹车控制系统。 选用分析: 由于该系统对安全性和可靠性要求极高, 需要在系统运行之前进行相关性能的检 验,因此适合采用形式化方法开发该系统。 阶段说明:略。 (5) 基于组件的开发模型 项目举例:某公司开发企业管理 ERP 系统,包括销售、库存、生产、财务、物流、人力资 源等部分,在系统实施过程中不同的企业具有一定的需求差异。 选用分析:企业 ERP 系统具有组件化的结构,在不同企业实施时应该尽量重用已有的组件, 因此适合采用基于组件的开发模型开发该系统, 在直接应用或者修改使用的基础上, 最终进 行组件开发和系统集成。 阶段说明:略。 4. 在螺旋模型中,风险分析的作用是什么?
软件工程的基本目标是( A. B. C. D. 消除软件固有的复杂性 开发高质量的软件
努力发挥开发人员的创造性潜能 更好地维护正在使用的软件产品 )是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过
7.
(
程,它包括方法、工具和过程三个要素。 (D) A. B. C. D. 8. 软件产品 软件过程 软件测试 软件工程 ) 。 (C)
(4) 软件的开发在很大程度上依然是手工作坊式的,难以实现工厂化的生产。 2. 软件工程包括哪些基本要素?请简要说明这些要素及其作用。
答案要点: 软件工程包括过程、方法和工具三个要素。 y 软件工程过程定义了技术方法的采用、工程产品(包括模型、文档、数据、报告、表格 等)的产生、里程碑的建立、质量的保证和变更的管理,从而将人员、技术、组织与管 理有机地结合在一起,实现在规定的时间和预算内开发高质量软件的目标; y 软件工程方法为软件开发提供了“如何做”的技术,通常包括某种语言或图形的模型表 示方法、良好的设计实践以及质量保证标准等; y 软件工程工具为软件工程方法提供了自动的或半自动的软件支撑环境,辅助软件开发任 务的完成。现有的软件工具覆盖了从需求分析、系统建模、代码生成、程序调试和软件 测试等多个方面,形成了集成化的软件工程开发环境 CASE。 3. 软件工程是以系统的、可控的、有效的方式产生高质量的软件,请说明你对“高质量软件” 含义的理解。 答案要点: 软件质量是软件产品与明确的和隐含的需求相一致的程度,它通常由一系列的质量特性来进 行描述,包括正确性、可靠性、有效性、可用性、复用性、可维护性、可移植性等。例如,除了 要求软件正确运行之外,人们可能还希望软件运行的响应时间符合要求、软件使用方便快捷、程 序代码易于理解等,而“程序代码易于理解”往往是一种用户没有明确提出的需求,但却是影响 软件演化的重要因素。 4. 有人认为“软件工程过于耗费时间,并且妨碍开发人员的编程效率。 ”你是否认同这种观 点?请阐述理由。 答案要点: 这一观点是不正确的。 y 软件开发远不只是编程,管理不当导致的混乱、工作重复、交流不畅等才是大多软件项 目效率低下的主要原因。虽然直接编程在开发前期看来效率高,但是不完整的、不清晰 的或错误的需求和设计将导致在开发后期反复地修改程序,反而降低了整个开发效率, 其质量也无法保证,甚至导致软件开发最终失败的结果。 y 软件工程是帮助人们在有限的时间、金钱预算和人力、物力资源的约束下开发出质量尽 量高的软件的一系列理论和工具,虽然它在编程之外的工作上花费了大量时间,但所耗 费的时间与精力并不像其表面上所看起来的那样冗余与低效,而是从总体上做好整个体 系的设计与把握,全方位地规划开发过程,对节省成本、提高效率、保证最终产品质量 起到了事半功倍的作用。
10.
形式化方法模型是将数学方法用于( A. B. C. D. 定义计算机系统的规格说明 开发无错误的计算机系统 验证计算机系统的正确性 以上所有选项
11.
下面的( A. B. C. D.
)不是 RUP 模型的阶段。 (D) 启动阶段 精化阶段 构造阶段 确认阶段
[练习题] 1. 请简要说明软件过程的概念和基本元素。
8.
螺旋模型( A. B. C. D.
在软件产品发布时结束 比增量模型更加混乱 在每一次迭代过程中包含项目风险评价 以上所有选项 ) 。 (C)
9.
基于组件的开发模型( A. B. C. D.
只适用于计算机硬件设计 不能支持可重用组件的开发 在面向对象技术获得支持的情况下应用得更好 增加了开发风险和成本 ) 。 (D)
6.
快速原型开发模型是( A. B. C. D.
适用于客户需求被明确定义的情况 适用于客户需求难以清楚定义的情况 最适合于大规模团队开发的项目 很难产生有意义产品的一种冒险模型
7.
演进式软件过程模型( A. B. C. D. 本质上是迭代的
Байду номын сангаас
) 。 (D)
可以很容易适应需求的变化 通常不会抛弃所产生的系统 以上所有选项 ) 。 (C)