1、开发策略,Jin Bo College of Computer Science and Technology Zhejiang University,概述,本部分内容主要讨论与软件开发或取得相关的策略、传统和基于Web开发方法的异同、外包和自行开发的不同等 系统分析阶段的主要目标是建立一个新的信息系统的逻辑模型,然后对可选模型进行评价,确定最终方案 迄今我们已经了解到,在系统分析阶段包含了以下六项主要的活动: 收集信息 定义系统需求 为可行性和发现建立原型 划分需求优先级 生成和评选可选方案 与管理层一起审查推荐方案,概述,系统开发方案的确定,涉及到软件开发策略的制定 以前,在系统分析完成后
2、,通常是或者自行开发,或者是外包开发,再多也就是外购一个链接包 现在,开发企业的选择又多了许多,如选择应用服务供应商、购买以Web托管的软件,或者选择可以提供多种解决方案的供应商等 所以,确定最佳开发途径就成为一项重要的决策,这通常需要考虑三个关键问题:Internet的影响、软件的外包选项、软件的自主开发,Internet的影响,Internet已经在软件业务方法和运营方面引起了巨大变化,它实际已经成为实现和传送信息系统应用程序的通用框架 用Web、Internet实现应用,相对于传统的C/S方法的应用程序结构,有许多优势,如: 可访问性:目前互联网无处不在,对许多潜在客户都是可访问的 低通
3、信费用:相对以往的非Internet通信方式 广泛的实现标准:Web标准的开发软件都很易得到,且相对廉价 但通过Internet和Web技术的应用传送也有其不利的方面,包括: 安全性 可靠性 吞吐量 易变的标准 因此,作为一名系统分析员,必须考虑软件开发是基于以Web为中心的框架,还是基于传统的环境,为系统实施生成备选方案,这是任何软件系统开发进入到系统设计阶段前,都需要进行的一个步骤 当目标系统已经确定了逻辑模型、确定了实施范围后,接下来的逻辑问题就是:我们从现在开始要去干什么? 很显然,当然是需要先设计,然后才是编程 但是,可以有许多路径可以完成这项工作。如: 项目较为标准的,则组织可以购
4、买一个系统来支持 项目较为复杂的,如果组织已经开发了标准系统,则稍加修改后,可以支持 也可以选择从头开始开发,建立自己的内部系统 或者是分离出标准部分,选择购买 对于一些服务或特殊的技术要求,还可以以合同程序员的方式获得外来帮助 重点是,现在组织必须计划项目的余下部分,并且现在已经有了大量的可选择资源,为系统实施生成备选方案,下图给出了组织得到一个系统的不同方案,这个图的目的是为了说明各种不同的方案,如自己开发或是购买系统、组件等,它涉及到建立、购买、软件和服务等方面 从图中可以看出,自行研制的系统也可以包含一些购买的组件,软件自主开发方案,如图,是软件自主开发方案的例子,组织除了可以选择开发
5、自己的系统,当然还可以选择购买或定制,甚至外包开发 尽管有众多因素会影响到决策,但最重要的是把握系统的整体拥有成本TCO 因此,自主开发并不是任何情况下,绝对所有模块或部件都是自己从头开发,自主开发或购买决策,开发与购买软件方案之间的权衡,称为自主开发或购买 软件包是开发完成的,标准的、专为购买者开发的专用软件包 在组织战略的总体计划中,软件包通常会占有一席之地。因为它可以为整个项目的一部分提供标准服务 软件包解决方案的一种变种是包括软硬件一起交付的完整解决方案,称为成套系统。 成套系统是由外部企业开发的、针对特定行业解决专门问题的系统 可供不同类型组织使用的软件包称为水平应用。如财务软件包
6、处理专门业务类型信息的软件包称为垂直应用。如机票出票系统 组织项目开发的策略具有多样性,既可以是完全自主开发,也可以购买定制成套系统整合进项目中,更多的是购买软件包实施二次开发 在软件内部获取方案中,自主开发、购买定制成套系统或购买软件包,各有优缺点及不同的代价,自主开发和购买软件包的决策因素,下表是对比自主开发和购买软件包时,企业需要考虑的部分因素,软件外包,外包是根据临时或长期协议,通过支付费用,将系统的开发、维护或运行,也可以是业务流程服务等,转移到其它能够提供需要的服务的企业 外包一般会涉及较少的项目资源、费用成本,并且有可能会获得更专业的服务,减少组织内部整个IT事务的业务处理量 因
7、此,越来越多的组织已经将软件开发外包作为一种战略性业务解决方案的最佳实践之一 提供软件外包的企业称为服务供应商 服务供应商大致分为提供应用程序服务的应用程序服务供应商和提供Internet业务服务的服务提供商,软件外包的费用,经过一段时间的实践,软件外包的费用已经形成了几种固定的模型,包括固定费用、订阅、使用或交易等模型 固定费用模型是根据具体的服务水平和用户支持而定的一种费用模型 订阅模型是根据接入到应用程序的用户数量而定一种可变费用模型 使用或交易模型是根据应用程序的交易和操作量而定的可变费用模型 当项目开发需要软件外包服务时,应该根据软件及外包服务使用的特点来决定费用模型或费用结构,软件
8、外包需要注意的问题,不同的企业、不同的项目,对软件外包服务有不同的适应症任务关键型的系统只有当满足低成本、可靠、业务解决方案满足企业长期发展战略,且涉及风险在可接受范围时,才可以考虑外包涉及国外供应商时,更应该考虑控制、安全、文化、交流等问题企业在决定采用软件外包服务前,应该仔细了解供应商的历史、能力、财务状况、市场口碑等,以控制可能的风险及不确定性对于产量波动较大的企业,采购软件外包服务通常会有较大的吸引力,因为这样会减轻由于工作量的波动,而带来的因人力资源忙闲不均造成的成本浪费,但这样会导致员工对工作安全性的担忧,通常,在涉及外部供应商且问题稍微复杂一些的时候,进行方案选择可能就会遇到困难
9、。如,在可选方案中,一个含有必须功能,但不包含全部功能,另一个虽然具备了多个所需功能,但缺少了其中一个关键功能,而第三个在功能方面完全满足要求,但工作平台却和已确定的不一致 如何选择方案的问题,粗看就好像是“苹果和桔子”的问题,通常供应商提出的解决方案都只是为了极力表现自己,它们甚至不会对求购方的要求做出认真、积极的响应 因此,作为分析员的职责目标就是,建立一系列可以用来尽可能一致地比较这些方案的共同准则,选择实施方案,确定选择标准,一个合理的方案选择标准应该涵盖自行开发方案和所有外包方案,因此需要有三个方面的问题需要考虑: 通用需求 技术需求 功能需求 当然,如果已经选择了自主开发项目,则一
10、些适合外包方案的标准就不需要包括了,确定选择标准,通用需求非常重要,但一般不直接和计算机系统本身相关 通用需求的第一个主要组成部分就是可行性评估,每一个方案都首先必须满足可行性目标 对于外包方案,通用需求可能是一系列评价供应商、它的稳定性和成果记录的标准 对于自主开发的方案,这些标准包括与开发计划相关的风险,如项目历时、内部有哪些可用的技术知识等,确定选择标准,可能的涵盖不同可选方案的标准如下列所示:供应商的成果记录供应商提供的技术支持水平有经验人员的可利用程度开发成本效益预期值实施前的时间对内部资源的影响对内部专门知识的需求对组织的影响(再培训、技术水平)数据转换的成本预算保证和支持服务很明
11、显,对组织来说,有一些标准比其它方面更重要,确定选择标准,除了前面列出的对项目计划的技术要求,还应该有评价软件系统的其它通用标准。如,为了测试软件质量,可能需要用到以下标准: 健壮性(软件不能出现问题) 编程错误(软件能正确运行) 代码质量(可维护性) 文档(用户和系统、联机和书面) 安装难易度 灵活性(软件容易调整以适应新的功能和新的环境要求) 结构(可维护、易理解) 用户界面友好性(使用时自然而直观) 当然,标准在具体使用时,会根据项目的不同,而适当调整各标准项的权重,使其更适应方案的选择,做出选择,一旦需求确定,一种较为简单有常用的方法就是评分 每个方案都给出一个基于标准程度的原始分数来
12、参与评估 原始分数的范围可以是简单的三点计数:完全满意-2分、部分满意-1分和不满意-0分 也可以是更精确的六点计数:最佳5分、优4分、良3分、中2分、差1分和不合格0分 然后,计算各个方案的得分,并加上权重因子,就可以得到各个方案的得分 当然,分数的确定只是方案选择的开始,之间还需要考虑许多复杂的因素。如,两个得分相同的方案,但一个在某重要功能的提供上有优势,它可能就会最后被选择 另外,方案选择时,为了使选择更可信,聘请企业外部的专家帮助选择,通常是不错的方法,建议需求,在倾向软件外包时,需要先给每一个可能的预期供应商发送一份正式的建议需求,这在政府交易中尤其普遍 建议需求是一份规范化的文档
13、,包含系统需求的详细说明。在国内,建议需求通常会包含在项目招标书中 需求陈述是建议需求的主要内容。其主体应该规范和指明前面描述过的项目方案选择标准 需求应该被分成必要部分、可选部分或由协商决定的部分 建议需求也应该明确评估标准,这可能在需要时包括要评估的类目及其相应的权重因子,基准评价和选择卖主,评价外部供应商提供的系统质量的方法包括:在应用中观察,或安装在一个实验环境中进行评测 评价的成本通常会较高,但一般都会比实际开发的失败代价小的多。评价需要有评价基准,称为基准评价 基准评价是在实际处理条件下,用确定的硬件和系统软件对应用系统(或测试程序)进行性能评价 在选择卖主时,不仅要考虑其提供的软
14、件的功能、性能和一些重要的质量指标,还应充分考虑其持续研究开发的能力和水平,以及其是否有足够的、活跃的用户组,后者决定了供应商是否可能有持续研发所供应系统的推动力,系统分析员的职责,系统分析员在系统分析的过程,尤其是系统实施方案的选择过程中,担有十分重要的责任 管理部门往往会十分重视系统分析员给出的书面意见和正式的陈述报告 分析员必须和评价团队成员一起,共同将可选方案排队,并将可行方案建议递交管理层,由管理层做出最后决策,成本效益分析,方案的选择与否,成本效益可能是技术因素之外,最重要的因素了 成本效益分析清单一般会如下所示: 列出所考虑的每一个开发策略 确定每种方案的总成本和效益。准确指出需
15、要投入的成本和实际效益产出时间 考虑将来的增长和可扩展性的需要 将硬件和软件的支持费用包括进来 分析各种软件的许可选项,包括固定费用和基于用户或交易量的计算费用 使用财务分析工具来分析每个备选方案 研究结果并向管理层提交报告,软件采购过程,对于有外部或采购的软件开发项目,归纳总结软件采购的过程主要有下面所列的典型步骤: 评估系统需求核心是识别关键特性、软硬件或人员约束、建议需求、报价需求 识别潜在供应商或外包方案 评价备选方案核心是确定选择或评价标准 进行成本效益分析 准备建议书 实施选择的方案,系统分析任务的完成,系统分析阶段最后的工作是准备需求文档并向管理层作陈述报告 需求文档不仅包含新系
16、统的需求和逻辑模型,还应该包括备选方案、为管理层准备的详细建议书 需求文档中的备选方案一旦被确定,就是系统设计阶段的起点资料,系统分析任务的完成,系统分析阶段最后的陈述报告是系统开发过程中,最关键的里程碑之一管理层将据此做出影响系统开发未来的关键决策 除了面向管理层的陈述报告外,还有两个陈述报告也可能是必须的面向IT负责人的和面向用户的 在准备陈述报告时,希望大家能够遵循以下建议: 开始时首先介绍项目系统的主要目标、本次报告的目的及需要做出的决策 总结主要的备选方案,对每一个方案,扼要介绍其优缺点、资源需求及成本 介绍并解释推荐的方案及理由 留出时间进行答疑和讨论 由管理层做出最后决定或确定下
17、一步继续讨论的时间,陈述报告和做出决定,向管理层陈述报告的目的是为了得到下面开发的正式批准和获得全面支持 在管理层做出决策之后,分析员后续的工作可能有: 实施外包方案。和服务供应商协商合作 内部开发系统。开始新系统设计 购买或定制一个软件包。与软件供应商商议购买事项,同时开始系统设计或规划系统实现等后续工作 继续更多的系统分析。管理层可能希望对特定方案作进一步深化或开发一个原型,或调整原方案。此项工作结束后,可能需要再次安排陈述报告 停止所做工作。可能是根据分析员的建议,也可能是管理层的决策,项目所有工作停止。此时,分析员需要将所有项目相关文档归档,以便于项目将来重启时可用,系统设计前的准备工作,主要工作有两项:准备系统设计任务、确定系统设计的目标及需要考虑的因素 系统需求文档是系统设计阶段工作的起点,文档的可读、可理解、清晰、准确、无歧义将直接影响到系统设计的质量,因此必须确保需求文档的质量 系统设计的目标当然是建立一个有效、可靠、强壮并可维护的系统 确定系统设计需要考虑的因素则应该从用户、数据和体系结构几个方面着手,