统一过程

软件的生命周期就好比人的生命周期——从婴儿时期,幼儿时期,少年时期,青年时期,中年时期到老年时期以及最后死亡的过程一样,软件也有从生产期消亡期的过程。而统一过程就是在软件生命周期过程中以用例为驱动、构架为中心来进行一次一次的增量式的迭代,每次迭代都是以上一次迭代为基础并生成包括构件的源代码体、需求说明、测试用例等的制品。每次的迭代又具体分为四个阶段:初始、细化、提交和转移,而在每个阶段又分为多个工作流:需求、分析、设计、实现和测试等。统一过程模型是基于面向对象方法和UML统一建模语言的,用这种方法论来指导软件开发主要可以解决两个问题:

  • 软件复用问题
  • 需求变化问题。

1.软件过程:

将用户需求转化为软件系统所需要的活动的集合。

2.统一过程:

不仅仅是一个简单的软件过程,而是一个通用的过程框架,可用于不同类型的应用系统、各种不同的应用领域、各种不同类型的组织、各种不同功能和规模的项目。它是基于构件(Component-based)的,即所构造的软件系统是由软件构件通过明确定义的接口相互链接所建造起来的。并且它使用统一建模语言(Unified Modeling Language,UML)来制定系统的所有蓝图。

统一软件过程的特点:用例驱动、以构架为中心、迭代和增量的软件过程框架。

(1)统一过程是用例驱动的

用户(User) :软件系统是为了解决用户的需求的,因此对于一个系统必须首先确定它的用户(User),即参与者。这个User不仅仅指人,也可以是其他系统。即用户是与系统进行交互的事物。
用例(User Case) :是用户对系统的业务需求,即用例是能够像用户提供有价值结果的系统中的一种功能。
所有的用户和用例组合在一起就是用例模型,它描述了系统的全部功能。用例图促使我们从系统对用户的价值方面来考虑问题,是站在用户的角度出发,以人为本。并且用例图不仅能确定用户的需求,还可以驱动系统设计、实现和测试的进行,也就是说用例可以驱动开发过程。用例驱动表明开发过程是沿着一个流——一系列从用例得到的工作流前进的:用例被确定、用例被设计、最后用例又称为测试人员构造测试用例的基础

(2)统一过程是以构架为中心的

什么是软件构架?
软件构架的作用与建筑构架所起的作用类似。软件系统的构架是从不同的角度描述即将构造的系统。

注意:软件架构(software architecture),是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。它描述的对象是直接构成系统的抽象组件,各个组件之间的连接明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,在面向对象领域中,组件之间的连接通常用接口来实现。
软件构架包含了系统中最重要的静态和动态特征。构架刻画了系统的整体设计,去掉了细节部分,突出了系统的重要特性,然而“究竟什么是重要的”部分依赖于判断,而判断由来自于经验,所以构架的价值也就依赖于执行该任务的人的素质,在构架的过程中可以帮助构架师确定正确的目标。

用例和架构之间是什么关系?
每一种产品都具有功能和表现形式两个方面,其中功能与用例相对应,表现形式与构架相对应。因此用例在实现时必须适应于构架,然而随着系统的发展,用例也在不断的进化,所以构架必须设计得使系统能够进化,不仅要考虑系统的初始开发,而且要考虑将来的发展。为了能够找到这样的一种表现形式(构架),构架师必须从全面了解系统的主要功能(即主要用例)入手,这些主要的用例构成了系统的核心功能。

构架应该遵循什么步骤?
首先,从不是专门针对用例的那部分架构开始,如平台,创建一个粗略的构架轮廓。
其次,着手处理已经确定重要的用例子集,这些用例代表着即将开发系统的主要功能,详细描述每一个用例,并通过子系统、类和构件来实现。随着用例的描述趋于完善,构架的更多部分便会显现出来,从而也使更多的用例趋于完善。
最后,迭代这个工程直到确信得到一个稳定的构架为止。

(4)统一过程是迭代和增量的过程

软降开发是一项复杂的过程,因此可以将这些项目划分为切实可行并能够产生一个增量的迭代过程。

什么是迭代和增量?
迭代:工作流中的步骤;
增量:产品中增加的部分。

迭代的原则是什么?
为了获得最佳的效果,迭代过程必须是受控的(Controlled),也就是说他们必须按照计划好的步骤有选择地执行。

如何确定迭代过程中要实现的目标呢?
首先迭代过程就是用来处理一组用例的,这些用例组合起来就能够扩展所开发产品的可用性。其次迭代过程要解决最突出的风险问题。只有这样后续的迭代过程才能建立在前一次迭代过程的基础上。

迭代的过程是什么?
以选定的构架为向导,用构件来实现设计前期已经标识并详细描述好的有关用例。如果一次迭代达到了目的,就可以进入下一次迭代,如果一次迭代没有带到预期的目标,那么必须重新审核前面的方法,并尝试一种新的方法。

对增量的理解
一个增量不一定是对原有制品的增加,在生命周期初始期,增量是对最初简单设计的完善和改进;而在以后的阶段增量通常是对原有制品的增加。

3.统一过程的软件生命周期

统一过程的软件生命周期就是从软件的产生到消亡期间进行的一次次迭代,每次迭代都会产生一个产品版本,并且本次迭代是基于上次迭代的。

(1)什么是产品?

产品是包括由能够编译和运行的构件的源代码体、各种手册和交付品。它不仅能够运行还需要满足客户和产品相关人员的需求。

(2)统一开发过程中的产品所依赖的模型有哪些?

产品就是软件系统的一个构件,但是只有这些是仅仅不够的,因为环境(操作系统、数据库系统)在变化,此外随着更好的理解任务,需求本身也在变化。因此统一开发过程中每次迭代要依据一些模型来产生产品。如下图:


在这里插入图片描述

用例模型: 包含用例与用户之间的关系
分析模型: 更详细的提炼用例,将系统的行为初步分配给提供行为的一组对象
设计模型: 将系统静态结构定义为子系统、类和接口,并定义由子系统、类和接口之间的协作所实现的用例。
实现模型: 包括构件(表现为源代码)和类到构件的映射。
实施模型: 定义计算机的物理节点和构件到这些节点的映射。
测试模型: 描述用于验证用例的测试用例。
业务模型: 描述系统业务预警的领域模型。

所有的这些模型都是相关的,它们合起来表示整个系统。由上图从上往下看,下面的模型对上面的模型有跟踪依赖关系。这有利于系统的理解和修改。

(3)统一开发过程每次迭代都包含哪些阶段?

每次迭代分为四个阶段:初始细化构造移交

每次迭代都要经历一定的时间,这个迭代的时间又可以分为四个阶段:初始、细化、构造和移交。而在每个阶段,管理人员或开发人员又可以将本阶段的工作进一步划分为多次迭代过程以及每次迭代过程所产生的增量。每个阶段都以一个里程碑作为结束标记,并可以获得一组可用的制品来定义每个里程碑。

里程碑有什么作用?
里程碑的关键用途是能够帮助管理人员在进入下一个阶段之前据此作出某些意义重大的决定。还可以跟踪每个阶段所投入的时间和其他开销。这些对项目的控制和发展都是很有用的。

(4)每次迭代的阶段都要进行哪些工作?

迭代的每个阶段通常又进一步细分为多次迭代过程,一次典型的迭代阶段(初始、细化、构造、移交)都要经历多种工作流:需求、分析、设计、实现和测试

在这里插入图片描述

(5)每个阶段的主要任务是什么?

初始阶段(inception phase)
主要回答下列问题:

  • 系统向每个主要用户提供什么基本功能?(确定参与者和用例)
  • 该系统的基本粗略构架是什么?(包括主要子系统的大致轮廓)
  • 开发该产品的计划是什么?
  • 开销多大?(可行性分析)

这个阶段最主要的是确定项目的风险及其优先次序,并对细化阶段进行详细规划和对整个项目进行粗略计算。

细化阶段(elaborattion phase)
根据主要的用例描述设计出详细的系统构架。构架包括了用例模型、分析模型、设计模型、实现模型(包含一些构件)和实施模型的视图。
这个阶段主要是解决用例、构架和计划是否足够稳定可靠,风险释放得到充分控制,以便能够按照合同的规定完成整个开发任务。

构造阶段(construction phase)
将构造出最终产品。

移交阶段(transition phase)
包括产品进入beta版后的整个阶段。开发人员改正用户报告产品的缺陷和不足。

4.总结

统一过程是基于构件的,它采用新的可视化建模标准,即统一建模语言(UML),它依赖三个关键概念——用例驱动、以构架为中心及迭代和增量式的开发。为了使这些概念能够发挥作用,需要一个包括多个方面的过程,而统一过程就是一个考虑到生命周期、阶段、工作流、风险缓解、质量监控、项目管理和配置管理的软件开发过程。在这个过程中以用例驱动,以构架为中心以及迭代和增量开发的概念是同等重要的。构架提供了一种结构来指导迭代过程中的工作,而用例则确定了目标并驱动每次迭代的工作 ,去掉三个主要概念中的任何一个,都会严重降低统一过程的价值。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容