理解科学——软件工程研究、实践和教学中的思考

近代科学改变了世界,这为科学主义的盛行和泛滥营造了土壤,至今嫣然已成为主流价值观了,但沿着近代西方科学的路继续往下走的话,是很难再像过去的三百年间那样改造世界创造辉煌,相反却会带来灾难,因此我们必须超越科学主义重新理解科学,这就是本文的由来,但限于笔者的背景是从事软件工程研究、实践和教学工作的,也就从软件工程学科的特点来思考科学理解科学。

一、多元视角下的科学研究传统

对于科学研究我们已经习惯了以数学模型化和实验室实验为主要特征的近代西方实证研究传统,并以此作为科学的唯一依据,形成了科学主义的主流价值观。除了实证研究传统就没有其他科学了吗?或者说实证研究盛行之前人类就没有科学研究?显然答案是否定的。一般我们认为除了实证研究传统,还有哲学传统和博物学传统。自然科学研究的哲学传统的典型例子就是古希腊哲学,古希腊哲学家们开始超越形而下,在形而上的世界思考和探索世界;而博物学传统的典型例子就是中医,中医对中草药和病症的逐一研究、试验探索让人叹为观止。

显然它们分别从不同的角度在探索着自然,形而上的哲学角度和数学模型化方法都在追求自然内在不变的规律,而博物学传统却通过认识多姿多彩多种多样的世界,从中感受自然的内在奥秘。

从方法学的角度看,近代实证科研传统更多地是将研究对象分隔、孤立和抽象的方法进行研究,以此来减小事物的复杂性,总结事物内在的数学模型化规律,然后人为地创造一个割裂孤立的环境来利用所发现的规律,从而服务人类。这种做法本无可厚非,但当人类创造的割裂孤立的环境足够大的时候,就会干扰和破坏大自然本身的生态系统,此时我们所认识的科学已经不再科学了,科学的目标是探索自然服务人类,而今天的科学已开始危害和遗害人类了,因此我们需要跳出近代西方科学的藩篱,从大科学的角度重新理解科学。

二、软件工程的研究对象和研究现状

所谓软件工程即是利用计算机科学来更好地解决问题的一门学问,它是软件工程师利用计算机的功能和理论来编写软件最终更好地解决问题,它的最终结果是计算机软件。由于软件本身的复杂性、易变性和不可见性,再加上软件极具个性,因为不同的软件工程师解决相同的问题开发的软件绝不会相同,哪怕同一个工程师在不同时间解决同一个问题所开发的软件也绝不会完全相同。因此静态地将计算机软件,或者说程序代码,作为研究对象无法揭示软件工程的奥秘,因为计算机软件与它的开发者、开发过程、所要解决问题及其问题所处的环境密切相关。

由此可见,分隔和孤立地研究软件工程中的某一个要素是难以揭示软件工程的内在奥秘的。可现状是软件工程的经典教材无不充斥着分隔和孤立地对软件工程中的某一个要素进行量化研究的内容,很多结论在实践中毫无意义。

科学家们总是固执而执着地迈向真理的深渊无法自拔,而上帝却在悄悄地提醒着人们,《人月神话》和《人件》这两部经典著作的经久不衰即是例证。尽管这两本书也有大量量化研究的内容和结论,但总的来看它围绕着要解决的问题及所处的环境来描述开发者和开发过程,颇有博物学传统的味道。

三、软件工程研究、实践和教学中的思考

由于软件工程实践中开发者是最重要的要素之一,开发者对问题的理解及其开发过程,都是旁观者无法体会甚至很难观察的,显然研究者无法像研究物理学那样以旁观者的身份来考察研究软件工程活动,软件工程研究依然必然需要超越近代西方实证研究的思维局限。

将研究者自己作为主要的研究对象之一,只有近代心理学(精神分析)和中医可以与之相比,弗洛伊德的《精神分析引论》是以案例研究为主,中医更是如此,同时中医又是经过数千年的积淀,而至今依然无法彻底破解生命和疾病的奥秘,或许破解奥秘压根就不是中医的目标,中医的目标是治病救人追求健康和谐。

软件工程不与此类似吗?尽管软件工程才只有短短几十年的历史,但我相信它会像中医一样成为千年积淀的一门学问,研究者只能像中医师一样投身实践,并不断观察、思考和摸索才能窥其一二,也只能以学无止境止于至善的态度投身于软件工程研究、实践和教学中。

鉴于以上理解,具体到软件工程教学中,最有效的教学方法显然是经典案例分析和教师指导下的实践,换句话说没有案例分析(不同课程可以是代码、模式、架构或策略层面的案例)和动手实践的课程不是一门好的软件工程课程。

参考文献:

[1]软件工程 – 理论与实践(第四版 影印版) Software Engineering: Theory and Practice (Fourth Edition),Shari Lawrence Pfleeger,Joanne M. Atlee ,高等教育出版社

[2]邢冬梅、蔡仲老师的《理解科学》课程教学内容

此条目发表在 其他, 科研论文 分类目录。将固定链接加入收藏夹。

发表评论

要发表评论,您必须先登录