[摘要]
本文通过电信行业中的资源系统,结合电信类项目的特点和作者近几年工作的心得体会,来着重讨论在软件工程在中,如何确保软件质量问题。分别从项目管理和实施技术等方面来展开,其中重点讨论人的因素、测试、编码、实施、审计监理;在讨论方式上,不但注重核心的工作内容,也强调适当的方式方法。
文中总结归纳了作者近几年来作为一线项目经理对保证软件质量的深刻体会,大胆提出了以人为本,认为人才是影响软件的大因素,倡导积极有效的人性关怀远胜于严格的软件系统规范和公司规章制度,有效地测试与试运行始终是确保软件质量的不二法门。
[正文]
近几年,作者一直致力于电信行业的信息系统建设工作,在多年的职业生涯中,作者先后担任过很多个项目的项目经理,深深地感受到软件项目的复杂多变性,稍有不慎会影响到软件质量,甚至整个项目的成败,企业发展等重大问题,作者特结合自身多年的实际工作体会,从软件过程的角度来讨论保证软件质量的一些心得体会。
在作者所从事过的系统中,有一个是关于资源管理的,主要用来解决卡、终端的制作、入库、调拨、销售、出库、报废、充值等日常业务以及各环节的财政审核与佣金结算、客户关心等特殊业务情况,业务相对比较复杂、与其他系统的接口也较多,且项目工期较紧,我有幸作为项目经理参加并主持了该项目,并且后取得了圆满成功。
由于甲方战略规划与日常运作的特殊需要,对软件质量要求特别高而且工期又紧,因此给我们的工作带来了莫大的挑战,我在总结近几年工作成败得失的基础上,结合该项目的特点,向公司上层领导提出了一份项目实施计划书,尤其对于风险方面向领导作了汇报,并申请相应的人力资源和资金,由于原始需求相对较为粗糙,且甲方想趁此机会来优化公司运作,因此我们决定采用以和谐软件过程为主的过程模式,并利用公司成熟的技术框架和相关的文档模板、配置管理方式来简化和优化设计。
在制定软件质量计划过程中,作者把人的管理和应用放在了首位,因为这几年的工作经验告诉作者对软件质量的影响莫过于人的主观能动性,轻则消极怠工、重则离职跳槽,即便安心工作,然而人与人之间的沟通交流合作,其默契程度、配合方式方法也会导致效率与效益的下降或难以正常发挥;其次,需求分析的正确与有效也将直接影响系统的设计与实施,而需求分析的低效与错乱,归根结底也在于人,在于是否积极有效地和客户经行当面沟通,在于双方对需求的正确理解;第三,测试的局限性与到位程度,也往往在于测试人员对软件质量意识的薄弱和工作的认真负责程度,以及相关测试用例设计安排的合理性等主客观因素,当然软件人员的传统习惯、软件开发规范、开发工具等也会影响软件的质量。同时考虑到和谐软件过程旗帜鲜明而又十分深刻地指出,当前软件行业存在着严重的浮躁,从管理人员、需求分析人员还是设计、研发、测试、维护人员都从不同的角度表现出了浮躁的技术、浮躁的观点、更严重的是浮躁的心态,如果处理不好很可能迅速导致项目失败,因此作者在制定计划时也充分全面地考虑了此类问题的规避方法。
对于像资源系统这样的核心系统,涉及繁多复杂的业务以及佣金、充值等接口也较多,与金钱相关,加上开发人员也较多且人员组织的临时性,都给软件质量带来了潜机无限的风险和危机,而且该系统的成败决定着公司的声誉以及今后的发展,也关系着甲方战略规划与市场竞争能力能否得到有力提升(和谐软件过程要求我们尽量协调好客户、公司、员工三方利益共赢)。因此我首先从思想上给项目组全体成员“洗脑”,让他们深刻认识到此次软件项目质量的重要性;其次着手安排软件设计师参考公司的开发规范并制定本项目的软件规范,以备项目组统一实施。
在实施具体工作时,我成立了专门的软件质量管理小组,我兼任组长,该小组独立对软件工程个环节工作进行不定期的审计与监理,随时抽查包括需求、设计、编码、测试等各环节的工作实施情况,进行实时跟踪和评估,一旦发现问题以及潜在的隐患及时向相关负责人提出修改和调整要求。这里我需要特别强调他们工作的独立性,尽管形式上没有像第三方监理单位那么严格,但事实证明,我们所采用的审计与监理人员所起到的作用对于保证此项目的质量问题起到了较大的保障作用,各环节人员可以说是高度认真时时谨慎。另外也体会到对于保证软件质量同样也需要创新和借鉴其他行业的做法,事实上该项目中的审计思想主要来之于经济上的审计。
考虑到软件项目的特殊性,人对软件质量的影响特别明显,因此我决定专门拨出一部分项目资金用于对工作表现特别突出的员工进行奖励,在某一里程碑形成时及时给与奖励,事实证明,这样不仅充分调动和发挥了员工的积极性,而且也激发了他们的工作热情和责任感,使得80后难以认可的“公司是我家”的公司文化在我们这个项目中得以落实,可以说此次项目中认真负责的人员实在太多,可惜资金有限未能奖励到位;另外,由于项目时间紧、工期短,因此员工的工作压力大、工作强度高,为了进一步鼓舞士气,我专门给与了员工适当的人性关怀,包括额外的餐费补助等,当然这样也使得我们项目的成本有所增加,资金更加困难。所幸,在与公司高层领导和甲方沟通后,公司以及甲方表示愿意适当给与资金支持,尽管数目不大,但是在调动员工积极性方面,却起到了较大的促进作用,从而使得我们的项目进展的更加和谐顺利;另外,考虑到各员工工作经验与能力差异等因素,我在制定计划时也适当考虑了各员工的特长与兴趣志向,后执行时间上让员工进行了确认。
在编码实施方面,尽管系统功能点多,然而在我们项目组分析后却发现在业务流程上、代码实现上却存在着一定的相似性,为了提高编码效率和出错率,我安排系统架构师对公司框架进行了小的调整后直接拿到了我们项目中来,并采用了当前较为实用有效的代码生成工具GCBTST,制定了统一的代码模板,这样不仅统一了编码风格,也提高了编码人员的效率,更重要的是可读性、可维护性也增强了,为团队协作开发带来了积极的促进作用。
为了适应需求增加的不确定性、多变性等因素,我们采用了和谐软件过程所倡导的不定时进行“请进来,走出去”的做法,即需求分析师、设计人员等亲临业务现场,真切体会业务流程,使设计能够更加人性化、更加实用,当有了SRS、软件原型后,我们又请业务专家、一线工作人员代表来谈谈他们对系统的看法和意见、建议,通过这种方式,不仅确保了软件的质量,也使我们与甲方建立了一定的人脉关系,为公司的发展进一步打下了基础。
测试工作可以说是软件工作中的重中之重,和谐软件过程中旗帜鲜明地指出,再省不能省测试。我们专门成立了测试小组,专么负责对需求分析的正确性、设计文档的正确性、以及编码的测试等工作,由于人手较紧缺,测试组人员同时还担任配置管理、变更管理工作,当然也包括变更后的回归测试。
以上各环节,都受质量保证小组监督,尤其是对测试组的审查与监督进一步保证了软件质量,在经过约半年的努力后,项目已经基本完工,在甲方的积极配合下,系统经行了试运行,期间只发现很少bug,甲方基本上满意我们的系统,只是对一些操作便利性方面提出了一些合理的变更要求。
以上是我们项目的总体运作情况和相关的质量保证手段、方法,然而在实际展开工作过程中,却远比这里所说的要复杂的多微妙的多。
项目后取得了圆满成功,得到了客户的高度好评,为公司进一步拓展业务打下了坚实的基础,公司领导还另外对参与此项目的所有人员进行了不同程度的奖励。尽管此项目已经过去将近半年,给我留下了非常深刻的影响,然而在现在看来依然存在着不少不足和需要改进与提高的地方。比如,需求调研方法虽然效果较好,但是所花费时间较长,临时团队使员工间的默契需要更多时间,沟通不畅与理解偏差甚至曲解需求都给项目带来了不少风险和返工,这些都是今后项目中需要注意的地方。
在整个项目过程中,我们采用的是和谐软件过程模式,也使得我们规避了常规模式下所无法顾及的人性关怀问题,整个项目过程中并无一人中途离开此项目,事实上在作者多年的软件生涯中和对中国传统文化的研究中,深刻体会到只有儒家的人性关怀理念才可以使得法家所极力主张的效率优先原则得到真正的发挥,而此也真是和谐软件过程所提倡的。非如此不足以团结团队,非如此无以保证软件质量。