【提升效率】如何寫好一份詳細設計文檔

版本日期修訂人描述
V1.02024/12/6nick huang創建文檔

背景

CSDN在發起“如何做好一份技術文檔”的活動。
想起我最近在寫一份詳細設計,有一些感受:

一份考慮較周全的“詳細設計文檔模板”能起到質量保底的作用。
當一名初級技術人員需要編寫詳細設計文檔,如果有一份較全面的詳細設計文檔模板能夠擔當指引
1、有助于幫忙技術人員考慮到一些容易遺漏的點
2、有助于幫忙技術人員編寫出可讀性較高的文檔

詳細設計文檔的一些重要因素(我認為的)

需求背景(必需)

文檔的開始,要闡述這份設計對應的需求。

至少闡述這幾個問題:
1、幫用戶解決什么問題(用戶痛點)

最好能闡述這幾個問題:
1、我們將打算如何修改
2、修改這幾個點對應哪幾個系統的哪幾個功能(最好能用功能菜單來描述,避免大家理解不一致)

如果需求背景比較簡單,可以自己直接闡述;
如果比較復雜,可以制作“文檔鏈接”,確保在“評審時”能一鍵跳轉到《需求文檔》中繼續介紹,觀眾無須過多等待。

需求細節快鏈(建議)

Tips
除了上述的宏觀的“需求背景”。
在詳細設計評審會議上講述具體某個細節的實現方式時,為了幫助觀眾能快速地回顧該需求細節。
我通常會在描述實現細節的下文,放一張“需求文檔針對該需求的縮小版截圖”。
講解時,快速放大截圖幫助觀眾快速地回顧該需求細節

方案描述(必需)

詳細介紹如何實現需求文檔的各個需求點(建議拆分功能點描述)。
有邏輯性地描述我們的方案如何最終實現用戶需求。

比如:有一個需求,在Apple頁面上新增Boy字段,默認為Cat值,支持更新,更新時給Dog用戶發送一封通知郵件。
那么,我們可以如何描述。

1、修改/createApple接口
修改邏輯:
1)新增Boy字段以及關聯的ORM
2)新建邏輯中,設置Boy字段默認值為Cat

2、修改/updateApple接口
1)入參添加Boy字段
2)添加Boy字段的更新邏輯
3)更新時給Dog用戶發送一封通知郵件的實現邏輯

3、修改/getApple接口
1)接口出參添加Boy字段

上述,是通過“ 如何寫數 → 如何使用數據 ”的邏輯闡述如何逐步實現用戶功能。

過程中有一些細節問題,可能產品未提及,可主動跟產品確認,比如:
1、新增Boy字段,默認為Cat值。可跟產品了解:Cat值后續改動的概率,如概率大,做成熱配置,降低修改成本
2、Boy字段的更新邏輯。跟產品溝通:是否需支持多用戶并行更新同一行記錄?如需,則詳述我們如何處理
3、發送一封通知郵件。跟產品溝通:如果郵件發送失敗,是否影響更新數據落庫?如不應影響,我們闡述如何實現異步,以及如何實現發送失敗的補償發送

Tips
復雜的寫數邏輯或算法可通過下述途徑,讓觀眾更容易理解:
1)偽代碼、偽SQL代碼
2)時序圖
3)流程圖

通過合適的技術手段講解實現方式

通過合適的技術手段講解實現方式,有哪些典型的場景呢?

接口涉及多組件或多應用,可用“時序圖”可視化地表達(如涉及,必需)

用戶訪問/apple接口訪問boy應用,然后boy應用通過訪問/cat接口訪問dog應用,dog應用將數據保持在MySQL的fish表,再將數據寫入Redis,最后調用郵件平臺發送一封郵件,再將fish表的id字段沿著請求的各節點返回給用戶。

上面一大段文檔,枯燥可讀性差、容易造成理解不一致。
如果用時序圖表達,情況將有所改善:
在這里插入圖片描述

Tips
上面的時序圖,畢竟要畫圖,你可能覺得很麻煩,工作量較大。
這里推薦一個工具——PlantUML。
通過寫代碼的方式畫時序圖
比如上圖,它的畫圖代碼如下,你可以用PlantUML Web Server試下:

@startuml
用戶 -> boy應用 : /apple
boy應用 -> dog應用 : /catdog應用 -> MySQL : fish表
MySQL --> dog應用 : fish.id=xdog應用 -> Redis
Redis --> dog應用dog應用 -> 郵件平臺: 發送郵件
郵件平臺 --> dog應用: 成功/失敗dog應用 --> boy應用 : fish.id=x
boy應用 --> 用戶 : fish.id=x@enduml

數據庫表設計與寫數規則(如涉及,必需)

如果實現涉及數據庫表結構的新增或字段變更,請務必描述出來。

數據庫單表設計點描述的一些重點:
1、常規的元素要設計好,比如:字段名、字段注釋、主鍵、表注釋
2、字段類型要考慮長度、精度
3、如新增字段涉及枚舉,各枚舉值(或數據字典)要羅列好,后續開發人員可拿到即用
4、如果寫數規則較復雜,可以用表格(如Excel)的形式來描述各字段的寫數示例,大家更容易理解
在這里插入圖片描述

數據庫表關系描述的一些重點:
1、使用“ER圖”表示表與表之間的關系(至于ER圖的繪制,我會用DRAW.IO或EZDML,目前沒有特別傾向的繪圖工具,歡迎推薦)
在這里插入圖片描述

涉及接口要羅列出來(如涉及,必需)

修改某個功能,涉及需要修改或新增的接口,都要羅列出來。

1、如果新增接口,描述接口的信息要齊全:
1)URL
2)Method
3)入參
4)出參
5)權限要求(這點容易遺漏哦!)
6)接口描述
可以借助Swagger等組件描述,但要注意能一鍵鏈接到位。

2、如果修改接口,要高亮出其中修改點或分點結構化文字描述
如果修改接口,建議:
1、高亮出其中修改點
2、或者,分點文字描述其中的修改點

避免閱讀人員需通篇閱讀接口文檔,加之各種對比手段,才能獲知我們的修改點(還可能識別遺漏)。

Checklist 檢查清單

針對不同的需求,需要設計的重點可能不同,以下Checklist的點可能可以參考:

維度解析
接口性能接口的響應時間是否達到要求
業務吞吐量需支持單位時間的接口訪問量
權限校驗接口權限校驗、數據權限校驗
數據校驗入參校驗、業務規則校驗、狀態校驗
冪等校驗接口支持相同數據重復調用,不會產生錯誤數據
數據一致性設計多個數據庫寫數動作或多個遠程調用,考慮使用本地事務或分布式事務
同一數據的強一致性多人對同一筆數據同時操作,使用樂觀鎖或悲觀鎖確保符合用戶的操作預期
異步處理哪些業務動作需異步處理(要注意失敗通知、失敗補償等場景),以達到:1)故障時不影響主流程;2)處理時間長無須用戶現場等待
異常情況告警影響業務的關鍵功能運行不正常或數據不正常,是否需要告警通知(短信通知、消息通知、電話通知)
異常情況降級影響業務的關鍵功能運行不正常時,我們是否需做熱下線或服務降級
審計是否需要關鍵業務操作的審計日志,以便回溯、舉證

隨時補充,歡迎關注(你也可在評論區補充哦!)

最后

小弟不才,學識有限,如有錯漏,歡迎指正哈。
如果本文對你有幫助,記得“一鍵三連”(“點贊”、“評論”、“收藏”)哦!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62276.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62276.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62276.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電阻計RM3544、RM3545的使用

目錄: 一、電阻計與PC通訊 1、硬件連接 2、RmLogger.exe的使用 二、RM3545測量35uΩ電阻 一、電阻計與PC通訊 1、硬件連接 可以設置USB或COM口(串口)連接PC,也可以設置為“打印”輸出。 1)使用USB連接PC 2)使用串口連接PC …

Jenkins 的HTTP Request 插件為什么不能配置Basic認證了

本篇遇到的問題 還是因為Jenkins需要及其所在的OS需要升級,升級策略是在一臺新服務器上安裝和配置最新版本的Jenkins, 當前的最新版本是: 2.479.2 LTS。 如果需要這個版本的話可以在官方站點下載,也可以到如下地址下載&#xff1…

uniapp 封裝自定義頭部導航欄

封裝原因 項目中有時候需要使用自定義的頭部導航欄,原生的無法滿足需求 參數 屬性名描述示例title標題字符串:首頁bgColor背景色字符串:#ffftype左側的操作內容字符串:all,詳細值請在下方查看 參數解釋 type all…

docker學習筆記(五)--docker-compose

文章目錄 常用命令docker-compose是什么yml配置指令詳解versionservicesimagebuildcommandportsvolumesdepends_on docker-compose.yml文件編寫 常用命令 命令說明docker-compose up啟動所有docker-compose服務,通常加上-d選項,讓其運行在后臺docker-co…

Linux中inode

磁盤的空間管理 如何對磁盤空間進行管理? 假設在一塊大小為500G的磁盤中,500*1024*1024524288000KB。在磁盤中,扇區是磁盤的基本單位(一般大小為512byte),而文件系統訪問磁盤的基本單位是4KB,因…

5G揚帆乘勁風,遨游通訊賦能千行百業譜新篇

在大型工廠,輕觸手機屏幕,實時庫存數據、人員定位等信息便躍然眼前、一目了然;在邊遠油田,動動手指,即可實時查詢設備溫度、危險氣體濃度等信息,大數據瞬間盡在“掌”握……在遨游5G防爆智能手機的助力下&a…

RT Thread Studio新建STM32F407IG工程文件編譯提示錯誤

編譯提示錯誤 原因: RT 源碼使用4.0.3的話,請用STM32F4支持包的0.2.2版本,就不會出錯了。 如果支持包用0.2.3版本的話,需要用RT內核4.1.0版本。0.2.3 版本更新了一些針對內核4.1.0的驅動代碼,這幾個定義都是4.1.0里的。

學生管理系統(java)

1.前期準備 (1)新建java項目 (2)新建java軟件包以及三個文件Student.java,Student.txt,StuSystem.java Student.java package student_management_system;public class Student {private String id;private String name;private…

JavaWeb學習(2)(Cookie原理(超詳細)、HTTP無狀態)

目錄 一、HTTP無狀態。 (1)"記住我"? (2)HTTP無狀態。 (3)信息存儲客戶端中。如何處理? 1、loaclStorage與sessionStorage。 2、Cookie。 二、Cookie。 (1&…

SpringBoot教程(三十二) SpringBoot集成Skywalking鏈路跟蹤

SpringBoot教程(三十二) | SpringBoot集成Skywalking鏈路跟蹤 一、Skywalking是什么?二、Skywalking與JDK版本的對應關系三、Skywalking下載四、Skywalking 數據存儲五、Skywalking 的啟動六、部署探針 前提: Agents 8.9.0 放入 …

flask創建templates目錄存放html文件

首先,創建flask項目,在pycharm中File --> New Project,選擇Flask項目。 然后,在某一目錄下,新建名為templates的文件夾,這時會是一個普通的文件夾。 然后右擊templates文件夾,選擇Unmark as …

Java進階(注解,設計模式,對象克隆)

Java進階(注解,設計模式,對象克隆) 一. 注解 1.1 什么是注解 java中注解(Annotation),又稱java標注,是一種特殊的注釋 可以添加在包,類,成員變量,方法,參數等內容上 注解會隨同…

部署loki,grafana 以及springcloud用法舉例

文章目錄 場景docker 部署grafanadocker-compose部署loki維護配置文件 local-config.yaml維護docker-compose.yml配置啟動 grafana 添加loki數據源springcloud用法舉例查看loki的explore,查看日志 場景 小公司缺少運維崗位,需要研發自己部署日志系統,elk…

keil報錯---connection refused due to device mismatch

解決辦法如下: 記得改成1 把Enable取消

第三節、電機定速轉動【51單片機-TB6600驅動器-步進電機教程】

摘要:本節介紹用定時器定時的方式,精準控制脈沖時間,從而控制步進電機速度 一、計算過程 1.1 電機每一步的角速度等于走這一步所花費的時間,走一步角度等于步距角,走一步的時間等于一個脈沖的時間 w s t e p t … ……

vue中pdf.js的使用,包括pdf顯示,跳轉指定頁面,高亮關鍵詞

目錄 一、下載pdf.js 二、引入到本地的項目中 三、實現預覽pdf 四、跳轉到指定頁面 五、利用pdf里面的find查找關鍵詞 六、修改頁面大小為實際大小 一、下載pdf.js https://github.com/mozilla/pdf.js 里面有很多的版本, 高版本的可能瀏覽器不兼容或者還要考…

OD B卷【連續字母長度】

題目 給定一個字符串,只包含大寫字母,求在包含同一字母的子串中,長度第k長的子串的長度,相同字母只取最長的那個子串。 輸入描述: 第一行輸入一個子串(長【1,100】),只包含大寫字母…

python中的 Pydantic 框架介紹

Pydantic 框架介紹 Pydantic 是一個用于數據驗證和設置管理的 Python 庫。它主要通過數據模型類的定義來處理 JSON 數據、解析請求和響應數據,并提供自動化的驗證和轉換。Pydantic 主要用于處理 Python 類型的安全性和驗證,尤其在 FastAPI 等現代 Pytho…

橋接模式和組合模式的區別

橋接模式(Bridge Pattern)和組合模式(Composite Pattern)都是結構型設計模式,旨在解決對象結構的復雜性問題,但它們的應用場景和目的有所不同。以下是它們的區別: 1. 定義與目的 橋接模式&…

Qt 小項目 學生管理信息系統

主要是對數據庫的增刪查改的操作 登錄/注冊界面: 主頁面: 添加信息: 刪除信息: 刪除第一行(支持多行刪除) 需求分析: 用QT實現一個學生管理信息系統,數據庫為MySQL 要求&#xf…