吕云翔 软件工程课后题答案

1. 与计算机硬件相比,计算机软件有哪些特点/h2>

吕云翔 软件工程课后题答案
  1. 计算机硬件是有形的设备,具有明显的可见性。但是人们却不能直接观察计算机软件的物理形态,只能通过他的实际运行情况来了解他的功能,特性和质量。
  2. 人们在分析,设计,开发,测试软件产品的过程中,以及在软件开发项目的管理过程中,渗透了大量的脑力劳动,人类的逻辑思维和智力活动和技术水平是生产软件产品的关键。
  3. 计算机软件不存在像硬件一样的磨损和老化现象,他不会受引起计算机硬件老化的环境因素的影响,但是软件却存在着缺陷维护和技术更新的问题。
  4. 软件开发和运行必须依赖特定的计算机系统环境。
  5. 软件具有可复用性

2. 为什么说软件工程的发展在一定程度上解决了软件危机的各种弊端/strong>

因为软件工程提出是为了解决软件危机所带来的各种弊端。具体的讲,软件工程的目标主要包括以下几点。

  1. 使软件的开发成本控制在预计的合理范围之内。
  2. 使软件产品的各项功能和性能能够满足用户需求。
  3. 提高软件产品的质量。
  4. 提高软件产品的可靠性。
  5. 使生产出来的软件产品易于移植,维护,升级和使用。
  6. 使软件的开发周期能够控制在预计的合理时间范围内。

3. 简述软件工程的基本原则

1.== 将软件的生命周期划分为多个阶段,对各个阶段实行严格的项目管理。软件开发的生命周期可以划分为可行性研究,需求分析,软件设计,软件实现,软件测试,产品验收和交付手段。
2. 坚持阶段评审制度,以确保软件产品的质量。
3. 实施严格的产品控制,以适应软件规格的变更。在软件开发过程中,用户需求很可能不断发生变化。
4. 采用现代程序设计
技术==。
5. 开发出来的软件产品应该能够清楚地被审查
6. 合理的安排开发软件小组人员,并且开发小组人员要小而精
7. 不断地改进软件工程实践

4. 如何理解软件生命周期的内在特征/strong>

答:软件产品的生命周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用以及产品版本的不断更新,到最终该产品被市场淘汰的全过程。软件生命周期这个概念从时间的角度将软件的开发和维护的复杂过程分解为了若干个阶段,每个阶段都完成特定的相对独立的任务。由于每个阶段的任务相对于总任务难度会大幅度降低,在资源分配、时间把握和项目管理上都会比较容易控制。合理地划分软件生命周期的各个阶段,使各个阶段之间既相互区别又相互联系,为每个阶段赋予特定的任务。

.

5. 请对比瀑布模型,原型模型,增量模型和螺旋模型

瀑布模型是出现得比较早的软件开发模型。在这种模型中,各阶段之间的组织方式就如同瀑布流水一样,逐级下落。开发人员必须在完成前一阶段的任务后,才能开始下一阶段的工作,各个阶段之间通常是按固定顺序连接的,前一-阶段的输出往往就是后- -阶段的输入。
根据瀑布模型的理论,这种模型具有以下几个特点。
(1)瀑布模型是一种线性的软件开发模型,回溯性很差
(2)瀑布模型是一种基于里程碑的阶段过程模型
(3)瀑布模型强调软件开发过程的阶段性,每个阶段完成特定的任务。瀑布模型适用于具有以下特征的软件开发项目。

瀑布模型的优点是阶段性强,易于对项目进行管理,缺点是开发过程不灵活,不能适应环境的变化。如果后续阶段中发现前期工作的错误或需求发生了变更,会造成巨大的损失。

原型模型是开发人员为了快速而准确地获取需求经常采用的方法。在初步获取需求后,开发人员会快速地开发一个原型系统。通过对原型系统进行模拟操作,开发人员可以更直观、更全面和更准确地了解用户对待开发系统的各项要求,同时还能挖掘到隐藏的需求。如果开发人员对将采用的开发技术把握不大,也可以采用原型模型进行技术上的尝试,以降低后续开发的风险。原型模型具有以下特点。
(1)原型模型主要用于挖掘需求,或是进行某种技术或开发方法的可行性研究。
(2)原型系统通常针对软件 开发系统的子功能模块,所以功能相对不完善
(3)由于原型系统功能的局部性以及存在阶段的局部性,在软件开发的实践中,原型模型通常结合其他的软件开发模型共同使用,发挥作用。

原型模型适用于具有以下特征的软件开发项目。

原型模型的优点是简单和快速,缺点是需要花费一些额外的成本来构造原型,并且不利于创新。

增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。增量模型的最大特点就是将待开发的软件系统模块化和组件化。基于这个特点,增量模型具有以下优点。

(1)将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展。
(2)以组件为单位进行开发降低了软件开发的风险。-一个开发周期内的错误不会影响到整个软件系统。
(3)开发顺序灵活。

增量模型的缺点是要求待开发的软件系统可以被模块化。如果待开发的软件系统很难被模块化,那么将会给增量开发带来很多麻烦。

增量模型适用于具有以下特征的软件开发项目。
(1)软件产品可以分批次地进行交付。
(2)待开发的软件系统能够被模块化。
(3)软件开发人员对应用领域不熟悉,难以一-次性地进行系统开发。
(4)项目管理人员把握全局的水平较高。

螺旋模型是一种用于风险较大的大型软件项目开发的过程模型。它把开发过程分为制定计划、风险分析、实施工程和客户评估4种活动。制定计划就是要确定软件系统的目标,了 解各种资源限制,并选定合适的开发方案。风险分析旨在对所选方案进行评价,识别潜在的风险,并制定消除风险的机制。实施工程的活动中渗透了瀑布模型的各个阶段,开发人员对下一版本的软件产品进行开发和验证。客户评估是获取客户意见的重要活动。
螺旋模型适应于风险较大的大型软件项目的开发。它的优点是将风险分析扩展到各个阶段中,大幅度降低了软件开发的风险。但是这种模型的控制和管理较为复杂,可操作性不强,对项目管理人员的要求较高。

6. 在统一软件开发过程模型中,核心工作流程包括哪些/strong>

核心工作流程有业务建模,需求分析,分析设计,实现,测试和部署

1.可行性研究的内容有哪些/h2>

答:可行性研究主要是从技术、经济和社会三个方面对软件项目的可行性进行分析。技术可行性研究是对技术解决方案的实用性、技术资源的可用性设备条件做出评估。经济可行性研究要对项目的开发总成本与开发系统将带来的经济效益之间的差值进行度量,从经济的角度去判断是否值得为软件开发项目进行投资。社会可行性研究政策、法律和制度等社会因素方面考虑项目开发的合理性和意义。

2.如何理解需求分析的作用和重要性。

答:一般情况下,用户并不熟悉计算机的相关知识,而软件开发人员对相关的业务领域也不甚了解,用户与开发人员之间对同一问题理解的差异和习惯用语的不同往往会为需求分析带来很人的困难。所以,开发人员和用户之间充分和有效的沟通在需求分析的过程中至关重要。

3.常用的需求获取的方法有哪些比各种方法的优缺点。

答:获取需求的方法有很多种,比如,问卷调查、访谈、实地操作、建立原型和研究资料等。

问卷调查法是采用调查问卷的形式来进行需求分析的一种方法。通过对用户填写的调查问卷进行汇总、统计和分析,开发人员便可以得到-一些有用的信息。一般在设计调查问卷时,要合理地控制开放式问题和封闭式问题的比例。开放式问题的回答不受限制,自由灵活,能够激发用户的思维,使他们能尽可能地阐述白己的真实想法。但是,对开放式问题进行汇总和分析的工作会比较复杂封闭式问题的答案是预先设定的,用户从若干答案中进行选择。封闭式问题便于对问卷信息进行归纳与整理,但是会限制用户的思维。
访谈通过开发人员与特定的用户代表进行座谈,进而了解到用户的意见,是最直接的需求获取方法。由于被访谈的用户身份可能多种多样,开发人员要根据用户的身份特点,进行提问,给予启发。当然,进行详细的记录也是访谈过程中必不可少的工作。
亲身实践可以更直接地体会现有系统的弊端以及新系统应该解决的问题,这种需求获取方法就是实地操作。通过实地操作得到的信息会更加准确和真实,但是这种方法会比较费时间
当用户本身对需求的了解不太清晰的时候,开发人员通常采用建立原型系统的方法对用户需求进行挖掘。通过对原型系统进行模拟操作,开发人员能及时获得用户的意见,从而对需求进行明确。

4.如何理解结构化需求分析方法的基本思想。

答:结构化需求分析是一种面向数据流的需求分析方法。它基于==“分解”和“抽象”的基本思想,逐步建立目标系统的逻辑模型,进而描绘出满足用户要求的软件系统。
**“分解”**是指对于一个复杂的系统,为了将复杂性降低到可以掌握的程度,可以把大问题分解为若干个小问题,然后再分别解决。
最顶层描述了整个目标系统,中间层将目标系统划分为若千个模块,每个模块完成一定的功能,而最底层是对每个模块实现方法的细节性描述。可见,在逐层分解的过程中,起初并不考虑细节性的问题,而是先关注问题最本质的属性,随着分解自顶向下进行,才逐渐考虑越来越具体的细节。这种用
最本质的属性表示一个软件系统的方法就是“抽象”==。

5.请阐述面向对象的基本概念。

答:。面向对象的基本概念包括对象、类、封装、继承和多态。对象可以是客观世界中存在的事物,也可以是概念化的实体,它由一组属性和操作组成。属性是用来描述对象静态特征的数据项,是对客观世界实体所具有性质的抽象。操作是用来描述对象动态特征是对对象的抽象,是对具有相同属性和相同操作的一组相似对象的定义。封装是指把对象的属性和操作结合在一起,组成一个独立的单元。继承表示类之间的层次关系,它使得某类对象可以自动拥有另外一个或多个对象的全部属性和操作。多态是一种使父类中定义的属性或操作被子类继承后,可以有不同的实现的机制。

6.对比面向对象需求分析方法和结构化需求分析方法。

答:结构化需求分析方法基于==“分解”和“抽象”==的基本思想,逐步建立目标系统的逻辑模型,进而描绘出满足用户要求的软件系统。常用的结构化需求分析工具有数据流图、数据字典和ER图。数据流图把软件系统看成是由数据流联系的各种功能的组合,可以用来建立目标系统的逻辑模型。数据字典用于定义数据流图中各个图元的具体内容,为数据流图中出现的图形元素做出确切的解释。E-R图可以用于描述应用系统的概念结构数据模型,它采用实体、联系和属性这三个基本概念来进行建模。

面向对象需求分析方法主要基于面向对象的思想,以用例模型为基础进行需求分析。面向对象的概念中主要涉及了对象、类、封装、继承和多态等概念。因为面向对象的软件工程方法更符合人类的思维习惯稳定性好,而且可复用性好,所以在目前的软件开发领域中最为流行

1.比较概要设计和详细设计的目标,并分别阐述概要设计和详细设计的内容。

答:概要设计,得到软件系统的基本框架。它以需求规格说明书为基础,概要地说明软件系统的实现方案,包括目标系统的总体架构、每个模块的功能描述、数据接口描述及模块之间的调用关系、数据库、数据定义和数据结构等。
详细设计,明确系统内部的实现细节。在进行详细设计的过程中,设计人员的工作涉及的内容有过程、数据和接口等。过程设计主要是指描述系统中每个模块的实现算法和细节。数据设计是对各模块所用到的数据结构的进一步细化。接口设计针对的是软件系统各模块之间的关系或通信方式以及目标系统与外部系统之间的联系。

2.为什么说“高内聚、低耦合”的设计有利于提高系统的独立性/h2>

答:内聚和耦合往往密切相关,模块的高内聚通常意味着低耦合。低耦合因为模块之间的耦合程度越低,相互影响就越小,发生异常后产生连锁反应概率就越;在修改一个模块时,低耦合的系统可以把修改范围尽量控制在最小的范围内;对一个模块进行维护时,其他模块的内部程序的正常运行不会受到较大的影响。

4.对基于面向对象思想的设计而言,有哪些方法或机制可以实现信息隐藏/h2>

答:通常,模块的信息隐藏可以通过接口来实现。模块通过接口与外部进行通信,而把模块的具体实现细节(如数据结构、算法等内部信息)隐藏起来。一般来说,一个模块具有有限个接口,外部模块通过调用相应的接口来实现对目标模块的操作。

6.如果要求两个正整数的最小公倍数,请用程序流程图,N-S图和PAD图分别表示出求解该问题的算法

吕云翔 软件工程课后题答案

3.为什么软件开发人员不能同时完成测试工作/h2>

答:开发工作和测试工作不能由同一部分人来完成。如果开发人员对程序的功能要求理解错了,就很容易按照错误的思路来设计测试用例。如果开发人员同时完成测试工作,那么测试工作就很难取得成功。

4.软件测试的常用模型有哪些简述它们的优缺点。

答:常用的软件测试模型有V模型、W模型和H模型。每种模型都有各自的优缺点。

V模型的价值在于非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程各阶段的对应关系。在V模型中,测试工作在编码之后才能进行,所以在软件开发早期各个阶段引入的错误不能及时被发现。尤其是需求阶段的错误只有等到最后的验收测试才能被识别。对分析、设计阶段产生的错误不能及时发现并改正的缺点会对后期的修复工作带来诸多不便,造成更多资源浪费时间延迟
在V模型的基础上,增加开发阶段的同步测试,就是W模型。W模型的最大优势在于,测试活动可以与开发活动并行进行,这样有利于及早地发现错误,但是W模型也有一定的局限性。在W模型中,需求、设计、编码等活动依然是依次进行的,只有上一阶段完全结束,才有可能开始下一阶段的工作。与迭代的开发模型相比,这种线性的开发模型在灵活性和对环境的适应性很大差距
H模型中,软件测试过程的活动完全独立,贯穿于整个软件产品的生命周期,与其他流程并行进行。当软件测试人员认为测试准备完成,即某个测试点准备就绪时,就可以从测试准备阶段进入到测试执行阶段。

5.已知有如下一段代码:

请画出这段代码的程序流程图,并分别采用语句覆盖、分支覆盖、条件覆盖、分支一条件覆盖、条件组合覆盖和路径覆盖的方法设计测试用例。
答:程序流程图:

吕云翔 软件工程课后题答案
分支覆盖
吕云翔 软件工程课后题答案
分支—-条件覆盖
吕云翔 软件工程课后题答案
路径覆盖
吕云翔 软件工程课后题答案

1.为什么要进行软件维护件维护的作用有哪些/h2>

答:软件维护是软件产品生命周期的最后一个阶段。在产品交付并且投入使用之后,为了解决在使用过程中不断发现的各种问题保证系统正常运行,同时使系统功能随着用户需求的更新而不断升级,软件维护的工作是非常必要的。概括地说,软件维护就是指在软件产品交付给用户之后,为了改正软件测试阶段未发现的缺陷,改进软件产品的性能,补充软件产品的新功能等,所进行的修改软件的过程。

2.什么是软件的可维护性件的可维护性与哪些因素有关/h2>

答**:软件的可维护性**是用来衡量对软件产品进行维护的难易程度的标准,它是软件质量的主要特征之一。影响软件可维护性的因素有很多,如可理解性、可测试性、可修改性等。

3.请简述McCall对软件质量的定义。

答: MCall软件质量特性模型中的每种特性的定义如下。

正确性:系统在预定的环境下,正确完成系统预期功能的程度。效率:完成预期功能所需的时间、人力、计算机资源等指标。

可靠性:在规定的时间和条件下,软件维持其性能水平能力的属性的组合。可用性:衡量软件产品在运行中使用灵活、方便的程度。

完整性:保存必要的数据,使之免受偶然或有意的破坏、改动或遗失的能力。

可维护性:当系统的使用环境发生变化、用户提出新的需求或者系统在运行中产生了错误时,对潜在的错误或缺陷进行定位并修改或对原系统的结构进行变更的难易程度。可测试性:测试软件系统,使之能够完成预期功能的难易程度。

灵活性:对一个已投入运行使用的软件系统进行修改时所需工作量多少的度量。

可移植性:反映了把软件系统从一种计算机环境移植到另一种计算机环境所需要的工作量的多少。互连性:将一个软件系统与其他软件系统相连接的难易程度。可复用性:软件系统在其他场合下被再次使用的程度。

4.请简述配置管理的基本过程

答:配置管理包含4个基本过程:标识配置项、进行配置控制、记录配置状态、执行配置审计。

6.什么是程序的正确性证明的意义在哪里/h2>

答:程序的正确性证明指采用某种方法对软件系统运行的正确性进行证明。软件测试有一条重要原则是:测试可以发现程序中的错误,但是不能证明程序中没有错误。可见,软件测试并不能完全证明程序的正确性和可靠性。如果能对程序的正确性进行证明,那么软件产品的质量将更有保证。

9.软件工程文档可以分为哪几类类中具体包含的文档有哪些/h2>

答:总体上说,软件工程文档可以分为用户文档、开发文档和管理文档三类,用户文档包括用户手、操作手册、修改维护建议和用户需求报告,开发文档包括软件需求规格说明书、数据要求说明书、概要设计说明书、详细设计说明书、可行性研究报告、项目开发计划,管理文档项目开发计划、测试计划、测试分析报告、开发进度月报和开发总结报告。

来源:风骨散人Chiam

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月3日
下一篇 2021年1月3日

相关推荐