iT邦幫忙

DAY 8
2

打造軟體團隊系列 第 8

打造軟體團隊(7): 軟體專案管理-軟體設計階段,如何撰寫設計文件

  • 分享至 

  • xImage
  •  

講完軟體開發流程, 軟體時程規劃後, 開始根據軟體開發流程討論一些比較重要的項目.
首先先看軟體設計階段, 在這個階段我把軟體設計文件(Design document )挑出來講.
講完軟體開發流程, 軟體時程規劃後, 開始根據軟體開發流程討論一些比較重要的項目.
首先先看軟體設計階段, 在這個階段我把軟體設計文件(Design document )挑出來講.

軟體設計文件是軟體開發時的依據. 一個好的設計文件除了讓開發者能夠更快的開發出正確的功能 (一個模菱兩可的設計文件, 十個不同開發者有可能會開發出十種不同版本功能), 還能避免爭議 (舉Camera例子來說, 影像處理的功能可以放在驅動程式, 也可以放在應用程式, 如果沒有定義清楚, 就有可能產生爭議), 將來其他開發者在維護的時候, 也會比較容易上手 (看文件比看程式碼快多了).
因此如何寫出一份簡單易懂, 又能詳盡定義出各個功能的設計文件就很重要了.
我大概列舉一下在系統整合廠的軟體設計文件的架構和所應包含的章節.

首先要有一份統整的文件, 就是軟體規格文件, 前面章節有講過, 建議由軟體專案負責人來寫. 這份文件要定義出整個軟體的範疇, 並詳述出所有的模組規格和功能以及內建的應用軟體. 比如 : 處理器用哪一顆, 速度如何, 記憶體多大, 內存空間多大, Wifi 支援 802.11 a/b/g/n , BT3.0, 應用程式含 Word, Excel 等等. 並且要畫出整個系統的架構圖, 最好包含硬體的架構圖以及軟體的架構圖, 還有重要的User interface, Scenario, 都可以包含進去.

除了軟體規格文件外, 另外需要的是軟體開發人員清冊, 裡面包含這個案子內的所有軟體開發人員的資歷, 以及所單任的角色, 負責的工作. 再來就是把軟體規格文件展開,包含bootloader, 各Drivers, 以及各個應用程式的設計文件(這個部分建議由系統分析師, 或是工程師自己撰寫).

那內容應該包含什麼呢? 我把它分兩部分, 一是Bootloader, 以及韌體部分應包含:
(1) 系統架構圖: 模組所包含的功能, 以及在整個系統相對角色位置.
(2) 硬體介面: 硬體線路圖, 腳位, 訊號等資訊. 最好用Bloack diagram 的方式描述.
另外如能加上耗電量, 效能等資訊更好.
(3) 軟體介面: 軟體的架構, 功能列表, 變數與函數的列表說明.
(4) Test Case/ Scenario: 測試此模組的相關資訊
(5) 已知問題或系統限制
(6) 其他參考文件

再來是應用程式部分, 這個部份就可以Follow一般系統分析的方法來撰寫設計文件, 如物件導向系統分析, 使用UML方法來寫設計文件. (這部分大家應該很熟, 也有很多書可以參考, 所以就不在此詳述)

可能有人會有疑問, 為何韌體部分, 不直接也用大家熟悉的系統分析方法來做? 這樣大家才會有"共同語言". 是的, 我覺得有共通語言是很重要的, 因此我也試過用UML從Use case, User scenario, class, sequence diagram 等去寫driver 的設計文件. 確實可以也得出來, 但結果就是過成程綁手綁腳, 寫出來的文件很"詭異", 因此我建議可以應用一部份的UML圖來輔助描述你的設計文件, 而不要照本宣科的完全Follow. 因為寫出一份淺顯易懂且合適案子的設計文件, 比有沒有Follow 標準重要的多了.

PS1: 我認為適合用在firmware 設計文件的UML圖有 Component diagram, Class diagram, Sequence diagram, Package diagram.
PS2: 如果可以的話, 儘量用全英文來撰寫設計文件, 但如果英文真的很差, 那就不要勉強, 免得因為語言關係, 造成誤解, 做出完全不同的功能.


上一篇
打造軟體團隊(6): 軟體專案管理-軟體時程的規劃
下一篇
打造軟體團隊(8): 軟體專案管理-軟體開發階段, 要注意的事項. SCM, Coding style
系列文
打造軟體團隊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0

我要留言

立即登入留言