關(guān)于文檔

理想中的文檔

在瀑布式開發(fā)方式下疼阔,我們會接觸如下幾類文檔:

名稱 內(nèi)容 目的 編寫人員
需求說明 需求背景惨撇、目的况毅、描述导犹、指標 描述客戶需求 需求分析人員
概要設計(系統(tǒng)設計) 為實現(xiàn)需求而分解的軟件模塊以及之間的交互、接口絮吵、流程 將客戶需求初步分解為軟件需求 軟件架構(gòu)師
詳細設計 對概要設計進行細節(jié)補充弧烤,如類圖,異常流程 指導進一步編碼 開發(fā)工程師
測試用例 按條目整理的測試場景和用例 指導測試執(zhí)行 測試工程師

需求蹬敲、測試暇昂、開發(fā)在各自的環(huán)節(jié)輸出不同的文檔,如果文檔能將期望描述的內(nèi)容準確無誤的表述清楚伴嗡,看起來也是一個能自圓其說的流程急波。

現(xiàn)實中的文檔

理想雖然豐滿,現(xiàn)實卻往往骨感瘪校。在實際的軟件開發(fā)活動中澄暮,理想中的文檔面臨著下面這些挑戰(zhàn):

  • 軟件開發(fā)活動高度抽象名段,客戶需求往往又隱藏很多細節(jié),用文字的形式描述清楚的的難度很大
  • 寫文檔的人表達能力有限泣懊,軟件開發(fā)行業(yè)絕大多數(shù)都是理工男(連理工女都很少)伸辟,寫文檔本就是弱項
  • 讀文檔的人對自己的理解能力總是莫名自信,即使文檔沒有說清楚馍刮,開發(fā)人員總是傾向于按照自己的理解去做
  • 當需求或設計變更時信夫,文檔的更新往往不及時甚至是不更新
  • 文檔分散在多人的電腦中,即使作者自己及時更新了文檔卡啰,也很難做到讓所有人同步更新

文檔所帶來的溝通成本

編寫文檔的本意是為了在開發(fā)環(huán)節(jié)的各個階段和角色之間傳遞信息静稻,降低溝通的成本,而現(xiàn)實中文檔到底有沒有降低溝通成本呢匈辱?比如說下面這個場景振湾,看著是不是覺得很眼熟:

  1. 測試人員發(fā)現(xiàn)了一個問題,于是提交一個bug
  2. 開發(fā)人員認為需求就是這么寫的亡脸,不是bug押搪,兩邊一通PK沒有結(jié)果,找需求人員確認
  3. 需求分析人員之前沒考慮到這個細節(jié)梗掰,于是重新定義了這個細節(jié)的處理方式嵌言,在他看來只需要稍作修改就可以了
  4. 開發(fā)人員分析當前的架構(gòu)hold不住,于是只好重新推翻之前的代碼再來一次
  5. 代碼修改完畢及穗,但設計文檔忘記更新摧茴,代碼和文檔不同步

有豐富經(jīng)驗且善于總結(jié)經(jīng)驗的開發(fā)人員都知道 “細節(jié)是魔鬼” ,在我們依賴文檔而不是更加 直接實時 的方式進行溝通時埂陆,很有可能在溝通的環(huán)節(jié)我們就丟失了部分細節(jié)苛白,到最后引入了額外的成本,有時候還是高額的成本焚虱。

可能有些同學會說购裙,只要我們提升寫文檔的能力(比如金字塔)不就可以解決這個問題么?的確鹃栽,理想情況下只要文檔能夠充分的體現(xiàn)作者的意圖躏率,覆蓋所有的細節(jié),那整個開發(fā)流程也沒有問題民鼓,但現(xiàn)實情況是這很困難薇芝,這個領(lǐng)域是作家、寫手才擅長的丰嘉,技術(shù)人員能夠往這個方向努力夯到,個別技術(shù)人員也能達到比較高的水準,但很難讓技術(shù)人員群體在整體上達到比較高的水準饮亏。而且文檔還有其他的問題耍贾,我們繼續(xù)往下看阅爽。

文檔的價值有多大?

組織怎么看文檔

CMM的流程定義和階段產(chǎn)物能夠給組織和公司帶來安全感(特別是規(guī)模比較大荐开,比較成熟的公司)付翁,看起來只要我們把各種文檔寫好,我們就能夠得到一個可控的開發(fā)過程晃听,項目的里程碑就能夠按部就班的達成胆敞,另外,文字化后的知識也更加適合積累和擴散杂伟。

我見過很多項目經(jīng)理確實是相信——只要我們輸出了需求分析文檔,那肯定是做了充分的需求分析的仍翰,只要我們輸出了詳細設計文檔赫粥,那肯定是進行了全面的方案設計和評審,或者說予借,即使不是那么充分和全面越平,至少還是有在做,總比沒有做要強灵迫。

一次實際的文檔交付

印象最深的一次秦叛,為了實現(xiàn)一個非常明確的小需求,提交的文檔有需求說明瀑粥、需求分析挣跋、概要設計、詳細設計狞换、測試用例等好幾份文檔(這種非常明確的小型需求也會讓開發(fā)人員直接進行需求分析)避咆,每一個文檔都有固定模板,需要進行評審修噪,提交評審記錄并添加版本說明查库,而最后實際修改的代碼不超過10行(還需要提交代碼走查記錄),這些文檔最后會提交svn黄琼,然后就沒有然后了樊销,這些文檔就這么安靜的塞在一臺不知道在哪的硬盤中,絕大多數(shù)的文檔不會有人再重新打開看一眼脏款,或者即使有人重新打開來看围苫,文檔內(nèi)容和最新的代碼已經(jīng)完全沒有任何聯(lián)系了!

開發(fā)人員怎么看文檔

以前看到過一個例子弛矛,大概意思是某監(jiān)獄有一種懲罰犯人的方式够吩,重復讓犯人把磚塊從A搬到B然后再從B搬到A,一直重復下去丈氓,犯人會在體力耗盡之前先精神崩潰周循。讓開發(fā)人員反復從事于這些文檔工作大概就是類似效果强法!

但是不要忘了,程序員可是這個世界上頭腦最聰明的一撥人湾笛,碰到這種情況程序員會怎么處理饮怯?編唄!代碼先寫嚎研,程序先調(diào)蓖墅,等所有事情做完了,不是要需求和設計文檔嗎临扮,照著代碼寫唄论矾,什么流程圖、交互圖杆勇,照著代碼實現(xiàn)畫唄贪壳,還要求評審記錄和修改記錄是吧,寫的時候隨便寫幾個錯別字蚜退,故意留幾個小章節(jié)先不寫闰靴,等評審的時候就把這些錄為評審記錄嘛……所以,雖然理想的瀑布式開發(fā)模式下需求分析和設計以及評審要求在最前面钻注,可是實際落地的時候呢蚂且,根本也不是那么回事!這種后補的文檔既沒有起到幫助分析需求的作用幅恋,也沒有起到指導開發(fā)的作用杏死,毫無價值可言,大家都知道是怎么回事捆交,可偏偏還沒有人說破识埋,不僅僅是對這世界上最聰明頭腦的浪費,還是對程序員良知的折磨零渐,如果這不是反人類窒舟,那是什么?

文檔還需不需要诵盼?

既然文檔不能進行有效的溝通惠豺,也毫無價值可言,那我們是不是不需要文檔了呢风宁?很多剛剛轉(zhuǎn)型敏捷的團隊真的就會這么做洁墙,將所有的文檔工作全部廢棄,剛開始的時候覺得挺好戒财,終于擺脫煩人的文檔工作了热监,但是過一段時間之后又發(fā)現(xiàn)還是不行,不寫文檔的話很多事情無據(jù)可查饮寞,A 說我們當時說好了要按這個方式實現(xiàn)的孝扛,結(jié)果 B 說不對列吼,明明是另一個方式,看起來沒有文檔也不行……

其實“需不需要寫文檔苦始?”這個問題是個偽命題寞钥,文檔肯定是需要的,即使是在敏捷宣言里面也沒有否定文檔的價值陌选,真正的問題是“那些內(nèi)容需要寫文檔理郑?”

哪些內(nèi)容需要些文檔

原則很簡單,看這個文檔寫出來之后將來有沒有人會使用咨油,如果有人確實需要這份文檔您炉,那文檔就有存在的價值,比如下面這些:

  • 需求背景役电,用戶有什么業(yè)務痛點邻吭,需要什么軟件功能
  • 驗收條件,滿足哪些條件可以認為需求驗收通過
  • 接口說明宴霸,不同模塊或者組件之間的接口定義

這些文檔有明確的目標受眾,知道自己的文檔是寫給誰看的膏蚓,寫起來就會有明確的針對性瓢谢,哪些地方該細一點,哪些地方可以一筆帶過驮瞧,哪里需要結(jié)合圖表氓扛,這些問題一旦弄清楚,文檔的表意性就能提升一大步论笔。

還有一些內(nèi)容也需要文檔化采郎,比如團隊的 DOD 定義,編碼規(guī)范狂魔,可以幫助團隊設定明確的目標和標準蒜埋,再比如軟件模塊的概要設計說明,可以幫助團隊新進成員快速理解代碼最楷,總之只要我們識別出文檔存在的意義就OK整份。

文檔的形式

文檔應該放在所有人都能方便訪問和同步修改的地方,目前我接觸到比較好的方式是wiki籽孙,訪問修改都很方便烈评,能方便的進行comment并追蹤wiki修改的歷史記錄,有的還能支持markingdown犯建。

像word/pdf格式的文檔讲冠,是直接保存在電腦硬盤上的,為了同步修改一般還需要放在 svn 上适瓦,不管是讀還是寫相對于wiki方式都困難的多竿开。如果你所在的組織還要求對文檔的讀寫進行權(quán)限控制谱仪,那基本上就沒有幾個人愿意看了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末德迹,一起剝皮案震驚了整個濱河市芽卿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胳搞,老刑警劉巖卸例,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肌毅,居然都是意外死亡筷转,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門悬而,熙熙樓的掌柜王于貴愁眉苦臉地迎上來呜舒,“玉大人,你說我怎么就攤上這事笨奠∠龋” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵般婆,是天一觀的道長到腥。 經(jīng)常有香客問我,道長蔚袍,這世上最難降的妖魔是什么乡范? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮啤咽,結(jié)果婚禮上晋辆,老公的妹妹穿的比我還像新娘。我一直安慰自己宇整,他們只是感情好瓶佳,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鳞青,像睡著了一般涩哟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盼玄,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天贴彼,我揣著相機與錄音,去河邊找鬼埃儿。 笑死器仗,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播精钮,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼威鹿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了轨香?” 一聲冷哼從身側(cè)響起忽你,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎臂容,沒想到半個月后科雳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡脓杉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年糟秘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片球散。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡尿赚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蕉堰,到底是詐尸還是另有隱情凌净,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布屋讶,位于F島的核電站冰寻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏丑婿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一没卸、第九天 我趴在偏房一處隱蔽的房頂上張望羹奉。 院中可真熱鬧,春花似錦约计、人聲如沸诀拭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耕挨。三九已至,卻和暖如春尉桩,著一層夾襖步出監(jiān)牢的瞬間筒占,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工蜘犁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翰苫,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像奏窑,于是被迫代替她去往敵國和親导披。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評論 25 707
  • 先說項目開發(fā)過程中團隊人員的分工協(xié)作埃唯。 一 人員安排 畢業(yè)至今的大部分項目都是獨立完成撩匕,雖然也有和其他同事協(xié)作的時...
    SnowflakeCloud閱讀 10,769評論 3 59
  • 三月三鬼出關(guān), 吃個粑保平安墨叛, 路燈孤影長止毕, 霓虹雨中暗淡, 匆忙巍实,匆忙滓技, 飯菜溫暖饑腸。
    靜晚閱讀 408評論 0 2
  • 《隱性趨勢——那些看不清卻即將到來的商業(yè)機會》 中信出版社 盧俊推薦
    1caae4d4f456閱讀 284評論 0 0
  • 心中的杜鵑棚潦,開了令漂,開在十月二十日,攝影人齊聚五蓮山風景區(qū)杜鵑山莊的日子丸边,開在自己因事不能參加張弛先生關(guān)于風景人文攝...
    碧海青天2017閱讀 249評論 2 2