目录
前言:
项目的提出与选择
项目立项的目标和动机
进行基础研究并获取技术
进行应用研发并获得产品
提供技术服务
信息技术产品的使用者
项目的选择和确定
选择有核心价值的产品、项目或可开发方向
评估项目风险、收益和代价
评估项目的多种实施方式
平衡地选择适合的方案
项目提出和选择的结果
可行性研究与效益分析
可行性研究报告的内容
经济可行性
技术可行性
法律可行性
执行可行性
方案的选择
前言:
系统计划主要用于描述从项目提出,选择到确立的过程,包括系统项目的提出与可行性分析,系统方案的制定,评价和改进,新旧系统的分析和比较,以及现有软件、硬件和数据资源的有效利用等问题。
项目的提出与选择
组织在信息化的过程中,可能基于各种动机提出系统项目的建设,有关人员要根据这些动机,提出和确定信息系统的工作范围,确定项目立项,提出系统选择方案,给出选择结果。
项目立项的目标和动机
企事业单位在其自身的经营管理过程中,对于项目的立项建设可能具有多种动机,通常可归结为以下几种。
进行基础研究并获取技术
此类项目通常是由大学院校或企业集团战略研究性部门提出和实施。小规模的研究组织可能仅仅是企业中的一个研发部门或从事研发工作的团队;中大规模的研究组织包括研究所获研究院这种独立建制的单位;大规模的研究性项目可归类与国家863计划等跨行业,跨地域协作的国家级重大项目立项。
进行应用研发并获得产品
此类项目通常由企业进行立项和研发,企业立项的基本动机通常是为了得到应用软件产品并向目标客户群进行销售从而获得利润等。产品一般会基于某类特定客户群体的需求进行设计,有明确和具体的研发目标需求,有严格的时间限制、资源预算等,因此可归入应用研发型软件。
应用研发型软件通常具有一定的通用性,客户广泛,即可能是面向个人消费者的工具软件(例如,Office、杀毒软件,游戏软件等),也可能是面向特定领域或行业的工具软件呢(例如SQL server数据库)。
提供技术服务
对于此类项目进行立项的企业通常能向目标客户提供比较全面的技术服务而不是单一的软件产品。因此企业的服务范围可能包含提供技术和解决方案的咨询、利用现有产品进行系统集成和服务、面向特定客户的软件项目定制开发、对现有的软件系统进行升级和改造、提供软件应用相关的技术支持、服务和培训等服务中的一个或多个内容。
总的来说,此类组织通常会面向会面向一个特定行业、具有相对稳定性的客户群体,通过提供一种综合性服务来获取市场价值,因此可以把此类公司看作“服务”导向的组织。
信息技术产品的使用者
信息技术的使用者是最终客户,对他们来说,软件项目的立项动机既不是为了得到软件产品而进行 销售,也不是为了提高技术服务,而是通过购买产品或服务来得到使用价值。例如:一个消费者购买了绘图软件是为了存储和处理个人数码相机中的照片;而一个企业通过实施 ERP(企业资源计划)可能是为了达到生产能力的控制、生产计划科学性、提高管理水平、获取新的决策能力、降低库存成本、提高资金周转率、建立面向市场订单生产方式等目标,并期望通过这些目标的实现来增强企业竞争力、获取更大的市场份额。对信息技术的使用者来说,信息技术是一种手段,同时也是一种成本。如何最小的成本和风险获得满意的效果是客户最关心的问题。
项目的选择和确定
系统项目的选择至少包含两种实用性目的,一个是软件开发公司在诸多的产品方向中选择适当的方向进行研究和开发,另一种是客户从诸多的产品中购买适合自己需要的产品或选择适合自己需要的技术方案进行实施。与系统项目提出问题一样,并不存在一个统一模式进行系统项目的选择和取舍,但可以提出项目取舍和评估的若干原则。通过使用项目取舍和评估的原则,可以逐步排除那些不符合需求的项目定义,从而找到比较适合的项目或产品开发方向。
选择有核心价值的产品、项目或可开发方向
这个策略关键在于确定什么样的系统项目是有价值的。由于立项单位所处的行业、在行业中的位置、立项目标等因素不同,对软件项目的价值判断也不同。但“有核心价值的软件项目”通常总是和企业或客户的核心业务相关的。
美国哈佛商学院著名教授Michael Porter曾经在他的《竞争优势》(CompetitiveAdvantage)一书中提出了“价值链”的概念,价值链把企业运作的各种活动划分为产品设计、产品生产、产品营销和产品应用等独立领域,企业的价值链也可以进一步和上游供货商与下游买主的价值链相连,从而构成一个产业的价值链。如果以价值链的观点来看待软件产品或项目,软件是作为一种技术服务手段被运用到企业业务的价值链上的,通过实现价值链中的关键业务的信息化从而最终改善客户单位的企业质量,同时也使软件开发公司获得现实的经济利益。
因此,在企业或客户经营活动中对价值链增值最大的部分,就是企业或客户的“核心业务”。针对核心业务的信息化产品或项目,通常都是具有高价值的,也可以说,所谓的“行业信息化”的关键就是该行业中这些核心业务的信息化改造。例如:
- 对生产制造业的企业来说,生产计划、库存控制、实现面向订单的生产就是核心业务,无论实施ERP还是小规模的MIS系统,针对这些部分的软件功能总是被客户认为是最有价值的。
- 对于金融保险行业来说,由于保险公司的最基本职责是分摊风险和补偿损失,所以一般要求保险公司有足够的分散风险的能力。因此,管理保单数据的业务系统,评估风险的定损系统等就是非常有价值的软件系统。
- 对于教育行业来说,因为学校的核心职能是教书育人,因此与教研、教学、考试评价等业务相关的软件系统,以及支持上述开展的教育资源库软件、电子图书馆软件等就是高价值的软件系统。
总之,选择软件项目,必须首先考察软件应用的行业、业务和目标、以便判断要建设的软件项目价值。
评估项目风险、收益和代价
在判断出一个潜在的软件项目后,还应评估项目实施的风险、收益和维护付出的代价。对于开发产品进行销售的情况,主要评估的是产品的预期收益和为完成开发投入的各种资源(包括时间、人力、资金等),项目的风险主要是技术难度、技术能力、经济能力和各种资源是否能承担、是否是企业需要优先实施的项目、是否符合行业标准和国家政策规定(例如在电子签章没有经过国家法律许可之前,使用电子签章替代手工操作可能是有风险的)等。
对于购买产品或技术服务的客户来说,还应该评估项目实施后对自身业务变更,组织机构和人员职责的影响,现有的业务流程和人员的IT技能是否能满足要求,是否需要制定相关的系统维护、运行规约和规章制度等。而项目实施的实际开销,除购买产品或服务的开支外,通常还包括各种系统维护、改进、培训、招聘新职员,变更业务流程等各种应用方面的开销。以总持有成本(TOC,Total Owner Cost)来评估信息化的代价才能比较准确地得到项目的实际代价。
评估项目风险、预期收益和代价后,可筛选掉多数不符合企业要求的建议项目。
评估项目的多种实施方式
对于已经确认有价值、并且有能力开发的软件项目,则可以进一步参照企业现状考察项目的实施方式。这种实施方式通常既包括了前面的对项目风险、预期收益和资源开销的评估,也包含了企业对现阶段经营目标和现有资源如何合理运用的考虑。这个过程通常由项目的负责人和企业中高层经理 进行决策,决策结果决定了项目的实施优先级以及具体的实施方式。
需要说明的是,企业完成软件项目的方式并不单纯限制于自己组建开发团队进行软件项目或软件产品开发的策略。根据具体情况不太,还可能使用诸如转包开发业务给外部公司、直接OEM(Original Equipment Manufacture原始设备制造商)软件产品进行系统集成、购买关键技术并进行软件集成方式的开发、完成技术方案和设计,然后寻求外部公司进行编码等各种方式。对这些项目实施方式的取舍,主要依据依然是对项目风险、收益和资源开销综合平衡的考虑。
平衡地选择适合的方案
人们在选择可行的方案时,总是希望得到高质量、低成本的产品和方案。软件开发人员通常也很愿意在产品开发中,向产品加入创造性的内容。另一方面,客户单位在面对诸多的投标方案时,会听到各种各样关于技术先进性、快速开发、产品质量稳定可靠、价格如何低廉、推荐的方案有多少成功应用等宣传。然而。
1.新技术可能意味着未来更多的变化从而导致风险,也意味着未来产品的使用者需要更多的学习和导入期,而采用成熟的技术则可能享受不到新技术带来的好处。
2.并不基于某种快速开发技术或平台构造的产品可能会延长项目开发时间从而导致更多的开销,但是基于某种平台的产品又可能使得用户未来“绑定”在某种平台之上,减少未来的自由选择性。
3.不考虑系统的扩展性则很可能在业务变更时,会受阻于已经实施的IT设施,但过多考虑系统的扩展性,软件接口通常就需要花费较大的力气进行设计,那么用户是否在当前的购买中为一些自己并不需要的特性多支付成本?尤其在软件 技术高速发展的今天,当用户期望进行系统升级的时候,常常会发现原来的计算体系已经早就被开发单位淘汰和抛弃了。
4.价格低廉的产品可能具有好的质量,也可能有些功能并不那么让人满意,而最重要的是,当关注这些具有先进性、低成本及拥有众多成功应用的产品或方案的时候,项目选择者容易失去对自己目标的关注,即这些先进技术或宣传的产品特性是否确实是自己需要的?
事实上,对性能的要求常常是充满矛盾的,任何的时候都不存在一个完美无缺的方案,只存在一个对当前的项目目标相对比较适合的方案。项目的决策者必须从最终的项目目标出发,判明各种功能或性能的重要性和优先级。在抛弃明显存在问题的差项目后,选择项目的基本立场应该是“适合”,而不是尽可能的“好”。(实际上任何超出预期设定目标的好性能,通常都是意味着更多的成本)
更进一步地看,“适合”的方案就是平衡考虑开发单位利益和客户满意度的方案。
下图是Noriaki Kano提出的质量模型图,要求质量是客户认为产品应该具备的功能或性能,实现越多客户会越满意;假想质量是客户想当然认为产品应该具备的功能或性能,客户并不能正确描述自己想当然要得到的这些功能或性能需求;兴奋质量则是客户要求范围外的功能或性能(通常是软件开发者很乐意赋予产品的技术特性),实现这些特性客户会更高兴,但不实现也不影响其购买的决策。
显然,项目开发方更多考虑的是项目风险和回报,而客户更多关心的是成本和购买后的满意度。好的方案必须平衡考虑这些因素。系统分析师应该尽可能用技术手段平衡这些彼此对立的要求,保证在项目预期投入资源可接受的范围内,尽量实现客户要求质量对应的功能和性能、发掘客户假想质量对应的功能要求并进行沟通确认,但按自身所服务企业的经营目标平衡考虑客户兴奋质量的实现策略(是努力提供兴奋质量的功能、争取忠诚的客户获得远期潜在的收益,还是消减这些功能、以便使项目的成本最小化)
提示:系统设计师常犯的一个错误,就是用自己对技术的兴趣产生的兴奋质量,来替换客户最基本的要求质量和假想质量。而企业经营者常犯的错误,则可能是对客户提出的合理要求质量视而不见;或者走向另一个极端,不加区分地把一切未经评估的假想要求质量不断指派给软件开发团队。这些都是错误的做法。
项目提出和选择的结果
系统项目提出和选择的结果,最终会以“产品、项目建议书”的方式来体现。典型的应用场景是:
1.在投标项目中,产品、项目建议书通常是乙方提交给甲方竞标方案的一部分。
2.企业单位在确立了要开发某类型产品后,对该产品进行多角度的评估,最终项目立项人向上级提交供决策的建议报告的主要内容就是“产品、项目建议书”。
产品、项目建议书是一个包含多种综合内容的报告,涉及的范围通常要比标准中规定的标准,项目可行性分析报告的内容更全面。在项目建议书中,可能包含如下几个部分。
用户单位、项目或产品的立项背景,需求来源和目标性的介绍
用户的内外部环境、组织机构、现有的IT设施情况等
用户的业务模型和业务规划;
预期要建设的技术系统在用户业务中的位置和作用;
信息化后的用户业务模型、软件应用方式、相关的部署环境、运行规则、管理规范等;
为实现信息化业务模型,技术系统的产品需求定义(功能、性能、约束)和部署方式等;
产品或项目的技术框架;
项目的要点、技术难点、主要实施障碍等
项目或产品的可行性研究结果;
项目可选择的实施方式、组织方式、沟通和协调机制等;
项目的资源范围和预算(人、财、物、时间);
项目的成本、收益分析;
项目的风险及影响评估;
项目进度计划;
项目质量计划;
项目过渡期资金的获得方式、财务计划
产品或项目的商务模式、盈利模式论述;
同类产品或公司的市场调查结果、以及竞争性比较;
可行性研究与效益分析
在项目计划和选择的过程中,需要完成的首要目标是对项目进行估算。项目估算的范围涉及方方面面,例如项目或产品开发的范围,投入和回报、项目风险、作用和意义等。在传统软件工程方法中,是以可行性研究的方式来组织项目的主要估算内容。
可行性研究的范围可能覆盖技术、经济、执行、环境等各种需要评估的因素,但他并不是最后的详细计划(例如:项目的时间进度及人员安排)。通常在进行可行性研究的阶段,项目的目标或产品的 最终方向也是极易变化的。
但可行性研究的意义在于,虽然可行性研究不能指出项目最终的详细计划和方向,但可行性研究的可以在项目定义阶段用较小的代价识别出错误构思的系统,从而规避未来更多的资源投入的损失(时间、资金、人力、机会),或者因遭遇到无法逾越的技术障碍或环境障碍导致的不可避免的失败。
对于那些可行性研究表明可执行的软件项目来说,可行性研究的结果也不承诺系统的收益一定很大或技术风险和资源投入就一定很低,但可行性研究的结果设立了一个“底线”即如果做什么,风险和收益是什么样的控制范围。这些评估结果给了未来的项目评估、项目风险控制,甚至在资源剧烈变化的情况下有计划有重点地削减功能,重定义项目开发范围,提供了非常有价值的方向性指引。
可行性研究报告的内容
可行性研究的主要内容包括:经济可行性、技术可行性、法律可行性、执行可行性和方案的选择5个部分。
经济可行性
经济可行性主要评估项目的开发成本及项目成功后可能获得的经济收益。多数项目只有开发成本能控制在企业可接受的范围内的时候,项目才有可能被批准执行。而经济收益的考虑则非常广泛,例如:项目技术开发的直接现金收入、新产品生命周期中预期的总销售收入、技术积累、对公司业务和产品线的完善和支持、开辟新市场和利润增长点、进入预期能带来较高收益的新市场、提高客户满意度和忠诚度、打击 竞争抢夺市场份额、获得新的信息化能力从而改善经营或管理格局等。
技术可行性
技术可行性评估对于假想的软件系统需要实现的功能和性能,以及技术能力约束。技术可行性分析可通过“提问---回答”的方式来进行论证,包括:
1.技术:现有的技术能力和IT技术的发展现状足以支持想象中的系统目标实现吗?
2.资源:现有的资源(掌握技术的职员、公司的技术积累、构件库、软硬件条件等)足以支持项目实施吗?技术风险在评估的那个范围内?
3.目标:在目前设定的系统目标中,那些目标会遭遇到较强的技术障碍?尤其是那些被设定为必须实现的系统目标。
由于在可行性研究阶段,项目的目标是比较模糊的,因此技术可行性最好与项目功能、性能和约束的定义同时进行。在可行性研究阶段,调整开发目标和选择可行的技术体系均是可用的手段,而一旦项目进入开发阶段,任何调整都意味着更多的开销。
需要再次指出的是,技术可行性绝不仅仅是论证在技术上 是否可以实现,实际上还包含了在当前资源条件下的技术可行性。
投资不足、时间不足、建设的开发目标技术难度过大、没有足够的技术积累、没有熟练的职员可用、没有足够的合作公司和外包资源积累等均是技术可行性的约束。软件系统的技术评估者都只是考虑技术手段是否能实现而忽视了当前的资源条件和环境,从而对技术可行性研究得出了过于乐观的结果,这种错误判断对后期的项目实施会导致灾难性的后果!
加强前期的项目调研、寻求专家的咨询以及采用具有大量成功应用案例、被广泛支持的技术标准和事实标准等均有助于改善项目的技术可行性。
法律可行性
法律可行性评估可能由系统开发引发的侵权或法律责任,可能包括合同的订立和条款,职责、侵权情况的设定,违约、争议的解决等方面的内容。法律可行性还包括国家政策和法律的限制,例如,在政府信息化的领域中使用未被认可的加密算法或未经许可在产品中使用了其他公司被保护的软件技术、构件等。
执行可行性
执行可行性也称操作可行性,它主要评估预期的软件系统 在真实环境中能够被应用的程度和实施过程中障碍。例如,ERP系统建成后的数据采集和数据质量问题,或客户工作人员没有足够的IT技能等。这些问题虽然与软件系统本身无关,但是如果不经过评估,很可能会导致投入巨资建成的软件系统毫无用处。
执行可行性还需要评估对用户的各种影响,包括对现有IT设施的影响、对用户组织机构的影响、对现有业务流程的影响、对地点的影响、对经费开支的影响等。如果某项影响会过多改变客户的现状,需要将这些因素作为进一步的讨论并和软件系统的使用者进行沟通,提出建议的解决方法。
方案的选择
评估系统或产品开发的可选方法。一般来说,同样的项目,可以采用不同的方法来实现。甚至一个大项目的若干子系统的实现方法也不一样。如何进行系统分解、如何定义各子系统的功能、性能和界面,实现方案不唯一。可以采用折中的方法,反复比较各个方案的成本和效益,选择可行的方案。