5 信息系统建模
5.1 系统模型
5.1.1 信息系统模型
模型是反映事物的原型,更是对现实世界中事物在某种程度上的抽象,是理解、分析、开发或改造事物原型的一种常用手段。建模是对事物抽象的过程,建立某种模型以映射系统的因果关系或相互关系帮助理解事物本身。
一些模型在外形上类似于真实产品,一些模型是重要细节的绘图表示,另一些模型则是抽象的数学符号。每一种模型强调一种不同类型的信息。在飞机设计中,飞机工程师使用大量的不同类型的模型。成为一名飞机工程师需要学会创建和使用各种模型,这对于信息系统开发人员来说也是一样的。尽管信息系统模型并不像飞机模型那样标准或精确,但是也应学会创建和使用各种模型。现在,信息系统开发人员也正不断取得进步。信息系统并不像飞机那样真实可感——你不能真正地看到、抓住或感觉到它。因此,信息系统模型显得更加无形。
信息系统是用于反映现实世界中某些事物的人造复杂大系统,难于直接对其分析、设计,必须通过建立各种模型来开发信息系统。模型建立的思路是自顶向下、逐步求精和自底向上、综合集成。
开发人员要为信息系统的各部分建立哪些模型?系统开发中使用的模型包括输入、输出、过程、数据、对象、对象之间的相互作用、位置、网络和设备,以及其他事物的表示。大多数的模型是图形模型,包括使用公认的符号和惯例画一张表示图。这些模型通常称为图表。
在信息系统建模时,用到的模型有:①常用模型:抽象层次模型,结构层次模型,开放系统模型,输入输出系统模型;②开发思想模型:瀑布模型、V模型、快速应用模型、敏捷方法、统一过程;③开发过程:概念模型、逻辑模型、物理模型;④功能:数据模型、系统模型、预测模型、决策模型;⑤管理功能:库存管理模型、成本管理模型、生产计划与调度模型、财务管理模型;⑥模型的形式:数学模型、图形、表格、语言;⑦模型的内容:状态模型、行为模型、变量模型。
5.1.2 信息系统的物理结构
信息系统的物理结构是避开信息系统各部分的实际工作和软件结构,只抽象地考察其硬件系统的拓扑结构。信息系统的物理结构一般有以下三种类型。
集中式结构:集中式结构是由一台主机带若干终端,运行多用户操作系统供多个用户使用。早期的信息系统,由于计算机和通信技术等水平的限制,都采用这种集中式结构。在这种结构方式下,主机承担系统的所有数据处理、存储及应用管理,因此必须是大容量、高速度的,一般由小型机甚至中大型机承担;终端无信息处理能力,负责输入和输出信息;多用户操作系统很多,不同的机器应配备能在其上运行的多用户操作系统。
这种系统结构的优点是信息高度集中,便于管理;缺点是系统的灵活性、可靠性差,维护困难,一旦主机出现事故就会造成整个系统瘫痪。
分散—集中式结构:分散—集中式结构是将微型计算机或工作站通过局域网与一台或几台作为主机的小型机乃至大型机相连。这种结构的优点是,主机主要作为文件服务器负责用户的读、取、传送文件的请求,集中管理共享资源,各个微机和工作站既可独立处理自身的业务,又可通过网络实现信息的传送和共享,因而灵活性强、易扩展;缺点是文件服务器的能力有限,仅提供对数据的共享访问和文件管理,没有协同处理能力,导致网络通信负荷重,系统维护起来较为困难。
分布式结构:分布式结构由微机、工作站充当客户机,用一台或分散在不同地点的多台微机、工作站、小型机或大中型机充当服务器,再用总线结构的网络把客户机和服务器连接起来。它具有任务分布合理、资源利用率高、扩展性好、维护方便、可靠性高等优点。随着互联网技术等的发展,又出现了浏览器/服务器模式(B/S)。分布式与分散—集中式结构的区别在于,分布式结构客户机承担每个用户专有的外围应用功能,负责处理用户的应用程序。而服务器承担数据库系统的数据服务功能,负责执行数据库管理软件。这样,两种设备功能明确,可以高度优化系统的功能。数据库服务器处理客户的请求,然后只返回结果。这就大大减轻了网络的负担,可有效避免网络堵塞。
5.2 业务流程重组
业务流程重组(business process reengineering,BPR)是20世纪90年代初由美国学者Michael Hammer和James Champy等针对传统的官僚组织结构的弊端而提出的。官僚组织的特点是:程式化的工作流程和规范化的权限范围,明确的专业分工以及层层控制的、自顶向下的等级结构(按照地位的高低规定成员间是命令与服从的关系)。这样的组织稳定、有序,而它能在过去生存的主要原因是因为卖方市场中顾客对商品和服务的需求是持续不断、相对稳定的。
在大型官僚组织中,如果存在高度的专业分工,雇员就会失去对“全局”的把握。越深入具体部门,注意力就会越倾向于只看内部。此时,他们不能明确地知道工作的目的,也没有把自己放在整个流程中去考虑,因为他们不过是为工作而工作。这就产生了对工作的疏离,它会降低生产率。
这种趋势进一步的演变,就在组织中产生了彼此孤立的信息孤岛,这显然不符合竞争日趋激烈的市场趋势。买方市场的到来,要求商家必须时刻注意搜集客户需求的信息,而且还要提供比竞争对手更加优越(快捷且高质量)的服务。这又要求商家和上游的供应商以及下游的分销商等各方面进行信息沟通,而这种沟通需要降低成本、消除冗余、提高效率。在这种情况下,人们就提出了企业流程重组的概念。
5.2.1 BPR的4个核心特征分别是流程、根本性、彻底性和戏剧性
流程:流程就是以从订单到交货或提供服务的一连串作业活动为着眼点,跨越不同职能与部门分界线,以整体流程、整体优化的角度来考虑与分析问题,识别流程中的增值和非增值业务活动,剔除非增值活动,更新组合增值活动,优化作业过程、缩短交货周期。
流程是BPR的核心内容。现代的企业组织是建立在亚当·斯密的分工理论基础上的,企业的完整业务活动被官僚组织结构所分割和掩盖,人们熟悉的是部门、科室等机构,而看不到企业的业务流程。组织机构分工明确、界限清楚,可以非常清晰地画出来;流程却不同,它通常不能被人看到,也没有名称,因而也没有被有效地管理。
根本性:根本性就是思考问题,要看本质,而不是现象,是治本而不是治标。
实施BPR关心的是事物应该的样子,而不关心现在的样子。所以,在重组过程中,应该经常问的问题是:“我们为什么要做现在的事?为什么要以现在的方式做事?现在的工作方式有什么不足?还有更好的工作方式吗?”而不是:“如何高效率地完成现在的事情?”我们需要提出诸如此类的根本性的问题,来促使人们对管理企业方法所基于的习惯和假设进行观察、分析和思考,依此来发现这些习惯和假设中的过时,甚至是错误的和不适用的部分。
彻底性:彻底性就是要在根本性思考的前提下,摆脱现行系统的束缚,对流程进行设计,提出最理想的解决方案。然后再根据约束和现实予以修订,从而获取管理思想的重大突破和管理方式的革命性变化。不是在以往基础上的修修补补,而是彻底性的变革,追求问题的根本解决,突破原有的思维定式,打破现有的管理规则,以回归零点的新观念和思考方式,对现有流程与系统进行综合分析与统筹考虑,避免将思维局限于现有的作业流程、系统结构与知识框架中去,以取得目标流程设计的最优。表1-2给出了流程改进与流程再造的区别。
表1-2 流程改进与流程再造的区别表
戏剧性:戏剧性是指流程重组过程中蕴含着高度不确定性,最初所设计的重组目标很有可能因为没有估计到一些隐藏的影响因素而不能达到,甚至结果事与愿违。正是因为根本性思考及一切归零的彻底做法与现有流程下的固化观念和保守力量的对抗,才使得流程重组的结果存在诸多变数,难以预测。
5.2.2 BPR与IT的关系
BPR与IT的关系可以用一句话概括,即“流程为本,技术支撑”。
随着时代变革的浪潮来临,很多企业都已经认识到了信息技术的重要性,也纷纷开始采用一些措施来试图使自己变成信息化的企业。这时,企业大体有两种典型的做法。其一,就是应用信息系统,通过购买硬件和软件,试图通过信息技术的引入来提高效率与效益;其二,就是管理上的变革,很多企业也梳理了自己的流程体系,制定了很厚很重、印刷精美的“管理规范”、“管理手册”,以期通过建立新的规范来约束人们的作为,引导企业向提高效率与效益的方向发展。
而在现实中,这两种途径不约而同地都遇到了阻力。
对于那些应用IT系统的企业,硬件软件投资下去,但是没有取得原来预期的收益。企业在应用信息技术时,其实还是沿用旧的或业已存在的方式做事,而不是注重工作应该怎样做,然后再来考虑应用信息技术辅助实现它。办公自动化系统的应用就是一个很好的例子。应用办公自动化信息系统梦想“无纸化办公”,其结果导致使用更多的纸张,不管报告是否有价值,反正报告愈来愈多,格式愈来愈漂亮。人们不惜花数天时间写报告并绘有精美的图表等,以期得到高一级的管理层对自己工作的认可或批准。因为在办公自动化软件上修改文字和图表实在太容易,以致人们一遍又一遍地进行修改完善以期得到每一级管理层的欣赏。
在应用信息技术为顾客提供服务方面,也会经常导致一些问题。运用计算机信息处理技术直接模拟手工业务处理方式和处理流程,将会对很多不合理或无效的工作进行计算机自动处理,由于人们必须按照计算机的要求办事,而不是按照顾客的要求办事,从而有可能导致工作效率低于手工方式。人们经常认识到对流程进行一些改变是有益的,但往往因为要改变计算机系统的成本太高和太费时间而被搁置;因而人们经常认为信息技术应用导致的是不灵活而不是灵活,信息技术应用根本达不到预期想象的效果。而这种问题的根源就在于,处理事务的流程和方式没有改变。
因此,IT必须和管理变革相结合起来,系统要量身定做。
一方面,IT系统的应用拓展了流程改进的空间,推动了流程管理的实现与组织的变革;另一方面,流程管理IT作用的发挥明确了方向,给出了IT作用发挥准确的作用点。具体表现在以下方面:
IT改变了沟通的方式:以沟通发生的方向来分,通常在一个企业内会存在着下行沟通、上行沟通、横向沟通和越级沟通这几种方式:下行沟通(downward communication),指的是沿着权力层次结构,自上而下进行的交流。上行沟通(upward communication),指的是沿着权力层次结构,自下而上进行的交流。横向沟通(lateral communication),指的是在同一权力层次上所进行的交流。越级沟通(diagonal communication),指的是发生在跨越权力层次之间的交流。
在传统企业中,往往正式的、合法的就只有向下和向上这两种。而横向沟通和越级沟通则很少发生,或者说,即使发生,这种沟通也往往是非正式的。那么,在这样的一个仅以向下和向上交流为主的传统的组织里,会出现什么样的弊端呢?毫无疑问,沟通的成本会很高,信息传递的路线会很长,并有可能导致信息的漏失和错传,以及信息的“过滤”。那么,有了信息技术,就使得更多的信息可以沿着横向或越级的方向进行交流,从而避免了传统方式的障碍,使得沟通更加通畅,组织也更有效。
IT改变了组织内权力的分配:信息系统的应用,使得权力分散化成为可能。有人说过,现代社会只存在两种人,一种人掌握信息,另一种人不掌握信息。而前者也就因此掌握了对后者的支配权。这说明了什么呢?说明了信息就是权力。从前信息是特权,只掌握在少数人的手中,这些少数人也就是因此成为掌握权力的人,现在不同了,由于信息技术的广泛运用,挖掘信息、处理信息、管理信息以及应用信息已经成为普通员工的一项普通工作。伴随着信息的分散,权力也就因此而分散了:
同时,中层管理人员权力可以弱化,带来了“金字塔”扁平化的可能。中层管理人员从前是高层领导和基层员工之间进行沟通的重要纽带。然而,随着信息的分散和由此而带来的权力分散,他们的作用发生了弱化,很大程度上,信息技术起了代替中层管理人员的作用。
IT改变了组织结构:IT对组织结构的改变是从它改变管理幅度开始的:
管理幅度指的是一位上级管理人员直接管辖的下级的人数,这个人数不仅影响管理职位的复杂程度,而且还决定着组织的形式和结构。由于过去技术水平的限制,管理幅度被认为不能过宽,而且越往上就应该越窄。
由于有效管理幅度的限制,当组织规模扩大到一定程度时,必须通过增加管理层次来保证有效领导。在企业规模一定的情况下,管理幅度与管理层次成反比。当管理幅度较小,管理层次较多时,企业就趋向金字塔结构。反之,如果管理幅度较大,而管理层次较少时,企业就趋向于扁平式。
那么,为什么信息技术可以增加管理幅度呢?首先,信息技术的使用,带来了控制手段的变化,计算机的控制代替了人员的监督,其结果是控制的范围更广了,也就是促进了在控制效果不减少情况下的等级层次的减少。其次,由于信息技术的运用,管理者可以直接参与信息的查询和数据的分析等工作了,于是从前那些从事资料整理、表格绘制和数据分析的下属人员就多余了。最后,由于信息实现了分享,员工可以直接从数据库中获得所需要的信息,从而减少了与下属之间的交叉关系,以及和其他群体关系的发生,也就是减少了管理的工作量,这就从客观上保证了管理幅度扩大的可能性。
以上论述表明,信息技术为企业的变革提供了技术条件。在大多数的BPR中,IT都扮演着重要角色。速度、信息处理能力、计算机互联以及互联网技术除了可以改善运作及管理人员间的沟通与协作外,还可显著提高业务流程的效率。
5.3 企业资源计划
企业资源计划(enterprise resources planning,ERP)一个组织为关键信息系统提交使用一组集成的软件包的过程。
企业竞争范围的扩大,要求企业在各方面加强管理,并要求企业有更高的信息化集成,要求对企业的整体资源进行集成管理,而不仅仅对制造资源进行集成管理。企业规模不断扩大,多集团、多工厂要求协同作战,统一部署,这也超过MRPⅡ(manufacturing resources planning,MRP)的管理范围。经济全球化趋势的发展要求企业之间加强信息交流和信息共享,企业之间既是竞争对手,又是合作伙伴,信息管理要求扩大到整个供应链的管理,这些更是MRPⅡ所不能解决的。
ERP是在MRPⅡ基础上发展起来的,以供应链思想为基础,融现代管理思想为一身,以现代化的计算机及网络通信技术为运行平台,集企业的各项管理功能为一身,并能对供应链上所有资源进行有效控制的计算机管理系统。ERP的管理范围包括了企业的各个方面,包括财务、制造、物流与人力四个大的职能区域。
可以从管理思想、软件产品、管理系统三个层次理解ERP:管理思想上,ERP包含一整套先进的现代管理思想,是一套企业管理系统体系标准,其实质是在MRPⅡ基础上进一步发展而成的面向供应链的管理思想;软件产品方面,ERP是整合了所有企业资源全部价值链和供应链环节的计划体系和控制体系,综合应用了客户机、关系数据库结构、面向对象技术、图形用户界面、第四代语言(4GL)、网络通信等信息产业成果,并以ERP管理思想为灵魂的软件产品;管理系统层次,ERP是全部企业资源集成的计算机管理信息系统,整合了企业管理理念、业务流程、基础数据、人力物力、计算机硬件和软件。
在企业中一般的管理主要包括四方面的内容:生产控制、市场营销、财务管理和人力资源。这四大系统本身就是集成体,它们互相之间有相应的接口,能够很好地整合在一起来对企业进行管理。
5.4 信息系统分析员
系统分析与设计最重要的就是实践,是一个能经得起时间的考验并且可以快速获得知识和技术的实践过程。分析员毫无疑问地必须熟悉计算机和计算机程序,必须具有专业技能和程序设计方面的开发专长。但他们也必须有十足的好奇心去探索事情是怎样完成的,以及如何把这些事情做得更好。
开发信息系统并不仅仅是编写程序。正如一些公开的成功实例一样,开发信息系统要为组织解决问题,系统分析员经常被看做问题的解决者,而不是程序员。那么,分析员要解决什么样的典型问题呢?
客户要昼夜随时订购产品,那么,在不增加销售成本的前提下如何不间断地处理这些订单?
生产计划需要十分仔细地确定每周生产的每种产品的数量,那么,如何估计影响生产的众多参数,然后可以让计划员在提交一个特定计划之前研究不同的方案呢?
供应商希望以较小的日批处理方式装载用于制造过程中的部分物资,使库存费用最小化,降低成本。那么,如何订购最小的份额、考虑每日的运输,并充分利用供应商的折扣呢?
通过跟踪购买模式和客户购买倾向,市场部门需要较好地预见客户需求。那么,如何收集和分析市场部门可用的一些关于客户行为的信息?
管理人员要不断地了解公司目前的财务状况,包括盈亏账目、现金流转和股票市场预测。那么,如何收集、分析和提交管理人员所需要的全部金融信息?
职工要求他们的福利计划更加灵活,管理人员要建立诚信。那么,如何处理灵活的健康计划、职工投资选择权、退休账目和其他针对职工的福利计划?
信息系统开发者要处理类似这些,以及更多的问题,其中有些是大问题,并且具有战略意义,而有些则是小问题,只影响极少数人,但对这些人而言却是重要的。对于解决业务问题的信息系统,最终所做的所有程序设计都是重要的,但这不仅仅是程序设计问题,程序设计是在开发过程的后期才开始的。
分析员如何解决这些问题?系统分析与设计重点在于理解业务问题并提出解决方案。
分析员首先必须全面理解问题,并了解针对这个问题可能发生的每一件事情——什么人参与?什么商业过程开始起作用?当解决这个问题时会影响其他哪些系统?然后,分析员要使管理人员确信解决这个问题所带来的效益会超过所花费的代价。有时解决这个问题要花费大量金钱,这样就可能不值得去做了。
如果解决这个问题是切实可行的,那么分析员就要详细说明解决这个问题的需求——必须满足什么样的指定目标,需要存储和使用什么样的数据,对数据要做什么样的处理,怎么输出。必须首先明确需要做什么,其次才是怎样去做。
一旦确定了详细的需求,分析员就要设计几套可行的解决方案。每个解决方案都需要十分仔细地全盘考虑。通常一个可选的信息系统就是对构成信息系统的物理部件的一系列选择,也就是解决“怎样去做”的问题。必须确定如下问题:
必需的部件是什么?
建立不同的部件应该使用什么技术?
这些部件放在何处?
部件如何通过网络通信?
部件如何构成一个系统?
人们如何与系统交互?
哪些部件是定制的,哪些是购买的?
应该由谁开发定制的部件?
谁来集成和支持这些部件?
总有许多不同的方案必须考虑,挑选最好的方案是亟待解决的问题——这个解决方案应是风险最小、效益最好的。分析员需要考虑解决这个问题的方案是否有成本效益,但也要考虑这些方案与公司战略计划的一致性。这个解决方案有利于组织的基本目标的实现吗?与其他的计划系统能无缝集成吗?使用了适合管理人员确定的战略方向的技术吗?最终用户会接受吗?分析员必须考虑许多因素并综合、果断地做出决策。
一旦系统分析员与管理人员协调决定推荐某个方案并经管理人员同意,就必须写出详细资料。这里分析员要关心的是:如何为即将工作的新系统创作一个蓝图(设计说明书)。
系统设计说明书包含数据库、用户界面、网络、操作步骤、转换计划和程序模块。设计说明书一经完成,就可以开始进行实际系统的建设了,包括程序设计。
建立并安装一个信息系统要花费大量的金钱,可能是几百万美元,因此,必须制定详细的计划。要建立并运行一个系统,通常要大量的程序设计人员参与编程,这些编程人员需要确切地了解系统要完成什么,因而,需要详细的说明书。
5.5 软件工程方法
5.5.1 软件工程的思路与研究内容
当人们在解决具有复杂性的问题,或实施一项具有长期性、复杂的工程时,经常会说这是一项系统工程。系统工程是系统科学在社会实践活动中产生的具有应用性的科学方法。我国理论界较多地使用钱学森对系统工程的定义。系统工程是组织管理系统的规划、研究、设计、制造、试验和使用的科学方法,是对所有系统都具有普遍意义的科学方法。系统工程是解决实际问题的科学,它应用社会科学、经济学、工程技术等多方面的学科来解决工程发展中的社会性问题,它将主要涉及工程开发的规划、设计、评价定等活动。因此,人们认为系统工程是运用系统方法对各类系统进行最佳的规划、研究、设计、制造、试验和使用,以达到最佳效益,是一门组织管理的技术。
目前,各国都加大了信息化建设的进程,信息化水平成为衡量一个国家综合实力的重要指标。在信息化建设的进程中,信息系统的开发和建设是一项系统工程,因此,在信息系统的开发和建设过程中要采用系统工程思想,对信息系统进行规划、设计、开发、测试、实施、运行和管理,以确保信息系统的质量和满足系统用户的需求。
系统工程是用定量和定性相结合的系统思想和系统方法,对大型复杂系统的构成要素、组织结构、信息流动和控制机制等进行分析和设计的技术,为了更好地达到系统目标。
系统工程方法论就是解决系统工程实践问题所应遵循的步骤、程序和方法,是系统工程思考问题和处理问题的一般方法。系统工程具有自己的独特的方法论,其体系基础就是运用系统思想和各种数学方法、科学管理方法、经济学方法、控制论方法以及信息技术工具进行系统分析和系统设计,实现系统的模型化、最优化。系统工程方法论的程序与步骤:弄清问题、选择目标、方案设计、建立数学模型、方案优化、决策、实施。
软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护有效的、实用的和高质量软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
赵池龙在实用软件工程(第4版)中指出:长期以来,人们将软件开发方法与软件生命周期模型混为一体,甚至将软件开发方法与软件过程改进模型也混为一体,因而误认为软件生命周期模型或软件过程改进模型就是软件开发方法。例如,他们将迭代模型RUP(rational unified process)和过程改善模型CMMI(capability maturity model integration)误认为是软件开发方法或软件工程方法论,这就是有力的证据。
事实上,软件开发方法与软件生命周期模型是不同的,软件开发方法与软件过程改进模型就更不相同了。软件开发方法学来自于程序设计语言方法学,而软件生命周期模型或软件过程改进模型与程序设计语言方法学无关。当然,二者皆为软件工程课程的研究内容,如下表所示(表1-3)。
表1-3 软件工程课程研究的内容表
5.5.2 软件生命周期模型
软件生命周期模型是指在整个软件生命周期中,软件开发过程应遵循的开发路线图。或者说,软件生命周期模型是软件开发全部过程、活动和任务的结构框架。例如,瀑布模型、增量模型、螺旋模型、喷泉模型、XP模型、原型模型和RUP迭代模型,它们都有各自清晰的开发路线图,规定了各自的开发过程、活动和任务的结构框架(表1-4)。
表1-4 七个软件生命周期模型表
采用结构化系统开发方法将系统的开发过程划分为系统规划、系统分析、系统设计、系统实施和系统运行、维护五个相互衔接的阶段,称为系统开发的生命周期,如图1-7:系统的生命周期所示。
图1-7 系统的生命周期示意图
系统规划:系统规划是信息系统开发的第一步,在规划阶段首要问题是通过对组织环境、目标、现行系统状况的调查分析,明确新开发系统的总体要求和适用范围,以及要解决的问题和实现的功能,实质上是进行系统定义。其次是结合系统的难易程度、系统项目的大小、组织的技术力量等实际,制定初步的进度表;然后,在充分考虑新系统所受的各种约束下,给出拟建系统的备选方案;最后对这些方案从系统开发的必要性和经济、技术、组织管理、环境、进度等方面进行可行性研究、论证,形成可行性研究报告,并审议可行性研究报告,最终形成系统规划报告,审议通过后启动项目,如果不是自行开发,还要和开发单位签订合同。因此,系统规划阶段的主要任务。对所开发的系统进行系统科学的规划,形成系统规划文档,主要包括技术文档(系统规划报告)和管理文档(可行性研究报告、开发计划、开发合同、系统规划报告评审意见等)。
系统分析阶段:系统分析是信息系统开发生命周期中最重要的一个阶段。系统分析人员研究、结合现有系统与管理层、用户从信息系统的功能、操作、过程与数据等各个方面,进行全面的沟通,发现和理解用户的全面需求,是对系统进行详细调查的过程。然后,确定新系统的目标,描述出新系统的功能,形成新系统总体逻辑方案;然后与用户反复沟通、分析、修改、完善和优化系统总体逻辑方案,逐步构建出新系统总体逻辑模型,如果用户对逻辑模型不满意,要继续修改,直到可行为止,或者项目终止;若逻辑模型可行,则进入下一阶段的工作。系统分析阶段的文档是系统分析说明书,这是系统建设必备的文件,一旦系统分析说明书审议通过,它既是给用户看的,也是系统设计阶段工作的依据和将来系统验收的依据。因此,系统分析阶段的主要任务。
系统设计阶段:系统设计阶段主要解决新系统怎么做的问题,是以系统分析阶段确定的新系统功能为基础,研究具体用什么方法和技术实现的过程。实质上是以系统分析说明书为依据,将分析模型进一步细化,全面确定系统应具有的功能和性能要求,并考虑技术细节和约束条件,进行系统总体设计和系统详细设计(总体、详细设计的具体内容见第四章),设计出一个可行的解决方案,最终形成系统设计说明书,以便于系统开发的程序员能很容易的编写代码。如果系统设计说明书经过审议后通过,项目继续进入下一阶段,否则终止。因此,系统设计阶段的主要任务。
系统实施阶段:系统实施阶段是按照系统设计说明书的要求,具体实现新系统,进行测试,交付使用的过程。具体划分为两个阶段,第一阶段是系统技术实现过程和这个过程的管理,主要包括建立编程标准、程序设计、系统测试、形成测试分析报告;第二阶段是用户转化阶段,主要包括用户培训(用户手册、操作手册等)、系统转换、评审鉴定后交付运行。因此,系统实施阶段的主要任务。
系统运行与维护:系统投入运行后,一般有一段试运行,在这个期间如果有旧系统的话,可以新旧系统一起运作,发现新系统是否存在问题,有问题要及时修改,没有问题说明新系统满足了用户需要,可以正式投入运行。在以后的运行中进行系统维护和评价,记录系统运行情况,根据一定的程序对系统进行必要的修改,评价系统的工作质量和经济效益。同时做好维护记录、评价报告、修改报告等。
最常用的是瀑布模型和原型模型,其次是增量模型,最难掌握的是迭代模型。因为这七个模型各有所长,所以它们有各自的生存空间。因为它们各有所短,所示才会产生相互竞争。只有通过竞争,才能推动软件生命周期模型研究的发展。
软件企业选取软件生命周期模型的方法是:软件企业在创业时期,由于没有项目或产品的积累,所以他们常常会选取瀑布模型和增量模型。一旦越过创业时期,由于积累了一些了项目或产品,他们就会选取原型模型。至于迭代模型,只有当他们掌握了UML及其工具Rational Rose之后,才会加以考虑。
5.5.3 软件开发方法
软件开发方法是指在软件开发路线图中,开发人员对软件需求、设计、实现、维护所采用的开发思想、开发技术、描述方法、支持工具等。在软件工程方法学方面,大体可分为程序设计方法学和软件开发方法学,前者是关于小规模程序的设计方法学,后者是关于大规模软件的开发方法学。在程序设计方法学中最基本的方法有:有面向过程程序设计方法,面向对象程序设计方法,面向元数据(meta-data)程序设计方法。
在软件开发方法学中最基本的方法有:有面向过程方法、面向对象方法、面向元数据方法、形式化方法,它们就是软件开发方法,它们都有各自的开发思想、开发技术、描述方法、支持工具等。
曾经出现过的面向过程方法有:面向结构化数据系统的开发方法(data structured systems development,DSSD);面向可维护性和可靠性设计的Parnas方法;面向数据结构设计的Jackson方法;面向问题设计的PAM方法;面向数据流方法。不管在方法名字上如何称呼,这五种方法在宏观上都属于面向过程方法,支持这些方法的是面向过程的结构化编程语言。面向过程方法编程时采用单入口单出口的控制结构,并且只包含顺序、选择和循环三种结构,目标之一是使程序的控制流程线性化,即程序的动态执行顺序符合静态书写结构。
面向对象方法(object-oriented method),在不少教材中,称为现代软件工程开发方法。该方法包括面向对象需求分析、面向对象设计、面向对象编程、面向对象测试、面向对象维护、面向对象管理。面向对象方法是一种运用对象、类、消息传递、继承、封装、聚合、多态性等概念来构造软件系统的软件开发方法。面向过程方法的优点是:以处理流程为基础,简单实用。面向过程方法的缺点是:只注重过程化信息,因而忽略信息的层面关系以及相互联系。它企图使用简单的时序过程方法(顺序、分支、循环三种结构),来描述关系复杂(随机)的信息世界,因而对于关系复杂的信息系统来说,其描述能力不强,最后可能导致软件设计、开发和维护陷入困难。面向对象方法的特点是将现实世界的事物(问题域)直接映射到对象。分析设计时由对象抽象出类(Class),程序运行时由类还原到对象(Object)。面向对象方法,来源于二十世纪八十代年开始流行的面向对象的程序设计语言,例如Java,C++等。面向对象方法的基本特点是:将对象的属性和方法封装起来,形成信息系统的基本执行单位,再利用对象的继承特征,由基本执行单位派生出其他执行单位,从而产生许多新的对象。众多的离散对象通过事件或消息连接起来,就形成了软件系统。
这里讲的面向元数据方法(meta-data oriented method),既不是传统软件工程中的“面向数据流”方法,也不是传统意义上的面向数据结构的Jackson方法,它们都是面向过程的方法,而且这两个方法都出现在关系数据库管理系统RDBMS成熟之前。这里讲的面向元数据方法,就是面向meta-data的方法,它与面向过程方法断然不同。
元数据(meta-data)是关于数据的数据,组织数据的数据,管理数据的数据。这里的元数据,是泛指一切组织数据的数据,例如类的名称、属性和方法,实体的名称、属性和关联,数据库中的表名、字段名、主键、外键、索引、视图,数据结构中存储数据的框架等等。面向元数据方法,就是在软件需求分析、设计、实现、测试、维护过程中,均以元数据为中心的软件工程方法。面向元数据方法包括面向元数据需求分析、面向元数据设计、面向元数据编程、面向元数据测试、面向元数据维护。面向元数据需求分析,就是在需求分析时,找出信息系统所有的元数据,使其完全满足信息系统对数据的存储、处理、查询、传输、输出的数据要求。也就是说,有了这些元数据,信息系统中的一切原始数据不但都被组织起来了,而且能完全派生出系统中的一切输出数据。面向元数据设计,就是利用需求分析获得的元数据,采用面向元数据的CASE工具,设计出信息系统的概念数据模型CDM(conceptual data model)和物理数据模型PDM(physics data model),以及从原始数据到输出数据的所有算法与视图。面向元数据编程,就是在物理数据模型PDM的基础上,根据信息系统的功能、性能、接口和业务规则,建立数据库表和视图,再利用数据库编程语言,编写出存储过程和触发器。面向元数据测试,就是对数据库表初始化并加载之后,运行相关的存储过程和触发器,测试信息系统的各种功能需求与性能指标。面向元数据维护,就是对数据库表中的记录进行统计、分析、审计、复制、备份、恢复,甚至对表结构及视图结构,也可以进行必要的调整。
事实上,近二十多年来,面向元数据方法已经是建设信息系统、数据库、数据仓库和业务基础平台的基本方法。概括起来,面向元数据方法的要点是:①数据(data)位于企业信息系统的中心。信息系统就是对数据的输入、处理、传输、查询和输出。②只要企业的业务方向和内容不变,企业的元数据就是稳定的,由元数据构成的数据模型(data model)也是稳定的。③对元数据的处理方法是可变的。用不变的元数据支持可变的处理方法,即以不变应万变,这就是企业信息系统工程的基本原理。④信息系统的核心是数据模型。数据模型包括概念数据模型CDM和物理数据模型PDM。数据模型的表示形式是E-R图,E-R图要用CASE工具设计。例如,power designer,它们不但具有正向设计功能,而且具有逆向分析功能,这样才能实现快速原型法。⑤信息系统的编程方法主要是面向对象(除数据库服务器层面上),其次才是面向元数据(在数据库服务器层面上)和面向过程(在实现存储过程和对象方法中)。⑥用户自始至终参与信息系统的分析、设计、实现与维护。
面向元数据方法,与关系数据库管理系统紧密地捆绑在一起,只要面向对象数据库不能完全替代关系数据库,这种方法就不会终结。目前数据库管理系统的发展趋势是:在关系型数据库的基础上,将面向对象的某些特性(如继承)添加上去,称为“对象-关系型数据库”,但本质上仍然是一个关系型数据库。面向元数据方法的优点是:通俗易懂,特别适合信息系统中数据层上的设计与实现。面向元数据方法的缺点是:只能实现二维表格,不能实现窗口界面。
信息系统的开发方法有:面向过程方法(process oriented,PO),以数据处理为核心,通过了解数据在系统中如何流动来建立数据流图和实体关系图;面向数据方法(data oriented,DO),首先分析企业的信息需求,建立企业的信息模型,然后建立全企业共享的数据库;面向对象的方法(object oriented,OO),先分析企业的一些对象,把描述对象的数据和对对象的操作放在一起,如果多个对象共享某些数据和操作,共享的数据和操作就构成了对象类。
“五个面向”实践论是指“面向流程分析、面向元数据设计、面向对象实现、面向功能测试、面向过程管理”。“五个面向”实践论,它综合了软件工程方法论中各种开发方法的优点,去掉了各种开发方法的缺点,它是人们在软件开发实践中经验的结晶,是软件工程方法论在软件工程实践中的具体运用。
面向流程分析,就是面向流程进行需求分析。任何软件系统,都是为了满足用户的信息需求,而用户的信息需求,往往表现在用户的工作流程上,无论是系统的功能、性能、接口、界面,通过系统流程这根主线,都会全部暴露出来。在需求分析时,谁抓住了软件系统的流程,谁就掌握了需求分析的钥匙,谁就能取得需求分析的成功。
面向元数据设计,就是面向元数据进行概要设计。例如,在信息系统设计时,设计师要采用面向元数据的方法进行概要设计。概要设计的主要任务是建立系统的数据模型,包括概念数据模型CDM和物理数据模型PDM,以及体现业务规则的存储过程和触发器,然后以数据模型为支撑,去实现信息系统的业务模型和功能模型。为此,要对元数据进行分析、识别、提取,只有将元数据分析透了,才能建立由元数据所构成的数据模型。
面向对象实现,就是面向对象进行详细设计和编程实现。在多层结构(B/S)的表示层和业务层上进行详细设计和编程实现时,要采用面向对象的方法。目前流行的编程语言,大多数是面向对象的语言。详细设计与编程实现的绝大部分工作量,是在表示层与业务层上进行的,是面向对象的,所以叫作面向对象实现。详细设计和编程实现,实质上是用构件加上程序来实现系统的业务模型和功能模型(包括性能模型和接口模型)。只有对系统的三个模型思想(业务模型、功能模型、数据模型)吃透了,才能设计和编写出规范的程序。因为类的实例化就是对象,所以面向对象实现,实质上是面向类实现。面向对象方法的软件分析师与程序员时刻要牢记:分析设计时由对象抽象出类,程序运行时由类还原到对象。
面向功能测试,就是面向功能进行模块测试、集成测试、Alpha测试和Beta测试。面向功能测试的方法就是黑盒子测试方法。今后采用白盒子测试方法(面向程序执行路径测试)的人,只是从事软件构件生产的底层人员。黑盒子测试方法的测试思路是:针对需求分析时建立的系统功能模型,将每一个需求功能点,都分解为多个测试功能点。再将每一个测试功能点,都分解并设计为多个测试用例。然后,对每一个测试用例,都执行测试过程,产生测试记录数据。最后,汇总并分类整理所有的测试记录数据,就可以形成测试报告。一般而言,面向功能的黑盒子测试报告,就是软件系统的内部验收测定报告,即Alpha测试报告。而Beta测试报告,就是用户验收测试报告。
面向过程管理,就是面向软件生命周期过程,对软件生命周期各个阶段进行过程管理与过程改进。因为软件产品质量及软件服务质量的提高与改进,完全取决于软件企业的软件过程的改善。无论是CMMI,还是ISO9001,都是站在软件生命周期过程的层面上,去提高软件企业的过程管理素质。软件组织的软件过程管理与改进,都是面向过程的,既面向开发过程,又面向管理过程。可视、可控、优化的白箱操作过程,就能保证软件工作产品的高质量。质量源于过程,过程需要改进,改进需要模型,改进永无止境,这就是CMMI精神,这就是软件工程实践论中的面向过程管理。
5.6 信息系统建模工具
要使系统开发项目取得成功,分析员必须有详细的计划。成功在很大程度上取决于有组织的、讲究方法的一系列活动和任务,最终将产生一个可靠、强大而高效的信息系统。
系统开发中的工具是帮助生成项目中所需模型或其他组件的软件支持。工具也许是创建图表的简单绘图程序。它们也许包括一些存储关于项目信息的数据库应用程序,如数据流定义或过程的书写描述。
工具是为帮助系统开发者而专门设计的,程序员应该熟悉集成开发环境(IDE)。这个环境提供许多工具帮助程序员进行编程,例如,灵巧的辑器、上下文相关帮助和调试工具。有些工具能为开发人员生成程序代码,有些工具则可以通过反向工程执行文件来获得程序代码,并可以根据代码生成模型,即使在开发人员将文档丢失(或没有生成文档)的情况下也能推断出程序的用途。
对系统发人员来说,使用最广泛的工具是计算机辅助软件工程(computer aided software engineering, CASE)是信息系统开发生命周期各个阶段帮助开发者提高工作质量和效率的工具。通常情况下,CASE工具能够帮助分析员生成重要的系统模型,然后自动检查模型的完整性,以及该模型和系统其他模型的兼容性。最后,CASE工具可以根据模型生成程序代码。常用分析与设计工具有Power Designer,Rational Rose,PBwin,Visio,StarUML,Trufun Kant Studio等。
尽管Visio不是真正的CASE工具,但Visio是一个绘图工具,系统分析员可以用它来创建所需要的任何系统模型。Visio带有一个绘图模板集,这里包含了用于各种商业和工程应用的符号。软件和系统开发模板提供流程图、数据流图、实体-联系图、UML图,以及其他本书中能找到的图的符号。尽管模板提供一个用于存储图表元素的定义和描述信息的有限资料库,但Visio并没有提供一个系统项目开发中的完整的资料库。尽管如此,许多系统开发人员还是喜欢Visio所提供的绘制必要图表的灵活性。Visio软件界面提供了两个窗口,一个窗口中育几个UML图:类图、用例图、流程图,另一个里面有用于设计网络结构的计算机和网络发各的标志。
Oracle公司(www.oracle.com)将Oracle Designer描述成一个工具集。该工具集用来记录定义并将灵活、图形化的客户/服务器应用于快速的自动化构造。Oracle Designer包括一个完整的资料库、图形表示功能,以及代码生成功能。用于分析的系统模型程序包括一个过程模型程序、功能等级绘图程序、数据流绘图程序,以及实体-联系图绘图程序。
Rational Rose软件公司如今已成为IBM(www.ibm.com)公司的一部分,专门生产支持面向对象方法的工具。Rational Rose被称为可视化的建模工具,而不称为CASE工具。Rational Rose可用于统一过程(UP)或使用UML图表的任何方法,并且由于Rational Rose非常具有影响力,以至于许多开发者将UP认为是“Rational Rose”方法。该工具除提供资料档案库外还提供反向工程和代码生成能力,同时也能和其他的工具结合在一起,从而提供一个完整的系统开发环境。Rational软件公司还具有其他的与详细的IDES紧密集成的建模工具,包括Visual Studio.NET。
Together近来的进展是往返工程这一概念的出现。由于系统开发是非常反复的过程,尤其在面向对象方法中,因此对图形模型(如类图)和生成程序代码进行同步操作是很重要的。比分析员改变了程序代码,那么类图也需要更新。同样地,如果类图改变了,那么程序代码也要更新。不像ICASE工具要从图形模型产生代码,较新的工具将自动地完成两个方向上(往返)的同步过程。如今已成为Borland公司(WWW.borland.com)一部分的Peter Coad与TogetherSoft公司率先在它称为Together的工具中采用了往返工程。Together使用UML图表和几种不同的面向对象编程语言来对往返工程提供支持。如果开发人员喜欢通过书写代码来定义类,则类图会自动更新。如果开发人员喜欢先绘制类图,则定义类的代码会自动随之更新。
RationaI XDE Professional最新的系统建模工具将建模工具与资料档案库的所有特点,与生成并改进程序代码的其他供应商提供的集成开发环境(IDE)结合起来。Rational XDE Professional与Microsoft Visual Studio.NET IDE集成起来,使得往返工程及代码生成成为开发者使用的IDE的一部分,开发者不再使用CASE工具及单独的IDE,所有开发者需要的都集成存一个工具中。
建模是为软件开发服务的,因此,如果模型所包含的信息足够完备,就可以以这些信息为基础,进行软件系统的建造。统一建模语言UML是一种总结了以往建模技术的经验并吸收当今优秀成果的标准建模技术,利用UML表达的软件模型,可以直接和某种设计语言建立映射关系,通过UML建造工具,将UML模型转换为对应的程序设计语言源代码框架。
UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
UML由三部分组成:基本构造块、规则和公用机制。其中基本构造块又包括三种类型:事物、关系和图。事物划分为以下四种类型。
结构事物:包括类、接口、协作、用例、主动类、组件和节点。
行为事物:包括交互机和状态。
分组事物:UML中的分组事物是包。整个模型可以看成是一个根包,它间接包含了模型中的所有内容。子系统是另一种特殊的包。
注释事物:注释给建模者提供信息,它提供了关于任意信息的文本说明,但是没有语义作用。
5.7 信息系统开发类型(表1-5)
表1-5 信息系统开发类型表
结构化分析的特点:①关注数据流程,关注数据通过业务和软件过程的流程,又称“以过程为中心的”; ②过程为中心,强调的是信息系统框架中的“知识”构件;③模型驱动的、以过程为中心的技术,用于分析一个现有系统,定义新系统的业务需求;④软件设计时采用数据流图,业务流程重组采用各种过程模型。
信息工程和数据建模的特点:①IE关注数据结构,IE关注系统中存储的数据结构,又称为“以数据为中心的”;②数据为中心,强调在分析和研究过程需求、接口需求之前,首先研究和分析数据需求;③IE的数据模型,“实体关系图”,定义了集成并同步数据模型和过程模型,在描述数据流之前,首先绘制实体关系图,创建数据模型;④信息工程,一种用来计划、分析和设计信息系统的模型驱动的、以数据为中心,但对过程敏感的技术。
面向对象分析的特点:①对象,封装了数据(属性)+过程(方法)。访问或修改对象的数据的唯一方法是使用对象预定义的过程。②面向对象分析,一种模型驱动技术,将数据和过程集成到称为对象的结构中;③OOA是从各方面说明系统对象的图形;④面向对象分析的建模标准,统一建模语言UML,UML为整个对象模型提供了图形化语法。
5.8 信息系统开发方式
信息系统开发条件:必须有建立信息系统的实际需求和迫切性;企业所处的市场环境比较健全,有实现现代企业制度的机制;必须要有一定的科学管理基础;有必要的投资保证,并能提供系统维护人员的编制和维护费用;管理人员知识结构应满足系统建设需要;管理工作基础扎实,基础数据要齐全规范。
系统开发的准备工作:建立开发的领导机构,组织开发队伍;借鉴同类系统的开发经验;选择适合本企业实际的开发方式;确定系统目标、开发策略和投资金额;收集和整理基础数据。
信息系统的开发方式主要有委托开发,自主开发,联合开发,购买软件包与二次开发(表1-6)。
表1-6 信息系统开发方式表
在信息系统开发方式上,组织可以在目前常用的自行开发、委托开发、联合开发、购买现成软件包中选择一种。四种开发方式各有优缺点,需要根据组织的资源情况、技术力量、信息系统在企业战略中的地位(是否是形成组织的独特竞争优势和核心竞争力中的要素)、信息以及流程可靠性或机密性要求、项目成本和进度的要求,以及管理基础、外部环境等多种因素进行选择。但是,不论选择哪一种方式,组织的领导和技术人员必须参加,并在系统完整的开发过程中培养和锻炼组织的技术队伍。
5.8.1 自行开发
组织具有较强的技术力量,即具备系统分析、设计和编程力量,而且组织希望通信息系统的开发提升组织的竞争优势,形成核心竞争力,可以采用自行开发的方式。其优点是组织对系统的需求比较了解,用户与本组织的技术人员之间沟通比较容易,可以得到适合组织特点的满意系统,也有利于日后系统的维护和升级换代,需要项目成本少,通过系统开发也能培养、提升自身的技术力量。其缺点是系统开发的周期长,需要强有力的领导,组织自身的技术人员不如系统开发公司的人员专业,需要进行一定的咨询。
5.8.2 委托开发
组织具有的技术力量较弱,缺乏系统分析、设计和编程人员,但是资金比较宽裕,组织竞争优势和核心竞争力不完全依赖于信息系统。组织可以在系统规划、需求等方面提出尽可能明确的要求,采用招标等方式选择开发公司,通过签定合同要求承担开发的公司在规定的成本、进度和服务的基础上,完成系统的开发。目前,较多的组织采用委托开发的方式,其优点是可以充分利用专业开发公司的人员优势,开发出的系统技术水平较高,开发速度较快,组织比较省事。但是,开发公司专业人员与组织的信息沟通不容易,对组织的需求、系统功能的认识,可能会存在偏差,因此开发的项目难以完全满足用户的需要。同时,组织对系统的控制困难,开发的风险较大,需要组织选配熟悉业务的技术人员,配合开发工作,做好沟通、协调、监督和检查工作;为保证系统的运行和维护,需要做好培训工作。
5.8.3 联合开发
联合开发实质上是一种半委托方式,需要组织有一定的系统分析、设计和编程力量,由组织和开发公司共同开发,实现两者优势互补,而且组织可以参与到整个系统的开发过程中,实现组织与开发公司良好的沟通与协调,及时解决开发过程中存在的问题,从而开发出能更好满足组织需要的系统,同时能够培养和锻炼组织的技术队伍,为日后系统的维护和二次开发奠定了基础。这种开发方式需要双方分工明确,明确自己的职责,精诚合作。
5.8.4 购买现成软件包
随着软件开发向商业化和专业化方向发展,市场上出现了不少商品化软件包,避免了重复劳动,提高系统开发的经济效益。而且购买现成的软件包最省事,节省时间。但是这种商品化的软件,通用性强而针对性差,因此要想买到完全适合本组织的软件并不太容易。因此,购买现成软件包需要组织有较强的鉴别能力,如果购买来仍然需要对系统进行修改,不仅费时,成本也难以估算,对系统的维护比较困难。
不同的开发方式有不同的优缺点,组织需要根据自身实际情况进行选择,也可以综合使用各种开发方式。此外,除了自行开发以外,其他方式都需要选择开发单位。系统开发单位的选择不仅要考虑系统是否可以成功的建成,日后系统的维护、服务、升级也至关重要。对开发单位的选择要着重考虑如下因素,一是选择实力雄厚的系统开发单位,认真了解他们拥有的信息系统服务和技术方面的专家,熟悉开发技术和工具;二是,调查系统开发单位是否有相关项目开发的成功经验,熟悉用户的业务情况和开发过类似的系统;三是考虑开发单位的信誉,以便日后对系统进行及时维护和升级。不论选择哪一种开发方式,在系统开发的过程中,组织一定要让自己的信息技术人员参与其中,一方面加强质量监督,开发过程规范的监控,同时也能锻炼和培养组织的技术人员,使他们将来能够对系统进行维护,甚至具备独立进行系统开发的能力,利于将来系统的升级(表1-7)。
表1-7 信息系统分析与设计岗位胜任能力表
专业岗位能力介绍,规划建模过程与方法:定义企业目标、组织战略转化为信息系统战略、识别企业过程、识别数据类、建立U/C矩阵、进行合理性检查、上对角矩阵、划分子系统、可行性分析;结构化业务需求模型:组织目标分析、组织结构图、确定业务、组织/业务关系图、业务功能一览表、业务明细表、实体分析、业务流程图、表格分配图;结构化系统分析模型:系统关联图、列举事件、功能分解图、DFD片段、系统图、基本图、数据字典、处理逻辑表达、系统功能划分与数据资源分布;结构化系统设计模型:精华DFD、信息系统的三层架构、表示层结构图、应用逻辑层和数据访问层结构图、描述模块功能与接口、描述全局数据结构、代码设计、输入输出设计、过程设计;面向对象业务需求模型:组织分析、需求获取、需求分析;面向对象系统分析模型:建立系统用例、分析业务规则、用例实现、软件架构和框架、建立分析模型、组件模型、部署模型;面向对象系统设计模型:设计模型、接口设计、包设计、数据库设计;运筹学与最优化方法主要包括线性规划、非线性规划、目标规划、整数规划、层次分析法及智能优化计算。
系统开发是一项涉及众多因素、耗资大、时间长、风险大的工程,必须进行计划和控制。项目管理是在规定的时间、预算和质量目标范围内,把各种系统、方法和人员结合在一起完成项目的各项工作。有效的项目管理是指在规定用来实现具体目标和指标的时间内,对组织机构资源进行计划、引导和控制工作。项目管理体现在5个方面:资源保证、进度保证、审核批准、进度和费用统计、知识产权保护。
5.9 信息系统的项目管理
5.9.1 信息系统项目建设需要管理
“项目”一词在社会经济和文化生活的各个方面被人们应用的越来越多。人们经常在“项目”一词前加上限定词,限定词通常描述的是项目对象的名称、特性、范围,整个项目的实施和管理都是围绕着这个对象进行。每个项目都具有区别于其他项目的独特性,有明确的目标,项目要在限定的周期内实施完成,项目在实施的过程中不仅会受到自然资源(人力、物力、财力等)的约束,还有很多无法预料的情况发生,即项目的不确定性,使得项目实现预期制定的目标变得困难。为了使每个项目都尽可能的取得成功,把各种资源应用于目标,以实现项目的目标,满足各方面既定的需求,人们在实践中逐步形成了成熟的项目管理理论、技术和方法。
对组织来说,信息系统建设也是一类项目,具有项目的一般特征。然而,在信息系统项目建设的过程中,其与一般项目相比具有更大的不确定性,很多无法预期情况会发生,会使系统预期目标的实现变得很困难,为了实现系统最初制定的目标,需要人们采取一定的措施、方法来预防和解决系统开发过程中出现的问题,对系统开发的过程进行控制。许多成功与失败的信息系统建设经验与教训的总结,使人们逐渐形成了“三分技术、七分管理”的共识,成功的信息系统建设更大程度上归功于成功的管理,而不是最大程度上取决于是否采用了最先进的技术和开发工具,投入最多的资金。由此可见,管理在信息系统建设的作用巨大,为了确保信息系统建设的成功,人们将成熟的项目管理思想、原理和方法应用于信息系统建设项目中,信息系统项目管理成为人们研究的一个重要内容。
项目管理贯穿于系统开发的全过程,是对项目开发组织进行管理的过程,没有科学的项目管理,系统开发无法顺利完成。只有进行科学的项目管理,做出项目开发计划,控制系统的开发进度,做好项目的经费支出和经费控制;协调好各级开发人员与各级用户之间的关系,做好文档管理工作,才能使项目的开发工作能够按时、保质、在经费允许的范围内完成。
总而言之,信息系统项目管理是为了使信息系统能够按照规定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。
5.9.2 信息系统项目管理流程
信息系统项目管理不仅要努力实现项目的范围、时间、成本和质量等目标,还必须协调整个项目过程,实现项目各个阶段的先后衔接,每个阶段都有自己的起止范围,有本阶段的输入文件和本阶段要产生的输出文件。同时,每个阶段都有本阶段的控制关口,即本阶段完成时将产生的重要文件也是进入下一阶段的重要输入文件。每个阶段完成时一定要通过本阶段的控制关口,才能进入下一阶段的工作,各个阶段先后衔接的全体成为项目管理流程。信息系统项目管理流程一般包括五个部分:项目启动、项目计划、项目实施和控制、项目结束和项目的后续维护。
项目启动:项目启动是项目管理过程中一个新项目开始的过程,实际上是指信息系统项目立项。这一阶段主要工作是根据组织管理人员提出的大致系统目标,解决问题的范围,系统的功能和性能,运行环境,设计费用和完成时间等,对组织业务进行初步调查,了解组织内部目前和未来主要业务发展方向,这些主要业务在什么样的环境下开展,需要使用什么技术能够使建设的信息系统为组织业务运行提供更好的平台,提出项目建议书。项目建议书被主管部门批准后,进行可行性研究,形成可行性研究报告,项目能否正式实施还有待于可行性研究报告是否能通过主管部门的审批。如果可行性研究报告审批通过,才表示项目立项,才可以制定具体的项目计划,开始下一阶段的工作。因此,每个阶段都要进行阶段性的审核或检查。上一阶段形成的各类文件将是下一阶段的启动文件。
项目计划:项目管理过程中的第二个阶段和第三个阶段,是信息系统项目管理的核心。其中,计划的编制是项目管理过程中最复杂的阶段,项目计划工作涉及九个项目管理知识领域(在项目管理内容小节,具体分析)。在计划编制的过程中,可看到后面各阶段的输出文件。计划的编制人员要有一定的信息系统项目建设经验,在计划制定出来后,项目的实施阶段将严格按照计划进行控制。今后的所有变更都将是因与计划不同而产生的,也就是说项目的变更控制将是参考计划阶段的文件而产生的。
项目实施和控制:根据制定的项目计划,进入信息系统项目实施阶段,该阶段实质上是利用组织大量资源进行系统开发的阶段,通过必要的活动,一步步完成计划阶段制定的各项任务。在信息系统项目具体的实施过程中,往往大型的信息系统会根据技术类别或系统功能将项目分解成不同的子项目,由项目团队的不同人员完成各个子项目的工作。在项目开始前,项目经理会向参加项目的成员发送《任务书》。《任务书》中规定了要完成的工作内容、项目的进度、项目的质量标准、项目的范围等与项目有关的内容,还含有项目使用方负责主要人的联系方式及地址等内容。
在项目实施的过程中,项目控制是必不可少的,主要是对实施的进度、成本进行控制,对实施过程中需要的各种资源进行配置管理,对项目实施过程发生很多无法预料情况,与项目计划产生了不同,需要进行的变更进行控制等,以确保系统开发人员能够按照项目的目标和下达的任务,有计划地进行工作,最终按时、按质完成项目计划中制定的各项任务。
项目结束:项目结束是指将开发出的信息系统最终交付组织使用,这个阶段也是由一系列的工作组成的,确保项目井然有序地结束。
首先是对信息系统进行测试,检查信息系统达到各个子项目任务书规定的要求和项目立项时的整体要求。项目测试分集成测试和系统测试,主要进行功能测试、健壮性测试、性能—效率测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试等,测试过程在模拟运行环境中进行。
其次是内部验收,项目完成集成测试和系统测试后进行项目内部验收,该阶段由三个环节构成。一是准备提交的各类文档,包括项目经理提交的内部验收计划、项目开发总结报告、产品发布清单;财务主管提交的项目财务预算报告等;二是站在用户角度进行内部验收测试,测试内容与方法虽然与系统测试基本相同,这是试运行的基础,通过这一步,为用户验收作充分的准备;三是内部评审,对提交的所有文档及测试结果进行内部评审,完成项目开发总结报告。
最后是项目试运行与验收,该阶段的主要任务是,使所有的工作产品得到用户的确认,也由三个环节构成。一是项目经理负责检查产品的完整性,包括文档、介质和中间产品等,以确保现场实施的成功;负责应用软件的现场安装调试,完成安装调试总结报告;负责制定用户验收计划,并得到用户的确认。二是用户进行验收测试和系统试运行,进行文档和系统的移交。三是用户确认,项目经理负责与客户协调,协助用户进行项目验收,形成用户验收报告。
项目维护:信息系统项目结束后,项目管理过程进入到系统维护阶段。信息系统在最终交付组织使用后,在系统的运行过程中,特别是运行较长时间后,系统中的软件或硬件都有可能出现损坏,需要对系统进行正常的日常维护,系统维护是为组织业务提供良好的服务,使信息系统项目产生绩效的重要保证。直到新的信息系统投入运行,代替该系统,这个信息系统项目的维护工作才会结束。
5.9.3 信息系统项目管理内容
信息系统项目管理就是应用项目管理的思想、原理和方法对项目进行管理,那么究竟要管理什么,能使项目管理人员在系统建设的过程中,尽可能事先预测可能发生的问题,采取有效的措施进行控制,实现系统预期的目标,使管理工作成为主动的,而不是被动的。为了认识信息系统项目管理的内容,我们有必要了解项目管理知识体系。
项目管理知识体系:成立于1966年的美国项目管理学会(project management institute,PMI),一直致力于项目管理领域的研究工作。在1987年推出了项目管理知识体系指南(project management body of knowledge,PMBOK),并在1996年和2000年进行了两次修订,使该体系更加成熟和完整,这个知识体系包括九大知识领域。每个知识领域包括数量不等的项目管理过程,成为项目管理研究的一个重大里程碑,受到国内外专业学术领域专家和学者的广泛重视。目前,应用领域进一步扩大,得到了迅速的发展。对信息系统项目建设,同样具有直到价值。
项目管理知识体系包括项目范围管理、进度管理、成本管理、质量管理、人力资源管理、沟通管理、采购管理、风险管理和整合管理九大知识领域。因为项目是一个整体,项目管理是一个整体化过程,项目的整体性要求,需要对项目进行整体化管理,也就是说项目管理需要全局的整合观念,以识别、确定、结合、统一与协调项目管理过程(每个知识领域包括数量不等的项目管理过程)组内不同过程与项目管理活动所需进行的各种过程和活动,使得项目管理其他八个方面都与整合管理有着联系,实现了项目目标整合、项目方案整合和项目过程整合。
项目管理知识体系内的九大知识领域中,每个知识领域包括数量不等的项目管理过程,简单描述如下。①项目范围管理:为了达到项目目标,对项目工作内容的范围保持控制所需要的一系列过程,包括项目立项、范围计划编制、范围定义、范围核实和范围变更控制等。②项目进度管理:为了确保项目各阶段工作按时完成所需要的一系列过程,包括活动定义、活动排序、活动工期估算、制定进度计划和进度控制。③项目成本管理:为了确保完成项目的总成本不超过批准的预算所需要的一系列过程,包括资源规划、成本估算、成本预算和成本控制。④项目质量管理:为了确保项目满足其需求所需要的一系列过程,包括质量计划编制、质量保证和质量控制。⑤项目人力资源管理:为了保证项目中所有参与人员的能力和积极性得到最有效的利用,所需要的一系列过程,包括人力资源规划、人员招聘、项目团队组建和团队建设。⑥项目沟通管理:为了确保项目信息及时、适当地产生、收集、发布、储存和最终处理,所需要的一系列过程,包括信息计划编制、信息发布、执行情况汇报和行政收尾。⑦项目采购管理:为了从项目实施组织以外获得产品和服务等资源,所需要的一系列过程,包括采购计划编制、招标计划编制、招标、资源选择和合同管理以及合同的终结。⑧项目风险管理:项目实施过程中可能会遇到各种不确定的因素,为了将有利于项目的方面尽量扩大并加以利用,而将不利方面带来的后果降到最低程度,所需要的一系列过程,包括风险的识别、风险量化、风险应对措施开发和风险控制。⑨项目整合管理:为了确保项目各要素相互协调,对涉及的冲突目标和方案权衡折中,以最大限度满足项目相关人员的利益要求和期望,所需要的一系列过程,包括项目计划的建立、计划执行和项目总体变更控制。
信息系统项目管理内容:①项目建设的三重约束:信息系统项目与一般项目相比具有更大的不确定性,信息系统项目管理,就是应用项目管理的方法,充分利用人力、物力、资金等资源,在规定的时间和预算之内,建立能够满足用户需求的信息系统,交付给用户使用。 因此,信息系统项目管理内容也包括项目管理知识体系中的九大知识领域。本书将结合信息系统建设,着重介绍信息系统项目管理中比较重要的成本管理、进度管理和质量管理。因为项目的成本、进度和质量这三个方面既相互联系,又相互矛盾。业界总结信息系统建设成功与失败的经验、教训时,有两个80 ∶ 20的估计:80%的项目都失败了,只有20%的项目是成功的,失败的项目80%的原因不是技术因素导致的,只有20%的原因是技术因素导致的。而在大多数情况下,信息系统项目失败最终表现为成本超支和进度拖延,两者与质量有着密切关系。在实现规定质量的前提下,在进度和成本目标之间做出权衡;在规定的进度内完成,在质量和成本目标之间做出权衡;在成本一定的前提下,在质量和进度目标之间做出权衡,所以成功的项目必须满足用户在时间、成本和质量上的不同要求。成本、时间和质量成为实现项目建设目标的三重约束,三者的关系如下图所示(图1-8、图1-9)。②信息系统项目建设的进度管理。项目进度管理就是要采用一定的方法对项目所包括的活动及其之间的相互关系进行分析,对项目活动所需要的时间进行估计,并在项目的时间期限内合理地安排和控制活动的开始和结束时间,以保证项目能在满足其时间约束条件下提前实现项目总体目标。项目进度管理阶段所需要的一系列过程,包括活动定义、活动排序、活动工期估算、制定进度计划和进度控制。③项目成本管理是指在满足质量、进度等要求的前提下,对项目实施过程中所发生的费用,通过计划、组织、控制和协调等活动实现预定的成本目标,并尽可能降低成本费用的一种科学的管理活动。在信息系统建设过程中,用户的需求不断变化,使得工作内容和工作量不断变化,使得项目成本预算和估算的准确度差,再加上在开发初期,对成本不够关心,忽略对成本的控制,只有在项目进行到后期,实际远离计划出现偏差的时候,才进行成本控制,这样往往导致项目超出预算,以及开发技术和工具的不断变化等,造成信息系统造价过高,使组织陷入资金投入的黑洞。因此,成本管理是信息系统项目管理的重要内容,以确保完成项目的总成本不超过批准的预算,主要包括资源规划、成本估算、成本预算和成本控制。
图1-8 项目实现的三重约束示意图
图1-9 质量、成本和进度三者的相互关系示意图