前言:
在 计算机诞生的年代,计算机是一种 只有天才才能掌握的工具。人们对软件的 认知仅仅停留在程序的层面上,所谓的软件开发就是那些能够掌握计算机的天才们写的一些只有计算机才能理解的二进制序列 。但是随着技术的发展,软件的复杂度不断提高,人们进入了大规模软件开发时代。这时候,人们发现,软件系统已经变得非常复杂,需要遵循一定的开发方法才能取得成功,于是称这些模式化的开发方法为开发模型。
统一过程:
统一过程(Unified Process,UP)是由Rational公司开发的一种迭代的软件过程,是一个优秀的软件开发模型,它提供了完整的开发过程解决方案,可以有效地降低软件开发过程的风险,经过裁剪的UP可以适应各种规模的团队的系统。
UP的二位模型
UP是一个很有特色的模型,它本身是一个二维的结构,对于UP而言,时间主线就是横轴的阶段,随着时间的流逝,软件开发活动总要经过初始、细化、构建和交付4个阶段方能完成。而纵轴的工作流程则描述了在不同的阶段需要进行的主要工作。例如在初始阶段,软件组织需要进行大量的调研,对软件进行业务建模、需求,同时进行一些设计以验证建模的合理性,还要进行一些实施甚至测试和部署的工作,用以验证需求和设计的工作以及开发系统原型,当然配置与变更管理、项目管理和环境是在任何阶段都是不能缺少的。
从这个模型中可以看出UP迭代的特点。任何一个阶段的工作都不是绝对的,都是相互交叠配合的。但是每一个阶段都是有其侧重点。
在初始阶段,开发者刚刚接入系统,此时最重要的工作是界定系统范围,明确系统目的。在这一阶段,业务建模和需求工作成了重头戏。
在细化阶段,开发者需要抽象出软件的逻辑模型,设计出软件的架构,在这一阶段,分析设计工作是最重要的工程活动。
在构建简单,开发者需要基本完成 系统的构建,使之成为一个完整的实体,并且进行测试和部署,在这一阶段,实施和测试是最主要的活动。
当进入交付阶段(该阶段也经常被称为转移阶段),软件系统需求已经完全成熟或产品化,或进入下一个版本。在这一阶段不可避免地要对软件系统进行重构、修改、测试和部署
在这四个阶段中,各有侧重点,但是也不是像瀑布模型那样完全不允许其他活动的存在。在初始阶段,为了验证开发者的想法,就需要进行一部分的实施和测试;而即使到了交付阶段,需要也可能会发生变化,仍然需要进行部分业务建模、需求和设计的活动。
在每个阶段中,系统推进不是一蹴而就的。在上图中将细化阶段分为第一细化和第二次细化,将构建阶段也划分为3个小阶段。在实际开发 中,可以根据实际的需要划分为更多的小阶段来完成。
对于纵轴而言,业务建模、需求、分析设计、实施、测试、部署、配置与变更管理、项目管理、环境称为UP的9个核心工作流。可以把9个工作流进行简单的分类以帮助理解,业务建模、需求、分析设计、实施、测试和部署是工程活动,而配置与变更管理、项目管理和环境是管理活动。
在这9个工作流中,前8个可以说是绝大多数人耳熟能详的东西,而环境工作流则相对难以理解的。环境工作流很重要,也可称之为环境管理。在软件开发中,需要为各种工作准备相应的工作环境,在工作环境中需要包含必要的工具、活动的指南、活动的流程规范、工作产品的模板、基本的开发设施等。在很多组织中,环境工作流没有得到相应的重视,或者完全被忽视,以为为开发者提供工作台和计算机就万事大吉了,其实这种做法是错误的。每一个开发团队都有自己特定的活动准则和规范,这些准则和规范是团体协作的基础,万不可缺少的。没有合理的工具配备,没有充分的指南、规范和模板,软件开发的活动肯定是放羊式的管理,管理者除了一些羊毛之外,什么也收获不了。观察UP模型就可以发现,在每一阶段的最开始,环境工作流都有一个小小的波峰。在这里面,开发团队需要为开发环境进行 相应的准备并在后续活动中为开发环境提供技术的支持。
UP的生命周期
上面已经提到,UP模型的时间主线是阶段,UP的生命周期也是与阶段一一对应的。在UP的生命周期中共有4个里程碑。
目标里程碑:
目标里程碑对应着先启用阶段的结束,当开发者可以明确软件系统的目标和范围时即达到了里程碑。
架构里程碑:
架构里程碑是UP生命周期中的第二个里程碑,在这个里程碑前,开发者需要明确稳定的系统架构。
能力里程碑:
当系统已经足够的稳定和成熟并完成Alpha测试之后,认为达到了第3个里程碑
发布里程碑:
在达到发布里程碑 之前,需要完成 系统的测试,完成系统发布和用户培训等工作
在经过这四个里程碑之后,即为一个完整的生命周期,开发出一个新的版本。此时可以关闭该产品的开发,也可以迭代进入下一个版本
UP的特点
UP是一个特点鲜明的开发模型,下面列出UP的一些特点:
- UP是一个迭代的二位开发模型,在生命周期的每一个阶段都可以进行需求、设计等活动。UP不但给出了迭代的生命周期,还给出了生命周期每一阶段的迭代指南。
- 采用不同的迭代方式的UP可以演变为演化模型或 增量模型
- UP的迭代特点使得更容易控制软件开发的风险
- 虽然UP是一个迭代的开发模型,但是UP本身并不属于敏捷方法。相反的,一般认为,未经过裁剪的UP是一个重载的过程。
- 在实际应用中可以根据具体问题对UP进行裁剪,从而使得可以适应各种规模的软件和开发团队。
架构设计师在UP中的活动
架构师在UP活动中承担着非常重要的角色。在UP中,架构设计师除了需要建立系统架构模型外,还需要:
- 同需求人员和项目管理人员密切协作
- 细化软件架构
- 保持整个架构的概念完整性。具体的说,架构师不但需要设计系统架构,还需要定义设计方法,设计指南、编码指南、评审设计等工作。因此,有人也称UP是一个以架构为中心的开发模型