软件工程第一二三章习题参考 答案
软件工程 刘强 课后习题参考答案

7.
(
)是将系统化的、规范的、可定量的方法应用于软件的开发、运行和维护的过
程,它包括方法、工具和过程三个要素。(D)
A. 软件产品
B. 软件过程
C. 软件测试
D. 软件工程
8.
软件工程的基本要素包括方法、工具和(
A. 软件系统
B. 硬件环境
C. 过程
D. 人员
)。(C)
9.
软件工程师在从事软件工作时应使用下面的(
系统的交互; y 原型评价:由用户或客户对该原型进行评价,需要的话再进一步细化待开发软件的需求,
并继续调整原型直至需求确定下来为止。
3. 对于下列每一个过程模型,分别列举一个可以适用的具体软件项目,并说明在开发中如何应 用该模型。 (1) 瀑布模型 (2) 快速原型模型 (3) 增量模型 (4) 形式化方法模型 (5) 基于组件的开发模型
)。(D)
11. 下面的(
)不是 RUP 模型的阶段。(D)
A. 启动阶段
B. 精化阶段
C. 构造阶段
D. 确认阶段
[练习题]
1. 请简要说明软件过程的概念和基本元素。 答案要点:
软件过程是软件工程人员为了获得软件产品在软件工具支持下实施的一系列软件工程活动,它 应该明确定义以下元素:
y 过程中所执行的活动及其顺序关系 y 每一个活动的内容和步骤 y 团队人员的工作和职责
y 系统需求分析:由于该系统是现有系统的扩展,因此首先可以经过一个简单的需求分析阶
段,从而确定新系统的需求。 y 遗留系统分析:在需求确定的基础上,开发人员分析遗留系统并研究新系统的总体结构,
(3) 增量模型 项目举例:某公司开发一个通用 CAD 软件产品,产品需求是逐步完善的,某些需求在一定 范围内是明确的,某些需求需要进一步细化,但是迫于市场竞争的压力产品需要尽快上市。 选用分析:通用 CAD 软件产品具有一定的成熟度,总体需求和软件系统结构是可以确定的,
《软件工程》各章课后习题答案

《软件工程》各章课后习题答案软件工程是计算机科学与技术的一门重要学科,旨在研究和应用工程原则和方法来开发高质量的软件系统。
课程中的习题对于加深学生对软件工程理论和实践的理解至关重要。
下面是对《软件工程》各章课后习题的答案,希望能够帮助你更好地掌握软件工程的知识。
第一章:软件工程导论1. 软件工程的定义:答:软件工程是通过应用系统化、规范化和可量化的方法进行软件开发、运行和维护的学科。
2. 软件工程的目标:答:软件工程的目标是提高软件开发的质量、效率和可靠性,使得软件能够满足用户的需求和期望。
3. 软件生命周期模型:答:常见的软件生命周期模型包括瀑布模型、迭代模型、敏捷模型等。
每个模型都有其独特的特点和适用场景。
4. 软件过程模型:答:软件过程模型描述了软件开发过程中的一系列活动和阶段,常见的软件过程模型包括瀑布模型、迭代模型、敏捷模型等。
5. 软件工程的基本原则:答:常见的软件工程基本原则包括分阶段、逐步求精、持续集成、迭代开发、需求优先等。
第二章:软件项目管理1. 软件项目管理的定义:答:软件项目管理是指对软件开发过程中的资源、进度、质量等进行有效管理,以确保软件项目能够按时、按质地完成。
2. 软件项目管理的内容:答:软件项目管理包括项目计划、需求管理、项目进度管理、资源管理、风险管理等方面。
3. 软件项目管理的方法:答:常见的软件项目管理方法包括敏捷项目管理、水平项目管理、里程碑项目管理等。
4. 软件项目管理的工具:答:常用的软件项目管理工具包括甘特图、PERT/CPM网络图、项目管理软件等。
第三章:软件需求分析与规格说明1. 软件需求的定义:答:软件需求是指用户对软件系统的要求和期望,包括功能需求、性能需求、接口需求等方面。
2. 软件需求分析的方法:答:常用的软件需求分析方法包括面向对象分析法、数据流图法、用例分析法等。
3. 软件需求规格说明的格式:答:常见的软件需求规格说明的格式包括自然语言描述、结构化描述、图形描述等。
软件工程---课后习题答案.doc

软件工程---课后习题答案.doc第一章1.1什么是计算机软件?软件的特点是什么?计算机软件是指计算机系统中的程序及其文档软件的特点:●软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。
●软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。
●软件的使用没有硬件那样的机械磨损和老化问题。
1.2简述软件的分类,并举例说明1.系统软件系统软件居于计算机系统中最接近硬件的一层,其他软件一般都通过系统软件发挥作用。
例如:编译软件、操作系统。
2.支撑软件支撑软件是支撑软件的开发和维护的软件。
例如:数据库管理系统、网络软件、软件工具、软件开发环境。
3.应用软件应用软件是特定应用领域专用的软件。
例如:工程/科学计算机软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。
1.3简述软件语言的分类,并举例说明。
1.需求定义语言是用于书写软件需求定义的语言。
例如:PSL/PSA。
2.功能性语言是用于书写软件功能规约的语言,通常又称为功能规约语言。
例如:广谱语言、Z语言。
3.设计性语言是用于书写软件设计规约的语言。
例如:PDL。
4.实现性语言也称为程序设计语言,是用于书写计算机程序的语言。
例如:C、java、PROLOG、FORTRAN、COBOL、Modula。
5.文档语言是用于书写软件文档的语言。
通常用自然语言或半形式化语言书写。
1.4什么是软件工程?软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。
软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。
1.5简述软件工程的基本原则。
软件工程原则包括围绕工程设计、工程支持和工程管理所提出的以下4条基本原则。
1.选取适宜的开发模型必须认识需求定义的易变性,采用适宜的开发模型,保证软件产品满足用户的要求。
2.采用合适的设计方法合适的设计方法有助于这些特征的实现,以达到软件工程的目标。
软件工程课后习题参考答案

软件工程课后习题参考答案软件工程课后习题参考答案1. 第一章规约与软件工程概述1.1 规约的定义规约是软件开发过程中明确要求的描述,包含了对软件需求、设计、实现、测试、部署和维护等各个阶段的要求和约束。
1.2 软件工程的概述软件工程是一门涉及对软件的开发、运行和维护的学科。
它通过应用工程原则和方法,以系统化、规范化、可靠化、经济化和高质量的方式来开发和维护软件。
2. 第二章软件需求规约2.1 软件需求规约的作用软件需求规约是对软件系统所需功能和性能的具体描述和说明,是软件开发的基础和依据。
它指导着开发团队的工作,确保软件的功能和性能符合用户的需求。
2.2 软件需求规约的要素软件需求规约包括功能需求、非功能需求和约束条件。
功能需求描述了软件系统应该具备的功能,非功能需求描述了软件系统的性能要求和质量特性,约束条件描述了软件系统所受限制的条件。
3. 第三章软件设计规约3.1 软件设计规约的目标软件设计规约是对软件系统进行结构化和模块化设计的过程,其目标是确保软件系统具备可靠性、可维护性、可扩展性和可重用性。
3.2 软件设计规约的方法软件设计规约采用面向对象设计、结构化设计和模块化设计等方法。
面向对象设计强调将问题领域的概念和对象转化为软件系统的类和对象,结构化设计强调将系统分解为模块,模块化设计强调模块间的接口和通信。
4. 第四章软件实现规约4.1 软件实现规约的目的软件实现规约是指将软件设计阶段得到的设计规约转化为计算机可执行的程序代码,其目的是确保软件系统的正确性、可靠性、可维护性和可测试性。
4.2 软件实现规约的技术软件实现规约采用编程语言、软件开发工具和软件开发环境等技术。
编程语言提供了描述算法和数据结构的语法和语义,软件开发工具提供了代码编辑、编译、调试和测试等功能,软件开发环境提供了开发的整体支持。
5. 第五章软件测试规约5.1 软件测试规约的目的软件测试规约是对软件系统进行功能、性能和质量等方面的验证和检测,其目的是找出软件系统的错误和缺陷,并修复和改进。
软件工程课后题答案

软件⼯程课后题答案第⼀章1 简述软件的发展过程。
共经历了四个阶段;第⼀阶段:(20世纪50年代初期到60年代初期的⼗余年)计算机系统开发的初期。
第⼆阶段:(20世纪60年代中期到70年代中期的⼗余年)软件产品和“软件作坊”的概念开始出现。
软件开发⼈员不再像早期阶段那样只因个⼈⼯作需要⽽开发,⽽是为了⽤户更好地使⽤计算机。
第三阶段:(20世纪70年代中期到80年代末期)分布式系统嵌⼊“智能”;硬件价格下降,软件价格急剧上升,导致了软件危机的加剧。
第四阶段:(20世纪80年代末期开始)强⼤的桌⾯系统和计算机⽹络迅速发展。
2 简述软件的定义和特点。
定义:软件是计算机程序、规程以及运⾏计算机系统可能需要的相关⽂档和数据。
特点:(1)是⼀种逻辑实体,具有抽象性;(2)软件的⽣产不存在明显的制造过程;(3)在软件的运⾏和使⽤的过程中,不会存在像硬件那样的机械磨损及⽼化问题;(4)由于对计算机系统的依赖性,对软件的通⽤性造成了⼀定的影响;(5)软件的开发⽅式还没有完全脱离⼿⼯开发⽅式,还不能完全采⽤组装的⽅式进⾏软件开发;(6)作为提⾼⼯作效率的逻辑产品,本⾝具有复杂性;(7)成本相当昂贵;(8)相当多的软件⼯作设计社会因素。
3 软件有哪些种类1. 按功能特征进⾏划分(1)系统软件。
(2)⽀撑软件。
(3)应⽤软件2. 按规模⼤⼩进⾏划分微型、⼩型、中型、⼤型、甚⼤型、、极⼤型4 什么是软件危机?答:是指在计算机软件的开发和维护过程中所遇到的⼀系列严重问题。
5 什么是软件⼯程?有哪些本质特性?怎样⽤软件⼯程消除软件危机?答:是指导计算机软件开发和维护的⼀门⼯程学科。
特性略。
技术措施和管理措施消除软件危机。
6 软件⼯程的三要素;⽅法、⼯具和过程。
7. 结合⾃⼰的亲⾝经历,谈谈软件⼯具在软件开发过程中的作⽤。
使软件开发更加模式化,⼯程化,从⽽提⾼软件开发的效率和封装性。
8. CASE 的研究和CASE 产品的开发是近年来软件⼯程领域的特点之⼀。
(完整word版)软件工程习题集+答案

(完整word版)软件工程习题集+答案《软件工程》习题集目录一软件与软件工程 (1)二软件项目管理 (4)三需求分析 (7)四面向对象的需求分析 (10)五软件设计 (15)六程序设计语言和编码 (18)七软件测试 (20)八软件维护 (23)综合试卷一 (25)综合试卷二 (28)综合试卷三 (31)附参考答案: (34)一软件与软件工程参考答案 (34)二软件工程管理参考答案 (37)三需求分析参考答案 (39)四面向对象的需求分析参考答案 (43)五软件设计参考答案 (52)六程序设计语言和编码参考答案 (55)七软件测试参考答案 (59)八软件维护参考答案 (62)综合试卷一参考答案及评分标准 (65)综合试卷二参考答案及评分标准 (68)综合试卷三参考答案及评分标准 (71)一软件与软件工程一、选择题1.软件的主要特性是()B、高成本C、包括程序和文档D、可独立构成计算机系统2.软件工程三要素是()A、技术、方法和工具B、方法、工具和过程C、方法、对象和类D、过程、模型、方法3.包含风险分析的软件工程模型是()A、螺旋模型B、瀑布模型C、增量模型D、喷泉模型4.软件工程的主要目标是()A、软件需求B、软件设计C、风险分析D、软件实现5.下列属于面向对象开发方法的是()A、BoochB、UMLC、CoadD、OMT6.软件危机的主要表现是()A、软件成本太高B、软件产品的质量低劣C、软件开发人员明显不足D、软件生产率低下7.软件开发方法的主要工作模型有()B、循环模型C、瀑布模型D、专家模型8.软件工程的目标有()A、易于维护B、低的开发成本C、高性能D、短的开发期9.软件工程学的目的和意义是()A、应用科学的方法和工程化的规范管理来指导软件开发。
B、克服软件危机。
C、作好软件开发的培训工作。
D、以较低的成本开发出高质量的软件。
二、判断题1.软件就是程序,编写软件就是编写程序。
2.瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。
软件工程课后习题答案

第一章习题参考答案1﹑软件产品的特性是什么?答:软件产品特性:⑴是一种逻辑产品,与物质产品有很大的区别。
⑵软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后,通过复制就产生了大量软件产品。
⑶软件产品不会用坏,不存在磨损,消耗。
⑷生产主要是脑力劳动,还末完全摆脱手工开发方式,大部分产品是"定做"的⑸开发软件的费用不断增加,致使生产成本相当昂贵。
2﹑软件生产有几个阶段?各有何特征?答:⑴程序设计时代:这个阶段生产方式是个体劳动,使用的生产工具是机器语言,汇编语言。
⑵程序系统时代:这个阶段生产方式是小集团合作生产,使用的生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。
⑶软件工程时代:这个阶段生产方式是工程化的生产,使用数据库﹑开发工具﹑开发环境﹑网络﹑分布式﹑面向对象技术来开发软件。
3﹑什么是软件危机?产生原因是什么?答:软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂。
⑵软件开发管理困难而复杂。
⑶软件包开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4﹑什么是软件工程?它目标和内容是什么?答:软件工程就是用科学的知识程和技术原理来定义,开发,维护软件的一门学科。
软件工程目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
软件工程内容:研究内容包括开发技术和开发管理两个方面。
开发技术主要研究:软件开发方法,开发过程,开发工具和环境。
开发管理主要研究:软件管理学,软件经济学,软件心理学。
5﹑软件工程面临的问题是什么?答:软件工程需要解决的问题:软件的费用,可靠性,可维护性,软件生产率和软件的重用。
《软件工程》习题参考答案

《软件⼯程》习题参考答案《软件⼯程》习题参考答案周兵1.1教材:《软件⼯程》⽅⽊云主编,清华⼤学出版社,2016 1.2参考书⽬:1.《Software engineering》8th Edition Ian Sommervile,PearsonEducation, 机械⼯业出版社,20062. 《软件⼯程》,王忠群主编,中国科学技术⼤学出版社,20093. 《软件⼯程导论》(第4版), 张海藩编著, 清华⼤学出版社, 20074、《Software engineering : a practitioner's approach》 RogerS. Pressman. 6th ed. Pressman, Roger S. China MachinePress, 20081.3说明:斜体部分是可选讲授内容, 带星号的习题为可选。
第1章软件⼯程学概述1.1习题A.1什么是软件?软件可以分为哪些类?p11答:软件是程序、数据及相关⽂档的完整集合。
软件可分为通⽤软件和定制软件。
A.2*什么是软件危机及其表现?p11答:软件危机是指在计算机软件的开发和维护过程中所遇到的⼀系列严重问题。
软件危机包含下述两⽅⾯的问题:如何开发软件,以满⾜对软件⽇益增长的需求;如何维护数量不断膨胀的已有软件。
具体地说,软件危机主要有以下⼀些典型表现。
(1) 对软件开发成本和进度的估计常常很不准确。
(2) ⽤户对“已完成的”软件系统不满意的现象经常发⽣。
(3) 软件产品的质量往往靠不住。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的⽂档资料。
(6) 软件成本在计算机系统总成本中所占的⽐例逐年上升。
(7) 软件开发⽣产率提⾼的速度,远远跟不上计算机应⽤迅速普及深⼊的趋势。
A.3什么是软件⼯程?p11答:软件⼯程是指导计算机软件开发和维护的⼀门⼯程学科。
采⽤⼯程的概念、原理、技术和⽅法来开发与维护软件,把经过时间考验⽽证明正确的管理技术和当前能够得到的最好的技术⽅法结合起来,以经济地开发出⾼质量的软件并有效地维护它,这就是软件⼯程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章软件工程概述软件是计算机程序及其有关的数据和文档的结合。
软件危机是指在计算机软件开发和维护时所遇到的一系列问题。
软件危机主要包含两方面的问题:一是如何开发软件以满足对软件日益增长的需求;二是如何维护数量不断增长的已有软件。
软件工程是软件开发、运行、维护和引退的系统方法。
软件工程是指导计算机软件开发和维护的工程学科。
软件工程采用工程的概念、原理、技术和方法来开发与维护软件。
软件工程的目标是实现软件的优质高产。
软件工程学的主要内容是软件开发技术和软件工程管理。
软件开发方法学是编制软件的系统方法,它确定软件开发的各个阶段,规定每一阶段的活动、产品、验收的步骤和完成准则。
常用的软件开发方法有结构化方法、面向数据结构方法和面向对象方法等。
习题参考答案:1.什么是软件危机?为什么会出现软件危机?答:软件危机是指在计算机的开发和维护过程中所遇到的一系列严重问题。
这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。
出现软件危机的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
软件不同于硬件,它是计算机系统中逻辑件而不是物理部件。
管理和控制软件开发过程相当困难。
软件是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升。
目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念,在实践过程中或多或少地采用了错误的方法和技术,这是使软件问题发展成软件危机的主要原因。
总结如下:1)取得正确的用户需求和正确地描述需求很困难2)开发人员对需求的正确理解也有困难3)常常在没有正确理解之前就仓促开始编程4)软件项目缺乏有效的组织、管理和内部交流5)缺乏软件开发方法、模型和工具的支持6)软件维护的困难性2.假设你是一家软件公司的总工程师,当你把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意你的观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”你怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件已经完成时再引入变动,当然付出的代价更高。
一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。
3.什么是软件工程?它有哪些本质特性?怎样用软件工程消除(至少是缓解)软件危机?答:软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
软件工程本质特性:1)软件工程关注于大型程序的构造;2)软件工程的中心课题是控制复杂性;3)软件经常变化;4)开发软件的效率非常重要;5)和谐地合作是开发软件的关键;6)软件必须有效地支持它的用户;7)在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人创造产品。
消除软件危机的途径:为了消除软件危机,首先应该对计算机软件有一个正确的认识。
必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。
应该开发和使用更好的软件工具。
为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
6.美国某科幻电影中有一个描写计算机软件错误的故事,很富于戏剧性。
故事情节如下:由计算机HAL控制的宇宙飞船在飞往木星的旅途中,飞机指挥员鲍曼和HAL之间有一段对话。
鲍曼命令道:“HAL,请对备用舱进行故障预报测试。
”10秒钟后HAL报告:“一切正常。
”但是,地面上的飞行指挥中心在重复做了故障预测报告后,却得出了相反的结论:“鲍曼,我是飞行指挥中心,你的计算机在预报故障时可能犯了错误,我们的两台HAL计算机都得出了和你的计算机相反的结论。
”鲍曼用手指敲着控制台说:“HAL,是不是有什么东西干扰了你,以致出了这个差错?”“听着,鲍曼,我知道你很想帮助我,但是我的信息处理是正常的。
不信就查看我的记录吧,你会看到它是完全正确的。
”“我看过你的服务记录,但是……谁都可能犯错误啊。
”“我并不固执己见,但是,我是不可能犯错误的……。
”“喂,我是飞行指挥中心,我们已经彻底分析了你所遇到的麻烦,我们的两台计算机得出了完全一致的结论。
问题出在故障预报系统中,我们确信是程序设计有错误。
你必须断开你的计算机并改为地面控制模式,我们才能改正这个错误。
”当鲍曼断开计算机时,HAL立即又把自己接了上去。
最后,鲍曼只好拆下计算机的存储器,才得以控制他的宇宙飞船。
请问:(1)为什么鲍曼拆下存储器就能摆脱计算机的干扰而独自控制宇宙飞船?我们现在遇到的软件问题有这么严重吗?(2)如果不依靠飞行指挥中心,鲍曼怎样才知道HAL的故障预报有问题?(3)应该怎样设计计算机系统,才能避免出现故事中描述的这类问题?答:(1)计算机通过运行程序来控制宇宙飞船,而程序指令存放在存储器中。
拆下存储器之后,计算机因取不来指令而无法运行程序,因此也就无法控制宇宙飞船了。
我们现在遇到的软件问题没有这么严重,还没有出现计算机不服从人的命令的情况。
(2)除非鲍曼能亲自分析有故障的部件,或者在计算机上还安装有另外一套故障检测系统,否则不依靠飞行指挥中心他很难知道HAL的故障预报有问题。
(3)应该把HAL设计成具有若干个储存的问题,供周期性测试之用。
通过把应有的测试结果和HAL实际测试结果加以比较的方法,有可能发现HAL的故障预报问题。
此外,不论怎样具体设计HAL系统,都应该设置一种人工操作模式,并把人工操作模式设置为最高等级的控制模式,在任何情况下计算机控制都不能取消人工操作命令。
第二章软件过程软件过程定义了运用方法的顺序、应该交付的文档、开发软件的管理措施、各阶段任务完成的标志。
软件过程必须科学、合理,才能获得高质量的软件产品。
软件产品从问题定义开始,经过开发、使用和维护,直到最后被淘汰的整个过程称为软件生命周期。
根据软件生产工程化的需要,生存周期的划分有所不同,从而形成了不同的软件生命周期模型(SW life cycle model),或称软件开发模型。
软件开发模型有以下几种。
•瀑布模型:规范的、文档驱动的方法。
开发阶段按顺序进行,适用于需求分析较明确、开发技术较成熟的情况。
•快速原型模型:构建原型系统让用户试用并收集用户意见,获取用户真实需求。
•增量模型:优点是能在早期向用户提交部分产品和易于维护,缺点是软件的体系结构必须是开放的。
•喷泉模型:适用于面向对象方法。
•螺旋模型:适用于大规模内部开发项目,有利于分析风险和排除风险。
•统一过程:适用于面向对象方法,使用统一建模语言UML,采取用例驱动和架构优先的策略,采用迭代增量的建造方法。
进行软件开发时可把各种模型的特点结合起来,充分利用优点,减少缺点。
习题参考答案:1.什么是软件过程?它与软件工程方法学有何关系?软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件过程定义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协调软件变化必须采取的管理措施,以及标志完成了相应开发活动的里程碑。
软件过程是软件工程方法学的3个重要组成部分之一。
2.假设要求你开发一个软件,该软件的功能是把读入的浮点数开平方,所得到的结果应该精确到小数点后4位。
一旦实现并测试完之后,该产品将被抛弃。
你打算选用哪些软件生命周期模型?请说明你作出选择的理由。
答:对这个软件的需求很明确,实现开平方功能的算法也很成熟,因此,既无须通过原型来分析需求也无须用原型来验证设计方案。
此外,一旦实现并测试完之后,该产品将被抛弃,因此也无须使用有助于提高软件可维护性的增量模型或螺旋模型来开发该软件。
所以,为了开发这个简单的软件,使用大多数人所熟悉的瀑布模型就可以了。
1)需求明确;2)功能单一,规模小;3)潜在功能变化少。
3.假设你要为一家生产和销售长筒靴的公司开发一个软件,使用此软件来监控该公司的存货,并跟踪从购买橡胶开始,到生产长筒靴、发货给各个连锁店,直至卖给顾客的全部过程。
以保证生产、销售过程的各个环节供需平衡,既不会有停工待料现象,也不会有供不应求现象。
你在为这个项目选择生命周期模型时使用什么准则?答:快速原型模型。
1)软件系统的使用人员繁杂,需求确定困难。
2)软件应用环节多,功能变化多,初期需求变化多,在修改原型的过程中明确功能。
4.列出在开发上述软件产品过程中可能遇到的风险。
你打算怎样排除这些风险?答:1)需求不明确,在明确需求的过程中延误交工期限。
排除:利用快速原型法,选好快速开发工具,对用户的需求变更做出快速反应,及早确定最后需求。
2)需求越提越多,无法按照计划及时定下需求。
排除:帮助用户对需求进行分析,确定下来近期完成的主要功能。
其它附加功能和次要功能可在升级版本中体现。
确保项目的顺利开展。
3)开发人员不熟悉业务。
排除:在和用户确定需求的过程中,及时向用户请教业务相关的知识,同时也可以请用户针对与业务流程或专业术语进行专门的培训。
5.你为靴类连锁店开发的存货监控软件很受用户欢迎,现在软件开发公司决定把它重新写成一个通用软件包,以卖给各种生产并通过自己的连锁店销售产品的公司。
因此,这个新的软件产品必须是可移植的,并且应该能够很容易地适应新的运行环境(硬件或操作系统),以满足不同用户的需求。
你在为本题中的软件选择生命周期模型时,使用的准则与在第3题中使用的准则有哪些不同? 答:螺旋模型。
什么准则?构件模型。
1)通用模型,并满足不同用户的需求。
利用增量模型,确定出通用的部分,同时针对于不同用户开发不同的构件,最后进行组合。
2)可移植。
适应新的运行环境。
利用增量模型的开放式体系结构,合理组合配置软件系统构件。
补.假设你被任命为一家软件公司的项目负责人,你的工作是管理该公司已被广泛应用的字处理软件的新版本开发。
由于市场竞争激烈,公司规定了严格的完成期限并且已对外公布。
你打算采用哪种软件生命周期模型?为什么?答:对这个项目的一个重要要求是,严格按照已对外公布了的日期完成产品开发工作,因此,选择生命周期模型时应该着重考虑哪些模型有助于加快产品开发的进度。