青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當自強而不息

【ZT】面向對象軟件開發和過程(1): 代碼是核心


關于作者

 林星,辰訊軟件工作室項目管理組資深項目經理,有多年項目實施經驗。辰訊軟件工作室致力于先進軟件思想、軟件技術的應用,主要的研究方向在于軟件過程思想、Linux集群技術、OO技術和軟件工廠模式。

在一個有效的組織中,必定擁有杰出的一線人才。軟件設計也是一樣的,一線人才的素質決定了軟件的質量。從敏捷的觀點來看,代碼是檢驗軟件過程是否有效的最終標準。目前為止,以及在短時間的未來,我們都不太可能完全脫離代碼進行軟件設計。所以,軟件過程中的任何一個活動都是為了能夠產出優秀的代碼。所以,代碼才是核心。

1. 代碼是軟件開發的基礎

  編碼是軟件開發過程中最基本、最底層的技藝,然而也是最重要的技藝。任何一個領域的專家都需要花費大量的時間來進行基本技藝的鍛煉,木匠需要花費大量的時間來鍛煉他們對各種工具的掌握,廚師則需要練習刀工和火候。程序員也是一樣的,對我們來說,語言的各種特性必須要了然于胸。而對軟件的管理也需要從代碼做起。

  從2000年到現在,國內興起了一股軟件工程熱,需求管理、配置管理、甚至CMM。面對紛至沓來的各種方法學、UML、OOA,大家似乎已經熱衷于這些概念本身了,卻往往忽略了軟件開發中最基本的元素-代碼。在和很多軟件組織的接觸過程中,我們認為大多數組織急切需要的并不是這些工程理論,不是說這些理論不重要,而是這些組織的癥結不在于此。很多的組織連代碼的質量都管理不好,又何談其它呢?代碼管理是基礎的基礎,從管理的角度上來看,任何一個組織的管理都需要一個從上至下的管理過程,有基層的管理人員,也有高層的管理人員。對代碼的管理就是軟件開發中的基層管理,它起到的作用就是能夠把需求、設計的思路貫徹到最終的代碼中。

  "管理無大事"。對軟件的管理也是一樣,大部分的問題都是由于很小的原因引起的。例如,一個產品如果后期在debug上花費了大量的時間,那么,這種現象是由于什么原因引起的?一種可能的原因是前期的代碼設計中對代碼質量的把握不嚴。每一次代碼功能的演化并不會產生太多的問題,但是當代碼累積越來越多的時候,問題也就慢慢出現了。那么如何解決呢?可以加強QA的力量,也可以引入復審,還可以引入單元測試。總之,要有一種方法對代碼進行控制。

  軟件的開發過程就象是一部精密的機器,任何一個環節的變化,都會對其它的環節產生影響。把軟件過程按照瀑布的形式進行劃分是一種分解的處理思路,但同時我們還應該看到不同活動之間的相互影響。軟件開發中的生命周期模型也是一個層次模型,從業務建模一直到軟件實現,需要跨越數個層次,同樣會出現執行不力的情況,例如,代碼設計偏離需求、偏離設計的情況比比皆是。

  如何避免這種情況呢?這就需要我們從源代碼的角度,反思其上游的實踐活動,是否足以約束代碼設計?就拿XP來說,他解決這個問題的方式是盡快的進入代碼開發階段,從代碼開發中發現問題,并在下一輪的開發中解決。這種思路是正確的,但XP畢竟是方法論,他不會告訴你過于細節的東西,盡管XP已經提供了大量面向代碼的實踐。因為方法論的抽象級別比較高,使得他必須舍棄部分的細節。而這篇文章告訴你的,就是這些細節。就像我們在下一節中討論的例子,需要在代碼中加入對異常的處理,那么,異常的源頭在哪里呢?是需求,在需求中,我們發現了一些業務的非正常的處理序列,發現了一些業務實體的限制性的要求,所以在代碼實現中,就需要有相應的異常處理。在例如,一個優秀的異常處理,還需要讓客戶端程序員了解可能發生的異常,以保證不同代碼間正確的集成。

2. 面向對象的代碼

  面向對象的代碼已經在現在的軟件開發中占據了主流的位置,面向對象的思路也有其優勢所在,就像后文所討論的,面向對象代碼有著非面向對象代碼的很多優勢,而軟件業中很多新的思潮的產生,也都是基于面向對象語言的,所以我們關注的代碼將是面向對象代碼。

  面向對象的思想來自于抽象數據類型。對于面向對象來說,它最重要的改進就是把世間萬物都描述為對象,而類則描述了同一種對象的特征,而不是像傳統的開發方法那樣,按照機器指令的執行順序來進行設計。當然,面向對象代碼最終仍然是要按照時序來執行的,但是從程序員的角度看來,面向對象代碼更側重于對象之間的交互,多個對象各司其職,相互協作以完成目標。而面向對象技術的發展,也是朝著更加貼近我們世界觀的方向發展。從這點來看,有人說完全沒有程序設計經驗的人學習面向對象可能會更加的容易,因為他不需要從原先的時序程序的桎梏中擺脫出來,但這未必是事實。面向對象決不是一種簡單的程序設計思路。這是我們的觀點,也會在下文中反復的論證。

  和所有的職業一樣,程序員,或者是面向對象程序員,始終堅持的一點就是嚴謹。你會看到各種各樣優秀的代碼,但那決不是一次能夠寫成的,要不斷的嘗試,不斷的改進。為什么重構和測試優先是敏捷方法中很重要的一項實踐?因為程序員不是神,他們需要慢慢改進他們的代碼。雖然羅馬不是一天能夠建成的,但是在編寫面向對象代碼的過程中,有一些實踐是需要堅持的,它體現了我們所說的嚴謹。

3. 編寫并管理面向對象的代碼

  編寫優秀的面向對象代碼并不是一件容易的事情,優秀的OO代碼如行云流水,糟糕的OO代碼讓人覺得渾身起雞皮疙瘩。編寫優秀的OO代碼要求程序員有一定的自我修養,能夠以抽象的思路看待問題,找到問題的核心并對問題域進行分解。它強調的是一種解題的思路,但這個解不是唯一的。

  典型的例子是設計模式,設計模式確實給了我們以很大的啟發,通過它,我們能夠了解到優秀的代碼是如何用于解決實際問題的。但是是不是你必須在軟件中照搬設計模式呢?如果你這么做,那么你對設計模式的理解仍然不夠。我曾和在建筑行業的朋友聊起Christopher Alexander的建筑的永恒之道。他很興奮的告訴我,那確實是一本很好的書,能夠引發人很深的思考,但是現在也有另外的一種觀點,認為美仍然是無形的,應該發自建筑師的內心。對這句話我思考了很久,其實建筑是給人使用的,因此最重要的是它能都給人帶來的價值,隱含在其中的那種活生生的氣質,這是建筑師文化底蘊的外在表露。所以,Christopher Alexander在那本書中的目的,也是為了找到一種總結自己觀點的方法,來總結自己對人文的認識。至于現在大家對他的思路提出了質疑,那也是一件好事,這說明大家對建筑之道的認識到了新的高度。建筑是這樣,軟件中的模式也是一樣的,我也曾熱衷于研究模式的使用,直到某一天我猛然驚醒,與其沉迷于模式的表面形式,為什么不去研究隱藏在它背后的文化底蘊呢?武俠小說中常說無招勝有招,模式的應用也應當到達這個境界,你如果可以在不經意間應用模式的思想,那又何必拘泥于模式的形式呢?

  編寫優秀OO代碼雖難,但還有更難的事情,就是讓整個開發團隊都產出優秀的OO代碼。我們剛才說了,OO對問題的解不是唯一的,但各個不同的優秀解匯集到一起,可能就是一個糟糕的解,這是風格和架構的問題。你如何在團隊中制定制度,營造氛圍,讓優秀OO代碼成為團隊最終的成果?這些問題,在我看來,要比CMM難得多,這個問題并不是靠花錢就能夠解決的。如果能夠解決這個問題,這個團隊的創造力一定是驚人的。

4. 面向對象軟件開發過程

  普通的軟件開發過程和面向對象開發過程有著很大的不同。回想我們在非面向對象中開發過程中,最經常采用的任務分配方法就是以軟件模塊為單位,這樣的好處是分配簡單,不同任務之間耦合程度低,容易操作。壞處是幾乎無法做到重用,也缺乏整體性的設計。而面向對象軟件開發則不同,它是以類、類集合作為基本單位的。類之間關系錯綜復雜(雖然我們提倡低耦合的設計,但類之間的關系仍然是相對復雜的)。這種情況下程序員之間相互協作的要求就非常之高,這種關系如果處理恰當,則能夠完全體現出面向對象的威力,否則,那將會是一場大災難,面向對象的軟件開發過程要養成一些好的習慣:

4. 1 盡量簡化和穩定客戶端。

  個人編程可以是一種享受,但團隊開發始終是一項嚴謹的職業活動,因此多考慮別人,不要設計復雜的接口,雖然你省事了,但這會給理解和使用你的接口和人造成障礙。

4.2 準備一份簡潔的文檔,并保持更新。

  隨便一種形式的穩定,可以是代碼,可以是UML圖,也可以是純粹的文字(估計沒幾個程序員喜歡這種形式)。只要它能夠傳達你的代碼的目的,那就足夠。記住,更新代碼后,同時更新你的文檔。過期的文檔不僅是廢紙這么簡單,它會給其它人造成麻煩。切記!

4. 3 盡可能多的考慮異常和錯誤的情況。

  寫出一個功能并沒有什么,但是要把這個功能寫的非常的完善那就很難了,因為你需要考慮各種各樣的情況,正常的、非正常的。所以,寫完一個類的定義應該是,完成編碼和穩定,并通過原定的測試。

5. 基于面向對象代碼的分析框架

  在一個開發過程中,往往有著多種復雜的因素:過程、技能、工具、規范、組織、個性。所有的這些,都會對最終的代碼產生影響,對代碼的成本和質量產生影響。軟件最有價值的部分是代碼,根據敏捷方法和精益編程的思路,除了代碼之外的產出物,都不具有價值,或者說對最終用戶沒有價值。但它們都需要成本的投入,而我們應該考慮如何節省這些成本。

  要考慮如何節約成本,關鍵的因素就是需要分析兩點:

  首先,哪些活動對代碼的成本和質量有正面的幫助。如果一個活動對代碼沒有幫助,那么它就沒有存在的意義。有一些軟件組織實施了UML,但是開發人員畫好了UML圖之后,就把它仍在一邊,仍然按照老的方式開發。這種的活動就沒有任何意義,只是徒增成本。我們稱之為有效原則。

  其次,如果活動對代碼的成本和質量有正面的幫助,那么,這種幫助的價值足夠大嗎?是否存在其他的活動,其價值能夠超出現有的活動呢?軟件需求規約(SRS)對代碼產生當然有幫助,因為它對軟件要干什么進行了定義。問題是,SRS往往需要很大的功夫去制作、維護。有沒有成本更低、效果更好的方法來替代它呢?用例技術是一種考慮方向,CRC卡片也是一種敏捷的處理思路。我們稱之為更優原則。

  有了這兩個概念,我們在后文中的分析將會以此為中心展開,討論代碼和過程、技能、工具、規范、組織、個性之間的關系。我們把它們之間的關系稱為基于代碼的分析框架。在下一篇中,我們選擇一個實際的案例進行演練,然后我們從四個方面 -- 重用、優化代碼組織、針對契約設計、業務建模 -- 來深入的分析該框架中的一些共通的特性。我們再次重申:軟件開發過程是一個復雜的生態環境,我們沒有辦法對其進行機械的劃分,我們能夠做的就是把握平衡-成本和質量的平衡。

posted on 2007-08-30 23:16 lovedday 閱讀(417) 評論(0)  編輯 收藏 引用 所屬分類: ▲ Software Program

公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            91久久黄色| 免费亚洲婷婷| 国产综合在线看| 欧美一级久久| 美女诱惑一区| 久久精品在线免费观看| 欧美劲爆第一页| 免费成人av| 欧美日韩系列| 在线观看一区二区精品视频| 亚洲国产综合91精品麻豆| 韩国v欧美v日本v亚洲v| 欧美一区二区高清| 亚洲男人的天堂在线| 欧美午夜宅男影院在线观看| 亚洲欧洲日产国产网站| 亚洲全部视频| 久久久久国产一区二区| 免费观看成人网| 亚洲美女av在线播放| 欧美日韩你懂的| 国产精品一区久久久久| 久久精品视频在线观看| 亚洲国产一区二区在线| 亚洲精品日韩一| 欧美va亚洲va日韩∨a综合色| 狠狠色狠狠色综合日日91app| 红桃视频亚洲| 久久精品在这里| 亚洲天堂偷拍| 亚洲精品乱码| 久久久国产精品亚洲一区| 欧美人与禽猛交乱配| 欧美日韩福利| 国产精品成人在线观看| 欧美日韩精品免费| 伊人久久大香线蕉综合热线| 欧美日韩视频| 亚洲精品中文在线| 国产精品日韩欧美大师| 国产精品久久久久aaaa樱花| 亚洲美女在线视频| 欧美大胆a视频| 亚洲精品小视频在线观看| 狂野欧美激情性xxxx| 老司机一区二区三区| 黄色影院成人| 一区二区三区高清不卡| 亚洲综合二区| 午夜欧美大片免费观看| 美女免费视频一区| 亚洲一区二区三区欧美| 欧美在线免费观看| 欧美精品 日韩| 99re热精品| 卡一卡二国产精品| 亚洲国产高清在线| 亚洲一区二区伦理| 国内精品久久久久影院优| 免费在线观看精品| 欧美日韩不卡在线| 欧美一区二区三区四区视频 | 久久激情五月婷婷| 欧美国产91| 国产精品少妇自拍| 亚洲三级性片| 韩国一区二区三区美女美女秀| 欧美顶级艳妇交换群宴| 国产精品久久久久久户外露出| 欧美成人激情视频免费观看| 欧美日韩性视频在线| 欧美搞黄网站| 亚洲欧洲一级| 亚洲国内自拍| 欧美在线播放视频| 欧美精品导航| 免费在线亚洲欧美| 国产日韩欧美制服另类| 午夜精彩国产免费不卡不顿大片| 久久久999精品| 久久久一本精品99久久精品66| 午夜一区二区三视频在线观看| 国产精品啊啊啊| 9i看片成人免费高清| 欧美freesex交免费视频| 国产女优一区| 久久久久综合网| 一区精品在线播放| 久久野战av| 午夜精品福利电影| 国产精品资源在线观看| 久久er精品视频| 欧美成人一区在线| 99国内精品| 国产毛片精品视频| 久久精品欧美日韩| 91久久极品少妇xxxxⅹ软件| 999在线观看精品免费不卡网站| 欧美日韩免费观看一区二区三区 | 亚洲国产精品综合| 欧美成人国产va精品日本一级| 亚洲天堂第二页| 久久精品99国产精品| 中文成人激情娱乐网| 国产精品资源| 欧美日韩视频在线一区二区| 性色av一区二区三区在线观看| 国产日本欧美视频| 欧美承认网站| 久久久精品五月天| 亚洲在线不卡| 亚洲人成亚洲人成在线观看| 久久成人这里只有精品| 欧美日韩欧美一区二区| 午夜欧美大片免费观看| 亚洲高清资源综合久久精品| 久久精品国产成人| 亚洲一区区二区| 一区二区免费在线观看| 亚洲国产婷婷香蕉久久久久久| 国产日本亚洲高清| 国产精品久久久99| 国产精品久久久久天堂| 亚洲欧美日韩精品久久亚洲区 | 久久精品最新地址| 亚洲欧美乱综合| 欧美二区在线播放| 老司机一区二区| 免费h精品视频在线播放| 久久精品系列| 欧美成人免费大片| 日韩性生活视频| 欧美第一黄网免费网站| 免费成人在线观看视频| 亚洲高清资源| 欧美在线观看网址综合| 久久综合九色| 新片速递亚洲合集欧美合集| 久久riav二区三区| 亚洲国产精品精华液2区45| 最新日韩av| 久久久久久亚洲综合影院红桃| 日韩天堂在线观看| 午夜精品99久久免费| 欧美大片一区二区| 国产精品视屏| 亚洲免费播放| 国产免费成人av| 亚洲婷婷在线| 亚洲精品久久久久中文字幕欢迎你| 亚洲欧美日韩国产一区二区| 欧美成年人视频| 国产欧美精品在线观看| 日韩午夜电影av| 欧美福利电影在线观看| 久久精品系列| 久久综合狠狠综合久久激情| 国产日韩精品视频一区二区三区 | 在线视频中文亚洲| 国产欧美精品国产国产专区| 亚洲精品一区久久久久久| 久久只精品国产| 欧美专区日韩专区| 国产在线精品二区| 久久久久久久网站| 欧美在线观看视频| 激情婷婷久久| 亚洲成人在线网| 亚洲精选国产| 欧美午夜寂寞影院| 亚洲在线观看免费| 午夜精品视频在线观看| 国语精品中文字幕| 欧美国产一区在线| 日韩五码在线| 国产精自产拍久久久久久| 亚洲精品色图| 久久野战av| 欧美日韩成人综合| 久久精品成人一区二区三区蜜臀| 欧美在线二区| 在线视频精品| 久久精品一本| 欧美亚洲视频一区二区| 另类图片国产| 久久成人国产精品| 欧美激情综合五月色丁香小说| 亚洲香蕉伊综合在人在线视看| 另类人畜视频在线| 久久国产精品第一页| 欧美高清在线| 99国产精品自拍| 久久蜜桃精品| 久久久久久国产精品mv| 欧美精品在线网站| 亚洲第一天堂无码专区| 激情久久综合| 久久国产精品72免费观看| 欧美专区在线| 国产精品制服诱惑|