步驟:
???? 1。識別參與者(*)---在系統之外,透過系統邊界與系統進行有意義交互的任何事物.
????????????????????? 系統外---參與者不是系統的成分.
??????? 系統邊界---責任邊界,非物理邊界.(用戶和系統的接口).
??????? 系統邊界---直接與系統交互.(游客,旅行社,訂票系統----*旅行社是邊界*).
??????? 有意義交互---屬于目標系統的責任.
??????? 任何事物---人、外系統、外部因素、時間.
?參與者類:屬性---姓名:String,性別:Integer,電話:String,用戶名:String,密碼:String,首次登陸:Boolean
????????? 方法---驗證用戶名和密碼(),取參與者信息(),取未結帳訂單(),檢查是否第一次登陸().
??????? 地位:-----------------------??????????????????????????????????? ------------------------------------
???????????????????????????? \---------------------------------/
????????????? 識別用例之前重要????????????? 開始書寫用例文檔以后---不重要????? 測試部署階段---重要
?????? ?? 有助與識別用例-寧多勿少?????? 涉及的參與者太多????????????????? 需要從參與者的角度考慮
???? 2.識別用例(*)
?????? 定義:參與者使用系統達到某個目標.
?????? 用例要點:?可觀測---用例止于系統邊界(描述交互,而不是內在的系統活動)的。
??????????????????????? 結果值---用例是目標導向的.(系統的存在是因為:參與者有一些需要使用它來滿足的目標)
???系統執行---結果值由系統生成.(不同的擁護,得到不同的結果)
???由參與者觀測---業務語言(非技術語言),用戶觀點.
???一組用例實例---用例的粒度.
???? 注意:用例要有路徑,路徑要有步驟.而這一切都是"可觀測"的,最常犯的錯誤:粒度過細.
???? 常見錯誤:
????1.把交互的某個步驟當作用例.eg:會員---->輸入用戶名.
????2.把系統活動當作用例:???????????????? 建立數據庫連接
???????查詢訂單 ---/
????????????????????? 傳送sql語句
????????????????????????????????? 暫時無法判斷時,寧粗勿細
????3.四輪馬車的錯誤: "系統就是數據庫的增刪改查",這是常犯的錯誤,先關心數據庫,反而
????????????????????? 忽略了用戶的目的.
????4.crud(增、刪、改、查)掩蓋業務: (我的理解:有的用例超出了本身的功能范圍).
????-------------------------方法--------------------------------------------------
????5.如果CRUD不涉及復雜的交互,一個用例“管理**”即可.
????? 不管是crud,都是為了完成“管理“的目標.
????? 甚至很多種基本數據的管理都用一個用例表示.
????6.靈活處理CRUD: 管理員---------管理用戶----《extend》--------增加用戶.
??????????????????? 也可以把包含復雜交互的路徑獨立出去形成用例命名時盡量不要用CRUD詞匯.
??????? 最現實:業務人員提供素材,開發人員寫用例文檔.
?/*用例---用戶的觀點,功能---系統的觀點.*/
?
?3.書寫用例文檔(*)-----寫:可觀測的(eg:系統按照查詢條件搜索零件)、體現客戶利益的文字(這才是“需求”)
??用例模版:?用例編號,用例名,用例描述,參與者
????前置條件,后置條件,
????基本路徑:1。。。。。。(核心的核心:客戶最想看到、最關心的路徑).
????????????? 2。。。。。。
?????? 3。。。。。。
????擴展:2a.........(系統要處理意外)
?????????? 2a.........(參與者的選擇,另一條成功路線,系統進行驗證)
????補充說明
????待解決問題
?? 路徑交互步驟的描述:
??1.只書寫"可觀測"的(體現客戶利益的文字).
??2.使用主動語句.(eg:會員提交用戶名和密碼,系統驗證用戶名和密碼)
??3.句子必須以參與者或系統做主語.(eg:參與者****,系統****)
??4.程序邏輯的處理.
???a.判斷
???b.循環
??5.不要涉及界面細節.
?4.識別用例關系:(不要濫用用例關系)
??用例關系:---------------------<extend>------------------->擴展
??? 擴展:分離復雜部分和易變部分.(o--去城里(基本用例本身是完整的),o---上廁所(擴展用例,意外情況),當然不上廁所也能趕路).
??? 何時使用擴展關系:
????a.擴展路徑步驟多. b.擴展路徑內部還有擴展點--擴展之擴展
????c.擴展路徑容易變化--分離以"凍結"基用例.
??? ---------------------<include>------------------>包含
??? 包含:提取公共交互,提高復用.(基本用例路徑本身是不完整的(把上廁所考慮在內了,不上廁所就不完整了),包含用例)
???????? eg:o---下訂單-----------《include》--------->o---提供客戶信息.
??? 何時使用包含關系:
????a.某些交互步驟可以被多個用例復用.
????b.用例的交互步驟較多時,可以用Include簡化.
??? ------------------------------------------------>泛化
??? 泛化:同一業務目的的不同技術實現.
???????? eg:??????? o--識別用戶
????????????????????? /???? \
???? o--驗證口令???? o--掃描視往膜
??? --------------除此之外,不能有別的關系---------->
??? 注意:用例之間不能通訊.
???? 開發過程第0步,業務建模.
?5.對用例進行排序和分包?
??排序原則:
???以下情況的用例優先級最高:
????a.對類圖有重要影響.
????b.包含豐富的業務過程信息和線索.
????c.有開發風險、時間緊迫或功能復雜.
????d.涉及到重要核心技術或新技術.
????e.能直接產生經濟效益或降低成本.
????f.代表本系統的核心流程.
??按參與者分包,按主題分包,按開發團隊分包,按發布情況分包.
??*可以先按主題分包,主題內再按開發團隊和發布情況分包.
?補充需求規約:????????????????????????? 軟件需求
????????????????????????????????? |????????? |??????? |
??????? 非功能需求?? 功能需求?? 設計約束
??????????????? 非功能需求:可用性,可靠性,性能,可支持性.
??設計約束:用oracle數據庫平臺,用PB開發.........
???? 軟件必須符合ISO... 標準........
???? 本質上不是需求,只是從商業、行政、技術上的約束.
??? 下一步:
??需求<----->用例----->面向對象分析設計、結構化分析設計、其他方法、自己的方法.---->系統
???? 用例和oo
???? 1.“發明”與oo的環境.
???? 2.從外部actor的角度描述系統功能(和對象的消息類是).
???? 3.不暴露內部結構.
???? 4.oo設計的最好開始,但.....
???? 5.用例可以用在非oo的開發過程中.
???? 6.oo理論不需要懂得和使用用例.
我的qq:8201726 驗證:java ,愿你我共同面對所有的問題!
-------------------------------------類圖,我的理解---------------------------------------------------------------------------------------------------
?1.識別類及其屬性.
??a.閱讀需求文檔,抽取對應于業務實體或事件的名詞.
??b.將名詞進行分類、抽取出合適的類.
?2.識別類之間的泛化.
?3.識別類之間的聚合/組合.
?4.識別類之間的連接.
??
?
?
?