第2章 软件过程

第2章 软件过程
第2章 软件过程

第二章软件过程

【本章小结】

软件过程是软件工程人员为了获得软件产品在软件工具支持下实施的一系列软件工程活动,一般包括问题提出、软件需求说明、软件设计、软件实现、软件确认和软件演化等基本活动。

软件过程应该明确定义团队人员的工作和职责,所执行的活动及其顺序关系,以及活动的内容和步骤。

软件过程模型是对实际过程的抽象描述,描述了从问题提出到软件演化直到废弃,跨越整个生命周期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架,包括软件过程的活动、软件产品以及参与人员的不同角色。

常见的软件过程模型包括瀑布模型、快速原型模型、增量模型、螺旋模型、形式化方法模型、基于组件的开发模型等,每个软件开发组织应该选择适合于该组织的软件开发模型。

瀑布模型适用于在开发的早期阶段软件需求被完整确定的情况;快速原型模型适用于强调系统与用户的交互,且用户需求不明确的情况;增量模型适用于用户需求逐步细化的情况;螺旋模型由于强调风险分析,因此适用于庞大、复杂并具有高风险的系统开发;形式化方法模型适用于对安全性、可靠性和保密性要求极高的软件系统,这些系统需要在投入运行前进行验证;基于组件的开发模型开发具有组件化的结构的软件系统。

【习题与参考答案】

一、简要回答下列问题

1. 简述软件过程的定义。

软件过程是软件工程人员为了获得软件产品在软件工具支持下实施的一系列软件工程活动。包括过程定义、过程执行、过程结果及制品。

2. 软件过程包括哪些基本活动?

一般的软件过程包括问题提出、软件需求说明、软件设计、软件实现、软件确认和软件演化等基本活动。

3.请简要说明软件过程的概念和基本元素。

软件过程是软件工程人员为了获得软件产品在软件工具支持下实施的一系列软件工程活动,它应该明确定义以下元素:过程中所执行的活动及其顺序关系;每一个活动的内容和步骤;团队人员的工作和职责。

3.什么是软件过程制品?

在软件过程的不同阶段,可能产生各种不同的软件制品,诸如需求规格说明、设计说明、源程序与构件、测试用例、用户手册以及各种开发管理文档等,统称为软件过程制品。

4.什么叫软件过程模型,软件过程通常分为哪些基本活动?

软件过程模型抽象描述软件过程的整体框架,一般包括4个主要的基本过程:

(1)问题提出:确定待开发系统的总体目标和范围。

(2)软件规格说明:规定软件的功能及其运行环境。

(3)软件设计:设计每个系统部件的实现算法、数据结构和接口等,编写软件设计说明书。

(4)软件开发:产生满足规格说明的软件产品。

(5)软件确认:确认软件能否完成需求规格的要求。

(6)软件的演化:为满足客户不断变化的需求,软件在使用过程中要适时的进行变更。

5.软件开发的主要过程模型有哪些?

自从软件工程概念形成以来,不同的研究人员提出了各自软件开发过程模型,主要有瀑布模型、快速原型模型、增量模型、螺旋模型、形式化模型。其次还有喷泉模型、循环模型、智能模型及基于组件的开发模型等。

6.瀑布模型是如何划分软件过程的?

瀑布模型将软件过程划分为需求定义与分析、软件设计、软件实现、软件测试和运行维护等一系列基本活动,并且规定这些活动自上而下、相互衔接的固定次序。

7.瀑布模型模型具备的主要优缺点是什么?

瀑布模型主要优点如下:

(1)严格规范软件开发过程,克服了非结构化的编码和修改过程的缺点;

(2)强调文档的作用,要求每个阶段都要仔细验证。

瀑布模型主要缺点如下:

(1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;

(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,中间提出的变更要求很难响应;

(3)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

8.在螺旋模型中,风险分析的作用是什么?

在螺旋模型中,软件开发是在风险等级的指导下进行的。首先确定该阶段的目标,完成这些目标的选择方案及其约束条件;其次从风险角度分析方案的开发策略,努力排除各种潜在的风险,在需求不适当的情况下可能需要建造原型系统;如果某些风险不能排除,该方案可能立即终止,否则继续启动下一步的软件开发和验证工作,并再次通过风险分析规定过程遵循的策略;最后,评价该阶段的结果,并规划下一个迭代。

从上述过程中可以看出,风险分析的作用是通过识别项目中的高风险问题,使开发人员制定适当的开发策略消除这些风险。

9.

10.

二、选择题

1.()是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开

发、软件确认、软件演化等活动组成。(A)

A.软件过程

B.软件工具

C.软件产品

D.软件方法

2.软件过程是在软件工具支持下实施的一系列软件工程活动,基本活动包括()。( A )

A.分析、设计、实现、测试、演化

B.沟通、计划、建模、构造、部署

C.计划、分析、设计、实现、调试

D.沟通、风险管理、度量、产品化、评审

3.下列说法正确的是()。(C)

A.软件需求规格说明书在软件开发过程中具有重要的作用,它是软件可行性分析的依据。

B.软件设计是根据需求规格说明,确定软件体系结构。

C.验证和确认需要指出软件是否符合规格说明以及是否满足客户的需求。

D.维护软件的成本是很高的,应该在开发阶段考虑维护的问题,而质量好的软件则不需要维护。

4.软件开发的瀑布模型是主要适合于下列哪种情况()。(A)

A. 需求被清晰定义的情况

B.一种需要快速构造可运行程序的方法

C. 已不能用于现代环境的过时模型

D. 大规模团队开发的项目

5.软件开发的增量模型的主要缺点()。(A D)

A. 容易退化为边做边改的方式,从而使软件过程的控制失去整体性。

B. 用户不能看到所开发软件的可运行中间版本。

C. 重要核心功能被首先交付,使得每有增量时都得重复测试,增加测试工作量。

D. 要求软件具备开放式的体系结构。

6.软件开发的增量模型主要适合于下列哪种情况( ) ( B )

A.适用于需求被清晰定义的情况

B.一种需要快速构造核心产品的方法

C.最适合于大规模团队开发的项目

D.一种不适用于商业产品的创新模型

7.快速原型开发模型的主要适合于下列哪种情况()。( B )

A.适用于客户需求被明确定义的情况

B.适用于客户需求难以清楚定义的情况

C.最适合于大规模团队开发的项目

D.很难产生有意义产品的一种冒险模型

8. 快速原型开发模型的主要优点是()。( A )

A. 可以减少由于软件需求不明确带来的开发风险。

B. 所选用的开发技术和工具不一定符合主流的发展。

C. 连续的修改可能会导致产品质量不断提升。

D. 快速建立起来的系统可以较好满足用户急需。

9. 演化式软件过程模型()。( D )

A.本质上是迭代的

B.可以很容易适应需求的变化

C.通常不会抛弃所产生的系统

D.以上所有选项

10. 关于软件开发的螺旋模型,下列说法正确的是()。( A B)

A. 螺旋模型是瀑布模型和快速原型模型的结合。

B. 螺旋模型每层回线都包含一个瀑布模型和快速原型模型。

C. 不适用于大型的软件开发,因为大型软件风险评估困难。

D. 以上所有选项。

11. 软件开发的螺旋模型的优点是()( D )

A. 设计方案反复推敲,直至没有错误。

B. 螺旋模型每层回线都包含一个瀑布模型和快速原型模型。

C. 螺旋模型是风险驱动,如果风险不能排除,方案可能终止。

D. 有利于早期错误的消除。

12. 基于组件的开发模型()。( C )

A.只适用于计算机硬件设计

B.不能支持可重用组件的开发

C.在面向对象技术获得支持的情况下应用得更好

D.增加了开发风险和成本

13.形式化方法模型是将数学方法用于()。( D )

A.定义计算机系统的规格说明

B.开发无错误的计算机系统

C.验证计算机系统的正确性

D.以上所有选项

14.在软件过程的需求阶段,可能产生的过程制品有()。( A )

A.构想文档、需求模型、软件需求规格说明

B.用户手册、设计模型、软件体系结构文档、工作分解结构

C.分布规格说明、软件开发计划、软件变更申请、软件体系结构文档

D.软件变更申请、软件测试报告、发布版本说明、软件开发计划

15.螺旋模型将软件过程划分为若干个开发回线,每一个回线表示开发过程的一个阶段,每个阶段的活动包括()。( C )

A.制定计划、风险分析、项目规划、实施工程

B.制定计划、原型设计、风险分析、实施工程

C.制定计划、风险分析、实施工程、客户评价

D.项目规划、原型设计、实施工程、原型评价

16.下面的软件过程模型中,()适用于庞大、复杂并具有高风险的系统开发。( D )

A.瀑布模型

B.增量模型

C.快速原型模型

D.螺旋模型

17.下面的软件过程模型中,()提高了开发效率和产品质量,充分体现软件复用的思想。( A )

A.基于组件的开发模型

B.增量模型

C.快速原型模型

D.螺旋模型

18.下面的软件过程模型中,()适用于用户需求逐步细化的情况。( B )

A.瀑布模型

B.增量模型

C.快速原型模型

D.螺旋模型

19.软件需求阶段产生的主要过程制品包括()。(A B C )

A.构想文档

B.需求模型

C.软件需求规格说明

D.设计模型

20.软件的计划文档包括()( ABCD )

A.工作分解结构

B.业务案例

C.发布规格说明

D.软件开发计划

三、判断题

1.快速原型模型包括原型开发和原型分析两个阶段。(×)

2.瀑布模型的最大优点是将软件开发的各个阶段划分得十分清晰。(×)

3.基于组件的开发模型适用于那些对安全性、可靠性和保密性要求极高的软件系统。(×)

4.软件需求规格说明是确定系统需要的服务以及运行与开发中所受约束的过程,也称为需求工程。

(√)

5.可行性分析的任务是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。

(√)

6.软件开发的增量模型中第一个增量一般是满足用户需求的核心产品。(√)

7.增量模型每一个要开发的子集产品是随机确定和设计的。(×)

8.增量模型比较适应用户逐步细化需求的形成过程的软件开发。(√)

9.螺旋模型以风险驱动开发过程,强调可选方案和约束条件从而支持软件的重用。(√)

10.软件开发的各种过程模型之间是相互独立的,不能结合使用,否则会影响软件质量。(×)

11.形式化方法开发过程所交付的软件系统具有较少的缺陷和较高的安全性。(√)

12.现实应用的系统大多数是交互性强的软件,比较适合使用形式化开发方法。(×)

13.基于组件的开发模型充分体现了软件复用的思想,降低了开发风险和成本。(√)

14.软件过程制品由于数量多,版本多,会增加大量的管理作,影响软件开发进度。(×)

15.软件过程的各个基本活动都会产生相应的配置管理文档。(√)

四、论述题

1.软件工程过程有哪几个基本过程活动?

答案要点:

软件工程过程的基本活动包括:

(1)问题提出:开展技术探索和市场调查等活动,研究系统的可行性和可能的解决方案,确定待开发系统的总体目标和范围。

(2)软件需求说明:分析、整理和提炼所收集到的用户需求,建立完整分析模型,编写软件需求规格说明和初步的用户手册。通过评审需求规格说明,确保对用户需求达到共同的理解与认识。

(3)软件设计:根据软件需求规格说明文档,确定软件的体系结构,再进一步设计每个系统部件的实现算法、数据结构和接口等,编写软件设计说明书,并组织进行设计评审。

(4)软件实现:将所设计的各个子系统编写成计算机可接受的程序代码。

(5)软件确认:在设计测试用例的基础上,测试软件的各个组成模块,并将各个模块集成起来,测试整个产品的功能和性能是否满足已有的规格说明。

(6)软件演化:整个软件过程是一个不断演化的过程,软件开发覆盖从概念的提出到形成一个可运行系统的整个过程,软件维护则是系统投入使用后所产生的修改。

2.请描述瀑布模型的各个阶段及其优缺点。

答案要点:

瀑布模型规定了各项软件工程活动,包括:制定软件项目计划,进行需求分析和定义,软件设计,程序编码,测试及运行维护。并且规定了它们自上而下,相互衔接的固定次序,如同瀑布流水,逐级下落。瀑布模型的每项开发活动均具有以下特征:

(1)从上一项活动接受本项活动的工作对象,做为输入;

(2)利用这一输入实施本项活动应完成的内容;

(3)给出本项活动的工作成果,做为输出传给下一项活动;

(4)对本项活动实施的工作进行评审。若其工作得到确认,则继续进行下一项活动,否则返回前项,甚至更前项的活动进行返工。

瀑布模型的优点:

(1)严格规范软件开发过程,克服了非结构化的编码和修改过程的缺点;

(2)强调文档的作用,要求每个阶段都要仔细验证。

瀑布模型的缺点:

(1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;

(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,很难响应客户的变更要求;

(3)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果

3.请描述快速原型过程模型的各个阶段。

答案要点:

快速原型方法的目的是解决软件需求不明确给开发带来风险的问题,其关键在于尽可能“快速”地建造原型,通过用户对原型的评价最终确定系统的需求。

快速原型过程模型包括以下阶段:

图2-1 瀑布模型

图2-2 快速原型

原型需求分析:分析和提炼所收集到的客户需求;

原型开发:基于初步的需求快速建造一个可以运行的软件原型,实现客户或未来的用户与系统的交互;

原型评价:由用户或客户对该原型进行评价,需要的话再进一步细化待开发软件的需求,并继续调整原型直至需求确定下来为止。

最终系统设计:在原型评价的基础上对最终系统进行详细设计并实现。

快速原型模型的缺点:原型系统的内部结构可能不好,导致软件产品质量下降;所选用的开发技术和工具不一定符合主流。

4.请描述软件开发的增量模型的各个阶段及其优缺点。

答案要点:

在增量模型中软件被作为一系列的增量构件来设计、实现、集成和测试,在开发的各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。经过评审形成下一个增量开发计划,不断重复,直到产生最终的完善产品。Array

图2-3 增量模型

该模型适应了用户逐步细化需求的形成过程,以减少软件开发过程的返工。特点是各阶段并步交付可运行的完整产品,而是满足客户需求的一个子集的可运行产品。

增量模型的优点:

(1)较好地适应需求的变化,用户可以不断地看到所开发软件的可运行中间版本;

(2)重要功能被首先交付,从而使其得到最多的测试。

增量模型的缺点:

(1)加入的构件不能破坏已经构造好的系统部分,因而软件应具备开放式的体系结构。

(2)由于需求变化是不可避免的,增量模型适应这种能力大大优于瀑布模型,但是软件的开发过程不好控制。

5.请描述形式化模型的各个阶段及其优缺点。

答案要点:

形式化模型结合了形式化软件开发方法和程序自动生成技术,采用形式化需求规格说明和变换技术等技术手段,生产目标程序系统。该模型开发过程包括需求定义、形式化描述、形式化转化、集成和系统测试。为了确认形式化规格说明与软件需求的一致性,往往以形式化规格说明为基础开发一个软件原型,用户可以从人机界面、系统主要功能和性能等几个方面对原型进行评审。必要时,可以修改软件需求、形式化规格说明和原型,直至原型被确认为止。这时软件开发人员即可对形式化的规格说明进行一系列的程序变换,直至生成计算机系统可以接受的目标代码。

形式化模型的优点:由于数学方法具有严密性和准确性,形式化方法开发过程所交付的软件系统具有较少的缺陷和较高的安全性。

形式化模型的缺点:

(1)开发人员需要具备一定技能并经过特殊训练后才能掌握形式化开发方法;

(2)现实应用的系统大多数是交互性强的软件,但是这些系统难以用形式化方法进行描述;

(3)形式化描述和转换是一项费时费力的工作,采用这种方法开发系统在成本和质量等方面并不占有优势。

6.请描述基于组建的开发模型的各个阶段及其优缺点。

答案要点:

基于组件的开发模型由软件的需求分析和定义、体系结构设计、构件库建立、应用软件构建,以及测试和发布5个阶段组成。基于组件的开发活动从标识候选组件开始,通过搜查已有组件库,

图2-4 基于组件的开发模型

确认所需要的组件是否已经存在。如果已经存在,则从组件库中提取出来复用;否则采用面向对象方法开发它。之后利用提取出来的组件通过语法和语义检查后将这些组件通过胶合代码组装到一起实现系统,这个过程是迭代的。

基于组件的开发模型的优点:

(1)充分体现了软件复用的思想,降低了开发风险和成本 ;

(2)可以快速交付所开发的软件 。

基于组件的开发模型的缺点:由于某些商业组件是不能进行修改的,系统的演化将受到一定程度的限制。

7.请说明软件过程的任务思维和过程思维的工作方法。

答案要点:

任务思维:整个软件开发过程像是一个混沌的“黑盒子”,软件需求必须在开发初期完全确定下来,用户的交互只能发生在悄悄地需求之时和产品发布之后。

过程思维:整个软件开发过程被划分成若干可管理的开发阶段,人们可以听见过程的声音,并让用户的声音与过程的声音相吻合。

8. 什么事软件过程制品,在软件需求、软件设计和软件实现各有哪些制品?

答案要点:

在软件过程的不同阶段,可能产生各种不同的软件制品,诸如需求规格说明、设计说明、源程序与构件、测试用例、用户手册以及各种开发管理文档等,下图列出了软件过程的一些基本活动以及所产生的主要过程制品。

(1) 软件需求的制品:

① 构想文档:

② 需求模型:

③ 软件需求规格说明:

(2) 软件设计:

① 软件体系结构文档:

② 设计模型:

(3) 软件实现:

图2-5 软件过程制品集

①源程序:

②目标代码:

③可执行构建:

五、设计题

1.对于下列每一个过程模型,分别列举一个可以适用的具体软件项目。

(1)瀑布模型

(2)快速原型模型

(3)增量模型

(4)形式化方法模型

(5)基于组件的开发模型

答案要点:

(1)瀑布模型

项目举例:某项目需要在一种新型机器上,为一种已知语言开发一个普通的编译器。

选用分析:由于该项目的语言是已知的,需求是明确的和稳定的,整个系统属于中小规模,因此适合采用瀑布模型进行软件开发。

(2)快速原型模型

项目举例:某公司需要给火车站开发一个交互式火车车次查询系统,这是火车站首次使用该系统。

选用分析:本项目的主要问题在于用户需要方面,该系统与最终用户的交互是十分关键的,但是在项目初期用户的需求基本上是不知道的,因此适合采用快速原型方法来确定用户需求,在需求确定的基础上再开发最终系统。

(3)增量模型

项目举例:某公司开发一个通用CAD软件产品,产品需求是逐步完善的,某些需求在一定范围内是明确的,某些需求需要进一步细化,但是迫于市场竞争的压力产品需要尽快上市。

选用分析:通用CAD软件产品具有一定的成熟度,总体需求和软件系统结构是可以确定的,但是实现该产品所有功能需要比较长的开发周期。为了尽快上市可以采用增量模型实行多版本的发布策略,既可以很快占领市场又可以为后续版本的需求定义奠定基础。

(4)形式化方法模型

项目举例:某公司开发一个汽车防抱死刹车控制系统。

选用分析:由于该系统对安全性和可靠性要求极高,需要在系统运行之前进行相关性能的检验,因此适合采用形式化方法开发该系统。

(5)基于组件的开发模型

项目举例:某公司开发企业管理ERP系统,包括销售、库存、生产、财务、物流、人力资源等部分,在系统实施过程中不同的企业具有一定的需求差异。

选用分析:企业ERP系统具有组件化的结构,在不同企业实施时应该尽量重用已有的组件,因此适合采用基于组件的开发模型开发该系统,在直接应用或者修改使用的基础上,最终进行组件开发和系统集成。

五、设计创新题

1.某大学准备开发一个新的学生注册选课系统,以替换一个现有的系统。请设计一个适

用于该系统开发的过程模型,并进一步描述该模型。

答案要点:

假设原有的学生注册课程系统是由学生手工提交书面选课单,教师手工提交成绩单,教务管理人员在客户端录入学生选课结果和课程成绩;而在新的选课系统中,所有用户在自己的计算机上通过Internet访问和操作该系统,该软件系统需要更新服务器和数据库等系统,并扩充一些新功能和提高系统性能。

从该系统的具体情况来看,系统的需求是比较容易明确的,整个系统的结构需要重新设计,但是原有的遗留系统中有些部分是可以重用的,因此我们可以采用组件模型实施软件开发:

(1)统需求分析:由于该系统是现有系统的扩展,因此首先可以经过一个简单的需求分析阶段,从而确定新系统的需求。

(2)遗留系统分析:在需求确定的基础上,开发人员分析遗留系统并研究新系统的总体结构,选择重用原有的课程信息管理部分,重新开发选课部分,必要时适当修改系统需求,最终确定系统需求和总体结构。

(3)设计开发阶段:开发人员进一步设计相关子系统,将原有的课程信息管理部分封装为子系统,重新开发学生选课子系统,并实现与外部付费系统的接口。

(4)系统测试阶段:开发人员将所有子系统集成在一起,交给测试人员开始全面的功能测试和性能测试。根据所报告的测试问题,开发人员调试和修改程序。

(5)系统交付阶段:测试通过后,开发人员将系统及其相关文档交付用户验收。

2.请举例说明不同的过程模型组合使用的情况。

答案要点:

在第3题中提到的企业管理 ERP 系统项目中,可以将快速原型方法、组件开发模型和增量模型组合在一起使用,即在需求分析阶段采用原型方法确定需求,采用组件化的结构设计整个系统,并采用增量方式逐步交付整个系统。

12

软件开发流程管理制度

软件开发流程管理制度 (讨论稿) 为加强对定制软件开发工作管理,缩短开发周期,提高软件开发质量,降低开发成本,提高定开发效率和效益,特制定软件开发流程管理制度。 第一章、总则 为保证日常工作正常有序的进行,让开发中各个环境更紧凑,更可控,需要尽可能实现项目管理的正规化,工作过程的流程化,以便提高软件质量,按期交付。 1、软件开发总体遵循项目管理和软件工程的基本原则。 2、项目管理涉及项目立项、项目计划和监控、配置管理。 3、软件工程涉及需求分析、系统设计、软件实现、系统测试、用户测试、试运行、系统验收、系统上线和数据迁移、产品维护。 第二章、阶段成果 根据软件工程的过程,制定以下工作流程,并规定了各个重要环节需要提交的交付物。各阶段需提交的文档: 1、立项:项目申请表,软件需求报告或设计方案。 2、需求分析:项目研发主计划、需求规格说明书 3、总体设计:概要设计说明书或功能模块描述 4、详细设计:详细设计说明书,包括软件接口说明、单元测试计

划。 5、软件实现:软件功能说明、源代码说明或者注释 6、产品测试:测试报告 7、产品发布:产品说明书、使用手册 8、产品维护:问题反馈记录 9、项目总结:提交客户方的项目总结和公司项目汇报的PPT。软件过程成果表:

第三章、岗位设置 根据公司目前的开发过程主要分为分析、开发、测试三个阶段。分析阶段完成用户需求文档的编写,系统总体设计的编写;开发阶段完成设计文档的编写,代码的编写、代码的维护。测试阶段完成系统的测试,测试文档及其他材料。通过逐渐的调整岗位,明确工作职责,逐步实现项目经理,软件设计师,程序员,测试工程师的岗位设置。

软件开发流程 论文

毕业设计(论文)题目:软件开发流程管理 班级:11工升 学号:1000303071 姓名: 指导教师: 2014年11月

摘要 从软件开发最初至今,不断地有新的软件开发技术产生,但是在软件开发能力和质量方面却始终存在达不到预计目标这一问题。每一个软件开发的最大目标,就是最大限度提高质量与生产率。而影响质量与生产率的三个关键因素:过程、人和技术,因此,我们除了提高技术能力,培养更多优质人才之外,还需要制定一套软件开发过程管理标准,并在软件开发过程中对这一标准不断地完善,以达到提高软件质量与生产率的目标。 本文结合CMM(软件过程成熟度模型),对软件开发、维护全过程进行标准化、规范化管理,制定出软件开发管理标准。 关键词:软件开发过程,管理标准

目录 第一章软件开发的概念及目的 (4) 第二章软件开发流程划分及开发环境 (4) 2.1.软件开发阶段划分 (4) 2.2.软件开发环境需求...........................................................错误!未定义书签。第三章软件开发过程中存在的问题............................................错误!未定义书签。 3.1.对用户方需求的掌握不全面...........................................错误!未定义书签。 3.2.对软件的价值认识不清晰...............................................错误!未定义书签。 3.3.跟用户方的合作不顺利...................................................错误!未定义书签。 3.4.开发队伍的结构不合理...................................................错误!未定义书签。 3.5.软件开发管理制度不健全...............................................错误!未定义书签。 3.6.开发团队人员不稳定.......................................................错误!未定义书签。第四章软件开发流程管理规范.. (10) 4.1.什么是CMM (10) 4.2.结合CMM制定开发流程管理方案 (11) 4.2.1软件项目生命周期模型...........................................错误!未定义书签。 4.2.2需求分析流程图及描述...........................................错误!未定义书签。 4.2.3设计流程图及描述...................................................错误!未定义书签。 4.2.4编码流程图及描述...................................................错误!未定义书签。 4.2.5测试流程图及描述...................................................错误!未定义书签。 4.2.6验收流程图及描述 (22) 第四章软件开发行业前景 (23) 参考文献..........................................................................................错误!未定义书签。

软件项目管理答案-第2章作业

习题:第二章-软件项目范围计划 一、选择题 1. 需求分析是回答系统必须( A )的问题 A. 做什么 B. 怎么做 C. 何时做 D. 为谁做 2. WBS(工作分解结构)非常重要,因为下列原因,除了(D ) A. 帮助组织工作 B. 防止遗漏工作 C. 为项目估算提供依据 D. 确定团队成员责任 3. 项目范围(C) A. 只在项目开始时重要 B. 在授权项目的合同或者其他文件得以批准后就不再重要了 C. 从项目概念阶段到收尾阶段都应该加以管理和控制 D. 是在项目执行阶段通过变更控制步骤进行处理的问题 4. 为了有效地管理项目,应该将工作分解为更小的部分,以下各项中,哪一项不能说明任务应该分解到什么程度?( C ) A. 可以在80小时内完成 B. 不能再进一步进行逻辑细分了 C. 可由一个人完成 D. 可以进行实际估算 5. 范围变更是指(C ) A. 修改技术规格 B. 对范围陈述进行修订 C. 对批准后的WBS进行修改 D. 以上都不是 6. 下面哪个不是需求管理的过程(A ) A. 需求设计 B. 需求获取 C. 需求分析 D. 需求变更 7. 下面那个不是创建WBS的方法(C ) A. 自顶向下 B. 自底向上

C. 控制方法 D. 模版指导 8. 任务分解可以( B ),它是范围变更的一项重要输入 A. 提供项目成本估算结果 B. 提供项目范围基线 C. 规定项目采用的过程 D. 提供项目的关键路径 9. 范围基线由(B )组成 A. 项目章程、批准的详细的项目范围说明书和WBS B. 批准的详细项目范围说明书、WBS和WBS字典 C. 项目章程、项目工作说明书和WBS D. WBS 二、判断题 10. 需求分析过程是确定项目如何实现的过程,并确定项目的技术方案(X ) 11. 对于一个重来没有做过的项目,开发WBS时,可以采用用自底向上的方法()

软件工程第二章软件过程

第二章:软件过程 目标: 软件工程和软件过程模型的概念; 了解3个一般的软件过程模型及何时使用它们; 了解软件需求工程,软件开发,测试和进化中所涉及的基本过程活动; 理解为什么软件过程要有效地组织以应对软件需求和设计上的变更; 了解Rational统一过程是如何集成好的软件过程实践来产生一个可适应的软件过程。 所有的软件过程都必须具有4种对软件工程来说是基本的活动。它们是: 1.软件描述:必须定义软件的功能以及软件操作上的约束。 2.软件设计和实现:必须生产符合描述的软件。 3.软件有效性验证:软件必须得到有效性验证,即确保软件是客户所想要的。 4.软件进化:软件必须进化以满足不断变化的客户需要。 2.1软件过程模型 一软件过程模型一般有 1.瀑布模型:该模型将基本的过程活动,描述,开发,有效性验证和进化,看成是一些界限分明的独立的过程阶段,例如,需求描述阶段,软件设计阶段,实现阶段,测试阶段,等等。 2.增量式开发:该方法使得描述活动,开发活动和有效性验证活动交织在一起。系统的开发是建立一系列的版本(增量),每个版本添加部分功能到先前的版本中。 3.面向复用的软件工程:该方法使得描述活动,开发活动和有效性验证活动交织在一起。系统开发过程着重于集成这些组件到新系统中,而非从头开发。 2.1.1瀑布模型 一瀑布模型中的主要阶段直接映射基本的开发活动: 1.需求分析和定义 2.系统和软件设计 3.实现和单元测试 4.集成和系统测试 5.运行和维护 二适合采用瀑布模型的时候 瀑布模型是与其他工程过程模型相一致的,在它的每个阶段都要生成文档。这使得过程是可见的,项目经理能够根据项目计划监控项目的过程。它的主要问题在于它将项目生硬地分解成这些清晰的阶段。关于需求的责任和义务一定要在过程的早期阶段清晰界定,而这又意味它对用户需求变更的响应较困难。 所以只有在对需求了解的好,而且在系统开发过程中不太可能发生重大改变的时候,适合采用瀑布模型。 瀑布模型的一个重要变形是形式化系统开发。针对系统描述创建其数学模型。然后采用能保持一致性的数学变换对该数学模型进行加工,知道产生可执行代码。 形式化的开发过程,如基于B方法特别适用于有严格安全性,可靠性或信息安全性需求的系统的开发。形式化方法简化了安全用例和信息安全性的需求。 基于形式变换的过程通常只用于开发安全性或信息安全性要求极高的一类系统。这需要非常专业的知识和技能。对于大多数系统,在系统开发中应用这一过程不会比其他方法带来明显

第二章软件开发工具知识点

一、选择填空知识点 1、软件开发中所遇到的困难来源于大系统的(复杂性),来源于人们知识的(不足),来源于迅速变化的(客观世界)。 2、为克服软件危机,人们先后提出了(结构化程序设计方法)(软件工程方法)(面向对象的程序设计方法)(即插即用的程序设计方法),直到最近的(面向开源软件)和(互联网平台的程序设计)。 3、在克服软件危机的过程中,有两个领域的问题需要特别注意,一个是(软件质量的评价与改善),一个是(项目管理的任务与方法)。 4、软件开发过程中主要完成两个转换,首先是从(用户)的理解到(程序员)的理解,其次是从(程序员的理解)到(程序的实现)。 5、两个转换中,第一个转换是(工作方式上)的区别,第二个转换是(人与机器之间思维方式上)的区别。 6、从程序员的理解到程序的实现的关键在于程序员的(知识水平)与(实际经验)。 7、如果单个程序员独自编写程序相当于手工作坊的工作方式,真正的大型软件的研制必须采用(现代化的大生产的方式)才能完成。 8、当人们修改程序的某一处时,由于没有考虑到这一修改对相关部分带来的影响,结果出现了新的错误,这就是所谓的(水波效应)。 9、在软件测试时,通过输入一些信息,观察是否能得到预期结果,这就是所谓的(黑箱)检验方法。 10、软件开发过程中,文档包括(功能说明书)(总体设计)(各模块的设计任务书)和(测试报告)。 11、软件版本更新中大量工作往往在于(审核)与(回顾)。 12、大型软件开发中,作为用户来说,应该承担的责任有(提出需求)(验收)(使用)(要求修改)。 13、大型软件开发中,作为项目负责任来说,应该承担的责任有(分析需求)(分配任务)(验收模块)(联调)(交付使用)(验收修改成果)(分析修改需求)。 14、大型软件开发中,作为程序员来说,应该承担的责任有(编写软件)(模块调试)(交付检验)(交付检验)(修改)。 15、软件开发中,涉及到的四个角色是(用户)(项目负责人)(程序员)(硬件)。 16、结构化程序设计的思想是在20世纪(60年代)产生的。 17、结构化程序设计方法中,把程序的结构分解成三种基本模块(处理单元)(循环机制)(二分决策机制)。 18、模块划分中,模块的功能在逻辑上尽可能地(单一化)(明确化),最好做到一一对应。 19、每一个模块实现一项明确的任务,反之每一项任务仅由一个模块来完成,这称之为模块的(凝聚性)。 20、模块划分中,模块之间的联系尽量避免(逻辑)耦合,而仅限于(数据)耦合。 21、模块的规模应当足够小,以便于本身的(调试)易于进行。 22、为更好的划分软件的结构,采用(自上而下、逐步分解)的办法,分成若干部分。

第2章 软件过程

第二章软件过程 【本章小结】 软件过程是软件工程人员为了获得软件产品在软件工具支持下实施的一系列软件工程活动,一般包括问题提出、软件需求说明、软件设计、软件实现、软件确认和软件演化等基本活动。 软件过程应该明确定义团队人员的工作和职责,所执行的活动及其顺序关系,以及活动的内容和步骤。 软件过程模型是对实际过程的抽象描述,描述了从问题提出到软件演化直到废弃,跨越整个生命周期的系统开发、运作和维护所实施的全部过程、活动和任务的结构框架,包括软件过程的活动、软件产品以及参与人员的不同角色。 常见的软件过程模型包括瀑布模型、快速原型模型、增量模型、螺旋模型、形式化方法模型、基于组件的开发模型等,每个软件开发组织应该选择适合于该组织的软件开发模型。 瀑布模型适用于在开发的早期阶段软件需求被完整确定的情况;快速原型模型适用于强调系统与用户的交互,且用户需求不明确的情况;增量模型适用于用户需求逐步细化的情况;螺旋模型由于强调风险分析,因此适用于庞大、复杂并具有高风险的系统开发;形式化方法模型适用于对安全性、可靠性和保密性要求极高的软件系统,这些系统需要在投入运行前进行验证;基于组件的开发模型开发具有组件化的结构的软件系统。 【习题与参考答案】 一、简要回答下列问题 1. 简述软件过程的定义。 软件过程是软件工程人员为了获得软件产品在软件工具支持下实施的一系列软件工程活动。包括过程定义、过程执行、过程结果及制品。 2. 软件过程包括哪些基本活动? 一般的软件过程包括问题提出、软件需求说明、软件设计、软件实现、软件确认和软件演化等基本活动。 3.请简要说明软件过程的概念和基本元素。 软件过程是软件工程人员为了获得软件产品在软件工具支持下实施的一系列软件工程活动,它应该明确定义以下元素:过程中所执行的活动及其顺序关系;每一个活动的内容和步骤;团队人员的工作和职责。 3.什么是软件过程制品? 在软件过程的不同阶段,可能产生各种不同的软件制品,诸如需求规格说明、设计说明、源程序与构件、测试用例、用户手册以及各种开发管理文档等,统称为软件过程制品。 4.什么叫软件过程模型,软件过程通常分为哪些基本活动? 软件过程模型抽象描述软件过程的整体框架,一般包括4个主要的基本过程: (1)问题提出:确定待开发系统的总体目标和范围。

第二章-软件过程复习课程

第二章软件过程 一、软件生命周期 软件生命周期(Life Cycle),也称生存周期,指软件产品从提出、产生、发展到成熟,直至衰亡的整个时间段。 软件生命周期的组成阶段: (1) 软件定义阶段:做什么?问题定义→可行性研究→需求分析 (2) 软件开发阶段:如何做?总体设计→详细设计→编码和单元测试→综合测试 (3) 运行维护阶段:纠错、适应性修改、增强性修改、预防性修改 二、软件过程的定义 当开发产品或构建系统时,遵循一系列可预测的步骤(路线图)是非常重要的,它有助于及时交付高质量的产品。 (1)所遵循的路线图就称为“软件过程”。 (2)软件过程贯穿软件开发的各阶段,并建立阶段里程碑(Milestones); (3)管理者在软件工程过程中需要对软件开发的质量、进度、成本进行评估、管理和控制; (4)技术人员在软件过程中需采用相应的方法和工具生成软件工程产品,如模型、文档、数据、报告、表格等。 三、软件过程的作用 软件开发过程的作用是: (1)成为开发组活动顺序的向导。 (2)详细说明需要开发哪些制品,何时开发。 (3)指导每一个成员及整个开发组的工作。 (4)提供监控、度量产品和活动所依据的准则。 —软件过程是软件项目管理控制的基础,它为项目提供稳定性、可控性和有组织性,能有效避免混乱。 —若没有一个良好定义的过程,开发组将各行其是,成功与否完全依赖个别优秀的人才,这不是能够长久的。 四、软件过程的组成要素(活动、动作、任务) 软件过程是工作产品构建时所执行的一系列活动、动作和任务的集合。 (1)活动(activity):实现宽泛的大目标。 (2)动作(action):阶段目标。 (3)任务(task):关注小而明确的目标,产生实际产品。 —软件过程由活动组成,活动由动作组成,动作由任务组成。 五、基本框架活动和典型的普适性活动 软件过程框架(process framework)定义了若干个框架活动,及一些适用于整个软件过程的普适性活动 1.基本框架活动 一个通用的软件工程过程框架通常会包含以下5个基本的框架活动: (1)沟通:在技术工作开始前,先和利益相关者进行沟通与协作,以理解项目目标,并收集需求。 (2)策划:制定项目计划,包括需要执行的技术任务、可能的风险、资源需求、工作产品、工作进度计划等。 (3)建模:构思软件的体系结构、构件如何结合等。(4)构建:包括编码和测试。 (5)部署:交付全部软件或部分增量,由用户使用并反馈意见。

相关文档
最新文档