1. 程式人生 > >從需求到設計(記自已的一次開發經歷)

從需求到設計(記自已的一次開發經歷)

閒來無聊,針對自己之前開發的一個專案中的一個案例,詳細的說明一下從分析到設計再到最終完成的一個過程。希望對自己對正在尋求轉變的人提供一點幫助。

過程是:分析->設計 迭代開發。

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.

          從上面的動態圖就可以知道各類的方法(職責)是有哪些了。

通過動態圖和早期構建的領域模型,就可以確定靜態類圖,從而構建出軟體的基本架構。

這裡省略瞭如何設計這些架構的基本思路,也就是設計模式,比如高內聚,低耦合,等等。