文檔驅動式超敏捷開發

 

 

  敏捷開發你們都不陌生,他對文檔的態度是偏向於反對,可是也不是說一點文檔都沒有。他的說法是 代替文檔。程序員

 

  那麼敏捷開發爲何會這麼認爲呢?其實你們在作項目開發的時候都會有這樣的體會:web

 

  •   時間緊任務重,哪有時間寫文檔呀?代碼都寫不過來。
  •   辛辛苦苦把文檔寫好了,可是可是項目才進行一小半好很差,需求怎麼就變了呀!需求變了,代碼都改不過來,那還有時間去修改文檔呀?因而乎一開始寫好的文檔就變成了一個個的坑。默默的坑着後來的人。

 

  因而就有了這樣的現象:數據庫

  •   當接手一個遺留項目的時候最但願的就是有文檔,可是沒有文檔——鬱悶;
  •   啥?!找到文檔了,太好了……可是當看完了文檔再去看代碼的時候就會——更鬱悶。

         (各位前輩呀,爲後來人着想着想呀!)後端

  •   等本身徹底接手項目,流程都弄明白了以後呢?忙改代碼作新功能,至於文檔?哪有時間去想文檔呀。

 

  因而乎文檔就成了一個包袱一個累贅,有還不如沒有。api

 

  爲啥會這樣呢?由於文檔和代碼沒有直接關係,沒有「聯動」關係!服務器

 

  那麼啥是聯動關係呢?咱們舉個例子,PowerDeszner作數據庫設置的時候,咱們不只能夠用這個工具作數據庫文檔,並且設計好了以後,還能夠直接建立數據庫。當文檔有變化的時候,也能夠自動修改數據庫。還能夠反向工程,就是指定一個數據庫,而後根據數據庫裏的表和自動,自動生成文檔。這就是聯動。mvc

  若是您對powerdes不熟悉的話,我在舉一個CodeFirst的例子。CodeFirst就是先寫代碼設計類,而後用vs裏面的來自動建立數據庫,類結構發生變化了,能夠自動的去修改數據庫的表結構。這樣就能夠達到代碼和數據庫的一致性,並且有變化只須要修改一個地方(代碼)就能夠了,另外一個地方能夠自動變動。asp.net

  這就是我所說的「聯動」。若是全部的文檔均可以和代碼進行這樣的聯動,需求有變化了,先去修改文檔,而後代碼會自動隨之變動,那麼文檔就不會成爲負擔了!less

  這就是我所說的「文檔式驅動」!編輯器

  固然在實際中,並非全部的功能都是先文檔在代碼。而是根據具體的狀況來靈活控制的。

  這裏在舉一個WebAPI的例子。咱們打開VS201*,新建一個webapi的默認項目,咱們會發現有一個help的目錄。進去一看,哇,api的使用文檔!有接口名稱、參數名稱和他們的註解,還有調用實例。這還不是最神奇的,更神奇的是,當代碼修改了以後,help裏面的內容也會隨之更新。這樣寫接口不再用擔憂更新文檔的問題了。

  這是有代碼「生成」文檔。這個僅僅是對程序員來講的,寫代碼用的文檔。除此以外還有給客戶看的文檔,等等。若是這些均可以「聯動」起來,作到有需求的時候,只須要改動一個地方,其餘的地方都會隨之更新。這是否是很爽!

 

  可能有人說,我這是癡人說夢,該醒醒了,別浪費你們寶貴的時間。這個固然不是無稽之談,今天也不是愚人節。下面仍是用例子說話。

  公司之前用asp.net mvc作項目。後來發現開發速度跟不上,因而找了一個國外的無後端的東東 ,叫作backendless。他的思路就是,凡是服務器作的事情(UI除外),均可以不用寫代碼了,都由他來包辦。Backendless提供了一個平臺,在這個平臺上面配置各類服務,配置完了前臺就能夠直接調用。這個前臺包括:web、手機web、安卓、蘋果、flash(Flex)、等,而且能夠生成對應的調用代碼。咱們寫點前臺代碼就OK了。

  每個環節都有人在作「聯動」的事情。只是從整個項目的角度來看,把各個環節用一條線,從始至終的串聯起來,讓各個環節能夠「聯動」。目前尚未發現作這種事情的人(本身除外)。

  這麼作的難度很大,推廣也很難。其實大多數的狀況都是隻作一塊,好比選擇日期的my97,分頁的Aspnetpager,在線編輯器,各類ORM,各類UI,單點登陸,用戶中心等。他們都只作一塊,其餘的無論。這樣纔可以讓你們靈活的選擇和使用。

  再舉一個蓋大樓的例子。要蓋樓首先要一個圖紙,而後請建築公司來按照圖紙把大樓蓋出來。蓋樓以前圖紙能夠修改,蓋樓的時候會按照最後修改後的圖紙來施工。可是樓蓋好了,再去改動圖紙,大樓就不會受到影響了。大樓改好以後,圖紙和樓失去了聯動,圖紙不會去影響大樓了,由於樓已經蓋好了。

 

  再來看看導航軟件,咱們輸入出發地和目的地,而後導航就會規劃一條路線出來,咱們按照這個路線開車,開着開着發現前方路口堵車,怎麼辦?從新規劃路線繞過堵車點。而後咱們按照從新規劃好的路線繼續行駛。路線實時指導咱們的行車方向,路線變了,咱們的車就跟着變。這樣就是實時聯動。

 

  說了這麼多,你們可能都蒙登了,我到底要說啥?仍是來張圖吧。

 

 

 

 

  總之呢,就是不能讓文檔孤單單的存在,要讓文檔和代碼和頁面互動起來。需求有變化了,首先想到的是改文檔,而後對應的地方會隨之自動更新,不須要修改代碼!

 

  最後說一下啥是「超敏捷」,前面說了敏捷開發,那麼超敏捷開發呢,顧名思義說的就是開發速度會更快。

 

 

ps:很久沒有寫博客了。沉寂了一段時間,好好的思考了一陣子,如今是新的開始,從新打造!後續會更精彩。

相關文章
相關標籤/搜索