我首先繪製一個具有所有關係的類圖,並根據您的應用程序的要求僅實現必需的類。
您可以使用貧血的方法(屬性加getter和setters)來保持簡單並避免在同一步驟中編寫業務邏輯的步驟。使用貧血模型時,邏輯將進入相應的Service類。這樣你可以稍後考慮用例。
我知道有些人不喜歡這種做事方式,但它確實有助於維護並避免一些依賴性問題。
答到吞噬極樂世界的問題,下面:
在分析方面,從使用情況下(什麼),然後繼續到類圖(如何)聽起來像一個很好的經驗法則。就個人而言,之後我會做序列圖(何時和誰?),因爲您需要知道哪些進程/對象消息需要發送。 (除了Merise,RAD,RUP,Scrum等),UML只是模擬系統/項目的一種方式,而不是一種方法。只要有足夠的信息來完成任何圖表,就沒有任何東西阻止某人開始使用任何圖表。事實上,它們應該同時完成,因爲每個圖都是同一個系統/項目的不同視角。
總而言之,這取決於你如何進行分析。在我的學習期間,我學習了剛性瀑布方法,在開始生成一些代碼之前,您可以從頭到尾做完整的分析。然而,事情在實踐中可能會有所不同,因爲必須儘可能在最短的時間內生成工作應用程序。
例如,最近我介紹了一個Scrum方法,其中涉及創建一個網站,人們可以發佈他們的小說。由於時間有限,並且我們對應該達到的目標有清晰的認識,我們立即開始用骨骼類圖來表示domain model。然後從我們製作的一系列模擬屏幕中推導出用例。
從內存中,類是故事,章節,用戶和類別。最後一節課被淘汰,以支持更靈活的Tag類。正如您想象的那樣,由於應用了領域驅動設計和Java編程語言的特性,現有項目的完整類圖將會更加複雜。
這種方法可能被視爲馬虎。然而,像這樣的網站可以使用迭代過程在幾周內輕鬆完成,並且仍然設計得很好。迭代過程優於瀑布方法的優點是您可以隨時隨地調整需求。頻繁的需求變化是一個現實,因爲人們經常會改變主意,並且在每次迭代後都可以生成一個工作應用程序,從而讓人們可以繼續講課。
當然,當您向客戶展示項目時,使用UML圖表和一些模擬屏幕進行完整的分析將是更可取的,因此他們可以瞭解您提供的內容。這就是UML的用途。一旦你解釋了一些可視化約定,一個人應該能夠理解這些圖表。
最後,如果您處於您想要確定客戶需求的情況下,逐步建立您可以隨身攜帶的調查問卷可能是一個好主意。採訪一個人是唯一可以確定應用程序真正需要哪些概念/功能的方法,並且您應該回過頭來澄清某些方面。另一個提示是當你遇到你不熟悉的主題時,在網上做一些快速的研究。
在你的例子中,這將是通過解剖學的基礎知識。除此之外,這將幫助你決定模型應該包含什麼以及它應該具有什麼粒度(應該考慮哪一組器官?它需要多精確?只有器官需要建模或者應該分解成他們的成分如組織,細胞,化學成分等?)。
在你的例子中,你所觸及的是一個被稱爲上下文邊界的概念。消化系統中的語言和關係可能會非常不同,而不是說對神經系統,你可能確實有兩種不同的模型,序列和語言。 – Xian 2010-06-13 10:24:27