什么是软件工厂?
什么是软件工厂?
一种观点是,尽量使软件研发过程工厂化,把软件研发人员视同工厂流水线上的工人,按照一套严格的规范进行软件产品的生产。
在这一思路指导下,在软件研发过程中,往往会详细规定软件研发的每一道工序。由于软件研发属于脑力工作的特点,所以需要大量的文档在各个工序之间传递思想或者思路,分工越细、工序越多、需要传递的环节就越多,文档要求也就越多越详细,而且要求文档在信息传递过程中尽可能的不出现偏差,不产生二义性。如果这些确实都能达到像工程图纸一样明确、准确,那么就可以对软件研发人员的工作技能进一步细分,有的专门做需求分析,有的专门做软件设计,有的专门编写代码等等,从而降低对各类技术人员的要求,使人员的专业化更加集中,在各自工序上更加熟练、更加高效,从而降低软件产品生产的整体成本。从上述的模式可以看出,这种软件工厂的思路,与劳动力密集型的制造业如出一辙,通过高度的专业分工,使工人在细分的工序中尽量的简单重复,从而降低单位成本。
采用软件工厂的管理模式,软件研发过程高度可控,后续工序必须严格按照前面工序所给出的规格说明进行下一步的工作,使得目标高度可控,沟通成本、管理成本也非常高,客观上开发周期会相对比较长,这是许多商业企业多难以承受的。“不就是改个程序吗,怎么这么麻烦”,这样的抱怨也是经常听到的。但是另一方面,由于在过程中形成了大量的详细文档,对于产品后续的维护、升级非常有利,对于一些规模大、生命周期长、要求苛刻的产品来说,还是具有一定必要性的。
将劳动力密集型的管理模式,用于智力密集型的软件研发管理,总觉得有点怪怪的。人才和奴才不可兼得。
