团队与软件开发模型-团队2
2009-07-17 07:34
204 查看
Csdn c++学习小组 张进昌 杜万智 王锴
一.软件开发模型
[align=left]A.软件开发模型包括的范围及作用[/align]
[align=left]软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。[/align]
[align=left]软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。[/align]
[align=left]B.典型开发模型的应用及优缺点[/align]
[align=left]典型的开发模型有:[/align]
[align=left]1. 边做边改模型(Build-and-Fix Model)[/align]
[align=left]许多产品都是使用"边做边改"模型来开发的,没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改,知道客户满意为止。[/align]
[align=left]2. 瀑布模型(Waterfall Model)[/align]
[align=left]瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,逐级下落。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。[/align]
[align=left]3. 快速原型模型(Rapid Prototype Model)[/align]
[align=left]快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。[/align]
[align=left]4. 增量模型(Incremental Model)[/align]
[align=left]增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。[/align]
[align=left]5.螺旋模型(Spiral Model)[/align]
[align=left]将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。[/align]
[align=left]螺旋模型沿着螺线进行若干次迭代,每次迭代包括以下活动:[/align]
[align=left](1) 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;[/align]
[align=left](2) 风险分析:分析评估所选方案,考虑如何识别和消除风险;[/align]
[align=left](3) 实施工程:实施软件开发和验证;[/align]
[align=left](4) 客户评估:评价开发工作,提出修正建议,制定下一步计划。[/align]
[align=left]6.演化模型(incremental model)[/align]
[align=left]主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,软件开发人员根据用户的需求,首先开发核心系统。当该核心系统投入运行后,软件开发人员根据用户的反馈,实施开发的迭代过程。第一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。[/align]
[align=left]7.喷泉模型(fountain model, (面向对象的生存期模型, OO模型))[/align]
[align=left]喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。[/align]
[align=left]8.智能模型(四代技术(4GL))[/align]
[align=left]智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。目前主要限于事务信息系统的中、小型应用程序的开发。[/align]
[align=left]9.混合模型(hybrid model)[/align]
[align=left]过程开发模型又叫混合模型(hybrid model),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。[/align]
10.统一软件过程RUP模型
整个软件开发时间被分解为四个顺序的阶段,分别是:
初始阶段 b细化阶段 c构造阶段 d交付阶段
A初始阶段的目标是为系统建立商业案例并确定项目的边界。
细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。
C在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。
D交付阶段的重点是确保软件对最终用户是可用的。
11. 极限编程 敏捷开发模型
极限编程诞生于一种加强开发者与用户的沟通需求,让客户全面参与软件的开发设计,保证变化的需求及时得到修正。核心是先给客户一个软件未来的模型,测试用户满意度,再进行软件开发。
敏捷就是“快”,快才可以适应目前社会的快节奏;要快就要发挥个人的个性思维多一些,个性思维的增多,虽然通过结队编程、代码共有、团队替补等方式减少个人对软件的影响力,但也会造成软件开发继承性的下降,因此敏捷开发是一个新的思路,但不是软件开发的终极选择。对于长时间、人数众多的大型软件应用的开发,文档的管理与衔接作用还是不可替代的。
[align=left]各种模型的比较[/align]
[align=left]每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点。[/align]
[align=left][/align]
[align=left][/align]
一.软件开发模型
[align=left]A.软件开发模型包括的范围及作用[/align]
[align=left]软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。[/align]
[align=left]软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。[/align]
[align=left]B.典型开发模型的应用及优缺点[/align]
[align=left]典型的开发模型有:[/align]
[align=left]1. 边做边改模型(Build-and-Fix Model)[/align]
[align=left]许多产品都是使用"边做边改"模型来开发的,没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改,知道客户满意为止。[/align]
[align=left]2. 瀑布模型(Waterfall Model)[/align]
[align=left]瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,逐级下落。当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。[/align]
[align=left]3. 快速原型模型(Rapid Prototype Model)[/align]
[align=left]快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。[/align]
[align=left]4. 增量模型(Incremental Model)[/align]
[align=left]增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。[/align]
[align=left]5.螺旋模型(Spiral Model)[/align]
[align=left]将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。[/align]
[align=left]螺旋模型沿着螺线进行若干次迭代,每次迭代包括以下活动:[/align]
[align=left](1) 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;[/align]
[align=left](2) 风险分析:分析评估所选方案,考虑如何识别和消除风险;[/align]
[align=left](3) 实施工程:实施软件开发和验证;[/align]
[align=left](4) 客户评估:评价开发工作,提出修正建议,制定下一步计划。[/align]
[align=left]6.演化模型(incremental model)[/align]
[align=left]主要针对事先不能完整定义需求的软件开发。用户可以给出待开发系统的核心需求,软件开发人员根据用户的需求,首先开发核心系统。当该核心系统投入运行后,软件开发人员根据用户的反馈,实施开发的迭代过程。第一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管理的子集。[/align]
[align=left]7.喷泉模型(fountain model, (面向对象的生存期模型, OO模型))[/align]
[align=left]喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复,而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来,可以落在中间,也可以落在最底部。[/align]
[align=left]8.智能模型(四代技术(4GL))[/align]
[align=left]智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、代码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性,并把开发人员定义的这些软件自动地生成为源代码。目前主要限于事务信息系统的中、小型应用程序的开发。[/align]
[align=left]9.混合模型(hybrid model)[/align]
[align=left]过程开发模型又叫混合模型(hybrid model),或元模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展,这就是过程开发模型(或混合模型)。[/align]
10.统一软件过程RUP模型
整个软件开发时间被分解为四个顺序的阶段,分别是:
初始阶段 b细化阶段 c构造阶段 d交付阶段
A初始阶段的目标是为系统建立商业案例并确定项目的边界。
细化阶段的目标是分析问题领域,建立健全的体系结构基础,编制项目计划,淘汰项目中最高风险的元素。
C在构建阶段,所有剩余的构件和应用程序功能被开发并集成为产品,所有的功能被详细测试。
D交付阶段的重点是确保软件对最终用户是可用的。
11. 极限编程 敏捷开发模型
极限编程诞生于一种加强开发者与用户的沟通需求,让客户全面参与软件的开发设计,保证变化的需求及时得到修正。核心是先给客户一个软件未来的模型,测试用户满意度,再进行软件开发。
敏捷就是“快”,快才可以适应目前社会的快节奏;要快就要发挥个人的个性思维多一些,个性思维的增多,虽然通过结队编程、代码共有、团队替补等方式减少个人对软件的影响力,但也会造成软件开发继承性的下降,因此敏捷开发是一个新的思路,但不是软件开发的终极选择。对于长时间、人数众多的大型软件应用的开发,文档的管理与衔接作用还是不可替代的。
[align=left]各种模型的比较[/align]
[align=left]每个软件开发组织应该选择适合于该组织的软件开发模型,并且应该随着当前正在开发的特定产品特性而变化,以减小所选模型的缺点,充分利用其优点。[/align]
[align=left]模型[/align] | [align=left]优点[/align] | [align=left]缺点[/align] |
[align=left]瀑布模型[/align] | [align=left]文档驱动[/align] | [align=left]系统可能不满足客户的需求,文档处理工作量大[/align] |
[align=left]快速原型模型[/align] | [align=left]关注满足客户需求[/align] | [align=left]可能导致系统设计差、效率低,难于维护[/align] |
[align=left]增量模型[/align] | [align=left]开发早期反馈及时,易于维护[/align] | [align=left]需要开放式体系结构,可能会设计差、效率低[/align] |
[align=left]螺旋模型[/align] | [align=left]风险驱动[/align] | [align=left]风险分析人员需要有经验且经过充分训练[/align] |
统一软件过程RUP模型 [align=left] [/align] | 简洁和清晰的过程结构,为开发提供较大的通用性。 | [align=left]只是一个开发过程,并没有涵盖软件过程的全部内容[/align] |
敏捷软件开发模型 | [align=left]速度快效率高[/align] | [align=left]个性思维的增多导致软件开发继承性下降[/align] |
二.软件开发团队模型 |
有效的软件项目团队由担当各种角色的人员所组成。每位成员扮演一个或多个角色;可能一个人专门负责项目管理,而另一些人则积极地参与系统的设计与实现。常见的一些项目角色包括: · 分析师 · 策划师 · 数据库管理员 · 设计师 · 操作/支持工程师 · 程序员 · 项目经理 · 项目赞助者 · 质量保证工程师 · 需求分析师 · 主题专家(用户) · 测试人员 A.按团队组成分 l 垂直团队组织 以垂直方案组织的团队由多面手组成,每个成员都充当多重角色。以水平方案组织的团队由专家组成,每个成员充当一到两个角色。以混合方案组织的团队既包括多面手,又包括专家。 l 水平团队组织 水平团队由专家组成。此类团队同时处理多个用例,每个成员都从事用例中有关其自身的方面。 l 混合团队组织 混合团队由专家和多面手共同组成。多面手继续操作一个用例的整个开发过程,支持并处理多个使用例中各部分的专家们一起工作。 B.按团队目标分: 通常有4种类型的项目小组(团队),每一种都有其特殊的要求和目标。4种团队分别是: l 战术型团队:其工作是做某件事情,关键是遵循计划,需要良好定义的规划和过程; l 问题解决型团队:其工作是去定位某事情,关键是解决问题,需要已经定义好的规则和信任; l 创新型团队:其工作是去创造某事情,关键是创造新事物,需要自由,不受约束; l 学习型团队:其工作是去学习某事情,关键是构建可理解的模型,需要一致的、共享的模型。(是研究型组织)。 |
[align=left][/align]
相关文章推荐
- 团队与软件开发模型
- 团队与软件开发模型-团队1
- 『程序员』 [.Net]微软软件开发过程与团队模型
- 团队与软件开发模型
- 苍狼敏捷软件开发团队建设指南-1-团队模型
- 软件开发和团队”最小模式”初探2-6人模型(上)
- (转)软件开发和团队”最小模式”初探2-6人模型(上)
- (转)软件开发和团队”最小模式”初探2-6人模型(下)
- 微软软件开发过程与团队模型
- 软件开发和团队”最小模式”初探2-6人模型(下)
- 软件开发和团队”最小模式”初探2-6人模型
- 微软软件开发过程与团队模型
- 『程序员』 [.Net]微软软件开发过程与团队模型
- .Net微软软件开发过程与团队模型
- 常见的软件开发模型
- 关于软件开发团队的一些思考
- 常用软件开发过程模型比较
- 敏捷软件开发过程模型
- 基于架构驱动的软件开发模型
- 高质高效软件开发组织能力模型