随着现代信息产业的蓬勃发展,软件开发已经成为一项浩大繁复的工程。就象是建造一座宏伟的宫殿,从计划、设计到施工,每一个环节都必须严格把关,稍有不慎,整个工程就会失败。据统计,仅在美国,每年就有180,000个信息技术项目,耗资大约$2500亿美元,其中25-30%的项目会流产。由此可见,由于管理不善和设计上的失误所造成的损失是巨大的。现代软件开发的管理和方法论显得比以往任何时候都更为重要。
软件开发的过程由方法论和工具构成(process = methodology + tools)。正如装配电子设备一样,仅有工具就可以胜任装配任务。但为了减少失误和提高效率,人们往往采用流水线作业,流水线作业便是一种应用于电子设备装配中的方法论。目前,信息技术市场流行的方法论有RUP(Rational Unified Process), The Zachman Framework, XP(Extreme Programming)等。在这些方法论中,最流行的要数RUP。RUP是由Rational Software公司首创的。因它与当前流行的JAVA, J2EE技术和面向对象的设计思想(OOAD)紧密的结合在一起,所以在大型的信息技术项目中得到了广泛的应用。在这篇文章中,我们试图对RUP的特点作一个初步的探讨,并且讨论它是如何贯穿在整个软件开发的生命周期之中的。
RUP最重要的它有三大特点:1)软件开发是一个叠代过程,2)软件开发是由Use Case驱动的,3)软件开发是以构架设计(Architectural Design)为中心的。
按照传统的瀑布(Waterfall)开发模式,软件开发大致经历如下几个步骤:商务需求分析(Business Requirement Analysis),系统分析(System Analysis),系统设计(System Design),开发实现(Implementation),测试(Test),发布(Deployment),系统支持(Supporting)和系统变更管理(Change Management)。
传统的瀑布开发模式假定在进行新的开发过程时,上一个过程已经完成,而且不会回到上一个过程。初看起来,这似乎是一个非常合理,高效率的解决方案,但20多年的实践证明,这个开发模式存在着很大的弊病,原因是软件开发是一个非常复杂的工程,有诸多的因素影响工程的效率和成败。软件开发需要许多不同背景的个人和团队参与。由于这些复杂性,在软件开发的整个生命周期中每一个阶段都有可能留下隐患和错误。如果等到系统已经开发实现完毕,在测试阶段发现了重大问题,这时的返工将会造成人力、物力、财力及时间上的巨大浪费。鉴于以上的考虑,RUP强调软件开发是一个叠代模型(Iterative Model),RUP定义了四个阶段(Phase):开端(Inception),阐述(Elaboration),建造(Construction),过渡(Transition)。其中每个阶段都有可能经历以上所提到的从商务需求分析开始的各个步骤,只是每个步骤的高峰期会发生在相应的阶段。例如开发实现的高峰期是发生在建造阶段。实际上这样的一个开发方法论是一个二维模型。这种叠代模型的实现在很大程度上提供了及早发现隐患和错误的机会,因此被现代大型信息技术项目所采用。
RUP 的另一大特征是Use Case 驱动。Use Case是RUP方法论中一个非常重要的概念。简单地说,一个Use Case就是系统的一个功能。例如在一个基于电子商务的医疗系统中,病人可以坐在家里通过网上浏览器与医生约定看病的时间(Make appointment),这样,“Make appointment”就是系统的一个Use Case。在系统分析和系统设计中,Use Case被用来将一个复杂的庞大系统分割、定义成一个个小的单元,这个小的单元就是Use Case,然后以每个小的单元为对象进行开发。按照RUP, Use Case贯穿整个软件开发的生命周期。在商务需求分析中,客户或用户对Use Case进行描述,在系统分布和系统设计过程中,设计师对Use Case进行分析,在开发实现过程中,开发编程人员对Use Case进行实现,在测试过程中,测试人员对Use Case进行检验。
RUP的第三大特征是它强调软件开发是以构架为中心的。构架设计(Architectural Design)是系统设计的一个重要组成部分。在构架设计过程中,设计师(Architect)必须完成对技术和运行平台的选取,整个项目的基础框架(Framework)的设计,完成对公共组件的设计,如审计(Auditing)系统,日志(Log)系统,错误处理(Exception Handling)系统,安全(Security)系统等。设计师必须对系统的可扩展性(Extensibility),安全性(Security),可维护性(Maintainability),可延拓性(Scalability),可重用性(Reusability)和运行速度(Performance)提出可行的解决方案。
文章来源于领测软件测试网 https://www.ltesting.net/