“方法、设计、实现、管理之三十六计”读后感
----《软件工程实践导论》一书的思想方法简析
中国有句老话叫“开卷有益”。如今的计算机书籍可谓汗牛充栋,但每个人的时间、精力都有限,要真正做到“开卷有益”,选择什么书来读就显得至关重要。笔者自选修计算机专业以来,读了不少这方面的书籍,结果有较多或是因枯燥无味而不能“有始善终”,或是硬着头皮读完也不知道咋用。特别是有些翻译国外的,由于翻译者的外语水平和知识经验的局限,读起来有时会不知所云或艰涩难啃。目前国内的软件工程领域,明显存在着实践超越理论,理论落后于实践的状况。为此,当许多软件工程学者还靠念洋经在书刊杂志上立论扬名的时候,不少脚踏实地的一线实践者与有识之士,已从涉猎广泛的实际经验和素材中,梳理、总结和升华着自己的心得体会与理论造诣。金尊和博士就是其中杰出的一位。
最近拜读了金博士的大作《软件工程实践导论》(下简称《导论》),被其独辟蹊径、精炼透彻的内容和旁征博引、庄谐皆陈的文笔所吸引,可以说是一气读完,获益匪浅,心有感言,欲吐为快。而上网查阅相关书评,也可谓高标逸韵,好评不绝。思量若复述别人的赞扬,可能会有把女人喻为花的“第二人”之嫌。为难之际,幸得作者在前言中一段论述的启示:“计算机和软件的发展很快,新的概念名词和技术手段层出不穷,可谓日新月异。停留于表面的现象,可以让人眼花缭乱,应接不暇。只有深入到本质,从哲学方法论的高度看问题,找答案,才能如庖丁解牛,游刃有余。” 从而找到抒感畅言的另一个契入点,即对该书的思想方法予以简要分析,企望能作为衬托“红花”的一片“绿叶”。
以抽象思维提炼经验。金先生自博士毕业后,分别在IBM中国研究中心、Rational Software公司和IBM加州硅谷分部从事技术、工程、管理等方面的研发工作多年,有着丰富的实践经验和交流思考。他在拥有软件工程领域大量知识和经验的基础上,运用抽象的分析和综合、比较和分类、提炼和概括等方法,上升到了方法论的高度,总结出与软件工程相关的方法、设计、实现和管理四个方面的指导性理论。其论著的表述方式也颇有新意,参照了兵法的三十六计,每个方面包含若干计,每一计为一个重要方法,单独成为一个章节。综合各章的内容大致有:叙述概念、特征、意义或提出问题及背景,分析问题、误区及相关认识、论点,探析、列示、比较多种解决办法和阐明考量因素或相应规范、原则,指出应注意的倾向或今后的走向趋势,最后提纲挈领或画龙点睛式地进行小结。每章依实际需要取舍增改和灵活处理,使阅者感觉条理清晰,详略得当,深入浅出,通俗易懂。这些让人一看就明白的招法,不管对于软件新秀或是业界老兵,只要学者诚心阅读,悉心体会,有的放矢,勤加操练,想必都能切实掌握软件工程的精髓。
以逆向思维掘进理性。逆向思维是一种重要的思考能力。人们解决问题时,习惯于按照熟悉的常规的正向思维路径去思考,这样有时能找到解决问题的方法,收到令人满意的效果。然而实践中也有很多事例,对某些问题利用正向思维却不易找到正确答案,或会失之偏颇,而一旦运用反向思维,常常会取得意想不到的功效。《导论》中也有不少这样的用例。如在“避繁就简”一章中,作者先按正向思维认为软件系统结构为将来的变化而预留一些柔性是很正常的,接着又前瞻三年后的情状而回眸审视现在柔性的度量,认为三年后有没有这种预测变化的发生是不确定的,且届时世界又不知要流行什么新技术了,所以现在若提供超柔性的设计是不可取的,由此也引证了避繁就简的必要性。再如在“规范流程”中作者提出,“在中国CMM认证很热,各个企业和软件园区都以此作为努力奋斗的方向。虽然没有什么不好的地方,但回过头来看一个事实,作为软件业龙头老大的微软公司也没有参加什么认证……由此可以反思一下认证的真正价值。”逆向思维使此书中的论点更趋理性与全面。
以辨证思维把握适度。在《导论》中,作者通过具体概念、辩证判断和辩证推理这三种基本的辨证思维方式,对软件工程在方法论层次上进行周密思考,注意到每个方法和技巧几乎都有正反两个方面,所以在向读者作具体介绍阐释的同时,特别注重分析其运用的范围、适用条件和时机以及要全盘考虑的因素等,把握好适度与平衡,尽量避免“没到位”和“走过头”两个极端与误区。这也反映作者善于把儒家的中庸之道运用于软件工程之中,切实在过与不及两端之间把握好折中点或度,使各种方法与技巧能“止于至善”。据笔者大致统计,全书各章中把握适度、兼顾平衡的论述约有六十多处。
以创新思维拓展新知。创新思维是不受现成常规思路的约束,寻求对问题新的独特性解答和方法的思维过程。对创新我们应从广义上理解,说别人没说过的话叫创新,做别人没做过的事叫创新,想别人没想的东西也叫创新。但创新不一定非得是全新的东西,在旧的基础上有了变化发展都可归入创新范畴。这正如作者所言:“实际上,世界上很少有全新的创造,都或多或少地与旧事物有着千丝万缕的联系,在比较的过程中往往可以很清楚利弊得失,组合之下,闪出创造的灵感来。”
我们若以这把宽泛的尺子量度,《导论》中的创新之处俯拾皆是。方法篇中的“经济为本”、“用户为先”等章,明确提出了首先应该将软件活动作为一个可持续的商务活动来管理,要重视用户和市场需求。虽然这些都是成功的国际性软件企业所遵循的基本常识,但是很少见诸软件工程书籍。这种大软件工程观,帮助我们走出只着眼于技术和过程的传统软件工程观念,对软件企业如何参与市场竞争和国际化的思考,是很有裨益的。具体到设计篇中,也阐述了许多新知。如把软件世界的“接口”视为现实世界民商事活动中的“合同”,并具体定义为形式化、标准化了的格式合同,由此而约定调用方和被调用方的权利、义务及相互关系。这样的说明既形象又贴切,因给人耳目一新的感觉而印象深刻。此外,本书中还提出了很多新的想法,如用控制理论来解释软件开发过程,又认为软件工程是介于科学和艺术的学科等,都是些很有创意的思想。
总之,《导论》把在国外行之有效的软件工程理论和实践与中国软件产业具体情况相结合,为创新性地总结适合中国软件业那具有本土特色的各种软件工程方法率先作了有益的尝试。
能写出这样令人折服的好著作,洵属不易。有丰富实践经验者,若缺乏高强的思维能力和书面表达能力,是难以把好经验转化为好文章的。国人研究学问,讲究学、识、才兼备。其实这三者兼备的人大概是不多的。而金博士就是这样的人,是一位真正名符其实的“博士”。本人在由衷歆羡和尊仰的同时,也将把此作为自己企慕向往的目标和长期不懈的追求!