在软件开发过程的各个阶段,都会遇到各式各样的问题,阻碍了软件的正常发展,尤其在任务的下达、执行与监督方面,存在着很多开发瓶颈。
任务的下达
任务的下达一般是项目经理给开发人员的指令,这个指令包含开发人员将要做什么、工作完成后的效果等等,但实际中这种指令往往比较模糊,不具体,也不太明确,没有把注意事项及对其它功能的影响明确出来,更严重者是不能理解任务所表述的含义,毕竟部分开发人员之间的水平还是存在差异,这种情况的存在往往造成开发人员工作效率低、代码冗余、做无用功等,另外一点项目经理对开发人员的了解也很重要,这样可以避免本来开发人员半天可以完成的任务,给他分配一天的时间等,任务的下达一般存在以下几个问题。
1、空泛的估计项目的进度:项目经理在分配任务时,往往受客户的要求及紧迫程度的影响,而造成不合理的安排,这种现象在软件行业尤为普遍,这种分配任务的方式没有相应的数据分析作为前提,加上完全凭借于项目经理的经验来估算,风险度可想而知。
2、所要传递的任务不明确:项目经理有时不能完全表达所要完成的要求,更可怕的是自己对客户的要求都不了解,在现实开发中往往会存在这种情况,需求分析人员在调研客户需求时只理解客户需求的90%,等到了设计人员只能理解80%,等到了开发人员恐怕也只能理解60%,造成需求缩水,导致项目经理在下达任务时,也只是大体描述要完成的任务,而不能明确完成此项任务要注意的很多细节,注意事项、完成时间、对界面的要求等,毕竟开发人员水平不同,考虑问题全面度也不一样,有些涉及整个系统流程的东西还需要项目经理给予说明。
3、分工不明确:在整个项目运作的过程中,要明确分工,综合考虑项目团队内每个人应担当的角色及外界因素的影响,因为重要角色的更换(如项目经理或开发经理)往往是极具风险性的,当然这种角色一般也不会更换,但开发人员往往是不确定因素,频繁的调度开发人员也会影响项目的进度与质量,所以项目经理在分配任务时要综合考虑,尽量排除这些不确定因素的存在。
4、行之有效的沟通:沟通在软件开发过程的每个阶段都很重要,前期沟通不好将来的影响就会以扇形扩张,对后期造成的损失也是无法估计的,分析设计人员的文档开发人员看不懂,开发人员完成的功能测试人员看不懂等,这些都是沟通的问题,沟通的主要目的有两个:一是传达需求者能把需求描述清楚,二是接收需求都能把需求理解并确认无误,但现实中这种沟通很多却是流于形式,效果不是很理想。
5、没有效果的讨论:众所周知,在项目组运作的过程中,可能伴随着很多问题的交流、讨论,这是好事,讨论问题越明确、越清楚,对项目后期的运作越有保障,但往往存在这样的问题,项目组成员在开会前都没有目的性,没准备,只有项目经理一个人在说,遇到问题发生争执时也是各抒己见,这种争执最终会导致项目计划被不断的改变,项目进度被延时。
任务的执行
在软件开发的过程中,任务的执行阶段一般由开发人员来完成,无论是项目还是日常的产品维护,此阶段主要的任务就是理解并完成上级下达的指令,对开发人员在开发工具的熟悉程度与理解、逻辑处理能力及把握客户需求上都有很高的要求,开发人员水平不同,在执行任务的过程中或多或少会存在一些题,一般也不外乎以下几种。
1、最优的解决方法:同一问题的处理方法有很多种,有些开发人员可以用100行代码完成,而有些开发人员用500行还不一定表述清楚,所以在开发过程中要综合考虑,选择最优的解决问题的方法,不仅不会造成代码冗余,还便于后期的维护工作,还能提高软件的性能。
2、看懂需求再写代码:国内很多软件企业在开发过程中对内分工不明确,很多分析设计岗位一般由资深开发人员担任,这些开发人员由于对各方面都很熟悉,在开发过程中迫于项目进度或客户压力,往往先写代码后写文档,这是一种不好的习惯,会导致做很多无用功,还有一种就是开发人员在不理解设计文档的情况下就开始编码,这样不但不能很好的按设计思路完成任务,还会影响项目的进度。
3、缺少自测:开发阶段检验工作成果最好的方法就是自测,即单元测试,从中发现不足,及时改正,但不愿过多测试自己写的程序也是开发人员的通病,开发人员一般都比较自信,感觉自己写的代码不会出问题,这是一种不好的习惯,自测的目的除了发现问题外,还要记录可能出错的功能点,为以后测试人员提供参考数据,所以在此期间不但要做好黑、白盒测试,还要记录测试数据。
4、写好代码也要关注性能:性能问题对任何软件供应商都是一个瓶颈,不论系统是C/S还是B/S架构,都会而临这个问题,也是客户最常抱怨的问题之一,软件在易用性与性能上很难达到两全其美,只能尽量去改善,性能问题也往往是开发阶段造成的,如上所述,在没有找到最好的方式前就去实现,在这一点就要求开发人员除了对开发工具有深入了解外,还要对数据库语言有所了解,这样才尽可能的去避免系统的性能问题。
5、代码要让别人看懂:说白了就是适当的加注释,开发人员实现问题的思路不同,写出的代码有的易理解,有的难理解,在软件维护过程中,几百行代码中没一条注释的情况也很常见,给后续的维护工作带来困难,代码写出来不仅要自己看,还要为以后的维护着想,让他人能易读、易理解,所以开发过程中要养成写注释的好习惯。
6、功能的易用美观:科技在发展,时代在进步,现在人们除了对软件的功能方面有要求外,还非常关注软件的易用性及界面美观度,现在很多软件企业也都认识到了这一点,在易用与界面美观上都进了一大步,但现在国内很多的软件企业对此都没有专门的岗位,这方面的工作还是由开发人员来完成,虽然开发人员在工作中以开发者的角度去改进一部分,但离用户的要求及专业的程度还有一定的差距。
任务的监督
在开发过程中,如何对任务进行有效的监督并能保证任务能够按时按质的完成,是每个项目经理所期望的,任务下达后往往缺乏监督,做好做坏没人检查,能不能按时完成也不能得到有效的监督,导致整个项目延期,不能按时按质完成;项目经理在团队中一般起监督的作用,有些软件公司还设有专门的监督岗位,监督整个项目的执行情况,保证项目按时按质的完成,监督任务执行的方式一般最常见的就是按原先制定的项目计划表来执行,但这只是一种大概的计划,要避免其中的很多问题还要做到以下几点。
1、制定开发规范:每个公司都有自己的一套管理制度,做为员工遵守的准则,项目团队也不例外,要想项目能够正常的进展,必须有一套开发规范来监督执行,现实开发过程中,任务分配下去,就很少去监督,做好做坏任其发展,缺少一套监督的机制,这就会造成本来一天可以完成的任务,往往拖后二天才能完成,本来已经完成的任务,项目经理也无法跟踪,造成人员闲置,另外开发过程中对象、函数的命名也应该要遵循开发规范,不然会造成软件的不统一性。
2、设代码检查岗:开发阶段如何保证代码的质量,是每个项目经理最关心的问题,开发人员编写代码的质量高不高、性能好不好,就需要有相应的岗位来监督,很多软件公司为此专门设置了代码走查岗,负责对工作任务质量的监督,这点非常很重要,从任务开始到任务结束,这期间的每一个环节都要做好严格的监督。
3、开小组会议:通过开小组会议来监督任务的执行情况,在整个项目的开发过程中,项目经理可能比较关注项目的总体进度,对于阶段性的任务较少关注,其实阶段性的任务比较重要,但这一点却常常被忽略;及时发现问题,可以避免开发人员少走弯路,通常监督阶段性任务最常用的方法就是开小组会议,一般在每天或每周末组织项目组成员交流,总结这段时间完成的任务、遇到的问题及解决方法等,起到互相监督的作用。
综上所述,要想保证软件开发阶段能够顺利的进行,必须有效的处理好各阶段出现的问题,最重要的一点还是在于开发团队成员之间的沟通与交流,通过成员之间的交流与沟通,提高对需求的把握与处理能力,在这种前提下才能高效开发软件。