《挖掘管理价值:企业软件项目管理实战》一2.6 项目实施控制

本节书摘来异步社区《挖掘管理价值:企业软件项目管理实战》一书中的第2章,第2.6节,作者: 徐勤 责编: 杨海玲, 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.6 项目实施控制

挖掘管理价值:企业软件项目管理实战
软件完成测试后,就可以进入发布阶段,即实际使用阶段。对于发布阶段,也可以称之为实施、升级或迁移。它们的区别在于:“发布”往往是将软件打包给商业或零售用户,因为开发人员并不直接面对用户;“实施”是将软件包括配套的硬件安装到客户那里,开发人员需要自己面对用户提供支持和服务,如配置服务器、安装软件、调试设备等,一般而言需要实施的软件都是面向企业的大中型软件,如ERP或CRM等;“升级”是指将现有的软件替换成新的版本,或者是软件运行的环境进行升级并牵涉到软件变更,要求保证数据的完整性和功能的可持续性;“迁移”是指将开发好的软件从一个环境迁移到另外一个环境,这个时候可能需要对服务器、数据库或硬件进行重新配置和整合。

因此,单纯的商业软件的发布本身也是一种商业行为或活动,我们不在这里做深入的探讨,这里主要介绍的实施是以面向企业的大中型软件的实施管理。

2.6.1 实施内容

要完成一个软件的实施,需要做哪些事情呢?首先我们要确定实施的内容,也就是要实施什么。软件本身和其他关联事物的是什么?一般而言,软件的实施涉及以下内容。

  • 软件本身的安装和配置。软件本身包括软件的代码或编译后的程序,以及相应的数据。软件安装的形式多种多样,可以是做成安装包进行安装,也可以是直接复制文件,还可以是进行还原。软件安装的对象既可以是服务器,也可以是终端设备,如电脑、笔记本、无线终端、一体机等。
  • 软件运行环境的安装和配置。为支持软件的运行,需要对其环境进行安装和配置,如Windows操作系统的IIS、Java平台的Tomcat、SQL database Server等。另外还包括软件运行的客户端配置,如Win CE、加密软件、证书等。
  • 用以软件运行的数据内容安装、集成或迁移。为了支持软件的运行,需要安装或初始化数据库,比如用户基本信息、权限信息、配置信息等。如果是升级软件,则要在原有的数据库平台上进行集成和迁移。另外如果软件和其他系统有关联的话,也可能需要将其他系统的数据库进行集成。
  • 旧系统的使用和维护。在某些特殊情况下,软件的实施不能直接将旧的系统升级为新的,而是要求新旧系统同时并行运行,然后在一段时间后旧系统才停止使用。造成这种情况的主要原因有以下几点。

a.新旧系统差异太大,旧系统的数据无法在新系统里处理。

b.数据迁移的成本太高或者周期太长。

c.旧系统的数据到一定时间就会被废弃。

d.降低新系统的风险,旧系统作为一个备用系统。

e.利用旧系统的数据验证新系统。

那么在这种情况下,为了能够保证两个系统的稳定运行,我们要特别注意以下事项。

a.告知用户新旧系统的区别,如明显的标志、不同的界面、不同的权限和登录地址。

b.清理旧系统的权限,需要使用旧系统的人才可以进入旧系统,以免应该在新系统里处理的数据被错误地输入旧系统。

c.提供必要的培训。

d.同样做好旧系统的数据备份。

e.记录新旧系统的交割时间或数据锚点,以方便今后迁移数据时知道数据的切割点。

f.安排好旧系统的关闭事宜和数据保留问题。

  • 其他设备的安装和配置。其他与软件使用有关的设备,如打印机、网络、扫描仪、LED屏幕等的安装和配置。

在软件项目实施之前,先要罗列出来,哪些内容和本次实施是有关的,以便对它们做出合理的安排。

2.6.2 实施计划表

有了明确的实施内容,我们就要安排实施的计划。通常在实施中最关键和最烦恼的一点就是实施时间的选择,在很多情况下,软件的实施是需要等待时机的。这是因为:一、软件实施本身需要时间,少则1天,多则数天;二、现有的软件和业务紧密相关,不能因为实施而停止了当前的业务,否则损失巨大;三、软件实施后需要用户的确认。因此,在很多时候,软件实施是利用晚上、周末、甚至是节假日来进行的。

为了能够顺利地完成软件的实施,项目管理者应该积极地和用户沟通,选择合适和足够的时间进行实施。选择实施时间可以考虑以下几个因素。

  • 估计所有软件内容安装、调试和回滚的时间,当然有些可以预先完成的任务不在其中,如新电脑操作系统的安装、服务器上机架等。我们简称这个时间为上线时间。
  • 对业务没有任何干扰的时候,比如生产线放假、生产线停线、生产线盘点、工厂停电(服务器等可以用UPS的电来完成)、法定假日放假等。我们简称这个时间为停机时间。
  • 用户有空余时间来参与实施的时候。
  • 当上线时间大于停机时间时,我们要考虑能否分阶段实施,或者是缩短上线时间,或者是选择另外一个停机时间更充裕的时机。

选择好实施的时机后,我们要指派好软件实施的操作人员,组成一个团队。他们包括:项目管理者、软件开发人员、数据库管理员、机房管理员、设备管理员、网络管理员和关键用户,还应该包括一定比例的后补人员。总之与软件本身和附属设备有关的人员都应该在考虑的范围内,即使他们不一定要现场亲自参加,也应该通知他们有关实施的事宜,以便做好任何准备。比如,软件可以自动地将数据库文件进行备份和替换,因此数据库管理员不一定需要到现场参与,但是假设在实施过程中,数据库发生了任何异常,导致数据无法正确更新,实施就有可能失败。遇到这种情况的时候,如果安排数据库管理员在实施期间随时处于待命状态,软件实施人员就可以及时地联系到数据库管理员来解决问题,不至于耽误事情。另外在这个团队里,应该选出一个总负责人,由他来做现场安排和协调,如果遇到什么突发状况,也由他当机立断做出决定。

我们还需要选择适当的用户,最好是关键用户来参与实施。因为一旦实施动作完成,我们需要用户进行功能和操作方面的确认。这个关键用户可能还需要立即试用一下软件,以保证在用户状态下,软件是可用的。

有了实施内容、实施时机、实施团队,下来我们就可以制定实施计划。计划主要包括实施步骤、团队分工、任务描述和完成要求。计划通常包括以下步骤。

(1)实施动员会。邀请参与项目的成员和用户参加,如果主管或直接领导能出席更好,项目负责人向与会者传达项目实施的目的、计划、步骤、要求和分工。讨论实施的细节和时间点、确定集合时间和地点,以及联系方式,务必使每一位参与者明白自己要做什么、怎么做、什么时候做、做完怎么检查等。动员会还起到了鼓舞士气、让大家做好充分的准备、处于备战状态的作用。

(2)发出正式实施通知。为了让所有与软件应用有直接和间接关系的用户、管理者、相关人等知道实施的目的、时间和内容,以便他人安排任务和工作,特别要告知他们有关软件和其他相关系统的停机时间、恢复时间和更新后的入口地址等信息。

(3)人员到位并检查。在集合时间到后,应该核查人数是否齐全,如有缺席人员,应立即联络或由候补人员接替,并再次明确每人的任务和步骤。

(4)准备软件并复查。准备实施的软件,包括代码、数据库脚本、安装包、证书、令牌等。清理软件代码中无效的文件和内容。再检查代码的版本是否正确,脚本是否全面,次序是否正确,权限是否足够等。

(5)停止原有软件和相关系统的服务。在指定的停机时间,停止原软件的使用和服务,包括数据库、其他相关系统和设备。

(6)备份原有软件和数据。备份原软件的代码和数据库至磁带、其他设备或其他介质。注意要记录好原软件的版本、原路径、原参数和设置、数据库的版本、数据库的用户权限,以便回滚和核对时使用。有的时候,软件运行的系统环境和变量也需要记录,如系统配置文件、系统设置参数、数据源链接文件等。

(7)安装或更换软件。如果原软件需要卸载,则先卸载原软件后再进行安装。有的时候,除安装主软件以外,还需要安装其他附属软件,如控件、驱动、解析器、管理工具等。注意软件的安装和卸载都有一定的顺序,这个顺序取决于主软件的运行要求,千万不能搞错,否则轻则导致软件不能更新,重则破坏操作系统。如果有条件的话,最好是提供自动安装程序包,自动完成卸载和安装的动作。有些软件直接更换文件就可以,不需要安装和卸载,但是也要注意这些文件的运行权限,或者需要在系统中进行注册授权。

(8)配置和调试软件运行环境。安装或更换好软件后,首先对软件运行的环境进行配置,如服务队列、启动帐号、自动脚本或任务、系统用户及权限、语言和格式设置、网络配置、备份配置、数据库同步配置等,以确保软件运行的所有资源和服务都可以正常使用。

(9)配置和调试软件。配置好环境后,还需要对软件本身进行配置,如数据库链接、网络地址、安全机制、帐号信息、访问权限、身份注册或许可证认证等。对于一些复杂的软件或工业使用的软件,需要进行调试,以达到使用的要求。注意不要忘记对附属软件、设备或关联系统进行配置和调试。

(10)自我确认。配置和调试完成后,由实施人员和关键用户一起使用软件的功能,检查软件的功能是否完整、操作是否正常、速度是否及时、数据是否正确。很多项目负责人或实施人员往往认为这个环节可有可无,即使有也不是很重要,他们以为软件已经经过反复的测试,已经符合实施的要求,因而忽视确认的步骤和内容,以为马马虎虎、随随便便检查一下就可以了。殊不知,整个软件系统有可能因为一个很微小的设置或链接,导致某些功能不能正常使用。因此在这个环节需要足够的、有保障的时间进行全面、细致和认真的检查。如果在这个环节发现任何问题,还有时间和余地进行最后一次的弥补。

(11)启动用户使用。在自我确认完成后,正式启动软件和系统,包括服务、访问、存储、设备等。

(12)用户确认和试用。启动完成后,由项目负责人或实施负责人通知到部分用户,再次确认软件的功能、操作和数据等,检查的要求和自我确认是一致的,只是范围和视角不同而已。为什么要进行多次的用户确认呢?因为开发人员、实施人员、关键用户、普通用户等各个层面的用户的使用范围、视角、要求是不尽相同的,一类用户的确认不能说明和保证整个软件是完全可用的,因此由不同的用户进行确认才能最大程度地验证软件的可用性和准确性,千万不要忽视和省略了这一点。

(13)制作新软件初始化备份。在这个时候,因为软件没有被全面的使用,因此软件的内容或数据基本处于初始状态,可以对实施的软件和数据进行备份,因为这是一个完好的版本。这个版本可以作为下一次升级开发的一个基础平台。

(14)通知用户全面使用。以上步骤完成后,项目管理人或实施负责人应该通知所有用户,包括各个层面和范围的用户开始使用软件或系统。一旦软件或系统面向所有用户开放使用后,注意观察软件的运行状态和收集用户的反馈。这个阶段持续的时间可长可短,有时需要1到2小时,有时需要1到2周,甚至是1到2个月。随着用户的逐渐增多,使用频率的增加,以及使用范围的扩大,软件和系统的运行负载会越来越大,我们需要密切注意软件运行的性能、容量和安全,及时排除潜在的、可能的隐患和故障。同时,在用户使用的初级阶段,很多问题不一定是软件本身造成,也可能是权限、数据格式、使用习惯、操作方法等导致的,因此在这个时候,需要耐心地提供排忧解难的服务。对于用户反馈的一些功能性的建议,可以进行收集,作为以后软件升级的需求依据。

(15)宣布实施成功。在完成所有实施步骤后,实施负责人应该发出正式的通知,宣布实施成功。通知的对象主要是用户、开发团队、供应商和管理层。有些人认为这是形式主义多此一举,其实不然,从事软件开发的人,除了要做出优秀合格的软件之外,也要善于推广和宣传。通知的目的不是为了邀功,而是让相关的人,特别是管理层认可和支持我们的工作。

提示:实施是一项非常复杂和严谨的工作,因为它可能只有一次成功的机会,因此实施计划一定要考虑周全,要问自己一百个为什么、一千个为什么。

2.6.3 实施检查表

为了有效地成功地实施软件项目,在开展实施活动之前和实施活动过程中,应该有一个检查表来帮助实施人员准确地完成每一个步骤和动作。软件实施检查表的例子如表2-16所示。


《挖掘管理价值:企业软件项目管理实战》一2.6 项目实施控制

2.6.4 实施模型

在具体的实施过程中,我们可以按照软件的应用形式,将实施过程分成几种模型1,不同的模型适合于不同特点和规模的软件实施。

瀑布式。瀑布式就是所有的实施步骤自上而下依次执行,中间没有调整,也没有变化。这是一种最简单的,也是一种最常见的模型,适用于大部分的单一的软件实施,如图2-14所示。


《挖掘管理价值:企业软件项目管理实战》一2.6 项目实施控制

(2)链条式。链条式也是一种瀑布式的实施模型,它是在瀑布式的基础上增加了一定的条件和返回机制。链条式的实施步骤就好比自行车的链条,每一个环节都紧密相扣,上一个环节没有完成,下一个环节就不能开始。如果这一个环节做得有问题了,上一个环节可能要反复重做,就好比骑车人,为了借力要反蹬一下自行车一样。这样的实施模型适合于具有多模块、分阶段、分步骤实施的软件,如图2-15所示。

(3)平行式。平行式的实施,就好比两个人在两个跑道上同时跑步,一起或前后到达终点一样。在这种模型中,实施的步骤不一定有必然的先后顺序,可以是同时进行的,也可以是错开进行的。这样的模型适合于多个软件或一个软件中的多个模块(子系统)同时实施,如图2-16所示。


《挖掘管理价值:企业软件项目管理实战》一2.6 项目实施控制

(4)放射式。放射式的模型就好比是细胞裂变,一个变两个,两个变四个。在实施过程中,由一个步骤开始,完成后就有多个步骤开始,每个开始的步骤完成后,又有若干个步骤开始。其中多个步骤有着一定的联系,但是一组步骤之间不一定有着必然的联系。这种模型适合于多个复杂的有一定联系的软件中多个模块进行分段、分模块实施,如图 2-17所示。

(5)蜂窝式。蜂窝式的实施就是多个模块或多个子系统围绕着一个核心模块或核心软件同时进行实施。这是一种非常复杂的实施模型,各个模块或子系统都有自己的一套实施步骤,同时又要兼顾到其他模块或系统的实施计划和结果,特别是关键模块和系统的实施将直接影响到其他模块和系统的实施。这种模型适合于大型复杂、成系列的多软件共同实施。蜂窝式和放射式的区别在于,两种模型的领导力是不一样的,在放射式的模型中,实施是由一个团队或者是一个具有上下级的组织来进行的,他们一定有一个集中的领导者。而在蜂窝式中,各个模块和系统由自己独立的团队或者是分散的组织架构来完成,他们没有唯一集中的领导者,而是由这些领导者在进行合作,如图2-18所示。


《挖掘管理价值:企业软件项目管理实战》一2.6 项目实施控制

(6)复合型。复合型就是将前面5种模型混合使用,这样才能充分利用每一种模型的优点来有效地实施各种不同应用的软件。

小结
本章就软件项目过程管理中的细节进行了详细说明。项目立项的意义在于确定项目的目的、范围、可行性和投资回报等。通过提问的方法来评估项目,确立那些目的明确、对业务有重要意义、可行的、投资回报高的项目,排除那些不现实的、不合时宜的、不可行的、投资回报低的项目。

软件的起源点是需求,本章说明了需求的特点和来源,以及需求收集、处理和分析的方法。只有需求明确了,软件才能正确,所以应该准备充足的时间进行需求管理。

在软件设计的时候,不能光注重软件本身的功能实现,应该同时考虑到使用性、完整性和扩展性。当然我们也要避免进入华而不实的误区,软件的外观、界面、颜色,乃至文字都是和它应用的范围和环境相呼应的。大众化使用的软件毕竟只是软件大家族中的小部分,所以我们更应该从业务的角度来评估软件的设计水准。开发模型是代码实现的方式,各种模型各有优缺点,应该根据项目的特点来灵活选择开发的模型。

实施软件需要有专门的团队、周密的计划和合适的时机,同时还要准备各种预案来控制和降低风险。实施完成后,其结果必须进行检验,而且是全方位的检验,检验的人不应该只有IT人员,而应该包括各个层面的用户。

热点问题
1.如何提高软件设计能力?

软件设计是一项艺术性的工作,就好比画画,没有最好,只有更好,没有复制,只有自创。要设计出非常优秀的软件是一件非常困难的事情,但是只要我们不懈努力,不断提高,就会一次比一次出色。我们可以从以下几个方面提高设计能力。

a.多观察和使用其他优秀的软件,吸收其中的设计精华,融入自己的特点。

b.反复和全面理解需求,总体把握需求的内在逻辑性和流程。

c.注意软件的操作性,务必使之贴近用户的实际操作,并且优化用户的操作,使之更简便。

d.扎实的数据库设计理论基础。

拓展思考
1.如果项目没有经过立项,可能会产生什么后果?

2.需求的开发是否遵循先来后到的原则?

3.只接受书面的需求,这样做恰当吗?

4.请选择可能导致软件实施失败的原因:

a.软件版本没有检查,可能使用了错误的文件;

b.服务器突然停电;

c.数据库里的测试数据没有清除;

d.服务器双电源供电,但只有一个可以工作。

5.硬件的需求和配置不是开发设计人员需要关心的事情。这样的说法对吗?

6.软件设计是否界面越华丽越好,功能越强大越好?

上一篇:《工业控制网络安全技术与实践》一一2.2 分布式控制系统


下一篇:Netty 系列四(ChannelHandler 和 ChannelPipeline).