軟件需求分析知識點

核心工作流

組織要解決什麼問題?——業務建模

爲了解決組織的問題,新系統應提供什麼功能和性能?——需求

爲了提供功能,系統內部應該有什麼樣的核心機制?——分析

爲了滿足性能,系統的核心機制如何選定技術實現?——設計

需求目標是提升銷售,設計的目標降低成本。

UML

UML的統一

開發人員喜歡畫“草圖”,是以形式的粗陋,遮掩內容的粗陋。

過程改進(戰術)需要技能(技術)的支撐,所以需要UML作爲技能(技術)。

UML的14種圖

用例圖

描述結構的:類圖、對象圖、組件圖、部署圖、包圖、組合結構圖

描述行爲的:序列圖、通信圖、狀態圖、活動圖、交互概述圖、時間圖

總則圖

願景

願景是在老大看來,引進這個系統的目的。

願景必須來自老大。

願景必須指出度量的指標。

願景描述的例子:

  • 減少採集數據所花費的時間
  • 提高製作動畫的速度
  • 縮短訂單的處理週期

不是願景的描述(通常是解決方案或功能而不是願景):

  • 建立一個CRM系統
  • 提供在線訂機票功能
  • 能夠進行風險評估

業務建模

選定願景要改進的業務組織

組織可以是正式的也可以是非正式的。

某通信公司要做TL9000的貫標工作,需要開發一個系統來管理貫標事物,如果要做業務建模,研究對象選什麼組織比較合適?——貫標工作組

要做一個幫助中小企業發佈信息的網站,想通過業務建模來獲取需求,如何選擇適當的組織來研究?——中小企業

要做一個助威設備,讓李宇春歌迷更好地支持李宇春,如何選擇適當的組織來研究?——玉米

業務用例圖和業務序列圖

從外部看:價值的集合——業務用例圖。

從內部看:系統的集合——業務序列圖。

業務執行者:在組織之外和組織交互的人羣或組織。

業務工人:在組織內部和組織交互的人。

業務實體:在組織內部和組織交互的非人實體。

業務工人和業務實體可以相互取代責任。

業務用例描述的是組織爲業務執行者提供哪些價值。

用活動圖和序列圖來詳述業務用例。

  • 活動圖往往只表現動作。
  • 序列圖強迫思考背後的目的。

在業務序列圖中

  • 消息的名字——責任和目的。A請求B做某事。

  • 消息的方向——責任委託,不是數據流動。

業務流程的改進點

  • 改善信息流轉
  • 封裝複雜的邏輯

阿布思考法:先不考慮資源的限制,得出完美方案。然後根據現有資源去模仿山寨。

需求

系統用例圖

系統執行者

  • 在系統外,與系統作有意義交互的系統
  • 代表了功能需求
  • 與重要無關

什麼時候Windows算執行者?調用驅動程序的時候。

特別的外系統:時間

“非人”執行者會越來越多

用例的獨特優勢:演員與觀衆分開。系統執行者是演員,涉衆是觀衆。

主執行者和輔執行者

用例是能賣的價值:對於ATM機,登錄不是用例,取款和查詢餘額纔是用例。

用例多大(粒度)——期望、契約、承諾

業務序列圖幫助理清責任。多少個箭頭就有多少個用例。

研究對象改變,用例也隨之而變。

最常犯“粒度”錯誤:把步驟當作用例。

需求是不“複用”的,“複用”的是設計。

書寫用例文檔

總原則:如果涉衆不能理解和驗證,它就不是需求(如果刪掉它,會不會有涉衆的正當權益受侵害?)

同樣的目標,不同的涉衆利益,會有不同的過程。

用例要平衡涉衆之間的利益。

涉衆經常來自於當事人、上游、下游、操作對象的主人……

交互四步曲:請求、驗證、改變、迴應。

用例書寫應該可理解可驗證(說人話)

  • 錯:系統建立連接,打開連接,執行SQL語句,從“零件”表查詢……
  • 對:系統按照查詢條件搜索零件

什麼時候需求裏可以出現SQL字樣?做DB工具的時候;老大要求實現的手段的時候。

書寫的時候主語只能是執行者或系統。

書寫的時候不要涉及界面組件。像這些是不對的:會員從下拉框中選擇類別;會員在相應的文本框中輸入查詢條件,會員點擊確定按鈕。在寫路徑步驟的時候,要問一下自己“不這樣行嗎”?

補充約束可以直接放在用例中,也可以單獨集中到另外的文檔,從用例文檔指向。

  • 字段列表
  • 業務規則
  • 非功能需求:可用性、可靠性、性能、可支持性
  • 設計約束

識別用例的關係

  • 擴展:分離擴展路徑。擴展路徑是一定會必須執行的。通常是一個用例有多個擴展路徑。

  • 包含:提供公共步驟集合,便於複用。被包含的步驟不一定被執行。通常是多個用例包含一個可以複用的步驟

  • 泛化:統一業務目的的不同技術實現

需求啓發

需求工程師綜合不同涉衆的利益編出需求。涉衆無資格、無責任提供需求。需求啓發的時候,交流內容聚焦於涉衆利益。

客戶看不懂UML怎麼辦?客戶不接受用例文檔怎麼辦?模型和視圖分離,與客戶交流的形式採用視圖。

如果涉衆直接給出需求怎麼辦?只當作材料,供需求過程中參考和提煉。

需求啓發技術:研究資料、問卷調查、訪談、觀察、研究競爭對手。

涉衆代表必須名副其實。涉衆代表 != 部門主管。應該選擇經驗豐富的涉衆(老師傅型的,系統就是爲了學習他的經驗)。

研究競爭對手

類型(左右劃線)

  • 防禦戰:領先者完善自己,進攻另外的領域(Google vs Google,微軟 vs 微軟)
  • 進攻戰:攻擊領先者強勢中的弱點(Compaq vs IBM,Nokia vs Motorola)
  • 側翼戰:在無人區發動突擊(各種創新)
  • 游擊戰:緊緊守住小塊市場(地區報紙,小區商店)

攻擊優點背後不可更改的缺陷。比如麥當勞定位於兒童,風格活潑。此風格無法有效覆蓋成熟人羣,Burger King就定位於11歲以上的紳士,以獲取市場。

  • 老牌——陳舊
  • 市場佔有率高——不能爲每個客戶精心服務
  • 聰明——不穩重
  • 有錢而且帥——花心

分析

分析:提煉核心域知識

設計:添加非核心域知識

人腦對機理的把握度是有限的,所以必須分解機理。面向對象分解爲對象的協作,面向過程是功能分解。面向對象的分解比面向過程的分解更好是因爲人腦更容易把握。

類的關係

  • 泛化(靜態)
  • 關聯(靜態)
  • 依賴(動態)

泛化是集合之間的關係,關聯是個體之間的關係

識別關聯

  • 連接(直線)
  • 聚合(空心菱形):整體與部分的生命週期不同
  • 組合(實心菱形):整體與部分的生命週期一樣

考慮的出發點:責任分配

出題:根據一段文字畫類圖。練習P10

序列圖和類圖的映射

序列圖中

消息的傳入:類的操作——責任

消息的傳出:類完成操作所需合作——協作

箭頭代表責任分配而非數據流動

責任分配

交互原則

  • 專家原則——資源決定消息內容
  • 老闆原則——由老闆發送消息給我
  • 可視原則——只發消息給朋友

狀態圖

屬性值變化導致行爲發生變化——轉換

假設狀態圖是對的,序列圖錯在哪裏???

彩色建模

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章