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

合集下载

《软件工程》各章课后习题答案

《软件工程》各章课后习题答案

《软件工程》各章课后习题答案软件工程是计算机科学与技术的一门重要学科,旨在研究和应用工程原则和方法来开发高质量的软件系统。

课程中的习题对于加深学生对软件工程理论和实践的理解至关重要。

下面是对《软件工程》各章课后习题的答案,希望能够帮助你更好地掌握软件工程的知识。

第一章:软件工程导论1. 软件工程的定义:答:软件工程是通过应用系统化、规范化和可量化的方法进行软件开发、运行和维护的学科。

2. 软件工程的目标:答:软件工程的目标是提高软件开发的质量、效率和可靠性,使得软件能够满足用户的需求和期望。

3. 软件生命周期模型:答:常见的软件生命周期模型包括瀑布模型、迭代模型、敏捷模型等。

每个模型都有其独特的特点和适用场景。

4. 软件过程模型:答:软件过程模型描述了软件开发过程中的一系列活动和阶段,常见的软件过程模型包括瀑布模型、迭代模型、敏捷模型等。

5. 软件工程的基本原则:答:常见的软件工程基本原则包括分阶段、逐步求精、持续集成、迭代开发、需求优先等。

第二章:软件项目管理1. 软件项目管理的定义:答:软件项目管理是指对软件开发过程中的资源、进度、质量等进行有效管理,以确保软件项目能够按时、按质地完成。

2. 软件项目管理的内容:答:软件项目管理包括项目计划、需求管理、项目进度管理、资源管理、风险管理等方面。

3. 软件项目管理的方法:答:常见的软件项目管理方法包括敏捷项目管理、水平项目管理、里程碑项目管理等。

4. 软件项目管理的工具:答:常用的软件项目管理工具包括甘特图、PERT/CPM网络图、项目管理软件等。

第三章:软件需求分析与规格说明1. 软件需求的定义:答:软件需求是指用户对软件系统的要求和期望,包括功能需求、性能需求、接口需求等方面。

2. 软件需求分析的方法:答:常用的软件需求分析方法包括面向对象分析法、数据流图法、用例分析法等。

3. 软件需求规格说明的格式:答:常见的软件需求规格说明的格式包括自然语言描述、结构化描述、图形描述等。

软件工程课后习题参考答案

软件工程课后习题参考答案

软件工程课后习题参考答案软件工程课后习题参考答案1. 第一章规约与软件工程概述1.1 规约的定义规约是软件开发过程中明确要求的描述,包含了对软件需求、设计、实现、测试、部署和维护等各个阶段的要求和约束。

1.2 软件工程的概述软件工程是一门涉及对软件的开发、运行和维护的学科。

它通过应用工程原则和方法,以系统化、规范化、可靠化、经济化和高质量的方式来开发和维护软件。

2. 第二章软件需求规约2.1 软件需求规约的作用软件需求规约是对软件系统所需功能和性能的具体描述和说明,是软件开发的基础和依据。

它指导着开发团队的工作,确保软件的功能和性能符合用户的需求。

2.2 软件需求规约的要素软件需求规约包括功能需求、非功能需求和约束条件。

功能需求描述了软件系统应该具备的功能,非功能需求描述了软件系统的性能要求和质量特性,约束条件描述了软件系统所受限制的条件。

3. 第三章软件设计规约3.1 软件设计规约的目标软件设计规约是对软件系统进行结构化和模块化设计的过程,其目标是确保软件系统具备可靠性、可维护性、可扩展性和可重用性。

3.2 软件设计规约的方法软件设计规约采用面向对象设计、结构化设计和模块化设计等方法。

面向对象设计强调将问题领域的概念和对象转化为软件系统的类和对象,结构化设计强调将系统分解为模块,模块化设计强调模块间的接口和通信。

4. 第四章软件实现规约4.1 软件实现规约的目的软件实现规约是指将软件设计阶段得到的设计规约转化为计算机可执行的程序代码,其目的是确保软件系统的正确性、可靠性、可维护性和可测试性。

4.2 软件实现规约的技术软件实现规约采用编程语言、软件开发工具和软件开发环境等技术。

编程语言提供了描述算法和数据结构的语法和语义,软件开发工具提供了代码编辑、编译、调试和测试等功能,软件开发环境提供了开发的整体支持。

5. 第五章软件测试规约5.1 软件测试规约的目的软件测试规约是对软件系统进行功能、性能和质量等方面的验证和检测,其目的是找出软件系统的错误和缺陷,并修复和改进。

软件工程课后习题答案

软件工程课后习题答案

软件工程课后习题答案1. 什么是软件工程?软件工程是一种应用工程原理和方法的学科,目的是开发高质量的软件。

软件工程包括以下几个方面:•需求分析:确定用户的需求,并将其转化为可执行的软件功能。

•设计:设计软件的架构和模块,并确定各个模块的功能和关系。

•编码:实现软件的设计,将设计的模块通过编程语言编写成可执行的代码。

•测试:通过不同的测试方法和技术对软件进行验证,确保软件的质量和可靠性。

•维护:对软件进行改进和修复,以适应用户需求的变化和修复软件中的错误。

2. 软件工程的目标是什么?软件工程的目标是开发高质量的软件,以满足用户的需求。

具体目标包括:•可靠性:软件应该能够正常运行并处理各种输入情况,不会崩溃或导致系统故障。

•可维护性:软件应该易于理解和修改,以适应用户需求的变化和修复软件中的错误。

•可扩展性:软件应该能够在不改变其基本架构的情况下,方便地添加新的功能模块。

•可重用性:软件应该能够被多个项目和团队复用,以提高开发效率。

•可测试性:软件应该易于测试,以确保其功能和性能符合预期。

3. 软件开发生命周期有哪几个阶段?软件开发生命周期通常包括以下几个阶段:1.需求分析和定义阶段:在这个阶段,软件工程师与用户沟通,了解用户的需求和期望。

然后,设计师将这些需求转化为软件规格说明。

2.软件设计阶段:在这个阶段,设计师根据需求规格说明书设计软件的架构和模块,并确定模块之间的关系和功能。

3.编码阶段:在这个阶段,开发人员根据设计文档编写代码,实现软件的功能。

4.测试阶段:在这个阶段,测试人员使用不同的测试方法和技术对软件进行验证,以确保软件的质量和可靠性。

5.部署和维护阶段:在这个阶段,软件工程师将软件部署到实际的运行环境中,并根据用户的反馈进行改进和修复。

4. 什么是软件需求?软件需求是对系统或软件功能和性能的描述,它描述了用户的需求和期望。

软件需求通常包括以下几个方面:•功能需求:描述软件应该具有的功能,以及这些功能如何满足用户的需求。

实用软件工程课后题答案

实用软件工程课后题答案

第一章:软件工程的内容与方法本章提示:软件工程的内容与方法这一章,特别重要。

首先,因为你学习了软件工程,最后连它的主要内容及方法都说不清楚,实在对不起自己。

其次,因为这一章是原书最重要的一章,它概括了全书的基本论点与论据,而这些论点与论据是作者对软件工程的新贡献。

下面是本章的习题解答:1.开发文档都有哪些?用图来表示它们之间的关系。

开发文档包括《目标程序》、《源程序》、《详细设计说明书》、《概要设计说明书》、《需求规格说明书》、《用户需求报告》、《软件合同》,它们之间的关系可以如图8-1所示。

图 8-1 开发文档之间的关系2.说明软件工程研究的内容。

软件工程研究的内容包括软件开发方法、软件开发模型、软件支持过程和软件管理过程。

其中软件开发方法的内容又涵盖市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护、版本升级。

常用的软件开发模型有瀑布模型、迭代模型、增量模型和原型模型。

软件支持过程由所支持的CASE工具组成,常用的CASE工具有PowerDesigner和Rational Rose。

软件管理过程主要有CMMI、ISO9000、微软企业文化和敏捷文化现象。

3.请读者详细解释软件的定义和程序的定义。

软件的定义:软件 = 程序 + 数据 + 文档。

这里的程序是指程序系统。

这里的数据不仅包括初始化数据、测试数据,而且包括研发数据、运行数据、维护数据,也包括软件企业积累的项目工程数据和项目管理数据中的大量决策原始记录数据。

这里的文档指的是软件开发过程中的分析、设计、实现、测试、维护文档、管理文档。

现在有一种新提法正在引起关注,这种提法是:软件 = 知识 + 程序 + 数据 + 文档。

程序是计算机为完成特定任务而执行的指令的有序集合。

从应用的角度可理解为:面向过程的程序 = 算法 + 数据结构面向对象的程序 = 对象 + 信息面向构件的程序 = 构件 + 构架。

软件工程课后答案吕云翔

软件工程课后答案吕云翔

软件工程课后答案吕云翔1.与计算机硬件相比,计算机软件有哪些特点,答:一、无法直接观察计算机软件的物理形态,只能通过观察它的实际运行情况来了解它的功能、特性和质量等;二、人们在分析、设计、开发、测试软件产品的过程中,以及在软件开发项目的管理过程中,渗透了大量的脑力劳动;三、不存在像硬件一样的磨损和老化现象,但存在着缺陷维护和技术更新的问题;四、软件的开发和运行必须依赖于特定的计算机系统环境;五、具有可复用性。

2. 为什么说软件工程的发展可以在一定程度上解决软件危机的各种弊端,答:因为,软件工程的提出是为了解决软件危机所带来的各种弊端。

具体地讲,软件工程的目标主要包括以下几点。

(1) 使软件开发的成本能够控制在预计的合理范围内。

(2) 使软件产品的各项功能和性能能够满足用户需求。

(3) 提高软件产品的质量。

(4) 提高软件产品的可靠性。

(5) 使生产出来的软件产品易于移植、维护、升级和使用。

(6) 使软件产品的开发周期能够控制在预计的合理时间范围内。

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

答:(1) 将软件的生命周期划分为多个阶段,对各个阶段实行严格的项目管理。

(2) 坚持阶段评审制度,以确保软件产品的质量。

(3) 实施严格的产品控制,以适应软件规格的变更。

在软件开发的过程中,用户需求很可能不断发生变化。

(4) 采用现代程序设计技术。

(5) 开发出来的软件产品应该能够清楚地被审查。

(6) 合理地安排软件开发小组的人员,并且开发小组的人员要少而精。

(7) 不断地改进软件工程实践。

4. 如何理解软件生命周期的内在特征,答:软件产品的生命周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用以及产品版本的不断更新,到最终该产品被市场淘汰的全过程。

软件生命周期这个概念从时间的角度将软件的开发和维护的复杂过程分解为了若干个阶段,每个阶段都完成特定的相对独立的任务。

由于每个阶段的任务相对于总任务难度会大幅度降低,在资源分配、时间把握和项目管理上都会比较容易控制。

软件工程实用教程(2版)-4章-习题与参考答案-2012-5-30

软件工程实用教程(2版)-4章-习题与参考答案-2012-5-30
5.为每一种模块内聚举一个具体例子;为每一种模块耦合举一个具体例子。
1.答案要点:
偶然内聚:计算学生总成绩与统计学生出勤人数放在一个模块中;
逻辑内聚:打印会计报表与打印学生成绩表在一个模块中;
时间内聚:系统初始化模块;
过程内聚:根据考试成绩分别进行奖学金处理、留级、退学处理等
通信内聚:输入入库单、据此登记库存帐并开具发票等
6.简述变换分析、事务分析的基本步骤。
答案要点:
变换流分析设计步骤:
1)确定变换流、输入流和输出流部分
2)设计模块结构的顶层和第一层
3)设计中下各层
事务分析的步骤:
根据事务功能设计一个顶层总控模块;
将事务中心的输入数据流对应为一个第一层的接收模块及该模块的下层模块;
将事务中心对应为一个第一层的调度模块;
概要设计过程主要包括:1)制定规范2)系统架构设计3)软件结构设计4)公共数据结构设计5)安全性设计6)故障处理设计7)编写文档8)概要设计评审
2.如何理解模块的独立性?用什么指标来衡量模块的独立性?
答案要点:
模块的独立性是指不同模块之间的相互联系应尽可能的少,应尽可能减少公共的变量和数据结构;一个模块应尽可能在逻辑上独立,有完整单一的功能。具有良好独立性的模块,可使模块功能完整、数据接口简单、程序易于理解和维护。独立性限制了错误的作用范围,使错误易于排除,因而可使软件开发速度快,质量高。
2)界面的风格的“一致性”与“个性化”
3)界面信息反馈
4)界面的合适性
5)容错性
6)审美性和可用性
4)模块的扇入、扇出要适当等。
4.什么是软件体系结构?什么是软件体系结构风格?
答案要点:
软件体系结构表示了一个软件系统的逻辑结构,描述包含系统基础构成单元、它们之间的作用关系、在构成系统时它们的集成方法以及对集成约束的描述等方面。在设计软件体系结构时,必须考虑系统的动态行为,考虑与现有系统的兼容性、安全性、可靠性、扩展性和伸缩性。

软件工程课后答案完整版

软件工程课后答案完整版

软件工程课后答案完整版软件工程是一门涉及软件开发与管理的学科,它关注着如何有效地组织、设计、开发和维护软件系统。

作为一门实践性强的学科,课后答案对于学习软件工程的学生来说非常重要。

本文将以软件工程课后答案为主题,为您提供一份完整版的答案,旨在帮助您更好地理解和掌握软件工程的知识。

一、需求分析与规格说明1. 问题描述对于任何一门软件工程课程,需求分析和规格说明都是至关重要的环节。

通过合理地分析需求,可以明确软件系统的功能需求、性能需求和用户需求,从而为后续的设计和开发工作奠定基础。

在这一部分中,我们将详细讨论问题描述、需求规格说明以及软件需求规格说明的编写步骤和技巧。

2. 答案示例问题描述:某个公司需要开发一个在线购物系统,能够满足用户浏览商品、下单购买、支付、评价等功能。

需求规格说明:该系统需要具备以下功能需求:- 用户注册登录:用户可以通过注册登录系统,建立个人账号,用于后续购物操作。

- 商品浏览:用户可以浏览系统中的商品,包括商品图片、详细介绍、价格等信息。

- 购物车管理:用户可以将感兴趣的商品加入购物车,并对购物车进行管理,如增加、删除、修改商品数量等操作。

- 订单管理:用户可以在购物车中选择商品提交订单,并进行支付操作。

- 支付功能:系统需要集成常用的支付渠道,如支付宝、微信支付等,以便用户支付订单。

- 评价功能:用户在收到商品后可以对商品进行评价,并可以查看其他用户对商品的评价。

三、软件系统设计与实现1. 系统架构设计系统架构设计是软件工程中的核心环节之一,它关注着如何将系统划分为各个模块,并确定模块之间的接口和依赖关系。

在这一部分中,我们将着重讨论系统架构设计的原则、方法以及常用的架构模式。

2. 答案示例系统架构设计的主要目标是实现系统的可扩展性、灵活性和可维护性。

在本次项目中,我们采用了经典的三层架构模式,即用户界面层、业务逻辑层和数据访问层。

- 用户界面层:负责与用户进行交互操作,接收用户输入的请求,并向用户展示系统的响应结果。

软件工程课后习题参考答案

软件工程课后习题参考答案

软件工程课后习题参考答案一、概述软件工程作为一门跨学科的学科,涉及到软件开发的各个方面,对培养软件工程师的能力具有重要意义。

课后习题是巩固和深化学生对课程知识的理解和应用的重要途径。

本文将为软件工程课后习题提供一些参考答案,供学生参考和自我评估。

二、需求分析与规格说明1. 什么是软件需求?软件需求分析的目的是什么?软件需求是对问题域中用户对软件所期望的功能和性能的描述。

软件需求分析的目的是识别、理解、规范和管理软件系统开发的需求。

2. 软件需求分析的基本步骤是什么?软件需求分析的基本步骤包括需求获取、需求建模、需求验证和需求管理。

3. 什么是功能需求?什么是非功能需求?功能需求描述的是软件系统应具备的具体功能和行为。

非功能需求则描述了软件系统的其他属性,例如性能、安全性、可靠性等。

4. 举例说明一些常见的软件需求验证方法。

常见的软件需求验证方法包括需求审查、原型验证、测试和模型检查等。

三、软件设计与架构1. 什么是软件架构?软件架构的重要性是什么?软件架构是软件系统的基础结构和组织方式,决定了软件系统的可扩展性、可维护性和可演化性。

软件架构的合理设计能够降低开发和维护的难度。

2. 请简要介绍常见的软件架构模式。

常见的软件架构模式包括分层架构、客户-服务器架构、面向对象架构和微服务架构等。

3. 什么是设计模式?列举几个常见的设计模式。

设计模式是针对软件设计中的常见问题所提出的解决方案。

常见的设计模式包括单例模式、观察者模式、工厂模式和策略模式等。

4. 请简要介绍面向对象设计的原则。

面向对象设计的原则包括单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则和接口隔离原则等。

四、软件测试与质量保证1. 软件测试的目的是什么?请简要介绍测试驱动开发(TDD)。

软件测试的目的是发现软件产品中的错误和缺陷。

测试驱动开发是先编写测试用例,再根据用例编写代码的开发模式。

2. 请简要介绍黑盒测试和白盒测试。

黑盒测试是基于软件外部行为和需求的测试,不考虑软件的内部实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件工程实用教程吕云翔-课后答案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.统一过程模型具有三大特点:用例驱动,以架构为中心,迭代和增量开发。

统一过程模型核心是解决可操作性问题,帮助开发人员尽可能少地依赖那些“不可描述的经验”。

可以多次执行各个工作流程,从而有利于更好地理解需求、设计出合理的系统构架,并最终交付一系列渐趋完善的成果。

适用的范围极为广泛。

对开发人员的素质要求较高。

相关文档
最新文档