软件:产品和过程的统一(转)

      产品和过程

      如果过程很薄弱,则最终产品必将受到影响。 但是对分过程的过分依赖也是很危险的。Margaret Davis[Dav95a]在多年前写的一篇简短的文章里对产品和过程的双重性进行了以下评述:

     大约每十年或五年,软件界都会对 “问题”重新定义 ,其重点由产品问题转向了过程问题。 因此 我们逐步采纳了结构化程序设计语言(产品)结构化分析方法(过程)和数据封装(产品),到现在重点是卡内基 梅隆大学软件工程研究所提出的能力咸熟度模型(过程)(随后逐步采纳面向对象方法和敏捷软件开发)。钟摆的自然趟势是停留在两个极端的中点, 与之类似,软件界的关注点也不断地摆动,当上一次摆动失败时 就会有新的力量加入 ,促使它摆向另一个方向 这些摆动是非常有害的,因为它们可能从根本上改变了工作内容及工作方法,使软件工程实践人员陷入混乱 而且这些摆动并没有解决问题, 只是把产品和过程分裂开来而不是作为辩证统一的一体,因此注定要失败。

      这种二象性在科学界早有先例,当某一个理论不能对观测到的相互矛盾的结果做出合理解释时,就会出现二象性理论。由Louis de Broglie于20世纪20年代提出的光的波粒二象性就是一个很好的例子。 我相信,我们对软件组成部分和开发过程的观测证明了软件具有过程和产品的二象性 如果仅仅将软件看作一个过程或是一个产品 那就永远都不能正嘀地理解软件,包括其背景、应用、意义和价值。所有的人类活动都可以看成一个过程,我们每一个人都从这些活动中获得对自我价值的认识, 这些活动所产生的结果可以被许多人反复地在不同的情况下使用 。 也就是说,我们是从我们自己或是他人对我们产品的复用中得到满足的。因此,将复用目标融入软件开发,这不仅潜在地增加了软件专业人员从工作中获得的满足感 也增加了接受 “产品和过程二象性 ”这一观点的紧迫性 对于一个可复用的部件,如果仅仅从产品或是仅仅从过程的角度考虑, 都不利于软件开发,这种片面的观点或者影响了人们对产品的应用环境和应用方法的认识, 或者忽略了该产品还可以作为其他开发活动的输入这一事实。

      因此, 片面地强调某一方面的观点会极大地降低软件复用的可能性,也会大大减少工作的成就感正如从最终产品获得满足一样,人们在创造性的过程中得到了同样的(甚至更大的)成就感。艺术家不仅仅对装裱好的画卷感到高兴,更在每一笔绘画的过程中享受乐趣:作家不仅欣赏出版的书籍,更为每一个苦思得到的比喻而欣喜。一个具有创造性的专业软件人员也应该从过程中获得满足,其程度不亚于最终的产品。产品和过程的二象性已经成为保留推动软件工程不断进步的创造性人才的一个重要因素。

 

—— 摘自:《软件工程:实践者的研究方法(第八版) 》 第三章 文末

posted on 2019-06-18 21:00  wangzhiliang  阅读(211)  评论(0编辑  收藏  举报

导航