爱玩科技网
您的当前位置:首页软件工程实用教程吕云翔-课后答案

软件工程实用教程吕云翔-课后答案

来源:爱玩科技网
软件工程实用教程吕云翔-课后答案

1练习题

1)1.

软件的特点有哪些?

软件是一种逻辑实体,具有抽象性。硬件是有形的设备,而软件不像硬件那样具有明显的可见性。人们可以把软件记录在介质上,但是却无法直观地观察到它的形态,而必须通过在计算机上实际地运行才能了解它的功能、性能及其他特性。软件的生产与硬件的制造不同。它更多地渗透了人类的智能活动,是人类智力劳动的产物。软件是被开发或设计的,而不是传统意义上被制造的。软件成本集中于开发上,这意味着软件项目不能像制造项目那样管理。

软件在运行使用过程中,不会磨损。在软件的运行和使用期间,它不会产生像硬件那样的磨损和老化现象,然而却存在着缺陷维护和技术更新的问题。软件不会磨损,但是它会退化,而软件的退化是由于修改。因此,软件维护比硬件维护要复杂得多。软件的开发至今尚未完全摆脱手工艺的开发方式。在硬件世界,构件复用是工程过程的自然的一部分,而在软件世界,它是刚刚开始起步的事物。虽然软件产业正在向基于构件的组装前进,但大多数软件仍是定制的。软件的开发和运行必须依附于特定的计算机系统环境。它不像有些设备一样,能够地工作,而是受到了物理硬件、网络配置、支撑软件等因素的制约。由此引发了软件的可移植性问题。

软件危机是如何产生的?有哪些表现?

原因:在20世纪60年代中期,随着软件规模的扩大,复杂性的增加,功能的增强,使得高质量的软件开发变得越来越困难。

表现:

1.开发出来的软件产品不能满足用户的需求,即产品的功能或特性与需求不符。

这主要是由于开发人员与用户之间不能充分有效的交流造成的,使得开发人员对用户需求的理解存在着差异;

2.相比越来越廉价的硬件,软件代价过高;3.软件质量难以得到保证,且难以发挥硬件潜能。开发团队缺少完善的软件质量

评审体系以及科学的软件测试规程,使得最终的软件产品存在着诸多缺陷;4.难以准确估计软件开发、维护的费用以及开发周期。往往软件产品不能在预算

范围之内,按照计划完成开发。很多情况下,软件产品的开发周期或经费会大大超出预算;

5.难于控制开发风险,开发速度赶不上市场变化;6.软件产品修改维护困难,集成遗留系统更困难;7.软件文档不完备,并且存在着文档内容与软件产品不符的情况。软件文档是计

算机软件的重要组成部分,它为在软件开发人员之间以及开发人员与用户之间信息的共享提供了重要的平台。软件文档的不完整和不一致的问题会给软件的开发和维护等工作带来很多麻烦。

简述软件工程的基本原则。

2.

3.

4.

5.

2)

3)

1.用分阶段的生存周期计划进行严格的管理;

将软件的生存周期划分为多个阶段,对各个阶段实行严格的项目管理。软件开发是一个漫长的过程,人们可以根据工作的特点或目标,把整个软件的开发周期划分为多个阶段,并为每个阶段制定分阶段的计划及验收标准,这样有益于对整个软件开发过程进行管理。在传统的软件工程中,软件开发的生存周期可以划分为可行性研究、需求分析、软件设计、软件实现、软件测试、产品验收和交付等阶段。

2.坚持进行阶段评审;

严格的贯彻与实施阶段评审制度可以帮助软件开发人员及时地发现错误并将其改正。在软件开发的过程中,错误发现的越晚,修复错误所要付出的代价就会越大。实施阶段评审,只有在本阶段的工作通过评审后,才能进入下一阶段的工作。

3.实行严格的产品控制;

在软件开发的过程中,用户需求很可能在不断的发生着变化。有些时候,即使用户需求没有改变,软件开发人员受到经验的以及与客户交流不充分的影响,也很难做到一次性获取到全部的正确的需求。可见,需求分析的工作应该贯穿到整个软件开发的生存周期内。在软件开发的整个过程中,需求的改变是不可避免的。当需求更新时,为了保证软件各个配置项的一致性,实施严格的版本控制是非常必要的。

4.采用现代程序设计技术;

现代的程序设计技术,比如面向对象,可以使开发出来的软件产品更易维护和修改,同时还能缩短开发的时间,并且更符合人们的思维逻辑。

5.软件工程结果应能清楚地审查;

虽然软件产品的可见性比较差,但是它的功能和质量应该能够被准确地审查和度量,这样才能有利于有效的项目管理。一般软件产品包括可以执行的源代码、一系列相应的文档和资源数据等。

6.开发小组的人员应该少而精;

开发小组成员的人数少有利于组内成员充分的交流,这是高效团队管理的重要因素。而高素质的开发小组成员是影响软件产品的质量和开发效率的重要因素。

7.承认不断改进软件工程实践的必要性。

随着计算机科学技术的发展,软件从业人员应该不断地总结经验并且主动学习新的软件技术,只有这样才能不落后于时代。

4)什么是软件过程?软件过程标准包括哪些内容?

软件过程又称为软件生存周期过程,是软件生存周期内为达到一定目标而必须实施的一系列相关过程的集合。标准:

制定了ISO12207软件生存周期过程标准,它把用于开发一个软件系统的过程分为三类:主过程、支持过程和辅助过程(组织过程)。

主过程是构成软件生存周期主要部分的那些过程,正是这些过程启动或进行软件产品的开发、操作或维护。这些过程共有五个,它们是:

(1)获取过程:定义需方(即获取一个系统、软件产品或软件服务的组织)的

活动;

(2)供应过程:定义供方(即向需方提供系统、软件产品或软件服务的组织)

的活动;

(3)开发过程:定义开发者(即定义和开发软件产品的组织)的活动;

(4)维护过程:定义维护者(即对软件产品进行维护服务的组织)的活动,这

个过程包括系统移植和退役;(5)运行过程:定义运行者(即在计算机系统运行环境中向其用户提供运行服

务的组织)的活动。

支持过程是对另一个过程提供支持的过程。被支持的过程根据需要采用支持性过程,并与该过程结合,帮助软件项目获得成功,并提高质量。支持过程共有如下八个:

(1)文档过程:定义对某生存周期过程所产生的信息进行记录的活动;(2)配置管理过程:定义配置管理活动;(3)质量保证过程:定义客观地保证软件产品和过程符合规定要求、遵守已定

计划的活动;

(4)验证过程:定义需方、供方或的第三方对软件产品进行验证的活动,

这些验证活动的深度由软件项目的性质决定;

(5)确认过程:定义需方、供方或的第三方对软件产品进行确认的活动;(6)联合评审过程:定义对某项活动的状态和产品进行评价的活动,这一过程

可由任何双方共同采用,其中一方(评审方)评审另一方(被评方);(7)审计过程:定义对是否符合要求、计划和合同进行确定的过程,这个过程

可由任何双方采用,其中一方(审计方)审计另一方(被审方)的软件产品或活动;

(8)问题解决过程:定义对开发、操作、维护或其它过程中发现的问题(包括

不一致性)进行分析和排除的过程。

辅助过程是一个组织用来建立、实施一种基础结构、并不断改进该基础结构的过程。基础结构由一些相关的生存周期过程和人员组成。这些辅助过程有如下四个:

(1)基础设施过程:定义建立生存周期过程的基础结构所需的基本活动;(2)管理过程:定义在生存周期过程中管理(包括项目管理)的基本活动;(3)培训过程:定义为提供经过适当培训的人员所需的一些活动;

或另一过程的管理者)为了建立、测量、控制和改进其生存周期过程需完成的基本活动。

5)简述常见的软件生存周期模型各自的特征和优缺点。

1.瀑布模型是一种线性的开发模型,具有不可回溯性。开发人员必须等前一阶段的任务完成后,才能开始进行后一阶段的工作,并且前一阶段的输出往往就是后一阶段的输入。由于它的不可回溯性,如果在软件生存周期的后期发现并要改正前期的错误,那么需要付出很高的代价。传统的瀑布模型是文档驱动的。瀑布模型的优点是过程模型简单,执行容易;缺点是无法适应变更。瀑布模型适应于具有以下特征的软件开发项目。

(1)在软件开发的过程中,需求不发生或发生很少变化,并且开发人员可以一次性获取

到全部需求。否则,由于瀑布模型较差的可回溯性,在后续阶段中需求经常性的变更需要付出高昂的代价。

(2)软件开发人员具有丰富的经验,对软件应用领域很熟悉。(3)软件项目的风险较低。瀑布模型不具有完善的风险控制机制。

2.原型模型主要用于挖掘需求,或是进行某种技术或开发方法的可行性研究,是一种开发人员为了快速而准确地获取需求经常采用的方法。在初步获取需求后,开发人员会快速地开发一个原型系统。通过对原型系统进行模拟操作,开发人员可以更直观、更全面和更准确地了解用户对待开发系统的各项要求,同时还能挖掘到隐藏的需求。

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

3.增量模型作为瀑布模型的一个变体,具有瀑布模型的所有优点,此外,它还有以下优点:第一个可交付版本所需要的成本和时间很少;开发由增量表示的小系统所承担的风险不大;由于很快发布了第一个版本,因此可以减少用户需求的变更;允许增量投资,即在项目开始时,可以仅对一个或两个增量投资。

增量模型的不足为:如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布;管理发生的成本、进度和配置的复杂性,可能会超出组织的能力。

增量模型适用于以下特点的软件项目。(1)软件产品可以分批次地进行交付。(2)待开发的软件系统能够被模块化。

(3)软件开发人员对应用领域不熟悉,难以一次性地进行系统开发。(4)项目管理人员对全局把握的水平较高。

4.演化模型基于这样的假定:需求是最基本的,是唯一的风险。

演化模型具有以下优点:在需求不能予以规范时,可以使用这一演化模型;用户可以通过运行系统的实践,对需求进行改进;与瀑布模型相比,需要更多用户/获取方的参与。演化模型的不足包括:演化模型的使用仍然处于初步探索阶段,因此具有较大的风险,需要有利的管理;即使很好地理解了需求或设计,该模型的使用也很容易成为不编写需求或设计文档的借口;用户/获取方不理解该方法的自然属性,因此当结果不够理想时,可能会产生抱怨。

5.螺旋模型通常用来指导大型软件项目的开发。它把开发过程分为制定计划、风险分析、实施开发和用户评估四类活动。

螺旋模型综合了传统的生存期模型的优点,同时扩展了增量模型管理任务的范围:风险分析,用来弥补其不足。螺旋模型的另外一个特征是,只有一个迭代过正开发可交付的软件。螺旋模型也存在其缺点:一个周期执行时间太长;要有方法和自动化工具支持,否则无法实施。螺旋模型适应于风险较大的大型软件项目的开发。

6.统一过程模型具有三大特点:用例驱动,以架构为中心,迭代和增量开发。统一过程模型核心是解决可操作性问题,帮助开发人员尽可能少地依赖那些“不可描述的经验”。

可以多次执行各个工作流程,从而有利于更好地理解需求、设计出合理的系统构架,并最终交付一系列渐趋完善的成果。适用的范围极为广泛。对开发人员的素质要求较高。统一过程模型在实际实施过程中也存在很多的困难,包括:

多层次持续的规划与评估;判断构架中关键风险的经验;高效率的验证和评价手段;多工种之间的频繁沟通;多版本工作产品的管理等。

7.敏捷方法是一种轻量级的软件工程方法,更强调软件开发过程中各种变化的必然性,通过

团队成员之间充分的交流与沟通以及合理的机制来有效地响应变化。

敏捷模型避免了传统的重量级软件开发过程复杂、文档繁琐和对变化的适应性低等各种弊端,它强调软件开发过程中团队成员之间的交流、过程的简洁性、用户反馈、对所作决定的信心以及人性化的特征。

缺点:组织模型和建模方法比较薄弱。

7)常用的软件工程的辅助工具有哪些?各有什么作用?1.分析设计工具(1)MicrooftViio

MicrooftViio通过创建与数据相关的Viio图表来显示数据,这些图表易于刷新,并能够显著提高生产率,使用各种图表可了解、操作和共享企业内组织系统、资源和流程的有关信息。Viio提供了各种模板:业务流程的流程图、网络图、工作流图、数据库模型图和软件图,这些模板可用于可视化和简化业务流程、跟踪项目和资源、绘制组织结构图、映射网络、绘制建筑地图以及优化系统。

(2)RationalRoe

RationalRoe是美国的Rational公司的面向对象建模工具,利用这个工具,可以建立用UML描述的软件系统的模型,而且可以自动生成和维护C++、Java、VB和Oracle等语言和系统的代码。RationalRoe包括了统一建模语言(UML),OOSE,以及OMT,是一个完全的,具有能满足所有建模环境需求能力和灵活性的一套解决方案。允许开发人员,项目经理,系统工程师和分析人员在软件开发周期内在将需求和系统的体系架构转换成代码,消除浪费的消耗,对需求和系统的体系架构进行可视化,理解和精练。

(3)Together

Together是由Borland公司发布的集成了JavaIDE的产品线,源于JBuilder中的UML建模工具。这条产品线提供了不同应用层次的功能,比如TogetherDeigner,TogetherArchitect,TogetherDeveloper。从2007年开始,他们将这些功能合并为一个产品进行发布。技术上讲,Together是一组Eclipe插件。TogetherDeploper使用UML1.4,支持多种语言,物理数据建模,设计模式,源代码设计模式识别,模板代码设计和重用,文件生成等。

(4)PowerDeigner

PowerDeigner是Sybae公司的CASE工具集,提供了一个复杂的交互环境,支持开发生存周期的所有阶段,从处理流程建模到对象和组件的生成。利用PowerDeigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设计模型进行控制。PowerDeigner系列产品提供了一个完整的建模解决方案,业务或系统分析人员,设计人员,数据库管理员DBA和开发人员可以对其裁剪以满足他们的特定的需要;而其模块化的结构为购买和扩展提供了极大的灵活性,从而使开发单位可以根据其项目的规模和范围来使用他们所需要的工具。

(5)CASEStudio

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