核心工作流
組織要解決什麼問題?——業務建模
爲了解決組織的問題,新系統應提供什麼功能和性能?——需求
爲了提供功能,系統內部應該有什麼樣的核心機制?——分析
爲了滿足性能,系統的核心機制如何選定技術實現?——設計
需求目標是提升銷售,設計的目標降低成本。
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
序列圖和類圖的映射
序列圖中
消息的傳入:類的操作——責任
消息的傳出:類完成操作所需合作——協作
箭頭代表責任分配而非數據流動
責任分配
交互原則
- 專家原則——資源決定消息內容
- 老闆原則——由老闆發送消息給我
- 可視原則——只發消息給朋友
狀態圖
屬性值變化導致行爲發生變化——轉換
假設狀態圖是對的,序列圖錯在哪裏???
彩色建模