1.1.1 软件的生产力

软件行业的发展至今不足百年的时间,相比传统行业,尤其是工业,成熟度还不算高。软件工程的学者和从业人员一直在摸索成熟的行业解决方案,从早年的软件质量工程、能力成熟度模型集成(Capability Maturity Model Integration,CMMI)到前几年流行的敏捷、精益等方法,无不在尝试解决软件行业的诸多痛点,但是效果不是很理想,这印证了Fred Brooks所说的“没有银弹”。Fred Brooks在 1987 年发表的一篇关于软件工程的经典论文“No Silver Bullet—Essence and Accidents of Software Engineering”,该论文强调真正的“银弹”并不存在,而所谓的“没有银弹”是指没有任何一项技术或方法可以让软件生产力在10年内提高10倍。

Brooks的理念触碰了软件行业的本质问题之一:软件工程的生产力。生产力是衡量某行业发展水平的重要指标,观察当今软件行业的发展水平,生产力低下,生产过程为手工作坊模式。例如,某移动运营商客户的业务运营支持系统(Business & Operation Support System,BOSS)因为系统规模庞大、业务逻辑复杂、业务流程关联性强、业务操作步骤多,致使新需求无法快速、高效、准确地得到满足,往往一个需求需要经过2~3个月的开发才能上线。而软件行业衍生出所谓的“外包行业”存在价格无序竞争和管理混乱等问题,导致软件的生产力水平低下。