介紹
近期對於需求分析和軟件設計有了一個初步的了解,明白作為一個碼農,最重要的不僅僅是代碼的規范,對於軟件的前期分析和設計會深深的影響到整個軟件的質量以及完成成本。
在試圖完成一項任務之前,一個規范化的軟件分析和建構是非常有必要的。
下面試圖拿我工程實踐項目一個音樂播放器系統來做一個初步的分析,有不足之處,還請大家多多指教。
一、需求分析
1.1什么是需求分析
- 需求就是對用戶期望的軟件行為的表述
- 獲取需求就是需求分析師通過關注用戶的期望和需要,從而獲得用戶期望的軟件行為,然后對其進行表述的工作
- 需求分析是在獲取需求的基礎上進一步對軟件涉及的對象或實體的狀態、特征和行為進行准確描述或建模的工作
1.2關鍵用戶需求
從音樂播放器的使用者的角度
①播放歌曲
②下載歌曲
④歌曲查找
⑥自建歌單
⑦歌曲分類
二、用例建模
2.1什么是用例
用例(Use Case)的核心概念中首先它是一個業務過程(business process),經過邏輯整理抽象出來的一個業務過程,這是用例的實質。什么是業務過程?在待開發軟件所處的業務領域內完成特定業務任務(business task)的一系列活動就是業務過程。
用例的幾個基本要素:
• A use case is initiated by (or begins with) an actor. 一個用例應該由業務領域內的某個參與者(Actor)所觸發。
• A use case must accomplish a business task (for the actor).用例必須能為特定的參與者完成一個特定的業務任務。
• A use case must end with an actor. 一個用例必須終止於某個特定參與者,也就是特定參與者明確地或者隱含地得到了業務任務完成的結果。
2.2准確提取用例的基本方法
第一步,從需求中尋找業務領域相關的動名詞和動名詞短語,比如做什么事、什么事情必須被完成,或者執行某任務等;
第二步,驗證這些業務領域相關的動名詞和動名詞短語到底是不是用例。驗證業務領域相關的動名詞或動名詞短語是不是用例的標准是滿足四個必要條件:
必要條件一:它是不是一個業務過程?
必要條件二:它是不是由某個參與者觸發開始?
必要條件三:它是不是顯式地或隱式地終止於某個參與者?
必要條件四:它是不是為某個參與者完成了有用的業務工作?
如果以上四個必要條件都滿足的話,那么該業務領域相關的動名詞或動名詞短語就是一個用例。
本系統中,歌迷的需求分別有 播放歌曲、搜索歌曲、創建和刪除歌曲,可以看出,這三個需求都是一個業務過程,並且都是由歌迷觸發,終止於歌迷。
2.3主要用況
歌迷用況
系統管理員用況:
系統有兩類參與者,分別是歌迷和管理員。歌迷可以借助該系統完成如下功能:
- 播放歌曲
- 搜索歌曲
- 創建和刪除歌單
系統需要管理員進行:
- 上傳歌曲
- 審核歌單
三、業務領域建模
3.1什么是業務領域建模
- 業務領域建模是開發團隊用於獲取業務領域知識的過程。因為軟件工程師往往需要工作在不同的業務領域或者不同項目中,他們需要業務領域知識來開發軟件系統。軟件工程師往往來自不同的專業背景,這可能會影響他們對業務領域的認知。因此業務領域建模有助於開發團隊獲取業務領域知識形成統一的業務認知
- 開發團隊獲取業務領域知識的過程一般包括收集業務領域相關信息、執行團隊頭腦風暴、對業務領域相關的知識概念進行分類,最后用UML類圖將業務領域知識圖形化展示。
3.2業務領域建模的基本步驟
第一步,收集應用業務領域的信息。聚焦在功能需求層面,也考慮其他類型的需求和資料;
第二步,頭腦風暴。列出重要的應用業務領域概念,給出這些概念的屬性,以及這些概念之間的關系;
第三步,給這些應用業務領域概念分類。分別列出哪些是類、哪些屬性和屬性值、以及列出類之間的繼承關系、聚合關系和關聯關系。
第四步,將結果用 UML 類圖畫出來。
3.3項目中的業務領域建模
七、數據模型
歌迷
變量名 | 類型 | 唯一 | 含義 |
userName | string | 是 | 用戶名 |
password | string | 是 | 密碼 |
music表
變量名 | 類型 | 唯一 | 含義 |
m_name | string | 是 | 歌曲名 |
m_startDate | string | 是 | 時間 |
m_singerName | string | 是 | 歌手 |
m_album | string | 是 | 所在專輯 |
Album表
變量名 | 類型 | 唯一 | 含義 |
m_name | string | 是 | 專輯名 |
m_startDate | string | 否 | 時間 |
m_singerName | string | 否 | 歌手名 |
_musics | Music | 否 | 歌曲列表 |
Singer表
變量名 | 類型 | 唯一 | 含義 |
m_name | string | 是 | 歌手名 |
m_category | string | 否 | 歌手類別 |
_albums | Album | 否 | 專輯列表 |
管理員
變量名 | 類型 | 唯一 | 含義 |
AdName | string | 是 | 管理員賬號 |
password | string | 是 | 密碼 |
八、概念原型
首先明確概念和概念原型:
概念是人對能代表某種事物或發展過程的特點及意義所形成的思維結論。
概念原型是一種虛擬的、理想化的軟件產品形式。
就像“程序=算法+數據結構”一樣,“概念原型=用例+數據模型”
從之前的分析中已經得到該項目的概念原型,下面介紹一下該概念原型的工作過程:
歌迷登錄系統后,通過選擇歌曲分類,客戶端將在數據庫服務器查詢歌曲分類,將結果返回給客戶端。此外,歌迷還可以通過自己的賬號查詢自己的歌單信息,查找自己喜歡的音樂。或者通過搜索音樂進行播放。這些都是建立在歌迷與系統進行交互,並與數據模型交互的情況下產生的。
七、總結
以上對工程實踐項目的分析不僅讓我加深了從需求分析到軟件設計的基本流程,還加深了對工程實踐項目的理解。對以后工程實踐的項目有很大的幫助,希望以后能更加成熟地運用這些方法完成對軟件的分析。以上是我個人對項目的粗略分析,還請指教。
參考: