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