众所周知,信息化工作的推进不是单靠技术部门就能够实现的,最关键的一点是高层领导的 大力支持与推动,同时制定相应的管理规则,建立新的管理流程,协调各部门的关系也是很关键的。笔者根据参与上海机电工程研究所信息化建设的体会,从系统开发和管理的角度,探讨软件 开发以及在航天部门的信息化建设中如何进行项目管理。 项目管理者联盟
一、信息系统的生存周期模型 项目管理者联盟
《软件工程化管理程序》规定了航天型号软件的开发过程一般遵循的阶段,参照这一标准,同时借鉴统一软件过程、敏捷软件过程等软件开发的思想和理念,并结合信息化建设项目的自身特点,我们可以采用以下的生存周期模型。这一生存周期模型从立项到最后消退,有两个迭代,即开发迭代和运行迭代。这是这个模型的一个显著特点。随着开发的深入,用户的需求将越发明朗,新的用户需求就可能产生;此外,由于信息化项目开发的实质是“知识转移”,其系统的质量往往要投入使用才能衡量。因此,系统必须经过从需求到试运行的多个开发迭代才能真正投入使用,进而进入维护阶段。在维护阶段,除了通常的改正性维护、适应性维护和改善性维护外,有时需要进行运行迭代,如要将多个软件系统整合起来,或因为组织结构的调整而需 要改变原有的软件系统,此时就要对原有的软件系统进行优化与整合。 项目管理者联盟
二、信息系统的实现过程项目管理者联盟
1.需求阶段 实行信息化的目的是为了挖掘先进的管理理念,应用先进的计算机网络技术去整合现有的生 产、设计、管理等,实现各个部门的信息集成和 共享。对于计算机部门的开发人员来说,那些设计、管理部门的工作流程是陌生的,首先应该进行的是需求分析,即生产、管理咨询和业务流程优化。这个阶段通常包括以下过程:获取需求。通常是任务书、与用户当面交流 或者电子邮件之类的书面交流等方式。确定需求类型。确定系统是哪种类型,是业务流程型还是数据处理型等。建立需求描述。将各种途径获得的需求,以标准的书面形式记录在案,当设计与需求有出入 时可以有据可查。项目管理者联盟
2.评估需求 检查需求中的缺陷,及开始设计需求。在需求阶段,用户在任务书中的需求通常是 非常简化的,他们很可能会把注意力放在大的问题上,而忽略一些往往会涉及到程序开发中条件 判断的细枝末节。当开发人员也因为对整个工作流程并不是特别清楚而失去关注时,在开发过程中就会遇见问题,进而导致程序编制的反复。所以在需求阶段要注意需求挖掘的广度和深度,多问为什么,及时发现问题背后的问题。开发人员可能会发现,用户有时觉得很难实现的流程,由计算机处理却非常简单;而用户有时认为很容易的事情,程序设计可能有一定难度。所以开发人员应该与用户协商,如何使流程规范,并实现最优。在需求分析阶段,开发人员与用户进行和谐的沟通是一件非常重要的事情。也许是工作习惯,开发人员往往把! 专业术语挂在嘴边,但用户可能并不了解。所以在和用户讨论需求的时候,如非必要,要尽量采用用户熟悉的词汇和语言沟通,或者采用浅显易懂的口头语言来解释高 深莫测的术语,以便用户能够很好地理解。例如,用户不知道什么是带宽,我们可以这样解释:“带宽就像公路的车道数,带宽越高,相当于车道数越多,也就越不容易堵车”。好的开始 是成功的一半。需求分析做得好,对于整个系统开发而言是很关键的。分析设计阶段信息系统中有“三分技术、七分管理、十二分数据”的说法。数据对于任何单位来说都是最为宝贵的财富。开发人员完成需求分析之后,接下来需要对数据库的结构进行设计。开发人员在信息系统的实施过程中发现基础 数据的整理是最耗时、烦琐的过程。软硬件是可以买的,但是数据是买不回来的。数据挖掘对开发人员在合法性、条件判断、流程走向等方面的工作有着重要的帮助作用。系统完成之后,用户部门也是通过对数据进行微观、宏观的统计,分析、综合和推理,获得他们所需要的信息,进行一些策略的制定与判断。因此,开发人员要踏踏实实做好基础数据库的建设工作。开发人员在设计系统时应该站在用户的角度去考虑问题,尽可能让复杂问题简单化。让用户觉得系统很好上手。例如,信息化项目都会涉及到权限管理与权限控制。用户的身份可能变更,在系统中的权限也应该是可以修改的。正确的做法应该是将权限管理设计改为由管理员来设置,而不是开发人员在程序中固定住。同时对权限控制做到尽量灵活,从范围上可以控制全体数据或 部分数据;从操作上可以控制读还是写;从时间上可以设定操作的时间限制等。而且权限控制中各项内容并不是孤立的,相互之间可以组合。这样用户就有足够的自由度来使用系统。软件的质量问题也是在分析设计阶段就需要重视的方面。软件质量包括软件的功能正确性、性能、健壮性等,而对于航天部门,软件和信息的安全性尤为重要。所以在设计和开发信息化软件时,要把系统的安全性摆到首位。我们可以通过一些技术手段来提高系统的安全性,包括在系 统中进行有效的权限控制与检查,建立系统内部 信息资源监控平台。信息化系统最终将是一个整合的统一平台,因此登录系统时进行统一的密码 验证与身份识别有其重要性与必要性。信息化建设的目的之一是实现部门与部门之间的信息共享,但是我们必须遵守航天系统相关的保密规定,即只有秘密级或以下的内容 才能在网络上流转。在其他一些管理系统中,凡涉及到型号名称的报表,都应该注明“秘密”字样。项目管理者联盟
3.实现阶段 完成需求分析、软件设计之后,便进入了实现阶段。与通常的项目管理类似,信息化工程项目通常具有这样几个特点:第一,必须在一定的时间范围内完成;第二,受到人力、物力等资源 的限制;第三,它需要开发人员按照一定的计划进行有效的合作。人员的变更与流动也是项目管 理者比较头疼的问题。因此在这个阶段,可以从系统实现的最后截止时间、所需要的人力资源、所采用的实现技术手段等方面进行论证,最后确定并实施。项目管理者联盟
值得注意的是,在整个项目的开发过程中,项目管理者应该与用户密切联系,以获得 用户的最新需求,化被动为主动。开发人员在选定开发平台、开发工具时,应该考虑到其安全性、可兼容性、可管理性、开放性与可扩充性等。同时,在开发中应该编写相应 的流程图、文档、测试报告、修改日志等,以便于后续工作的展开。软件文档,包括软件任务书、软件需求说明、软件开发计划、软件概要设 计说明、软件详细设计说明、软件编制说明!含程序清单"、软件测试计划、软件测试分析报告、软 件使用说明等,应具有完整性、一致性、准确性、可理解性和可追踪性。我们可以参照 《计算机软件产品开发文件编制指南》来编写这些文档。这里,笔者特别要强调测试文档的重要性。对于具有一定规模的系统,开发人员应该有自己 的测试计划和报告。用户的测试报告往往停留在界面、流程的正确与否上,在开始试用阶段,要用户写出详细的测试报告是不可能的。因此开发人员首先自己应该有个书面的规定,从哪些方面进行测试,逐项检查,小到每个输入字段的合法 性检查;大到流程、报表;细致的甚至包括每个过程、函数的测试。特别要多设计一些测试用例,提高测试的覆盖度,来检查系统的安全性、可用性与正确性。软件测试是提高软件质量的一种要手段和方法。除了手工测试以外,我们可以借助一些测监督程序代码复杂度是否遵循标准等校检哪一部分的代码已经被测试,面向代码语句覆盖、条件覆盖、路径覆盖等边界检查和漏洞检测等测试在不同的负载级别之下客户。服务器的运行状态和应用程序的性能等检验链是否有效,客户和服务器端的代码、站点的交互是否正常工作试工具!来提高测试的效果。试运行阶段好的系统必须由人来使用,因此对用户的培 训工作成为试运行阶段的一项重要内容。主要是从技能对普通用户、管理员进行培训。信息系统是人机结合的系统,在最初阶段,新系统的使用会对用户长期以来的工作习惯、工作流程、事务处理带来冲击,甚至增加他们的工作量。因此,有必要告诉用户,信息化除了为管 理部门降低成本、提高效率、消除信息孤岛外,给最终用户还带来了用计算机实现繁杂、重复的简单劳动,从而降低用户的劳动强度,进而提升用户的脑力价值,使用户有精力与时间从事其他方面的管理工作。信息化软件系统的试运行需要各相关部门的通力合作。这种合作不仅体现在计算机部门和用户部门之间,也体现在计算机部门内部,例如,系统组与开发组之间就存在着广泛的合作。信息化建设的基础需要一个稳定的网络平台,而系统组人员的辛勤工作保障了网络的通畅、数据库的定期备份,同时他们还维护着防病毒体系,杜绝病毒对数据、文件、网络的破坏与攻击。他们筹 划的网络存储与恢复将有效地把各种破坏造成的损失降到最低点。在试运行、正式运行以及维护过程中,我们都要注意质量数据的采集和分析处理。除了用户去评估系统外,开发人员更应该关心系统的运行情况良好与否,是否真正满足了用户的实际需求。我们可以从文档质量、代码质量、软件 运行效率、后期维护以及用户满意度等方面 评估系统的质量。通过评估,可以不断提高 项目管理水平,并对软件开发工作的持续改进提供有力的帮助。信息化的系统开发是个不断优化、不断改进的过程。根据其所具有的综合性、系统性、变革性和可持续性的特点与要求,我们应本着规划先行、实施紧随、步步为营的指导思想,在规划和实施这两个层次上,以动态螺旋式的方式,共同将信息化工作不断向前推进。
www.mypm.net项目管理者联盟
|