机械化模式并不适合软件开发?

创业   2024-12-24 07:38   四川  

至少20年前,领导们就希望软件开发机械化,因为他们了解怎么做好机械化工作。所以,有的领导会认为软件工程师就是就是在软件工厂里进行编码的工人。

在这个领导想象的软件工厂中,软件工程师坐在流水线旁自己的座位上,把Java的部件组合在一起,或者在软件车床上打磨一个VB的应用程序……软件组件随着流水线向下流动,有个测试员每天以同样的方式测试这些组件并盖章以示合格。J2EE设计师设计J2EE的应用,C语言的编码师在C语言编码环境下编码。一切都井井有条。

但是,这个类比并不成立。软件工厂中的机械化模式并不适合软件开发。具体有以下几个原因:

  • 机械化模式无法适应需求变化

软件必须满足用户需求,而如今用户需求经常会发生改变。这也就意味着软件的设计、编码和测试环节也要相应地变得更加灵活,这些都是机械化开发模式无法满足的。在需求经常变化的环境下,灵活的软件开发才能满足要求。

  • 机械化模式难以应对突发问题

软件开发过程中经常会遇到各种各样的问题,而且很多问题是我们无法预测的。机械化模式遇到突发问题,就会导致整个流水线瘫痪,导致工期延误。我们需要有更灵活的机制来应对这些风险。

  • 机械化模式难以敏捷

机械化模式要求每个岗位都是熟练工种,是专才,但是如果一个环节出现问题,就只有该岗位的专才能够处理,其他环节只有停下来等待。这种开发方式难以提高效率。按照敏捷团队的观点,团队中的每个成员应该是“一精多专”,这样很容易做到“一方有难八方来援”,软件开发的效率才会提高。机械化模式的分工无法做到这一点。

  • 机械化模式无法适应软件项目的循环性

软件项目通常是具有循环性的,不仅项目的流动是循环的,一个项目内部的工作也是循环的。负责编码的程序员要做好编码工作,不是只会接收上一个环节传送过来的设计文档,就能在IDE环境下写出好的代码来,他也必须要依赖前后流程和经验。如果程序员不懂这个系统是用来做什么的,他就不能很好地实现这个系统。由于前后流程的问题,程序员像机械化模式中那样同时参加多个项目并不可行。

总之,需求经常变化,突发的无法预测的问题,僵硬的分工模式以及软件项目的循环性,使得机械化模式并不适合软件开发。

这正是:

机械难施软件工,需求多变预测空
分工僵硬循环扰,灵活应对方为聪

参考书目:我编程,我快乐:程序员职业规划之道,作者:(美)Chad Fowler,译者:于梦瑄,出版社:人民邮电出版社

作者简介:王小双,长期从事GJB5000推广、实施、评价、改进的工作,创建《软件工程之思》微信公众号,一直在《软件工程之思》分享GJB5000、CMMI、软件工程的知识和感悟。现致力于GJB5000培训、内外部评价以及软件过程改进、软件工程能力提升的研究工作。


软件工程之思
软件工程之思,一个探讨软件工程的优秀实践的芳草之地,这里有前辈的成熟经验,也有晚辈的奇思妙想,无论哪种,都希望能给你带来一点启迪。软件工程之思,愿成为推进软件工程浪潮中的一朵浪花,营造软件工程燎原之势的星星之火。
 最新文章