做软件工程要懂得变通
文:鼎捷ERP
作者:鼎捷数智 | 发布时间:2012-11-30 14:50:34
第六节枝节与细节
刚才说到目标和质量的问题时,提及“平衡时间、资源和功能三者的关系”。这其实是一个实施过程中的细节。或者说,它是一个具体的方法,而不是目的。
所以我们通常所说的细节,其实是对实施方法的一些有限量的描绘。比如“软件工艺”这个概念本身的提出,就是考究“细节问题”的。从这个角度上来说,我并不反对‘‘细节决定成败’’这样的观点。但请注意一个前提:这是技术或方法的细部。
我其实在前面的行文中一再地混用了‘‘细节”与“枝节”这两个词。枝节是事实发展的次要的分枝,它不涉及行为本身,也不是对行为本身的考量。因此我在前面的文字中说到“跳出细节”,其实本意是“跳出枝节”——细节只是做到何种程度的问题,而并不是关不关注(或做不做)的问题。
大多数情况下,供应链管理人员有责任去审核、评估其他成员的工作成果。这个时候可以讨论‘‘细节决定成败”这样的问题,因为这决定了产品的较终质量,而质量是工程的目标之一。
而在另一些情况下,例如管理人员做事件的决策的时候,就必须要学会忽略枝节问题。
混淆这两个名词的使用,其根本原因在于一大部分读者并不能区分“细节”与‘‘枝节”。从惯于“实作”的程序员一路走来的工程人员,很难分清自己什么时候是在“工作”,而什么时候又是在“决策”。
因此我只好用较笨的方法提示管理者:别管它是细节还是枝节,只要你感到你的脚趾已经沾上了泥淖,就快点回头。
用脚趾去感觉,有时比用头脑去思考来得有效。
第七节细解“法”与“式”
软件工程学科中的很多思想与其他传统的工程学科既有的思想、方法和理论有紧密的关系。所以甚至有些工作流软件工程角色被推荐去阅读类似于《建筑的永恒之道》这样的书。据说,模式先驱WardCunningham和KentBeck就是首先从Christopher Alexander建筑学模式中吸取了灵感,从而开创了“设计模式”这样的软件工程方法。
C.Alexander就是《建筑的永恒之道》的作者。是一位真正的建筑学家。GoF中的RalphJohnson曾经将“Pattern(模式)”一词的词源指向C.Alexander’并建议在电子商务软件工程领域中直接使用他在《建筑的永恒之道》对PatternLanguage二词的定义。而在另一方面,C.Alexander又曾经说中国的建筑给了他很多灵感。那么模式作为一种思想,其源起于何时何处呢?直到有一天我听到一本书名,才想到真的应该像C.Alexander大师那样,从建筑学的领域去探寻这个“模式”(而非“建模语言”)的源起。这本书就是《营造法式》。 “(它)是北宋官订的建筑设计、施工的专书。它的性质略似于今天的设计手册加上建筑规范。” (引自梁思成先生《营造法式注释序》)
《营造法式》原序中说: “(工程需要)按时聚集工役,做出屋檐似翼的宫室。然而工匠的手,虽然很巧也难免做走了样。主管工程的官,也不能兼通各工种。”由此看来, 《营造法式》中所解决的问题,与我们今天的软件工程中所遇到的问题如出一辙:
》 工程管理者不能兼通各个工种;
》 不同的开发人员对设计和制作的理解不尽相同。
那么《营造法式》如何解决上述的两个问题呢?
这就回到了“法式”这个词的含义上来了。法式二字,是宋代官方文件的常用词, “法”指律令、条例, “式”指定式、方法。所以《营造法式》颁行的初衷,是希望能够有办法将工程中所用的元素:
》 “按类分别排出,有条例规章作为依据”;
》 “按照条文画成图样,对将来的工作有所补助”。
这两点即是所谓的“法”与“式”。
从《营造法式》中包括的一篇“札子”所记述的奉旨著书的细节来看,尽管后世将该书作为技术论著,但较初编写它的目的,却是为了颁行政令、预算定额,以节制各项工程的财政开支。
《营造法式》序中还提到工程预估问题的根源:“(管理者)不知道用‘材’来作为度量建筑物比例、大小的尺度,以至于有人用‘枓’的倍数来确定构件长短的尺寸”。所谓‘‘科”,是指古建筑在柱子上支持大梁的方木。《营造法式》认为用‘‘倍科而取长”的方法来度量是不合理的。故而在书中用“材”作为设定的度量。
为此, 《营造法式》详述了“材有八等”。例如其中的第一等是指“断面9x6寸” (1寸=3.3厘米),用于“殿身9—11间”的情况。然后,书中以“材”为基本模数,详细讲述了“大木作”、 “小木作”等工种中的构件比例、位置和相互关系。再后开始讲述各个工程在各种制度下的劳动定额和计算方法,以及用料定额和质量标准。
《营造法式》一书极为详尽。例如计算劳动定额时,首先按工艺要求高低分上、中、下三等工,然后按不同季节中一天的长短,分出中工(春、秋)、长工(夏)和短工(冬)。工值以中工为准,长短工各减和增10%,军工和雇工也有不同定额。其次,对每一工种的构件,按照等级、大小和质量要求——如运输距离远近,水流的顺流或逆流,加工的木材的软硬、容重等,都规定了工值的计算方法。
然而这些与软件工程实践究竟有什么关系呢?
如果我们看到, “模式”相当于是建筑中预制的工件,那么我们将各个工程角色在模式方法下的实作形成制度;把实现一个模式的代码量、人工量约定度量;把如何构架模式、如何度量模式的质量(完成度和可用性)确立规范……我们也可以得到软件工程的“法式”——至少,这在表面上看起来是无限美好的。而且事实上,这些工件、制度、度量和规范正是软件工程界多年来孜孜以求的东西。
然而,中国人自夏代就有负责百工营建的“共工”一职,至战国初有论及营造技法的《考工记》一书,而后直到北宋时期才有度量和规范工程的“法式”。这足见形成“定法”、 “定式”之艰难。
《营造法式》的基础源自于工程经验,书中著录仅有283条出自史籍,3272条出自对当时工匠的现场访录(工作相传),这些‘‘经久可以行用之法”,占到了92%。然而即使如此,《营造法式》仍说明“随物之大小,有增减之法”,并提出“应与式不同……比类增减”。
建筑工程用了几千年的实践,编修了《营造法式》34卷,分列了13个工种,176项尺寸标准,著录达357篇,法式更是多达3 555条……然而,书中仍有八个字“与式不同,比类增减”!
那么,我们怎么能指望在某种(或某几种)过程理论,以及一些模式方法之上,找到一个能一成不变的办法去实施我们的软件工程呢?
相较于《营造法式》,我们的协同软件工程实践类学术专著仍然非常粗糙,未必能像“法式”那样值得趋从跟随。当然我们也不应当因噎废食,妄论优劣。因此对于“某某模式”与“某某模型”之类,我的态度仍然是‘‘与式不同,比类增减”。
第八节灵活的软件工程
并不像现代人想见的那样,古诗词一定是.‘‘逐字论平仄’’的。变化或者变通,其实是常见之事。因此古词谱中,才常会见到冠以‘‘摊破”、 ‘‘减字”、“添字”等字的词格。然则古人在词格上的这种变通,是基于‘‘音律’’的。 通常说的词律是指词格,这与音律是两回事。词律(格)是平仄,音律则是乐器、音调与歌舞。古词中用来吟唱与歌舞的词牌就不能混用,律不同,调不同,如是之。
然而古词的音律(亦即是律谱)已经失传了,也就是说,今天的词是用来读的,不是唱,也不是舞,甚至连吟哦也不是。所以今人总是拿普通话中的一、二声作为平声,三、四声为仄声来填词,并以此论平仄,而全然不想词的格律的根基是“词律”与“音律”这两个部分的融合。
我曾经参与过一个讨论,叫“古人是如何说话的”。在我看来,古人做文章和说话是两回事,文章中之乎者也,日常交流中还是市井俚语的。因此评论中会说“以俚语入词”。也可见填词作文章与说话毕竟是不同。再者说话也存在方言的问题,因此
上一页:软件工程的要素价值分析
下一页:如何给客户介绍公司1
相关新闻
-
如何给客户介绍公司1
公司介绍常见时机有如下情况: 》非正式介绍 一般是利用和客户初次会面的机会,介绍自己的公司和产品。简单推销自己的卖点会给客户一种不了解客户,只关注软件公司自身的印象,而客户很容易反感这样的推销。
-
如何给客户介绍公司2
要么说服,要么毁灭 正式的公司介绍一般是和企业约定一次大范围的交流陈述,甚至是在和竞争对手同台答辩竞争时进行。如果客户在正式陈述前已经非常了解公司情况时,可以考虑弱化公司介绍的内容,或缩短时间,或调整优先级。
-
软件工程的要素价值分析
这样一来,我们得到的软件工程模型将不是经典的、层状的“牛屎图”,而可能像太极图一样由阴阳交汇而生万物。因为如果是“高度概括”,那你应该把目光投向瀑布模型,而RUP其实就像一个杂物箱一样“包容”了全部的已知理论。