日本有码中文字幕视频,在线能看三级网站,日本妇乱子伦视频免费的,中文字幕一页在线

      軟件設計文檔模板(如何才能寫出好的軟件設計文檔?)

      時間:2022-11-06 09:11:36來源:
      導讀軟件設計文檔模板(怎樣才能寫出好的軟件設計文檔?)作為一名軟件工程師,我花了很多時間閱讀和編寫設計文檔。經(jīng)過上百份文檔的磨練,我發(fā)現(xiàn)優(yōu)秀的設計文檔和項目的成

      軟件設計文檔模板(怎樣才能寫出好的軟件設計文檔?)

      作為一名軟件工程師,我花了很多時間閱讀和編寫設計文檔。經(jīng)過上百份文檔的磨練,我發(fā)現(xiàn)優(yōu)秀的設計文檔和項目的成功有著密切的關系。

      本文將介紹如何撰寫一份優(yōu)秀的設計文檔。

      為什么要寫設計文檔?

      文檔也是技術規(guī)范,用來描述你打算如何解決問題。已經(jīng)有很多文章解釋了為什么設計文檔應該寫在編碼之前。這里不再贅述,但我想再補充一點:

      設計是確保工作正確完成的最有用的工具。

      該文檔的主要目的是迫使您仔細思考設計并收集他人的反饋,以便更好地完成您的工作。一般認為,設計文檔的目的是讓別人了解某個系統(tǒng),或者作為參考文檔。這些只是設計文檔有益的副作用,但絕不是其根本目的。

      根據(jù)經(jīng)驗,如果你的項目需要一個人月或更長時間,那么你應該寫設計文檔。此外,一些小項目也可以受益于迷你設計文件。

      但是,不同的工程團隊,甚至是同一個團隊的工程師,寫設計文檔的方式是不一樣的。接下來,我們來談談優(yōu)秀設計文檔的內(nèi)容、風格和流程。

      設計中應該包括哪些內(nèi)容?

      設計文檔描述了問題的解決方案。因為每個問題的性質(zhì)不同,設計文檔的結構也不同。

      這是一份清單。你至少可以考慮在文檔中包含這些內(nèi)容。

      頭銜和角色。

      文檔的標題、作者(應該與計劃參與項目的人員列表相同)、文檔的審閱者(我們將在“過程”部分詳細討論)以及文檔的最后更新日期。

      摘要

      摘要可以幫助公司的每個工程師理解文檔的內(nèi)容,決定是否繼續(xù)閱讀文檔的其余部分。摘要最多可包含3個段落。

      背景

      描述要解決什么問題,為什么需要這個項目,需要哪些知識的人來評估這個項目,以及它與團隊的技術戰(zhàn)略、產(chǎn)品戰(zhàn)略或者季度目標的關系。

      目標和非目標

      目標應包括:

      描述項目對用戶的影響——你的用戶可能是另一個工程團隊或者另一個系統(tǒng)。

      指定如何使用度量來衡量項目的成功——如果能鏈接到度量儀表板就更好了。

      非目標同樣重要。它們用來描述項目解決不了什么問題,讓大家達成共識。

      里程碑

      一系列可測量的檢查點,通過這些檢查點,你的項目經(jīng)理和你的老板可以大致知道項目的每個部分何時完成。如果項目時間超過1個月,我建議你把它分解成面向用戶的里程碑。

      設置里程碑時,可以使用日歷日期,考慮到延誤、節(jié)假日、會議等因素。例如:

      開始日期:2018年6月7日

      里程碑1-在黑暗模式下運行新系統(tǒng)MVP:2018年6月28日

      里程碑2-拋棄舊系統(tǒng):2018年7月4日

      End:在新系統(tǒng)中增加新功能X,Y,Z:2018 . 7 . 14

      如果其中一些里程碑的ETA發(fā)生了變化,就需要在這里添加【更新】,相關人員可以很容易的看到更新的內(nèi)容。

      目前的方案

      除了描述當前的實現(xiàn),還應該舉例說明用戶如何與系統(tǒng)交互以及數(shù)據(jù)如何在系統(tǒng)中流動。

      這時候可以用用戶故事。記住,你的系統(tǒng)可能有不同類型的用戶,他們的使用場景也不盡相同。

      擬議方案

      有人稱這部分為技術架構。這一部分也可以通過用戶故事來體現(xiàn),用戶故事可以包含多個子部分和圖表。

      從大圖開始,然后補充細節(jié)。確保即使你在荒島上度假,團隊中的其他工程師也能按照你的描述來實現(xiàn)解決方案。

      其他選擇

      在提出上述解決方案的同時,有沒有考慮過其他的解決方案?替代品的優(yōu)缺點是什么?你是否考慮使用第三方解決方案——或者開源解決方案——來解決問題,而不是構建自己的解決方案?

      以及監(jiān)控和警報

      人們往往把這一部分當作事后的想法,甚至直接忽略。但是問題發(fā)生后,他們很著急,卻不知道該怎么辦,也不知道為什么會出現(xiàn)這些問題。

      跨團隊影響

      這樣會不會增加倒班待機和DevOps的負擔?

      它的成本是多少?

      會增加系統(tǒng)延遲嗎?

      會不會暴露系統(tǒng)安全漏洞?

      會帶來哪些負面后果和副作用?

      支持團隊應該如何與客戶溝通?

      討論

      此部分可以包含您不確定的任何問題、您希望閱讀文檔的人一起權衡的有爭議的決定、對未來工作的建議等等。

      的詳細范圍和時間表

      本部分的主要讀者是參與項目的工程師、技術主管和管理人員。因此,這一部分放在文件的末尾。

      本質(zhì)上這就是項目計劃的實施方法和時間分解,可以包含很多內(nèi)容。

      我傾向于將這個部分視為項目任務跟蹤器,因此每當范圍估計發(fā)生變化時,我都會更新它。但更像是個人喜好。

      怎樣才能寫好文檔?

      談完了一份優(yōu)秀的設計文檔應該包含哪些內(nèi)容,現(xiàn)在來談談寫作風格。

      盡可能保持簡單。

      不要把設計文檔寫成你讀過的學術論文。論文旨在打動期刊評論家,而設計文檔旨在描述你的解決方案并獲得他人的反饋。您可以通過以下方式使文檔更加清晰:

      簡單的詞

      使用短句

      使用符號列表和編號列表。

      提供具體例子。

      添加圖表

      圖表很容易比較幾個選項,通常比文本更容易理解。我經(jīng)常使用Google Drawing來創(chuàng)建圖表。

      請記得在截圖下方添加圖表源文件的鏈接,以便在圖表發(fā)生變化時進行更新。

      包括數(shù)字。

      問題的大小通常決定了解決方案的大小。為了更好地幫助審閱者了解情況,請在文檔中使用實際數(shù)字,如數(shù)據(jù)庫行數(shù)、用戶錯誤數(shù)、延遲以及這些數(shù)據(jù)和使用情況之間的關系。(還記得大O記號嗎?)

      添加利息

      記住,技術規(guī)范不是學術論文。另外,人喜歡看有趣的東西,但不要為了好玩而偏離核心思想。

      自我檢查

      在將設計文件發(fā)送給其他人審閱之前,假裝成審閱者。你對這份設計文件有什么疑問?然后解決這些問題再發(fā)文件。

      假期測試

      如果你是獨占性的,不能上網(wǎng),團隊里的其他人可以看這個文檔,按照你的意圖執(zhí)行里面的內(nèi)容嗎?

      文檔設計的主要目的不是分享知識,但它是評估清晰度的好方法,這樣別人可以給你提供有用的反饋。

      程序

      設計文檔可以幫助你在浪費大量時間實現(xiàn)錯誤的解決方案或解決錯誤的問題之前獲得反饋。獲得好的反饋是一門藝術,但那是另一回事了?,F(xiàn)在,讓我們討論如何獲得設計文檔的反饋。

      首先,參與項目的每個人都應該參與設計過程。即使很多決策是技術總監(jiān)做的,也沒關系。至少每個人都應該參與討論并收到他們的設計。

      其次,設計過程不一定是盯著白板,在上面畫各種創(chuàng)意。你們可以一起工作來構建各種可能的解決方案原型。這不同于在編寫設計文檔之前編寫代碼。請隨意編寫一些一次性代碼來驗證您的想法。為了確保您的代碼僅用于概念驗證,原型代碼都不能合并到主代碼中。

      在您了解如何繼續(xù)進行項目后,請執(zhí)行以下步驟:

      請團隊中有經(jīng)驗的工程師或技術負責人審閱您的文檔。理想情況下,評審者應該是一個受人尊敬的人,他已經(jīng)熟悉問題的邊緣情況。

      在會議室用白板復習。

      向評審人員描述你正在解決的問題(這是非常重要的一步,不要跳過!)。

      然后向評審者解釋你想如何實現(xiàn)你的想法,讓他們相信這是正確的解決方案。

      在開始撰寫設計文檔之前完成所有這些步驟,可以讓您在投入更多時間和最終確定解決方案之前盡快獲得反饋。通常情況下,即使實現(xiàn)模式可以保持不變,評審人員仍然會指出一些你需要覆蓋的極端情況,或者潛在的歧義,并預測你未來可能遇到的困難。

      然后,在你寫好設計文檔的初稿后,請之前的評審人員再讀一遍,并在設計文檔的“標題和人”部分寫上自己的名字,作為對評審人員的鼓勵,也意味著對自己的評審行為負責。

      添加審核人姓名時,考慮針對具體問題添加不同的審核人(如SRE和安全工程師)。

      審核后,請將設計文檔發(fā)送給您的團隊,以獲得更多反饋。我建議把這個時間限制在一周左右,以免耽誤。盡量在一周內(nèi)解決他們遺留的問題。

      最后,如果您與審閱者和其他閱讀本文檔的工程師之間存在爭議,我強烈建議您將這些爭議放在文檔的“討論”部分。然后,與各方召開會議,討論這些差異。

      如果一個話題有5條以上的評論,面對面的討論往往效率更高。記住,即使你不能讓所有人都同意,你仍然可以做出決定。

      最近和Shrey Banga聊到這個的時候,了解到Quip也有類似的流程,只不過除了讓團隊中有經(jīng)驗的工程師或者技術負責人擔任審核人之外,他們還建議讓不同團隊的工程師來審核設計文檔。我還沒有嘗試過這種方法,但是我確信這將有助于從不同觀點的人那里獲得反饋,從而進一步提高文檔的質(zhì)量。

      完成以上所有步驟后,接下來就是開始實施了!在實現(xiàn)設計的過程中,設計文檔可以視為一個活動文檔。當您對實施計劃進行調(diào)整時,也要更新文檔,這樣您就不需要一遍又一遍地向所有風險承擔者解釋這些變化。

      那么,我們?nèi)绾卧u價一個設計文檔的成功呢?

      我的同事Kent Rakip對這個問題的回答是:如果你能獲得正確的投資回報率(ROI),那么這個設計文檔就是成功的。也就是說,一份成功的設計文件可能會導致:

      你花了5天時間編寫設計文檔,迫使你充分考慮技術架構的不同部分。

      您從評審人員那里得到反饋,并且知道架構的某些部分具有更高的風險。

      為了降低項目的風險,您決定先解決這些問題。

      3天后,你發(fā)現(xiàn)這些問題要么是不可能的,要么比你原來想象的要難很多。

      你決定停止這個項目,去做其他工作。

      本文開頭我們說過,設計文檔的目的是為了保證工作的正確完成。在上面的例子中,因為設計文檔,你只用了8天時間就決定停止項目,而不是浪費幾個月。在我看來,這似乎也是一個非常成功的結果。


      標簽: