需求捕获与软件开发过程.doc
需求捕获与软件开发过程 需求真的在一直变化吗 ? 不一定是这样,例如对传统行业的信息化,由于有相对稳定的工作流程,需求变化不会很大。并不是所有的软件项目的需求都是变幻莫测的。如果在项目初期没有对需求进行全面的捕获和确认,那项目进行过程中出现反复修改,以至于返工,都是很可能的事。 这就对需求捕获人员提出了很高的要求,需求不但要全面,准确,还要考虑到实施中的每一个细节,如果某个细节出现不符合客户实际的要求,到项目实施完成之后,可能要进行一个工作量很大的修改,还会牵扯到其他的功能,在修改的过程中又会引入新的问题,这就象所说的牵一发 而动全身一样。 不同的软件开发过程对于需求变化的解决办法是不同的。 统一软件开发过程 (UP、 RUP)的解决办法是预防和控制需求的变化。 敏捷的方法如 XP,则倡导拥抱变化。 一、统一的方法 统一软件开发过程是通过在项目的前期尽可能准确,全面地捕获需求,然后对需求的变化加以控制和管理,来避免范围的蔓延,并通过迭代和递增的开发方式,来应对变化。 从软件工程发展的历史,我们说在项目前期全面地捕获需求一直是一个做好软件的不二法则。 对业务逻辑相对稳定的项目,在项目实施之前做好需求的捕获绝对 是受益匪浅的,因为软件的问题在生命周期的后期发现需要的成本要比在初期发现高得多。 迭代和递增式开发也降低了项目的风险,他允许在项目进行过程中对需求进行校正,它通过递增的版本发布使得客户能在软件开发生命周期过程中就对软件有了更全面的认识,因此也能及时的提出改进意见。 从团队的角度看,迭代的开发更符合人类学习的曲线 -一个渐进的过程。在项目开发的初期,开发人员对业务逻辑和技术的掌握可能并不全面,随着项目的进展,认识会不断加深,这对于后期的迭代周期的成功是很好的保障。 然而,某些项目确实存在很多不确定因 素,还有某些大型项目,历时时间很长,在那么长的时间里需求会变化是很自然得事情。 对这些项目迭代和递增的开发方法会比在项目早期就尽可能地捕获需求更有意义。 一、敏捷方法 (XP)以 XP 为例,他提出以拥抱变化来应对需求的变化,他并没有强调在项目的初期确定能确定的需求的重要意义。这与传统的软件工程观点和统一软件开发过程有差异,他不主张预防需求变化,因此也就没有强调尽可能在早期确定需求。 拥抱变化与其说是一种方法,不如说是一种心态的调整, XP 方法希望开发人员能有良好的