信息系统的开发过程是十分复杂和多变的。因为市场、用户、开发人员、开发技术等等所有的东西都不一样,所以就算开发同样的信息系统,两个项目都不可能一模一样的进展和完成。信息系统开发的复杂性来自软件本身的复杂性和人的脑力创造性劳动;并且信息系统的开发牵扯到如此多的不同性质的工作和如此多的不同的模型(过程模型、用例模型、数据库模型、顺序图、类图、商业模型等等)。
这篇文章通过系统开中需要注意的核心问题,或者说是在系统开发过程中需要关心的重点工作,以说明信息系统开发的灵魂或者内在。掌握了一个事物的本质或者内在的东西,就可以主动地创新我们做事情的方法或者手段。如果我们总在被动或者混乱中,那是因为我们没有掌握这些要旨,而被事物外在的形式所迷惑。1、商业目标
信息系统开发的核心问题就要从信息系统的结果进行入手。开发一个信息系统的目的是实现一个组织或者团体的商业目标(或者其它目的,这里只关心商业目的)。所以一个信息系统开发成功的标志是给受益人或团体带来预期的商业收益。
所以,在项目计划过程中,项目确立之初,需要明确地调查和定义出即将开发的信息系统的商业目标。在这个目标中必须依次说明:
² 受益人或者团体是谁。
² 他或者他们就这一问题的当前商业模式或者工作方式、经营状况、等等。这个问题就是系统开发背景或者用户在这一领域的现状。我们的用户是为了改善现状才会开发信息系统,这一点要切记。
² 最终要达到的商业目标是什么。要改变现状,用户期望达到什么样的商业目标?例如,通过新的信息系统,增加互联网销售业务、预期在2年内收回开发成本,3年内收益增加多少;估算信息系统开发的代价、年收益率、增长率等等。为了估算预期的商业收益,此时可能用到预期的商业收益表,并且为了实现这些收益条目,将要估计待开发的信息系统的能力,形成一个系统能力表(这就是最原始的系统功能表)。
² 如何达到商业目的。一个信息系统的成功,重点不是技术,而是商业模式。所以要描述这个问题,就必须采用两个方案:一个是商业计划、一个是技术放案。这两个方案的编制分别需要不同领域的人员。商业计划需要由商业知识人员或者专家来编写,而技术方案则需要技术经理或者总监来编制。编制这两个计划的人就是分别在研究两个方面的可行性问题,以保证新的信息系统确实是成功的系统。所以分别需要市场调研、预测;技术调研和公关研究等工作,最终的研究结果是从两个方面如何达到商业目标。这个时候,系统大概的主要功能需要在技术放案里面被确定,以便研究可行性。其中商业计划是核心,技术放案是手段。
2、资源问题
商业目标的问题研究清楚以后,商业目标已经明确、并且可行性已经从理论上得到保证,就需要研究项目需要的资源问题,也就是资源可行性问题。如果资源得不到保证,那么项目注定不会成功。依次需要解决的资源如下:
² 硬件和软件资源。包括项目的管理、开发、机构支撑和维护过程的所有资源。例如开发用电脑、服务器、所有的工具软件等资源;软件安装部署需要的电脑或者服务器、软件环境等资源。应该估计大概需要多少这类资源(明细表)、并说明资源如何得到。
² 人力资源。包括项目开发过程需要的人员和系统维护过程需要的支持人员。需要估算和筹划一个人员明细表,包括职位、技能、职责等;并且说明人员来源,有些可以从一个组织内部直接调用,而有些需要通过人力资源部门招聘。
² 资金。也就是项目的投资。项目所需资金需要根据多种情况进行估算,包括购买软硬件资源的费用、人员工资、项目开展过程的所有开支等。最终需要说明资源来源、如何到位等问题。需要弄清楚的一点是,一个信息系统的支持阶段的费用往往是各种费用里面最多的。例如,系统安装、人员培训、系统维护、系统运转等几个费用,其中后两个会在整个系统支持阶段一直发生。所以,在资金预算中必须把这一点考虑在内,在成本/收益估算分析报告中也是一样。
3、其它可行性问题
这些可行性来源于投资商或者最终用户的其它方面。例如企业文化、组织结构等等。需要研究新的信息系统在特定的用户群体内会不会被接受、会不会被大力支持。一个信息系统成功的第一要素是产生了预期的商业收益,实现了预期的商业目标。一个做的再好的系统,如果因为某些原因得不到使用,那它也是失败的。
4、初步的系统开发进度表
到这一步,就需要制定出初步的系统开发进度表。这个时候项目管理人员不可能有详细的WBS功能分解数据,所以这个进度表一般是对系统开发生命周期中的主要活动的进度进行的一个定义。这个进度表是对系统开发的一种约束和检验,没有进度表项目永远做不完。按照既定的成本预算,在预期的期限内完成工作才能叫项目。
此时因为资源问题已经有了结果数据,所以就可以根据系统能力表进行工作量的估算,对项目的主要活动分配人员,进行一个进度安排。
5、定义产品
到现在,上述问题解决以后,项目得以启动。当然,启动项目有一个方法或方式,但这些不是核心问题,这里主要阐述核心问题。
项目启动,信息系统的分析和开发阶段开始了(以前处于计划阶段,现在计划已经被批准执行了)。这个时候就需要明确地定义正在开发的信息系统 ---- 定义产品。定义产品的依据是要达到的商业目标,在商业分析及计划书中如果有一个系统能力估计表,这个就是最初的依据。我们的产品大体上就需要提供这样的能力。但这个远远不够,最终开发结束,进入测试和交付,就需要按照产品定义来检验最终的产品是否合格。这个阶段就是需求信息收集和分析阶段。最核心的要点有:
² 系统能力表。系统为了实现商业目标必备的能力。
² 系统详细功能表。通过需求调研和分析,初步的WBS功能分解等手段从原始的系统能力表产生详细功能表。每个功能在调研期间必须说明用户在当前是如何完成这些商业或者生产活动的,新的信息系统又是打算如何定义这些活动的完成过程的。所以,业务流程、数据流等东西都在需求调研期间进行研究。
² 确定系统正常运行的条件。也就是运行环境定义。必须明确定义系统正产运转需要具备的所有条件。例如运行的计算机硬件要求、网络要求、操作系统要求、需要的支撑组件和应用程序、数据库类型等等。这些是产品检验阶段进行测试的依据,如果一个系统能够运行在多种环境,那么测试阶段,系统要逐个地在这些环境里被测试。这个环境和旧的系统和技术选型等因素直接相关。
6、进一步的系统开发进度表
根据详细的功能列表,进行初步的WBS工作分解,通过估算各个子功能的工作量大小和复杂性,就可以制定进一步的系统开发进度表。这项工作是对项目可行性的不断检验和对项目进展的不断校正,很重要。
7、设计系统
产品定义明确以后,就开始设计这样一个被定义好的东西。就像汽车被定义好以后,具体要设计出来,以便投入生产。只要能够符合要求,设计成宝马、劳斯莱斯或者奔驰都无所谓。投资决定设计方案,因为不同的方案实现的代价不一样。其实投资是首先决定了产品的定义,然后才决定产品设计的。投资少,那么只能定义成一个具有奥托那样功能的车,并且设计和生产出来;投资多就可以定义更多、更好的特性,成为宝马或者奔驰了。
² 设计用户界面。一个信息系统最终要和用户交互,信息系统提供给用户的界面有哪些?必须详细的进行定义,这是对最终产品是否合格的最直观的定义文档。界面布局图案,界面元素定义,界面功能说明,界面流转关系等等都要详细定义。
² 设计系统外部行为(或者系统接口)。一个信息系统的很多功能是用户在界面上无法看到的,但是用户可以认识到或者感受到这些功能的存在。例如,一个网络许可证控制应用系统,需要开发服务器方和客户方的高层通信协议。服务器最初维持20个许可证,每登录一个客户端就分发掉一个,最多登录20个客户端;等等。这些不可见的和多软件内部需要处理的问题,就是外部行为。因为,这些行为一般是信息系统模块之间,或者新系统和旧系统之间的交互产生的,所以也可以说是系统接口。
² 设计应用程序结构。也就是根据需求中的功能表、用户界面和系统接口等信息,设计整个信息系统的网络集成体系结构和软件体系结构。首先要确定新系统如何和其它系统集成,所以网络集成体系结构首先要被确定。
² 设计数据库、数据结构。现在可以根据系统的外部表现和行为以及其它需求分析结构设计数据了。这些数据包括数据库和应用程序使用的其它数据结构。例如根据用户界面、系统接口、其它需求资料,分析和抽象其中的信息,设计数据库和数据结构。
² 设计系统的模块。从系统功能表、用户界面、系统界面(接口)、应用程序体系结构、数据库和数据结构等信息,需要设计系统最终的所有主要模块(没有必要太细密的划分,否则设计成本将大大上升)。这个时候一般就会用到WBS分解方法,把系统的功能分解为许多小的模块,以便能够团队分工协作。对于非常大的系统,可以初步的进行模块划分,然后把这些模块分配给不同的部门,进行再次的划分和设计。
8、详细的项目进度表
在模块的划分完成以后就应该制定一个详细的项目进度表,把模块承包到户。因为模块的很多细节性的设计工作还要交给具体开发人员完成(小规模的团队定义好模块功能和接口以后,就可以把所有的其它设计工作都交给开发人员,这样可以降低设计成本)。
模块划分和定义完毕,设计之前就制定详细的项目进度表。
9、实现系统
至此,系统内部的部件 --- 模块被定义和设计出来了。现在要投产。
具体实施系统的时候又有这个实施过程域的许多活动和规范、模型等(这是域内的细节问题)。
10、测试系统(质量保证)
系统在实施的过程,要对部件的质量进行检验。这就是白盒测试和黑盒测试。需要测试系统的每个模块,保证它是达标的。具体的测试方法和详细程度是这个活动的细节问题。
系统实现完毕,就需要把各个部件组装起来,对整个信息系统进行集成测试。这个时候是检验系统是否符合产品的定义。这是集成测试。具体的测试方法属于细节问题。
系统集成测试必须以产品定义为依据,要达到质量要求(能力、效率、稳定性、各种环境等等)。而部件测试必须以模块的定义为依据。
11、安装部署和支持过程
系统最后进入安装部署和支持过程。这个阶段及其重要,一个信息系统能够被顺利应用,就需要好好研究和策划这个过程。并且这个过程也是花费最多的地方。具体的方法也是细节问题。
结束语:文中很多没有提及或者被称为细节问题的,就是一个项目管理者不必要过分考虑或者不必要去考虑的问题。项目的很多细节问题并不是小问题,它们都需要工作人员有特定的知识,所以项目管理者需要把这些具有专长的人员安排到合适的位置。
一个项目经理成功的条件是:一是他掌握了一个项目包括的关键工作或任务;第二是他拥有这些不同的任务各自需要的相关专业人员。