开发过程的产出是什么?一种比拟

类别:编程语言 点击:0 评论:0 推荐:

在豆豆他爹的Blog上看到一个颇有新意的类比,把用例中的Actor(执行者)和电影中的Actor(演员)进行比较,从而揭示出Actor后面真正重要的涉众。
比拟,或者说隐喻是个很有力的工具,也是一个很容易产生副作用的工具。所以才会有关于所谓“工程”和“工艺”的纷纷扬扬的小论战。所以往往一些作者在采用一个隐喻前,会比较很多相似或相对的隐喻来廓清比拟的对象的内涵和外延,比如《Code Complete》中对软件开发过程的各项隐喻的比较:建筑、工程、培养等等;和《建筑的永恒之道》里比较可以近似表示“无名特质”,但又不能完全表示的一系列词语:生气、完整、舒适、自由、准确、无我、永恒。因为每个隐喻都会带来新的暗示使得整体的意义向某方面倾斜。
而演员这一类比,必然也带来了新的想法。事实上,软件开发和电影有相当类似的地方:都需要团体的协作;很多的部分都遵守工程原则,但是在整体上却不是一个工程问题(找两个明星,再弄沉一条船,并不能保证带来几亿员的票房);都有严格的资源限制需要作出妥协(电影是遗憾的艺术,而软件总是会有新的需求开发下个版本)
对于电影演员,可以类似的对应到软件开发人员,对他们来说主要产出或者说成果,可以认为是影片中的表演或者是软件代码。然而,这是全部的么?如果不局限在电影领域,比如现场的话剧演员,他的产出是什么呢?仅仅是那随着时间消逝的表演么?
如果演员这个隐喻还不够明确的揭示这一点,那么用“教师”这一类比可能更加清楚。两者仅仅从动作来说没有根本性的不同。不过我们肯定不会认为教师的成果是他的板书、教案或者教学录像。真正可以表现他的工作成果的,正是他所教育的学生。
套用保险行业用滥的一句话:“我们销售的不是保险,而是对生活内心的宁静。”,演员的产出并非是胶片影像,而是观众的欢乐和投入。
那么,类比到软件开发中呢?软件开发的成果,并不是可执行程序、或者代码、或者文档、或者业务模型、或者开发团队、或者软件过程,而是用户,软件的价值体现在它所创造的用户身上。
微软的价值在于千万个每天使用windows和office的人,传奇的价值在于日以继夜打宝PK的玩家,QQ的价值在于网吧里整天聊天的网虫……软件的终极目的是塑造出新的人,和他们新的工作与生活方式。

说到教育和软件开发,想起温博格书中的一个笑话。在一次对软件工程教授的讲座中,温博格提到他发明的一种判断教学成果的测试:飞机失事测试。
“假设你登机,坐在座椅上等待起飞,这时听到广播中介绍:本次航班采用的是最新的完全无人驾驶技术,所有的起飞、导航、降落,是由xx大学的学生(正是你的学生)严格按照xx理论开发出的最新系统。那么你这时心中是否对把自己的生命托付在这套系统上有所不安?这可以算作是对你的软件开发理论和教学成果最严格的测试。”
会后一个老教授找到温博格,说他很欣赏这个测试。出于好奇,温博格问他是否通过了,他说:“我当然不会担心了,如果这个系统真的是我的学生开发的,那飞机根本就不会飞起来。”

本文地址:http://com.8s8s.com/it/it24796.htm