浅谈协会软件开发与项目管理
当前文章浏览次数:1920
发布日期:2017-07-17

    在协会信息部工作已有一年多的时间,通过学习了解协会目前运行的各大系统,从中有了较深的体会,认识到协会软件的开发管理有很多的工作可做。协会软件系统目前主要包括核心业务系统、养殖险系统、967202系统、短信系统、OA系统、财务系统、固定资产管理系统、人力资源管理系统等,各个系统都为协会的业务开展和内部管理发挥了很大的作用,如何更好的管理和开发维护这些系统是我需要去努力工作和学习的地方。
    协会系统多,开发任务重,时间紧,为保证项目高质量的顺利完成,需要对软件开发的每个过程进行科学的管理;现就在实际工作中如何加强软件开发与项目管理,解决现有系统中存在的需求、设计、开发文档缺失,部分系统没有源代码,以及各系统之间缺少关联和统一标准等一系列问题,谈几点体会:
    一、外包软件开发及自主软件研发执行统一的软件开发规范
    在协会各大系统软件开发过程中我们需要严格按照软件规范进行实施。从项目的用户需求分析、系统分析、编码、调试、测试、发布都需要一步一步完成,不能轻视或忽略任何一个步骤。上一步骤没有完成好,不能贸然进行下一步。
    我们同时需要重视软件开发过程中文档的编写与管理,开发过程中需要提供的文档主要包括《软件项目开发计划书》、《需求分析报告》、《详细设计报告》、《数据库设计报告》、《数据接口说明书》、《用户手册》等。用文档去引导开发过程,抛弃随心所欲的开发模式。让开发人员充分认识到,没有文档的开发,就像工厂工人师傅没有图纸生产零件一样,很有可能得到次品甚至是废品,并给后来开发者留下一堆没有意义的“垃圾”产品。我认为文档应该是开发中各阶段结束的标志,每个阶段后,都需要提交相应的文档,并且确保文档的质量。那种认为只要软件做出来就可以运行,没必要花费许多精力去做文档的观点是错误的。我们应该从协会现有开发的软件项目抓起,完善软件开发文档的编写与管理,让文档贯穿整个软件开发全过程并形成一条清晰的软件开发主线,在不同的阶段,我们需要不停地对文档进行完善,使之真正成为软件开发的指南,从而达到任何程序员只要查看指南就能快速对软件进行开发或者维护的目的。 
    二、建立协会软件系统代码管理库
    将所有的系统在协会的独立服务器上搭建各自的SVN源代码版本控制系统,用来管理各大系统的源代码以及开发过程中产生的各类文档。svn版本控制系统提供了面向目录的账户权限管理功能,通过它,我们可以很精确地实现项目目录的访问控制。对于系统不同的开发人员,我们分配不同的目录访问权限,严格限制其对代码的下载、更新、访问等操作。
    建立了完善的代码管理库后,协会的各大系统将不用担心某一系统因为某一开发公司人员的离职或者开发人员电脑的损坏而导致系统代码缺失无法维护等问题,同时也能规范各个开发人员代码的提交以及开发日志的维护。
    三、各大系统之间相互关联及编码采用统一标准
    目前协会的核心业务系统、养殖险系统、967202系统、短信系统、OA系统、财务系统、固定资产系统、人力资源系统等都是相对独立的系统,关联性不強,无法做到有机的统一,需要统一规划,建立各系统数据交换接口,统一编码规则,让各个系统相互关联起来,形成一个以业务为主,短信、967202、手机APP为辅的业务管理系统,更好地为会员服务。例如967202系统和短信系统作为核心业务系统的辅助系统,在核心业务系统中可以直接调用967202系统和短信系统接口进行电话拨打和短信发送的功能,并将拨打电话和发送短信的记录与核心业务系统中的互保凭证号进行关联,核心业务系统用户只需要输入互保凭证号就能关联到所有的电话服务记录(包括报案及投诉)以及短信发送记录,同时在967202系统和短信系统中也会保留一份相应的记录,方便日后查询与核对。
    在各大系统之间的数据共享接口方面,我们将把所有的系统提供的接口程序及监听程序移植到独立的程序中运行,将其部署至独立的数据接口服务器,并同时实现各大系统同步接口数据核对功能,解决几个系统数据同步实时性问题以及各个系统之间数据同步不准确的问题,从实质上减轻系统的压力,提高系统的运行效率。
各个系统之间我们将逐渐完善编码规范,例如对于协会的每一个工作人员来说,其人员编码在各个系统中的值是一致的,并且它不会跟随人员部门或者角色的改变而改变。我们将在信息技术部制订的编码规则基础上建立一套完善的数据字典库(例如人员编码库、机构编码库、险种编码库等),任何系统的开发将公用这套协会数据字典库,实现统一的标准规范。
    四、对核心业务系统及养殖险系统的数据库进行保密管理
    核心业务系统以及养殖险系统数据库中存在着一些对行业来说较为敏感的数据,例如会员资料信息以及类似赔款金额等信息。我们需要对这部分数据进行保密管理,不允许开发方的任一开发人员直接修改或者查看数据库表中的数据,建立数据库个人操作日志机制,只有这样,当系统中的某些数据出现偏差时,我们才能快速定位数据操作者及操作时间,找出问题所在。
    五、做好系统项目计划,对开发方进行有效的进度控制
    我们需要根据系统项目的大小、人员的配置等信息来估算开发所需的时间,并进行进度安排以及进展监视,任务控制。
    进度安排主要是考虑系统软件交付用户使用前的这一段开发时间的安排。在考虑进度安排时要把人员的工作量与花费的时间联系起来,同时要考虑的一个主要问题是任务的并行性问题。当参加项目的人数不止一个人时,软件开发工作就会出现并行情况。所以进度计划表必须决定任务之间的从属关系,确定各个任务的先后次序和衔接,确定各个任务完成的持续时间,以使得软件开发的进度不至于被拖延。下面附录是我对项目管理工作流程的初步设想,实际上也是软件开发工作的流程图,只有严格按照类似的工作流程或规定严格执行,才能进行有效的时间控制,确保项目按时保质完成。
    我们将把各个部门对各个系统提出的需求进行详细的评估,包括可行性评估等,同时对每个软件开发小组人员进行每周一例会和每月底例会制度,形成《信息部开发组周例会纪要》,评估每个需求或问题解决所需的工作量,及时跟踪系统软件开发的进度及完成时间,保证协会各个使用部门提交的系统需求和系统问题在规定的时间内按时按质完成。
    六、协会各系统使用部门积极参与测试
    测试是软件开发中容易忽视的问题,许多人认为开发的主要工作是编码,其实不然,在有组织的软件系统开发流程中,测试是确保软件质量非常重要的一环。
    要完成严格的测试,就必须建立规范的系统测试流程,系统软件的最终结果是交付并正常使用,而系统好不好用,应该是由系统使用方得出结论,所以,我们作为系统的使用者,在系统上线之前对系统进行全面测试并提出自己的修改意见显得尤为重要,千万不要等系统开发完成后再来追究系统存在的各种使用缺陷,这无论对开发方还是使用方都是不利的。
    七、协会软件开发实现程序化管理
    我们在建立健全项目管理规定的同时利用项目管理软件对项目进行规范化管理,目前我们引进了一套开源的项目管理软件(禅道)对各个系统进行管理测试,包括bug管理、需求管理等,测试完善后我们将逐渐把各个系统的管理纳入到禅道(zentao)管理系统中,方便协会各部门对系统软件开发过程进行综合管理。(信息技术部  朱俊供稿)