微软的XP之道
摘自XPChina
最近读了关于微软得软件开发模式得资料,又读了关于“极端编程”得资料。了解了现代企业得现代管理模式。“极端编程”是指软件开发的极端状态,也就是理想状态。微软的方法更具体,“极端编程”在开发过程中各方面人员的相互交流方面更成熟。总体上两种方法在大的方面都是雷同的。
关于微软得开发模式得资料可以参考《微软的秘密》,关于极端编程的资料可以参考 http://c2.com。
综合两者,简述一下软件开发的方法。
保证开发计划按时完成和产品质量的方法:
开发要完成的内容是根据用户的需要确定的。在微软是由销售人员确定用户需求。这里主要说明“极端编程”的方法。在极端编程中,用户确定要开发的功能,用户可以把对自己更重要的功能放到前面先完成。开发人员对这些功能提出每个功能实现的时间,用户如果认为时间太长可以取消一些功能。这样,通过这种协商和反馈,保证了开发的最大价值。同时,因为是开发人员确定功能实现的时间,因此,计划必要容易按时完成。特性不要要求太具体,要简单勾勒。
实际上,用户开始不知道自己需要什么,这需要开发人员研究用户行为,提出可以实现的效果,用户对效果进行评价和修改,来确定开发的目标。当开发完成时也要提供给用户进行试用,获得反馈意见,对产品进行改良。这也是和用户不断交流的过程。这种交流保证了产品确实是用户需要的。
对于每项功能,由开发的组织者和开发员讨论制定详细的完成步骤,确定每一部分要达到的具体效果,写详细的文档,描述每个界面完成的外观和函数的功能。这叫任务引擎。任务引擎不是一次写成的,可以随时间不断详细化。
根据任务引擎再编制详细的时间计划,将任务引擎划分为若干个任务,每个任务由一个人负责,这个时间计划要由每个具体的开发人员提出或协商每个任务和每个任务的具体部分的完成时间,这个时间计划要细分到半天至三天,至少一个星期。在每项任务的完成时间后面要留有缓冲时间以应付意外情况和时间估计的不准确。只有计划的时间单位的细化才能保证任务的完成在完全的掌握中。
在时间计划中有界面冻结时间、文档冻结时间、代码冻结时间,这样保证了计划的相互关联的部分不会影响计划的完成。
开发部门和测试部门是相互独立的部门,几乎每个开发人员对应一个测试人员,两者的人数是1:1。要求开发人员每天把完成的代码放到服务器上,每天测试人员进行昨天完成的代码的测试以及以前代码的测试,并将发现的问题发到服务器上,反馈给开发人员。有时因为发现的问题太多,管理人员会发现开发的难度,因此会取消部分任务和开发。测试人员和开发人员要完成的工作都有详细的规范,规定具体要完成的内容。通过专业的测试,保证了软件的质量。
在开发中,管理人员要追踪计划的完成情况,及时发现问题,指导问题的解决,保证计划完成,根据问题调整计划。
微软把每个软件版本的开发过程分为几个里程碑,大概每两三个月一个里程碑,每个里程碑实现部分的特性(软件功能。在微软,软件功能被成为特性。)。最重要最基础的特性放到前面的里程碑中,不重要的特性放到后面的里程碑中,这样,如果要保证软件的按时发布,最后可以删掉一些不重要的特性保证软件的按时发布。每个里程碑都要在公司内部和外部进行软件的发布和各种公共测试,保证了用户的反馈和这部分功能的最后稳定。这样,避免了到软件发布的最后时期才进行各种公共测试的被动。也加大了和用户交互的机会。
在每个里程碑中,一般都留下三分之一的缓冲时间,来应付各种开发的意外情况,使开发工作可以从容完成,如果到了缓冲时期,为了保证计划的完成有可能取消一些不必要的功能。缓冲时间在“极端编程”中称为“时间因子”。
这些方法实现比较复杂,但这是已经有大量工程和公司的实践。不是理想的空中楼阁。针对具体公司,根据自己的管理条件,可以分批逐步实现。或者没有能力实现,也可以参考先进的项目管理方法,认识到自己管理上的各种问题产生的原因,有一个管理的目标。