編輯推薦: |
本文來自於簡書,需求分析的任務不是分析系統如何實現用戶的須要,而是對業務分析,造成一個體系完整,內容清晰的業務框架,以指導後續的設計開發工做。數據庫 |
1.1 需求分析建模的要點與誤區數據結構
1.1.1 需求分析到底作什麼架構
需求分析的任務不是分析系統如何實現用戶的須要,而是對業務分析,造成一個體系完整,內容清晰的業務框架,以指導後續的設計開發工做。框架
需求分析就是先分解,再提煉,在這個過程當中消除矛盾。數據庫設計
1.1.1.1 分解工具
現代需求工程理論更建議採用業務導向分解,而非傳統的系統導向分解。性能
》業務流程爲線索的分解結構優化
這種結構是以業務流程爲主線索,對於聯機事務處理系統,管理信息系統而言都是很是適用的方法。編碼
》程序結構爲線索的分解結構設計
這種分解結構過早的進入了程序結構,割裂了與問題域之間的聯繫,從醫致使對問題研究不足的狀況,從而下降需求質量,增長變動風險。這種結構適用於問題不復雜,系統與問題關聯性不強的狀況,例如工具軟件,面向設備的系統等。
》基於場景的分解結構
對於決策支持系統,面向用戶的嵌入式系統,就比較適合使用場景做爲線索。這些場景向上能夠總結成一系列關注點或功能域,向下能夠分解成具體的決策步驟。
》基於數據的分解結構
>
》小結
選擇了合適的分解結構以後,就能夠按其線索把需求規格說明書大綱肯定下來了,就知道應該捕獲什麼信息了,信息捕獲回來以後就將其填充到大綱裏,並不斷驗證。
1.1.1.2 提煉
分解是一種自頂向下的方法,按任何一種線索分解,都會破壞其餘線索的完整性。因此還須要自底向上的方法進行提煉,抽取出共性的部分,創建針對全局的領域模型。
1.1.1.3 消除矛盾
1.1.2 建模的目標和要點
建模的過程比結果重要。
建模是需求分析的主要手段。但若是爲了建模而建模,它就會變成一個問題,致使華而不實,形成溝通障礙。
1.1.2.1 建模的目的
建模的好處在於更好地理解正在開發的系統。建模的目的在於幫助咱們按照須要的樣式對系統進行可視化,提供一種詳細說明系統的結構或行爲的方法,給出一個指導系統構造的模板,對咱們所作出的決策進行文檔化。
1.1.2.3 建模的要點與原則
要點:設計要文檔化;用可視化的模型表達架構;不要爲了建模而建模,若是模型不能對系統的構建起到幫助做用,那麼就是一種人力資源的浪費。
模型是用來溝通的,所以僅當須要的時候才構建模型。
1.1.3 選擇建模工具的要點
1.1.3.1 正確認識建模方法論
建模的要點是根據要完成的任務,選擇合適的建模工具。
1.1.3.2 正確認識UML
》UML的發展歷史
》UML的準確理解
》爲何要用UML建模
》如何選擇UML圖
1.2 週期一:理清框架與脈絡
任務:理清需求的結構框架(領域類圖),行爲脈絡(流程圖和用例圖)。
輸入:需求定義階段產生的業務時間列表和報表列表。
輸出:領域模型和用例模型。
該任務對應於RUP中細化階段的第一次迭代,該階段的結束標誌是標識除了絕大部分用例,生成了領域模型。
1.2.1 業務流程分析
每一個業務事件都是流程的觸發,所以針對每一個事件都應該繼續作流程分析。不過根據流程的複雜度做出裁剪,簡單的流程能夠只用文本描述,複雜的流程能夠經過流程圖表示。
1.2.1.1 業務流程分析任務概述
業務流程分析,具體來講就是識別,分析現有業務活動,肯定活動之間的關係,瞭解活動須要接受哪些信息,產生哪些數據,肯定數據傳輸路線,標識出活動是由哪些部門,崗位負責。
分析過程當中,要注意抓住核心業務和主要活動點,部門之間的銜接,工做中繁瑣,反覆,成本高,效率低,時間長,轉手多的活動。
1.2.1.2 業務流程分析與流程管理理論的關係
業務流程是對信息系統進行庖丁解牛的核心線索。
》流程的六大特性:目標性,內在性,總體性,動態性,層次性,結構性。
》工做流實現的本質
》流程設計(BPD)的原則
1 流程應該以產出爲中心,而非任務爲中心。
2 讓須要獲得流程產出的人本身執行流程。一方面如今流程設計常常引入自助的概念;第二個方面是任務應該由誰來執行能夠參照這一原則。
3 將決策權放到更低的管理職位上,這樣會獲得更高的效率。在需求分析時,若是發現流程的決策點在較高的管理崗位上,就應該注意它常常會帶來執行上的瓶頸,也就會影響系統的正常運做。
4 流程多樣化。由於場景不一樣,同一個業務事件可能會執行不一樣的流程,在系統開發時,應該充分考慮到。
5 單點接觸客戶。這一點充分體現了流程對外部客戶滿意度的關注,也是將來流程變化的一個常見趨勢。
》流程改進(BPR)的ESIA策略
ESIA就是清除低效環節(E),簡化瓶頸點(S),整合資源(I),繁瑣任務自動化(A)。
這些因素就是致使流程發生變化的主要緣由。
1.2.1.3 業務流程分析的要點與產物
在進行業務流程分析時,有幾個關鍵點:
》流程是有層次的
部門級是需求分析的主線索,崗位級是需求細節填充時的工做內容,組織級是對部門級流程的抽象歸納。
》流程是有類型的
主要類型包括:
生產性流程:是流程中最重要的部分,一般也最容易標識。
管理型流程:是對生產性流程的管控,對質量效率進度等進行控制的流程,容易忽略。
支撐性流程:是對生產性流程的補充,一般是協做部門,本部門員工執行,也是容易丟失的部分。
》流程分析的產物
應該儘量地使用模型來描述流程。最常使用的有三種:跨職責流程圖,活動圖和數據流圖。
跨職責流程圖:強調業務背景。Visio是最佳工具。
活動圖:強調對軟件開發的指導。Rose,Together都是最佳工具之一。
數據流圖:強調數據的流通加工和處理。Visio是最佳工具。
1.2.1.4 跨職責流程圖應用基礎與要點
》元素
流程名稱,職責帶區,流程階段,流程元素。
》繪製要點
要保障繪製出來的流程圖是真實有效的,就必需要強化用戶參與。
要善於,勇於拋棄細節,不要過早鑽研到業務活動的具體步驟中。
要拋棄一次成型的思路,使用迭代的方式,畫草搞,談問題,改草搞,再討論,再修正,直到達成共識。
全部職責帶區上的活動都細化到具體的崗位。
每一個活動之間的關係都已經沒有疑問,都達成共識。
1.2.1.5 活動圖應用基礎與要點
活動圖就是能夠支持並行行爲的流程圖。
在完成活動圖或跨職責流程圖以後,還須要注意:
》進行瓶頸分析。
》進行利益分析。
當流程圖繪製完成以後,花些時間進行瓶頸和利益分析,會有意想不到的收穫。
1.2.1.1 數據流圖應用基礎
對於數據流爲主線索的處理過程很是合適。
》主要元素
》分層的數據流圖
1.2.2 業務實體分析
具體來講,就是要了解這個問題域中有哪些業務實體,它們之間存在什麼樣的邏輯關係,數量關係,以及有什麼相應的結構規則。
1.2.2.1 業務實體分析任務概述
在領域建模過程當中,更多地採用自底向上的方法,針對每個業務事件或報表,分析類圖片斷,而後再將這些片斷抽象,提煉,合併,造成全局的領域模型。
實體分析的產物有兩種可選模型:類圖,ER圖。推薦使用類圖。
1.2.2.2 類圖應用基礎與要點
》面向對象思想
》類的表示方法
》類之間的關係:關聯,泛化,組合。
》肯定類的主要職責:屬性和方法。
領域模型(類圖),是自底向上合併出來的。
領域模型應該遵循:拒絕實現細節,大類不拆分,子類不合並,同類不抽象。
領域模型:以面向對象的視角看待現實世界,經過類圖來描述事物之間的關係。所以主要工做是找出相關的類,以及他們之間的關係。
分析模型:分析模型是針對軟件系統分析,領域模型則偏重對業務分析。分析模型主要用到實體類,控制類,邊界類。
設計模型:設計模型將直接對編碼予以指導。
1.2.2.3 ER圖應用基礎
ER圖的優點在於更好地跟數據庫設計結合,缺點在於語義較類圖更弱一些。
》數據建模過程
1.2.3 角色與使用場景分析
用例分析技術,能更好地以用戶的角度,將系統看成一個黑盒子,瞭解並梳理需求,解釋如何使用系統(場景)。
1.2.3.1 用例分析技術概述
用例分析技術,包含兩個部分:用例圖,用例描述。用例圖是目錄,用例描述是封裝全部需求的形式。
1.2.3.2 參與者與用例
參與者是一種角色,能夠是人,能夠是其餘系統,能夠是硬件設備,也能夠是時鐘,但必定要是在系統以外。
參與者是直接使用系統的最終用戶,任何間接與系統相關的人員是StakeHolder,不是參與者。
1.2.3.3 用例圖
千萬不要爲了使用擴展,包含關係而使用他們。擴展用例建模一般都是優先級較低的事件。面向客戶的用例圖一般都不該該出現包含關係,這些事情應該是在面向開發團隊時才進行填充和概括的細節。
1.2.3.4 用例的來源
如何從需求中概括出用例呢?一般能夠採用兩種方法:自頂向下導出法,自底向上合併法。
》自頂向下導出法
就是從流程圖中派生出用例圖。而流程圖是經過劃分主題域,再從主題域標識業務事件,而後經過業務事件繪製出來流程圖。
拿到流程圖後,咱們首先能夠跟客戶進行邊界肯定和角色肯定,以得出表示系統邊界的用例圖。
1 邊界肯定。首先排除掉不直接使用系統的崗位。
2 肯定角色。對剩下的職責帶區進行角色化。
3 肯定用例。用例是從職責帶區中的業務活動中派生出來的。
4 繪製用例圖。有了以上分析,咱們獲得了角色,參與者,用例,就能夠繪製出用例圖了。
》自底向上合併法
對於一些中小項目而言,流程並不是涇渭分明,從流程開始梳理會比較困難,就適合採用自底向上合併法,從需求捕獲階段獲得的需求列表着手,合併出須要的用例。
1 收集原始需求。
2 肯定參與者。
3 合併用例。
4 繪製用例圖。
用例的注意事項:
1 用例圖的顆粒度取決於業務價值。
2 用業務動詞命名用例十分重要,不要在用新增xx,修改xx,刪除xx,查詢xx了。
3 採用先過後人的方式分析,而非先人後事。
1.3 週期二:肯定需求細節
這一階段的任務,是對上一階段產出的用例模型和領域模型進行細節填充。對於行爲需求的用例,咱們要填充事件流,包括:相關需求或功能點,界面原型,用例規則與約束。對於數據需求的領域類,咱們要填充字段與格式,包括字段信息,字段格式與規則,計算規則,結構規則。
1.3.1 肯定行爲需求的細節
行爲需求對應的是「人,事,物,接口」四大需求主線中的「事」,這也是軟件功能需求的主體內容。
1.3.1.1 用例的靈活運用
行爲需求能夠分爲四個類型:業務功能,報表功能,接口,技術支持。
1.3.1.2 用例描述模板
對於行爲用例來講,須要整理的內容有事件流,相關需求或功能點,界面原型,規則或約束四個方面。
事件流分析:場景和用例的關係,相似對象與類之間的關係,一個用例是對一組相似場景的抽象。而一個用例一般是一組事件流所構成。
1.3.1.3 業務用例與系統用例
業務用例描述的是全部業務操做,系統用例則只描述與系統相關的業務步驟。要警戒將系統用例寫成界面操做。
下面是機場checkin的業務用例與系統用例示範:
業務用例
很明顯,2,3,1,9都是跟系統無關的步驟,將他們去除後,就從業務用例獲得了系統用例。
系統用例
》建立業務用例的好處:避免開發層面斷章取義,而使系統步驟融入到業務場景中;提供業務優化的可能性;更好設置將來的拓展點。
》事件流描述中,應該保留主語。可使用表格或者文字的方式。
避免在用例事件流描述中出現實現細節,分支結構,循環結構。特別是不能出現多路分支結構。
1.3.1.5 界面原型
》要點:軟件需求規格里的用戶界面原型,是約束,建議,而非解決方案。需求分析人員也只能給用戶界面設計提供依據,而非設計。
》不要忽略交互。能夠採起動態原型的方式,也能夠用狀態圖表示界面的流轉。
》別讓界面掩蓋本質。
1.3.1.6 規則與約束
規則是在實現時應該考慮的東西,約束是對技術選擇時的限制條件。
》規則的類型:業務規則,數據規則,界面規則。
業務規則:與業務邏輯相關的規則。
數據規則:數據結構層面上的規則。好比長度,類型等。
界面規則:用戶界面相關的規則。好比什麼顏色的數據顯示不一樣的等級。
》規則的層次
數據與界面規則一般都是微觀規則,而業務規則卻一般涉及宏觀微觀等多種不一樣層次,所以在組織時須要注意其中的差異。
總之,對於規則與約束,有一個核心原則,就是「只寫針對本用例的內容」。
1.3.1.7 基於stakeholder利益分析的需求挖掘
1.3.2 肯定結構需求細節
若是說行爲需求從用例模型中得出,結構需求就是從領域模型中得出。咱們將從基本內容和常見盲區兩個角度來講明結構需求的細節填充。
1.3.2.1 基本內容
》領域模型的組織
從領域模型的組織角度來講,一般會首先按照主題域進行第一次分解,一個主題域對應一個領域模型,而後根據須要將各個主題域共性的領域類抽取出來,造成全局公共領域類模型。對於每一個主題域內的領域模型而言,涉及的領域類可能仍是不少,就能夠根據邏輯關係劃分爲不一樣的包,每一個包就是一個邏輯相關的領域類圖的片斷。接着對每一個片斷進行概述。就獲得如下層次:
在xx類中,咱們就能夠對每一個領域類作進一步描述了。一般都是從「數據窗口分析」,「數據組成與格式」,「派生數據的計算方法」三個角度進行描述。
》數據窗口分析
系統中的公共數據常常成爲工做交叉和衝突的地方,對於這種狀況,建議採用數據窗口的方式處理,即將公共屬性變成公共的,個性屬性仍然壓在各個模塊中。
》數據組成與格式
數據組成與格式包括:數據類型,如int,char,boolean等;長度精度等信息。組成格式,如2位字母,6位數字等。
》派生數據的計算方法
領域類中,還可能涉及一些並不是直接輸入的屬性,他們的值是經過計算得出的,例如訂單的總金額等。所以咱們還須要爲這些屬性生成規則。一般經過決策表或決策樹的形式來描述他們。
1.3.2.2 常見盲區
與結構需求相關的,還有一些相關的盲區。
》數據結構的特色
對於一個領域類而言,不一樣的屬性它們的重要性,穩定性,週期性都會影響到具體的開發決策,例如:主要字段與次要字段,穩定字段和不穩定字段,即時記錄與歷史記錄。
》數據使用特色
》非功能要求
1.3.3 週期二的產物
完整的用例描述,完整的領域類細節,界面流轉圖,頁面原型。
1.4 其餘需求分析
其餘需求包括:接口需求,全局性的非功能需求和全局性的設計約束。
1.4.1 接口需求
哪裏有分解,哪裏就有接口。當標識出接口以後,千萬不要談及接口的設計和實現,從需求的角度來講,接口的重點應該從使用者,內容與格式,設計約束與要求三個方面展開。
1.4.1.1 使用者
在描述接口使用者時,能夠從如下角度進行說明:
》使用者名稱,羅列出該接口的外部使用者。
》業務目的,說明使用者經過該接口實現什麼樣的業務。
》使用時機,說明使用者將在什麼場景中使用該接口。
》使用頻率,描述各種使用者調用該接口的頻率。
1.4.1.2 內容與格式
1.4.1.3 設計約束
對接口實現時必須考慮的約束條件或設計要求,內容比較普遍,例如協議格式要求,性能要求,環境限制等。
1.4.2 非功能需求的追蹤
1.4.2.1 質量特性分析
在組織非功能需求類型時,能夠參考相關的質量特性標準,其中最經常使用的有ISO/IEC 9126軟件質量模型 和 McCall軟件質量模型。也能夠根據本身項目的特色,關注重心來肯定。接下來咱們將介紹ISO/IEC 9126定義的6類21項質量屬性進行簡要分析。
》功能性
》可靠性
》易用性
》效率
》可維護性
》可移植性
1.5 小結
SERU方法的核心,就是從「事,物,人,接口」四個主線着手,沿着業務脈絡(業務主題域-業務事件/流程-業務活動-業務步驟)進行分解,構建(構件-流程圖-用例-事件流),實現需求分析。