程序设计是一种设计

作者:埃纳尔·兰德雷(Einar Landre)

发明面向对象程序设计方法和Simula程序设计语言的克利斯滕·尼高(Kristen Nygaard)博士曾经说过,程序设计是学习的过程。将程序设计——或者更准确地说,软件开发——看作发现和学习的过程,而不是生产和建造的过程。这种观点从根本上促进了软件实践方法的发展。传统的生产和建造理念不适合运用于软件开发。30多年来,软件行业的思想先驱不断就此发表观点,并且留下了许多文字记录。例如小费雷德里克·布鲁克斯(Fredric Brooks,Jr.)(译注1)曾在1987年的《国防科学委员会军用软件任务组报告》(Report of thd Defense Sciense Board Task Force onMilitary Sotfware)中指出,以文档驱动的、照着说明依样画葫芦(specify-then-build)的方法引发许多软件问题的罪魁祸首。

如果要发展实践方法,软件行业应该到哪里去取经呢?不妨看看汽车、医药和半导体这些生产大众的精密行业。

来看看汽车行业的做法。计划推出新车型时,首先要决定设计概念和原型。这相当于设计架构的过程。以宝马X6为例,这款新车型结合了多功能运动车(SUV)和双门轿跑车(coupe)的特性,被宝马公司称为全能轿跑车。X6面市之前,宝马公司己经在车型设计和制造设计上投入了数千个小时和数百万的资金。宝马公司接到顾客的订单后,会启动某条流水线,根据顾客要求生产定制的X6.

我们从汽车的生产过程中可以获得什么启示呢?新车的生产过程包括两个阶段,第一阶段是创新的设计过程,包括建立投产必备的流水线;第二个阶段才是根据顾客的要求生产汽车。从许多方面看,软件行业也是如此,只是划分的界线不同。

杰克·里夫斯(Jack Reeves)在《什么是软件设计?》(What is software design?)这篇文章里提到,在软件工程里,与传统行业的设计文档具有相同地位的只有源代码。软件的生产则是自动化的,由编译器、构建工具和测试代码共同完成。

如果把编写代码看成是设计行为,而不是生产行为,我们就能采用一些己经被证明有效的管理方式。这些方法过去用于管理具有不可预测性的创新工作,比如研发新车、新药、新的电脑游戏。我所指的是敏捷的产品管理方法和精益生产方法,比如SCRUM,它们关注如何为客户实现最大的投资收益。

如果软件行业希望从这些方法中获益,我们必须记住,程序设计属于设计范畴,而不是生产范畴。

译注1:费雷德里克·布鲁克斯因担任IBM的在型机System/360及其操作系统OS/360的开发项目经理,被称为“S/360之父”,著有《人月神话》(The Mythical Man-Month:Essay on SoftwareEngineering)、《计算机体系结构:概念与发展》(Computer Architecture:Concept and Evolution)等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值