1. 什么是软件项目开发过程模型
项目开发过程模型就是对于项目开发过程的概念建模,从而能够实现在理论上对于软件项目开发过程进行量化分析。
软件开发过程模型以 Rational Unified Process (简称 RUP )为代表,如下图
图 1 、 Rational Unified Process
但是也并不是只有 RUP 一种,比如 Agile Unified Process ( 简称 AUP)
图 2 、 Agile Unified Process
总体来说, RUP 是最细化的项目开发过程模型,不管你采用什么样的开发方式,整个开发过程的每一个过程你都是无法逃掉的(我们后面会讨论这个),因为这代表了整个软件开发实践的客观规律,只是在定义上有所不同,侧重点上有所不同,对于迭代的看法有所不同罢了。
如同它的概念所示,软件项目开发过程就是对软件项目开发过程的概念建模,从而能够实现在理论上对于软件项目开发过程进行量化分析。
那么,这种量化的分析到底有能有什么好处呢?
我们在引子里说过:任何的软件项目都有它存在的目的,都是为了解决一些现实中的问题。可以把这个成为这个项目的目的,可以把需要解决的问题的需求称作这个项目的需求。
而对于商用(尤其是企业级应用)软件项目开发而言,最基本也是最重要的目的就是以最小的成本,在项目交付的期限内,提供稳定的、可靠的软件,用以解决用户提交的所需要解决的问题,并且如有可能,必须为现实生活中问题的变更引起的用户需要解决的问题的变更从而要求的软件功能的变更做好准备。
l 为了能够把客户的问题描述清楚,必须进行业务建模和需求收集;
l 为了能够把收集完的问题需求转变成为可以信息化解决的问题并且解决,必须对其进行软件化设计并进行实现;
l 为了保证软件产品的质量,必须进行足够多的测试(看看硬件厂商是怎么测试的?);
l 为了能够让软件产品正常运转,必须进行软件的部署;
l 而在软件开发的过程当中,对于项目的管理、代码的管理、还有资源的管理,在哪一个软件项目开发中能缺少?
综上,对这些过程的建模和定量的分析,并且确定在整个开发过程中各个阶段所占的份额和所拥有的重要性,对于保证项目(尤其是大项目)的平稳开发和增强项目开发管理有着重要的作用。
并且,确定了项目开发过程模型,对于确定项目管理方式和提供技术、工具支持有着非常重要的作用。
既然我们已经有了一个明确的定义,并且能够把它分解成为几个部分(当然,我们将会看到,这些部分本身也是十分复杂的)。那么,看上去下一步,我们的任务就是一步一步的分析每一个部分。
但是,且慢,这些部分有些是没法讨论的(比如业务建模,它与用户的域专家有关,或者跟一些国家、国际标准有关,跟计算机软件开发没太多的关系——除非是 IDE 之类的),有些是仁者见仁、智者见智的部分(比如设计和实现),有一些可以不必花太多口舌去讨论(比如软件项目的部署和资源管理),这一点 AUP 给我们开了个好头,我们现在需要讨论的就是:
l 需求分析
l 测试
l 配置管理
l 项目管理