目录 3.开发过程...12 4.架构设计...20 5.管理激励...23 三、开发过程 沟通 软件通常都需要经过很多人和很多次的沟通才能生产出来,但是沟通本身又往往会影响软件的开发速度。这是一段很矛盾的关系。好的沟通方法能降低开发中因为信息不透明导致的开发资源浪费,而又尽量减少沟通所占用的精力。 需求沟通 在任何一个软件产品中,如何应对需求的变更,都是至关重要的。需求一直是软件工作得以成功或者失败的最重要因素。软件开发中很多技术和方法都是围绕着需求来设计的。 需求的沟通是需求工作的第一个环节。首先沟通的对象必须是经过挑选的,以免添加不必要的需求混乱。最佳的需求沟通是和用户或者用户代表。但是他们往往他们缺乏必要的计算机知识。而程序员却很少有丰富的需求领域的知识。这个鸿沟需要双方共同去弥补,最重要的做法是,不要光靠口说。 程序员应该认真研究需求领域的知识,仔细查看涉及的单据、原型产品、现有工作流程等,而且必须用笔记录下来,之后再去整理问题,逐条咨询用户。在仔细了解情况之前,不宜开始设计整体程序结构。 当你有一定了解之后,程序员就可以动手开发一个快速的原型,如果没有足够资源,一组界面图也是很好的。以程序的外观来帮助用户来协助设计,是最有力的需求沟通方式之一。不断的在用户的帮助下完善这些界面图,标识上那些可能需要的数据和流程,然后完善,然后再继续找用户确认。这个过程在前期可能会相当枯燥,因为那些沟通用的原型也许一点都不会给后续的开发带来重用。但是能明确需求,却是对开发最大帮组。 B.需求评审 在需求基本有一个思路之后,需要开始准备需求评审。首先说说评审的材料,一般会是《用例图》,《领域建模的模型》,用例规约,一些《非功能需求点列表》,甚至软件的一些经过用户确认的使用流程和使用界面。 评审的过程其实远没有沟通的过程重要。这个环节主要是给大家一个明确的开端:现在我们开始做系统设计了。作为在一些公司内部,需求评审是否得到通过还是产品是否能正式开始立项的一个流程。 对于评审,很多时候会认为是,提交评审者来写报告,然后向一堆专家或者上级来介绍,最后他们提出问题,幸运的话就盖章认可。但我认为评审不应该是这样的。因为如果上级和专家没有参与项目需求的沟通,他们对项目的了解是片面的,靠一些文档和口头介绍,一定会以“挑毛病”的姿态出现。而项目本身是否真的可行,却不负担真正的责任。 因此我认为需求评审应该是项目发起者,也就是有权拍板是不是做这个项目的人,来主持这个评审会议,所有的材料由他宣讲,疑问由他回答。而其他的与会者包括专家团和可能的开发团队,纷纷向他提出问题,以确认真正的可行性。最后主持者在搜集了众多意见后,筛选出有意义的意见,改善需求评审的材料,最后拍板是否完成需求评审。这种流程,无疑会要求公司的权力下放,而事实上,如果不是下放,又或者不是老板亲自主持,很多项目最后就输在了起跑线上。 C.合作沟通 程序员的沟通讲求的是效率,准确是最重要的要素,如果无法表达“准确”,那就只是在创作,而非沟通。对于需要高度注意力的工作——开发软件来说,群体创作的效率实在不够高。因此提高沟通的“准确”程度是至关重要的效率因数。 开发中的沟通有很多种,其中最重要的一种是需求沟通。特别是作为技术人员,和策划、美术的沟通最多。这里需要重视的就是,和非技术人员沟通,快速原型:如假的界面图或者手画稿,填写了假数据的表格等等,是很重要的沟通手段。很多时候我都会要求把这些沟通过程中的手画稿扫描保留下来作为设计文档的一部分。 另外一种沟通是程序员之间的。我一直认为程序员之间最好的沟通就是“不用沟通”。客户端和服务端之间调整协议,最好的方法是直接两个IDE联调。关于工作任务的接口,最好是定义出接口代码,并且有单元测试针对接口代码做处理。当然拉,对于这些接口的设计,还是需要当面沟通的。 最后要说说会议。我认为沟通不应该打断开发。不管是5分钟还是1个小时,会议都是一种打断。而很多会议需要开前准备很多东西,大家试图用这种方法减少会议的时间,但实际上却占用了同样多的时间。我们应该白瘕风能治疗吗北京治疗白癜风皮肤病医院
|