NO PAINS,NO GAINS

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
本文来自 Rational Edge :RUP 的专家解释了被软件开发项目成员需要的职责和观点上的改变,并且介绍了成功的从传统的瀑布型方法向迭代方法转变的客户案例。

 成功的采用迭代开发方法的实践不仅仅需要部署一系列的新技术,也需要改变团队协作的方式和团队成员的职责。在本文中,我们将会了解到被软件开发项目成员需要的职责和观点上的改变,并且介绍了成功的从传统的瀑布型方法向迭代方法转变的客户案例。

  广泛的引用这些变化作为一种“新的思想”,我们将关注软件开发项目中的不同个体角色:

  分析人员主要负责与客户交互和需求。
  开发人员主要负责设计、实现和单元测试。
  测试人员主要负责功能、性能和系统测试。
  项目经理主要负责持续的项目团队的跟踪并关注关键的交付产物。
  质量保证和方法专家负责质量标准和最佳实践。
  客户负责澄清他们的业务需求关心什么样的能力。

  分析人员的新思想.

  在传统的瀑布型的方法中,分析人员与用户和项目团队之外的涉众打交道。目标是理解并开发一个代表了一系列需求的方案,文档化这些需求然后将这些需求文档交给开发团队。一些开发组织用一种“未来”状态的长列表来详细说明需求;另一些组织在高层次上表达需求,为解释需求保留了很大的空间。在这两种情况下,必须有这样的假设,分析人员既要了解业务又要了解用户,并且这个分析人员应该是指定系统应该具有什么功能的人。

  一旦分析人员文档化了需求,他或者她就会要求用户来检查这些需求文档(甚至如果他们不能完全理解用来表达需求的技术语言,并且/或者他们不能通过可视化的方法来表示当系统被实现时许多需求是如何满足用户的需要的)。然后,实现需求规格说明就是开发人员的工作了。典型的,不论是开发人员还是测试人员都没有参与到阐述需求的工作中。并且一旦需求被规格化,很少会有在分析人员与设计人员之间的积极的交互。分析人员只是简单的阐明需求说明书中包含的内容。

  这种传统的模型在某些方面的缺陷将在下面被解释。

  分析人员不应该孤立的指定需求

  首先, 瀑布型的方法失败的认识到客户、开发人员和测试人员参与需求说明工作的价值。没有对业务和技术拥有优秀的理解将不可能创建出能够改进你的业务的软件系统。不幸的是,很少有人同时在业务和技术领域具有深厚的知识背景。这就意味着,分析人员、开发人员、测试人员和客户应该一起工作提供需要的所有的信息以确保开发人员可以创建“正确的”软件系统 — 也就是说,一个充分满足客户业务需要并且提供从根本上有效的改进客户业务的能力的软件。

  让我们来看一个简单的例子以说明这样的团队协作的好处。

  例子:基于 Web 的航班预约系统

  我们假设一个分析人员负责对这个基于 Web 的自助服务的航班预约系统的需求工作。这个分析人员指定用户将提供一个航班的代码并指明行程的开始地和目的地。如果用户不知道航班代码,他们可以通过提供城市名字进行查询。然后,这个分析人员指定,在用户预定了一个指定的航班后,他们将会得到关于如何联系不同的代理以预约到达目的地时的地面交通工具。

  当设计人员检查系统需求时,他回想起曾经看到过一个能够提供部分功能的并且经过证明的Web 服务的方案。这个低成本的服务允许用户导航机场的地图显示并快速的找到符合他们需要的机场,甚至假如用户不熟悉他们的目的地城市或者不熟悉目的地的地区的机场。

  在与客户验证了策略后,分析人员和设计人员对需求作了改动以包含这个 Web 服务的实现。然后,在几天的开发工作后,设计人员发现了这个服务的另一特性:当用户选择了一个机场时,他们会自动的收到一个机场信息的列表,信息中包括可得到的地面交通工具的模式和对每种模式预定的容量。设计人员和分析人员与客户和项目经理讨论了这个发现,大家都同意合并这个额外的 Web 服务的特性到他们的新系统中,代替他们原来指定的创建一个地面交通引用的特性。

  就像你从这个简单的例子中所看到的那样,在项目的早期阶段就让设计人员/开发人员参与到需求中能够带来巨大的好处。他们中的每一个人都可以建议分析人员或者最终用户考虑不到的能力和方案。当然,衡量预期的项目范围变化的价值仍然是项目经理和客户的责任,分析人员仍然必须理解业务需要并驱使系统应该在何处结束。但是他或她可以通过与设计人员/开发人员协作找到更好的方案。

posted on 2007-02-27 10:23  JazzieZhang  阅读(196)  评论(0编辑  收藏  举报