從需求到設計(記自已的一次開發經歷)
閒來無聊,針對自己之前開發的一個專案中的一個案例,詳細的說明一下從分析到設計再到最終完成的一個過程。希望對自己對正在尋求轉變的人提供一點幫助。
過程是:分析->設計 迭代開發。
1 需求分析(案例):
這裡以這個專案中的一個需求"為使用者提供電視觀看的功能"。這裡我起名為"看電視"(watchTv)
案例:看電視
Actor: 使用者
前置條件:系統的電視服務工作正常。
後置條件:使用者看到自己所選信源的電視播放畫面。
基本流程:
1 使用者想要看電視,進入Launcher電視頁面。
2 電視獲取上一次使用者選擇過的電視輸入源。
3 獲取電視訊號
3 電視播放TV預覽畫面
擴充套件:
1 使用者不想看當前信源的視訊
a 使用者切換電視信源。
b 電視播放當前所選信源畫面。
2 使用者對當前信源的節目很感興趣,想要獲取更好的視覺體驗。
a 退出launcher tv頁面。
b 進入TV應用。
3 如果當前電視沒有訊號輸入或異常。
a 獲取電視訊號狀態。
b 通知使用者當前TV工作狀態。
2 構建領域模型:
1 尋找概念類:
使用者(User),電視(Tv),輸入源(InputSource), TV應用(TvApp),電視訊號(TvSignal), TV視窗(TvWindow)。
注意:新增"Tv視窗"這個需求中沒有提到的東西,主要是因為preview和進入tv需要設定TV視窗大小。屬於協助類所以這裡用於替代TvPreivew來表示。
從上面圖是一個簡單的領域模型,從圖上可以很清楚知道這些類之間的關係。
3 動態圖:
動態圖的主要是用來尋找“職責”(方法的抽象,通俗的理解就是類中的方法)
我們來看主成功場景的“時序圖”
注意:這裡面並沒有包含通知UI的邏輯,由於播放tv是一個耗時操作,所以使用非同步方式。避免阻塞UI.
從上面的動態圖就可以知道各類的方法(職責)是有哪些了。
通過動態圖和早期構建的領域模型,就可以確定靜態類圖,從而構建出軟體的基本架構。
這裡省略瞭如何設計這些架構的基本思路,也就是設計模式,比如高內聚,低耦合,等等。