前言
软件作为信息时代的核心,由于它的抽象性、不易见性等,使得软件设计开发过程变得复杂、难于治理,开发团队如同在焦油坑中挣扎的巨兽,美国软件泰斗Fred Brooks在1987年发表的经典论文《没有银弹》中指出没有任何一项技术或方法可以能让软件工程的生产力在十年内提高十倍。25年过去了,我们在软件工程方面仍然没有根本性的突破,理论界和实践领域一直在努力探寻。
诸事有道,老子的《道德经》把“道”字推到了一个哲学的至高位置,使之更加抽象,甚至有些神秘;软件之道何在果我们掌握了软件之道就能够解决软件的根本问题吗够消灭软件领域中的人狼吗们通过数学、逻辑学、工程学等多学科对软件工程进行研究,试图掌控软件的根本,但目前为止收获甚微。
《道德经》是东方圣人李耳的不朽典籍,军事、政治、哲学、医学、武学等都将它视为经典,对各种学科具有普遍的指导意义,那么它是否也适用于软件领域呢果我们悟透其中之精微,是否可以登堂入室窥见软件之道的真容呢里我想引导读者进入《道德经》的神圣殿堂,努力用东方智慧来审视我们软件领域遇到的问题,或者努力把它视为软件领域的经典认真研究,看看能够对我们有怎样的启迪和帮助。
《道德经》成书于公元前700多年,由于时代久远加之语言文字的发展、语意语境的变迁、传抄印刷过程中的错漏等,导致后人理解的困难和谬误的产生,甚至蒙上了一层迷信和宗教色彩。事实上它是一部哲学著作,它从哲学的高度阐述了宇宙万物的本原和相互关系,它既是认识论亦是方法论,因此对软件领域必有深刻的指导价值,它阐述的是万物之道亦是软件之道啊!
纵观《道德经》全文,它的观点和精神是科学的,认为万事万物都不是简单机械的,诸多因素相互关联、相互影响、相生相克,即使你掌握了一个事物的本源,也需要因时、因地、因势、因人的综合分析治理;对于软件也是同样的道理,因此软件之道不仅涉及软件本源和根本,同时涉及到企业精神、团队合作、设计师风采、需求管理、设计纲要等等,《道德经》在这诸多方面都给我们指引了方向,做出了精辟的论述。
br> 序
深夜,Brooks先生正在苦思冥想,20多年前他发表了著名的论文——“没有银弹,软件工程的根本和次要问题 ”,提出:“没有单纯的技术或者管理上的进步,能够独立承诺在十年内大幅度地提高软件的生产效率”。现在20多年过去了,银弹依然没有,人狼大肆泛滥。他怀着焦虑、苦闷和纠结,苦苦思考着,类似的情景在最近的十多年里经常发生,“没有银弹”,我为什么写下这样魔咒,他感慨着、自责着,苦闷、绝望时刻围绕着他,折磨的他日渐消瘦。
晴朗的夜空,繁星点点,Brooks依靠在沙发上又陷入深思,恍惚间他来到了一个空旷、神秘、祥和的境界,眼前出现了一座高大而威严的殿堂,隐约间他感到一股神秘的力量吸引着他,他一步一个台阶地朝殿堂走去,迈过八十一个台阶,他来到了大殿的正门,门豁然顿开,Brooks惊奇地看到四位圣人端坐在大堂之上,慈祥而庄严。“啊!这是人类智慧的尊者”,他意识到,我必须把握这个机会,向圣人求教,他们一定能够为我指点迷津。
想到这里,Brooks首先来到上帝面前,虔诚的拜伏下去,未等他开口,就见上帝和蔼地说道:“孩子,我创造了一切,包括那困扰你的软件和困扰你的问题,你真心地去爱它们吧,一切苦闷、烦恼就会自然消失。”说完他合上双眼,沉静的如广袤的宇宙。
Brooks若有所思,他又来到佛祖面前,佛祖哪庞大的身躯、庄严的面孔,使Brooks感到敬畏,他刚俯下身,就听到一个洪亮、宽厚的声音说道:“小施主,一切起于信,你认为没有银弹,它自然就没有,你坚信它有,它自然就有了。”说完佛祖合上双目,庄严中透着慈祥。Brooks深深的一阵自责,撕心裂肺的剧痛穿过他的躯体,瞬间又灭度了,他在佛祖宽洪的音波震荡下,领略了佛学的真谛,他略有感悟,但依然困惑。
他转身来到默罕默德面前,一个铿锵的声音传来:“将程序员们训练成无坚不摧的钢铁战士吧,人狼自然就不存在了”,Brooks抬头仰望时,先知已经恢复了沉默,他思考着,心理又一阵纠结。
他来到东方圣人老子的面前,满怀期盼和崇敬之情拜伏下去,刚要开口就听到了一个慈祥而空灵的声音传来:“孩子,我了解你的痛苦,三位圣人已经为你指明了方向,只因你天性未开,参悟不透,我给你一本典籍,回去慢慢研读吧。唉!可怜的孩子。”,只见他老人家拂尘一抖,一个木匣迎面朝Brooks飞来,他伸手去接,就觉的一股巨大的力量向他扑来,身躯一晃就从殿堂上跌落下来……
依靠在沙发上的Brooks使劲地摇着身体,睁开眼,才意识到又是南柯一梦,然而让他惊喜的是手中居然真的捧着一个古色古香的精致木匣,他兴奋异常,急忙打开,顿时万道霞光、紫气环绕,一部《道德经》呈现在他的面前。
Brooks如获至宝,经过十年的苦心研读,多次来到中国,请教了无数国学大师,终于参透全书,圣人的思想虽天马行空,似无章法,但大道通明,读后如醍醐灌顶,豁然开朗,茅塞顿开、迷茫尽失,大彻大悟的他盘腿而坐,面向东方,怀着万分崇敬的心情,深深的拜伏下去,顿觉全身轻灵,飘飘如仙,欲归去来兮……,突然那个慈祥而空灵的声音又一次响起:“Brooks,你尘缘未了,你还有任务没有完成。”,Brooks顿时醒悟,“啊!圣人竟然叫出了我的名字。对,我必须把这本宝典,翻译成程序员们都能看得懂的书籍,以拯救IT民工于苦海啊,这是圣人的期盼,也是我的责任啊”。于是,他在首页上写下了——《老子的软件之道》,并开始奋笔疾书。
什么是哲学,兼谈如何理解老子的道德经
哲学是科学家的宗教,宗教是百姓的哲学。
这是我个人的一个观点,我认为哲学是解决自然科学无法解决的问题的一门科学,换句话说,哲学是科学的科学。哲学也解决不了的问题就只好求助于宗教了,因此许多伟大的科学巨匠最终都成了虔诚的教徒。
但是随着科学的日益发展,哲学的领域不断受到挤压,它似乎处于比较尴尬的地位,但我相信哲学将永远存在,并越来越发挥其重要作用,因为当人类知道的越多时,会发现不知道的也越多。
老子是我国古代的先哲,是一位伟大的思想家、哲学家,代表了无尚的东方智慧。
老子的《道德经》是一部伟大的哲学经典,它反映了东方圣人的宇宙观、人生观、认识论和方法论,由于它的高度抽象,使得它具有广泛的适用性,可以说放之四海而皆准啊;因此军事家认为这是一部军事战略著作,政治家认为这是一部有关权谋的经典,武术家则认为这是一部武林秘籍……
但是由于道德经成书年代久远,文章言简意赅,加上概念的高度抽象以及文字和词语的历史变迁,使得人们很难理解它内容的准确含义,甚至造成很多误读和误解,例如:
“绝学无忧”很多人翻译为放弃学习就没有忧患了,这真是对老圣人天大的亵渎,他老人家就是管理图书的,几乎研读了当时所有的书籍和典章,是一位著名的大学问家,孔子曾经向他求教;他怎么会提出这样愚昧的观点呢,绝无可能吗。
其实很简单,绝学无忧就是说“最高的学问就是无忧无虑”,换句话说“无忧无虑是学问的最高境界”,多么深刻!实际上理解道德经并不困难,我们首先要掌握书中定义的一些高度抽象的名词和概念,然后再理解老子的一些基本思想,这样读道德经就没有困难了。
br> 名词概念
道 这是本书最重要的概念,我认为它有两个方面含义,首先从“无”的层面看,道代表一切事物(这事物既包含物质亦包含精神)的根本规律——天地之始;其次从“有”的层面看,它是构成事物的最基本单位——万物之母。实际上目前的物理学研究成果,已接近证明老子宇宙观的正确性——宇宙之初没有任何物质,只有无穷的能量集中在一点,它扩散开去,两秒后氢元素诞生了,然后是氦元素……,经过几十亿年的演变,宇宙就呈现出目前我们看到的样子。
无 是道的另外一个名字,它是一切事物的根本规律,也是产生事物的基本动因,它是概念层面的道、是精神层面的道。
有 是道的又一个名字,是构成万事万物的最基本粒子和基础构造,是物质层面的道。
你认真研究道德经就会发现,老子在开篇就首先介绍了上面的基本概念,如果你不能正确地理解这些抽象的概念,后面的章节你就更难于理解了。
“有”、“无”还有另外一层概念,它是一个高度抽象了的名词,对于不同的事物可以代表不同的具体概念;就如我们在会计系统中使用“借”“贷”作为账户行为的一种抽象一样,随着账户种类的不同,借、贷代表的具体含义也不同。
“道”、“有”、“无”作为一种高度抽象的哲学概念,它不仅适用于物质世界,而且适用于意识领域,这是东方哲学思想的高深之处;同时我们要打消对这些抽象名词的神秘感和迷信色彩,实际上哲学必须建立在抽象之上,抽象就必然不具体,因此就不容易理解,甚至产生了反感和不信任,认为这是迷信和伪科学,其实“道”“有”“无”就是一个抽象名词而已,像“借”“贷”一样,毫无神秘可言,总得为这些抽象概念起个名字吧, 不叫“道”就得叫“DAO”了:)。
为了阐明具有广泛适用性的大道理,就必须先建立起高度抽象的概念。
无为 许多解释都是根据字面的意思,望文生义,实际上忽略的道德经开篇对“无”的定义,无为,就是“无”的行为;也就是道的行为,就是合乎自然规律的行为,而非按个人的主观意志的行为。理解了无为的这个正确的概念,就容易理解无为而治了,可不是无所作为就可以治理一切了,而是要认真研究,按照事物的本性和客观规律进行治理啊,顺应大势而为,无为更不是不为。
德 就是无为或无为的结果,它是道在某种事物上的一种具体行为和表象,亦可称为“道体”。老子在道德经中经常平等地看待二者,其实他们是“同出而异名”。“道”通常在无的层面,“德”则在有的层面;“道”无形无相,虽有大用但无可用(你不能拿来直接使用,只有正确认识、掌握它的人才能运用它);具体到软件行业,软件之道只是概念、理论、规律和规则,依据软件之道建立起来的软件生产体系。才是软件之“德”,方能在软件领域发挥提高生产效率和质量的具体功用。
注意:“道”和“德”都是抽象的名词,并非我们目前通常理解的道德,更不是什么离奇古怪甚至迷信的东西,只是许多人的不理解和误解,才给它披上了神秘和宗教的外衣。任何事物都有其“道”,都有其“德”,道是永恒唯一的,德却有丰富的表现形式。
道有大用却无可用,德无至用却可大用。
“道”是无形无相的,需要我们去研究、去悟,德是由道演化而生,或由我们人类依据对道的认识设计制造,它只能接近于道,但永无止境,越接近道,它的表现就越卓越,生命力越强劲、威力无穷。
另外,我们在道德经中经常发现“婴儿”“无极”“谷”“水”“江海”“朴”等名称,如果不能正确理解,会导致对全文误解。
实际上它们都是“道”(或者说非常接近与“道”的德)的别名,老子担心“道”过于抽象,于是他老人家从客观世界中选出最具有道性(接近道的)的事物,以此来揭示道的内涵,以便于我们对抽象概念的把握和理解。例如婴儿它具备许多道的特征,他饿了就哭、困了就睡,纯朴自然。
这里“谷”是指山谷,“朴”是指天然未经雕琢的美石(玉–石之美者为玉)。
大家可以认真分析研究一下这些事物,它们有哪些共同的美好的品质特征都是“道”的一种表现,也呈现“道”的一些本质属性,深刻体会你就能有所感悟。
第一篇 道
软件之道在于抽象,但软件过程充满了艰辛和困难,如何能够使软件开发过程变得更加容易呢/span>
2. 难中求易
圣人曰:天下皆知美之为美,斯恶矣;皆知善之为善,斯不善已。故有无相生,难易相成,长短相形,高下相倾,音声相和,前後相随。是以圣人处无为之事,行不言之教。万物作焉而不辞。生而不有,为而不恃,功成而弗居。夫唯弗居,是以不去。
现代科学之父爱因斯坦发现了相对论,实际上相对论可是老圣人最先发明的啊(开个玩笑)。比如美与丑、善与恶,易与难、长与短、高与下、前与后、音与声、有与无,它们的关系都是相互对立的,同时又是相互依存的。如果不能辩证地看待它们,矛盾就不可能得到很好地解决。世人多追求前者,而厌恶后者,其结果往往求之而不得。老子向世人指明的是,求“有”须向“无”中求;得“易”必须通过难。
建立企业级的技术架构(ETA)是困难的,但是为了使具体的应用系统“易”与开发和维护,必须克服困难建立ETA;软件大师关注各应用功能的共性需求,思考设计与具体功能无关的ETA,不是侃侃而谈,而是敏于行动,建立起似乎无为无用的ETA;各种应用系统就能够如雨后春笋,在ETA的土壤上成长繁荣了,但它既不把持又不争夺和替代应用的具体功用,因此它能够成为应用的恒久支撑。
ETA是应用软件骨架,的确非常重要,但构建软件有两大实体,一个是构建软件的人,一个是构成软件的代码,这两个实体如何治理呢br>
3. 员工及代码的治理原则
圣人曰:不尚贤, 使民不争。不贵难得之货,使民不为盗。不见可欲,使民心不乱。是以圣人之治,虚其心,实其腹,弱其志,强其骨;常使民无知、无欲,使夫智者,不敢为也。为无为,则无不治。
员工治理方面,不要标榜所谓的贤良,这会使员工争名夺利,相互羡慕嫉妒恨,不利于团结;而要建立制度,建立科学合理的考核激励机制。引导员工不要单纯追其物质的愿望,而要有更高的精神追求;追求用户完美感受,用户满意了,和谐应运而生,程序员以此为荣,从而享受工作成果和工作过程。
代码治理方面,使用抽象类和接口(虚其心)隔离实现层的变化,用丰富、完备的(实其腹)基础架构(强其骨)支撑应用体系,设计过程顺其自然,而不要人为做作、主观臆断(弱其志),利用最小知识原则(使民无知),使系统与系统、类与类、对象与对象之间尽可能少地相互了解,不要欲望强烈地去关心其他系统和模块,专心地做好自己的事。让那些自以为聪明绝顶的人,不去写那些炫耀技术、弄巧成拙的东西;剔除诸多的人为的奇思妙想,软件系统就容易治理了。
虚其心 – 使用接口和抽象类。
弱其志 – 就是不要主观臆断,苦思冥想制造怪物和混乱
软件的关键在于需求,如何获得真实的需求是做好软件的前提。
4. 洞悉需求
圣人曰:道冲而用之,或不盈。渊兮似万物之宗。挫其锐,解其纷,和其光,同其尘,湛兮似或存。吾不知谁之子,象帝之先。
搞清楚做什么标是什么软件的根本,洞悉需求获得真实需求至关重要,怎样获得需求呢br> 首先你不要高傲自大,在客观的业务领域面前,沉下心、低下头,认真观察仔细分析,拨开表面的重重迷雾,剔除你头脑中的臆想、杜撰和纷争(挫其锐,解其纷);顺着事务脉络,剖析它的表象,渐渐的你就可以洞察事务的根本了,从而获得对事务本质的抽象了,你需要认真的分析、综合、反复推敲。
事实上,万事万物的本源和规律就客观地摆在那里,在上帝之前就已经存在了,你发现的也只是你感知道的一个侧面。
知道做什么仅是第一步,大型软件的开发是一个企业行为,软件企业需要怎样管理呢br>
5. 企业管理
圣人曰:天地不仁,以万物为刍狗。圣人不仁,以百姓为刍狗。天地之间,其犹橐迭乎而不屈,动而愈出。多言数穷,不如守中。
企业难于管理,软件企业的管理更难,但如果你理解了大仁不仁的道理,你就找到管理之道了。
天地平等地看待万事万物,圣人视众生平等;公平、公正、平等的制度是管理之本,人治越治理越乱,以“不仁”之法方能至仁。
你看广袤的宇宙,宽广而空灵,无私、无欲、无情,而万事万物自生自长,五光十色、气象万千、其乐融融。
企业的制度、规章要稳定适度(守中),多而易变必然导致混乱。
不同企业的核心技术是不同的,应用软件企业的核心是什么企业技术架构!
6. 企业技术架构
圣人曰:谷神不死是谓玄牝。玄牝之门是谓天地根。绵绵若存,用之不勤。
应用软件的关键是要建立基础的、完备的与具体业务无关的企业应用架构ETA(这就是软件的谷神),这是整个应用的母体和根本,而具体的应用可以在此基础上,成长繁荣,但你也不要操之过急,急于求成,要有所克制,尊重客观规律,按客观规律办事,软件项目都有它客观合理的建设周期和生命周期,ETA建设也是一个过程,诞生、成长到成熟。
企业技术架构如此重要,它应该是个什么样子呢具有怎样的特征呢br>
7. ETA的特征
圣人曰:天长地久。天地所以能长且久者,以其不自生,故能长生。是以圣人後其身而身先,外其身而身存。非以其无私邪!故能成其私。
你一定知道天长地久这个成语!
这和软件有关系吗的,有关系,只有你搞懂了天长地久的原因,你才知道如何建立企业技术架构ETA。天地无为,万物丛生,天地不去做万物之事,因此它才长久。
ETA不应身先士卒,代替具体应用做具体的事情。
ETA必须与具体应用良好隔离,才能既不影响具体应用,也不受具体应用之影响,因此能够独立长存。
ETA不能怀有替代具体应用之私欲,才能够实现成就其它应用之本意。
软件与人类其他产品不同,没有磨损和消耗,整体的看它有“无”的特征,按理它应该有很长的寿命,但现在的应用软件却只有几年的生命期,究其主要原因是我们把软件做的太硬,更多的呈现出了“有”的特性,完全面向了具体功能。
天长地久才应是ETA的特征,具体软件寿终正寝也是大自然的规律啊。
ETA不能仅仅是概念和规划,它必须落地为一个实实在在的软件平台,这个平台又该如何呢/span>
8. 平台若水
圣人曰:上善若水。水善利万物而不争,处众人之所恶,故几於道。居善地,心善渊与善仁,言善信,正善治,事善能,动善时。夫唯不争,故无尤。
圣人赞水,因为水的品行近乎于道。
在软件系统中,企业技术架构平台及应用软件的工装设备(如:中间件、数据库等),就类似于水啊,它生于软件之道性,它居于应用之下,支撑、滋养、治理着各种应用,承担着琐碎、卑微、繁杂的“脏活累活”,提供着应用所需的一切基础功能,处理和隔离着外界一切变化。默默耕耘、无私奉献,即不介入具体应用内部,又不与之争功,因此没有过失,也不会制造混乱。
平台仅是工具,只有得道的企业才能建好它、用好它,软件企业应该遵循怎样的企业之道呢/span>
9.企业之道
圣人曰:持而盈之,不如其已;揣而锐之不可长保;金玉满堂莫之能守;富贵而骄,自遗其咎。功遂身退,天之道。
一个软件企业,当它掌握了软件之道,建立了企业技术架构体系,它的生产能力和发展速度会大幅提升;但是危险也会随即到来,要想稳健发展,还必须知晓企业之道。
如果把企业比作一个茶杯,那么企业的理想、追求和价值观就是它的容量,它的产值和利润就是它里面装的水,装的太满不如留有一定空间,自满自傲必招败亡。懂得这个道理,并不是要你止步不前,而是要你扩大茶杯的容量及适当的“放水”——让利于员工、让利于 会。具体地说就是不断提高企业的理想与追求,努力为客户为员工创造价值、努力为 会、为人类多做贡献,多做慈善事业;这就是企业之道。
ETA平台是软件企业的核心,它应该具有怎样的内在和外表呢br>
10. 平台之美
圣人曰:载营魄抱一,能无离乎气致柔,能如婴儿乎除玄览,能无疵乎国治民,能无智乎门开阖,能为雌乎白四达,能无知乎之,畜之。生而不有,为而不恃,长而不宰,是谓玄德。
架构与应用之间能够高度统一、形神合一吗构自身内部能是一致和高度协调的吗br> 能够像婴儿一样,高度柔和可塑吗你要注意一个婴儿他不仅是身体柔软,更重要的是他可以成长,能够成长为各种人才,木匠、画家、软件大师、企业家、哲学家、政治家,圣人,无所不能啊!)
剔除了华而不实的东西,运行稳定、坚固没有任何瑕疵吗br> 支撑应用、治理服务,没使用繁杂、玄巧、华而不实的技术吗br> 为应用预留方便灵活、易于拓展的接口,像一个可以繁殖各种应用的母亲吗br> 掌控各种关键技术,前后、内外融会贯通、四通八达。对各种技术的使用能够做到不关心其内部细节,对这些具体技术的内部变化甚至替换不受影响吗br> 各种应用在平台的基础上诞生并独立运行,但平台却不把应用据为己有,不把持和限制应用的成长和自由,这就是平台的美德和特征啊。
怎样构建企业技术架构,本章给出的方向和指引,如果我们能够依据这样的思想去构建企业技术架构,就可以获得成功,就能够从根本上解决应用软件系统建设中遇到的困难。
根据我们前面描述的ETA平台,它与具体业务无关不实现任何业务功能,它有何用呢br>
11. 无之大用
圣人曰:三十幅共一毂,当其无,有车之用。埏埴以为器,当其无,有器之用。凿户牖以为室,当其无,有室之用。故有之以为利,无之以为用。
车轮的中空使车辆运行更加平稳,瓷器空虚的部分成就了它的功用,房屋有了空间和门窗,才有了房屋的作用,可见一个实体,完全依赖它的无(空虚)来实现其功用。
因此在软件领域,作为支撑应用的企业技术平台,必须留有充足的空间和接口,以容纳各种应用;如果它实现了诸多具体业务,就如同一个装满杂物的杯子,无有大用了。
这里的“无、有”又是另一个层面的抽象概念,无代表着抽象和空白,有代表着具体;例如:接口只是一个抽象的方法,抽象类中的抽象方法只是一个方法的空壳,但它们却至关重要,代表着设计水准,决定着系统结构。
说一句许多程序员不愿意接受的话(但忠言逆耳啊,希望你能有所感悟),方法体的具体编码实现(算法)并不重要,重要的是为什么要有这个方法(方法的职责),它的输入输出是什么;你可能会说,我们程序员不就是写这些代码的吗,如果你说这个不重要,不就等于说我们不重要吗!别急,其实我也是个程序员,我们试想一下,如果一个系统所有的类、方法及方法的输入输出都设计好了(不再需要修改了),只是每个方法还没有具体实现,你是否认为这个系统已经接近完成了呢br> 算法重要乎重要乎是一个很重要的话题!
搞软件的人贬低算法不就是贬低自己吗!算法当然重要,有多少人因为发明一个算法而获得诺贝尔奖,目前还没听说谁开发了一个系统获此殊荣的。
但是,目前大量的基础算法都已经有了相应的算法库支持,我们不需要不停地发明轮子了,另外,高深的算法那是科学家们的职业领域,我们学会运用就好了。
对于一个系统而言,具体算法并不重要,整个系统的构造、架构更加重要。
注重结构设计吧,不要随意的设计类和方法。
搞清楚了平台之大用,软件领域还有一个重要的关系需要理清,那就是表示层与处理层的关系。
12. 表示层与处理层
圣人曰:五色令人目盲,五音令人耳聋,五味令人口爽,驰骋畋猎令人心发狂,难得之货令人行妨。是以圣人,为腹不为目,故去彼取此。
绚丽的界面、美妙的声音和图像,他们的确能够给人带来愉悦,但过度追求,往往本末倒置,哗众取宠;在各种新技术中间游来荡去,会使你心浮气躁、行为失常;标新立异,使人偏离正轨。
软件系统的关键是架构、模型和算法。
表示层为目,处理层为腹,圣人教导我们要为腹不为目。
要把两者分开,处理归处理,展示归展示,这非常重要。
在软件设计过程中一定要把数据加工处理和具体的展示严格分离,许多不良的设计经常将两者纽在一起,不仅增加了复杂度,而且不利于变化,事实上,后台加工处理好的数据,可能会有多种不同的展示要求,例如:有的需要以表格的形式,有的需要以曲线的方式,有的需要显示,有的需要打印,展示层的需求可能五彩缤纷,但处理层却是相对稳定的。因此我们必须重视后端的设计,但后端有可以分为展示层和处理层,对外的服务接口(或API)就是展示层,处理层又可以进一步分为面向功能的服务和面向业务的基础服务,基础服务是更加稳定,稳定的部分是系统的关键和内核。
在具体实现时,往往由于表现层需求的易变性,造成前端表示层开发的难度非常之大,因此必须给予高度重,为了降低表示层开发的困难,我们要遵循“易从难求”的思想,必须建立前端的平台技术,使前端开发简单易行。
看到这里你似乎对软件之道有了些许了解,你或许跃跃欲试了,你真的想成为一名探路者吗br>
13. 探路者
圣人曰:宠辱若惊,贵大患若身。何谓宠辱若惊为下。得之若惊失之若惊是谓宠辱若惊。何谓贵大患若身所以有大患者,为吾有身,及吾无身,吾有何患。故贵以身为天下,若可寄天下。爱以身为天下,若可托天下。
由于软件自身的抽象性,使软件行业的路途更加艰难;对于从事该领域的企业和相关人士,必须有充分的思想准备,在追寻和发展的过程中,会遇到各种困难,有成功、有失败,有宠有辱,只有那些全身心投入并热爱这项事业的人,才能够成功。
工业领域的许多工程化思想值得借鉴,但我们必须注意不要进入误区,必须认识到软件工程与工业领域的不同,就工业的纯生产过程而言,软件就是简单的拷贝即可完成,几乎是零成本和不需要过程管控的,因此工业的生产过程对软件产业来说,参考价值有限。但目前许多理论却在套用这些工业过程的思想和方法,取得的效果有限也是自然的;软件与工业的这个本质区别,必然导致诸多根本性的不同。因此我们在探索软件之路时,必须充分认清软件自身的本性,寻找软件自身发展的科学之路。
探路者在启程之前请了解一下软件的特征吧!
14. 软件的特征
圣人曰:视之不见,名曰夷。听之不闻,名曰希。抟之不得,名曰微。此三者不可致诘,故混而为一。其上不皦,其下不昧,绳绳不可名,复归於无物。是谓无状之状,无物之象,是谓惚恍。迎之不见其首,随之不见其後。执古之道以御今之有。能知古始,是谓道纪。
要想搞好软件,必须了解和掌握它的特征;许多学者总喜欢拿工业领域的管理模式来套用软件之开发过程,总是不得要领。
我惊叹于圣人在数千年前对软件特征的描述:
看,看不见;听,听不到;摸,摸不着。
连绵不断、浑然一体。
往上看,并非清晰可辨,往下看,也不是昏暗一片。
恍恍惚惚,摸不着头,看不见尾;
当你理出了头绪,你就找到掌握它的门道了。
软件过程的不易见性是软件的重要特征,因此要治理好软件过程就要针对这个特征,努力使不易见和不可见的东西尽快可见,这样软件过程就易于治理了,可以说软件治理的关键就在如何于将软件过程中不可见的东西尽快可见,实际上无论是工业产品还是软件系统,其设计过程都是类似的,都是不易见的,但工业体系经过一百多年的积累,形成了一整套方法和标准,它通过图纸、木模等方式尽快将设计可视化,尤其是现代计算机软件的发展,我们为工业设计、模拟试验等开发了功能强大的软件体系,不仅提供设计软件,而且将设计直接转化为效果图,直接驱动模具生产系统制作出1:1的实物模型,通过3D打印机技术甚至可以直接生产出最终的产品,工业的这个体系是非常值得软件工程认真研究和借鉴的。遗憾的是“泥瓦匠住草房”,我们软件业确没有良好的软件设计平台和使软件可以快速呈现的工具,如果我们建立一套软件需求、设计、实现、测试、运维的体系化平台,让我们的软件分析师和设计师能够高效的、标准的进行分析和设计,在设计完成时能够立即将用户界面呈现出来,并能够模拟运行,就可以使分析和设计的成果尽早的可视化,避免需求的误解和设计的谬误,如果设计平台能够将设计成果直接生产目标系统的框架,就可以保证实施过程不会产生系统结构性错误,不仅可以提高实施的效率,更关键的是实施过程的差错限定在局部细节之中。因此建立软件需求、设计表达的基础模型,建立贯彻软件全过程的平台体现,才是解决软件生产的正确道路,才能够摆脱手工作坊式的软件生产方式。正如工业领域有多种设计平台一样,软件领域同样会因为软件类型、领域的不同需要不同的软件过程平台。
平台仅是解决软件过程中的生产和表示环节,有了平台之后只是改进了生产方式,但是做什么、怎么做还是需要人来完成,这时需求和设计更加凸显出来,如何作出更好的软件,需要杰出的软件大师,什么样的人能够成为软件大师呢,老子向我们揭示了他们的一些特征。
15. 软件大师的特征
圣人曰:古之善为士者,微妙玄通,深不可识。夫唯不可识,故强为之容。豫兮若冬涉川;犹兮若畏四邻;俨兮其若容;涣兮若冰之将释;敦兮其若朴;旷兮其若谷;混兮其若浊。孰能浊以静之徐清。孰能安以动之徐生。保此道者不欲盈。夫唯不盈故能蔽而新成。
有了平台,有了软件大师,剩下的就看我们要做什么了!
16. 再谈需求
圣人曰:致虚极,守静笃。万物并作,吾以观复。夫物芸芸,各复归其根。归根曰静,是谓复命;复命曰常,知常曰明。不知常,妄作凶。知常容,容乃公,公乃全,全乃天,天乃道,道乃久,没身不殆。
软件是以需求为基础的,因此做好需求分析是非常关键的,如何把握事物的本质,做好需求分析呢人的思想能够给我们深刻的启迪。
首先让我们得心虚空下来,消除心智的作用,排除一切杂念,沉心静气地研究业务、研究客户。
反复观察该领域内各种事物及其相互作用和发展变化,它们虽然复杂多变,但最终都会反映其本身的基本特征(归根)。
事物的特征往往表现为静态特征和动态特征,其中静态特征属于事物的根本,反应事物的永恒规律,掌握了它就把握了事物的本质;不能认识和掌握事物的本质的、稳定的自然规律,而轻举妄动,就容易出乱子,容易为表象迷惑。相反,掌握事物的本质属性,就可以容纳和控制它的变化,能够掌控变化就具有灵活性和通用性了,具备了通用性,就能贯穿整个业务领域,从而遵循业务之道了,分清变与不变,让不变的稳定下来,形成系统的骨架,让变的更易于变换,是系统具备柔性和可塑性,这样你设计的系统就能够长久,使你的软件系统终生不会有危险了。
现代软件企业需要体系化的企业级开发平台,需要配套的管理系统,需要训练有素的技术队伍,三者之间的关系和形态决定软件企业的层次。
17. 软件企业的层次
圣人曰:太上,下知有之。其次,亲而誉之。其次,畏之。其次,侮之。信不足焉,有不信焉。悠兮其贵言,功成事遂,百姓皆谓:我自然。
成熟的软件企业,都应有自身的开发平台和管理体系,但不同企业之间确存在巨大的差异。
最好的企业,由于员工们已经与平台及管理体系做到了水乳交融,他们非常自然地使用这统一的平台,管理体系如影随形地支撑和呵护着他们,就如鱼在水中,仅知其有,不知其他,一切都和谐而自然。
次一级的企业,员工非常喜欢他们的平台,赞赏他们管理体系,但不理解其精髓,不能够融会贯通。
再次一级的企业,员工畏惧使用他们那蹩脚的平台,恐惧那混乱的管理体系。
更次的企业,员工诅咒他们的平台和管理体系,因为他们那不成体系的平台经常给他们带来无穷的混乱,那些朝令夕改的规章制度,让他们无所适从。
由于企业没有诚信,所以员工和客户自然就不信任它。
最好的企业从容、泰然地应对各种挑战,因为它对自己的言行认真负责,注重建立激励员工的体系建设,员工在这个良好的平台支持下不断的取得成功,他们不知不觉,认为这是自己自然而然做到的。
好的软件企业建立了各种各样的软件过程标准和规范,这是非常好的,但同时要意识到,比标准和规范更重要的是软件之道,是以开闭原则为基础的软件体系架构,正如松下公司的一句名言:任何标准都应该允许以非标准的形式执行。看看标准之上更重要的是什么吧。
18. 标准之上
圣人曰:大道废,有仁义;慧智出,有大伪;六亲不和,有孝慈;国家昏乱,有忠臣。
标准能够帮助我们做出中规中矩的系统,但做不出来杰出的系统,知道了比标准更重要东西,你就有希望达到软件的更高境界了。
19. 更高境界
圣人曰:绝圣弃智,民利百倍;绝仁弃义,民复孝慈;绝巧弃利,盗贼无有;此三者,以为文不足。故令有所属,见素抱朴少私寡欲,绝学无忧。
最顶级的分析师是摒弃智巧的,他们能准确地把握需求的本质,从而使开发团队受益匪浅;大师一句话能省几十个人月啊。
最顶级的设计师是摒弃规范束缚的,规范已经融入了他们的骨髓,同时那些条条框框已经消失,能够对事物进行更本质的抽象,从而能使设计更加科学合理,使开发团队恢复天性,使系统更具人性(系统具备人性不仅包含注重使用者感受、令使用者舒服,还包含更重要的一层意思,就是使系统具备人工系统一样的灵活性、可塑型,能够所需而变)。
最顶级的工程师是摒弃个人私利的,他们都努力按设计要求做好本职工作,从不弄虚作假、斤斤计较。
但仅有如上三类大师还不充分,文档方面的工作还必须加强,以使软件过程和软件自身更加完备。
在分析和设计的过程中,应该努力保持淳朴自然,合情合理,消灭私心(只做该做的要事)和欲望(不做不该做的事)。
设计的最高境界就是无忧!何为无忧是你设计的系统不用担心需求的变化、环境的变化、接口的变化、数据的变化……,总之,你的系统能够在未来的生命周期内,无忧无虑、从容地应对一切变化,伴随和推动业务共同发展。
仅通晓了这些还不行,企业还必须有高尚的价值观,才能够引领员工志同道合,建设优秀的软件系统。
20. 企业价值观
圣人曰:唯之与阿,相去几何之与恶,相去若何之所畏,不可不畏。荒兮!其未央哉!众人熙熙,如享太牢、如春登台。我独泊兮,其未兆,如婴儿之未孩;傫傫兮!若无所归。众人皆有馀,而我独若遗。我愚人之心也哉!沌沌兮!俗人昭昭,我独昏昏;俗人察察,我独闷闷。澹兮!其若海。飂兮!若无止。众人皆有以,而我独顽且鄙。我独异于人,而贵食母。
本章老子阐述圣凡之间的区别,我把它引申为一个优秀企业应具备的价值观。
对员工和客户尊重、爱护与冷漠、呵斥是多大的差距啊!
努力诚信经营与弄虚作假,又是多么的不同啊!
因此企业必须以客户为本、以员工为贵,诚信经营,造福 会。
人们畏惧的是无名无利,而正是这些名利荒芜了人类的心灵,而且对名利的追逐好像从古到今没有尽头的样子。
大家在追逐名利的路上,高高兴兴,如赴盛宴、如登高揽胜;而伟大的企业在名利面前淡泊恬静,无动于衷,就如质朴的孩童,勤奋忙碌,却似乎没有明确的追求(事实上却是志存高远)。
众多企业似乎都欢庆有余,而它却好像若有所失,像是愚钝未化不解世俗;众多企业对利益都十分精明,而它却似乎糊里糊涂;众多企业对于名利斤斤计较、精打细算,而它却似乎心不在焉,内心淡薄、深沉得像大海一样,心怀高远,为崇高的企业目标不断努力;众多企业似乎都有所图谋,而它却似乎顽冥不化、节俭有加。
它与众多企业不同,但却注重企业道德,努力为人类造福。
谈了这么多,还是很空泛,企业应用软件到底应该是个什么样子呢/span>
21. 企业技术架构的形态
圣人曰:孔德之容惟道是从。道之为物惟恍惟惚。惚兮恍兮其中有象。恍兮惚兮其中有物。窈兮冥兮其中有精。其精甚真。其中有信。自古及今,其名不去以阅众甫。吾何以知众甫之状哉!以此。
科学的企业技术架构ETA是遵循软件之道建立起来的,不同软件的表现形式虽然是多种多样、千姿百态的,但优秀的软件都有共性的框架(象)和构造(物),其深层包含着最精密的组件,而构成这些精密组件的就是那最基础的元数据(信息)和基础逻辑,通过元数据这基本软件元素,才能把握住软件的根本,这数据才是最基础和真实的,透过它就可以掌握软件的本源了,我对软件之道的了解就是靠这个。
你理解这段话的深刻内涵了吗解了。祝贺你!你已具备了大师风范!
22.大师风范
圣人曰:曲则全,枉则直,洼则盈,敝则新少则得,多则惑。是以圣人抱一为天下式。不自见故明;不自是故彰;不自伐故有功;不自矜故长;夫唯不争,故天下莫能与之争。古之所谓∶曲则全者」岂虚言哉!诚,全而归之。
在第15节中我们描述了软件大师的特征,本节再向你展示大师的风采,卓越的软件系统设计是离不开软件大师的。
软件大师在需求分析及设计过程中:
为坚持正确的方向,他们不畏曲折、周旋,甘愿承受各种委屈,为的是保全系统的优雅、和谐与设计之美;
甘愿承受各种误解,为的是纠正错误的观点,伸张系统的科学性与合理性;
甘愿承在背后无私奉献,为的是整个团队取得圆满;
他们不断推陈出新、与时俱进改革创新;
个人所求很少,团队却获益匪浅;
经常多思多虑,团队却少了许多困惑;
他们能够遵循一致的思想体系,按照软件的自然规律确定正确方案和设计模式;
他们不固执己见,所以对事物看得更加透彻清晰;不自以为是,所以彰明昭著。不自我夸耀,所以获得成功;不自高自大,所以为长期地保持虚心学习的姿态,掌握最新的思想与技术;
他们从不争名夺利,所以在团队中没有敌人,能够得到广泛的支持;
他们能够在设计的关键部位坚持按自然规律办事,在非关键部位又懂得谦让、折中,古人所说的“委曲求全”就是这个意思;
诚,使设计归于完美啊!所谓诚就是真实无欺、守信无妄、言行一致、表里如一、以诚待人。
23. 企业行为准则
圣人曰:希言自然。故飘风不终朝,骤雨不终日。孰为此者地。天地尚不能久,而况於人乎从事於道者,同於道。德者同於德。失者同於失。同
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!