在軟體技術蓬勃發展的現代,各種流程 Process 發展如雨後春筍般不斷湧現,像是:Agile/Scrum/Kenban 等等、以及您是不是曾聽說導入 Scrum 後,UML 就沒有用了的說法?誰說 UML 繪製的圖形都無法串到程式碼的實作的?本課程希望用比較新穎的 UML 分析概念帶大家進入一個不一樣的 UML 系統分析設計到實作殿堂。
在軟體開發技術蓬勃發展的現代,即便你使用 TDD 開發方法,因為你是使用 OO 的程式語言進行開發,所以不代表你不需要了解與洞悉基礎的 OOA (物件導向的系統分析) & OOD (物件導向的系統設計)。學習本課程可以幫助您打好軟體開發中最基本的 OOA 與 OOD。
如果說 DDD 或者 TDD 是招式、那麼 OOA/OOD 絕對就是內功,是基礎中的基礎、甚至基礎到可以說 OOA/OOD 就是蹲馬步,學習本課程後,可以幫助你學習到扎實的基本功,讓你之後學什麼開發方法 (像是:TDD/ATDD 或 DDD) 都比別人快。
課程中,我實際的帶著各位從無到有的 設計一個〔線上房屋貸款系統〕,從 系統分析/設計/撰寫程式 來講述 UML 的分析設計過程。您會在此課程中學到〔如何拿捏適當的需求並表現在圖形上?〕、〔繪圖如何恰到好處?〕、〔如何在 Scrum 下使用 UML〕等等、甚至你可以學習到透過 UML 來加速專案開發。
課程內,我將 UML 分析的一些思維帶入 MVP (Minimum Viable Product) 概念、與在 Scrum 進行的專案裡,我使用 User Story 搭配 Use Case 來使用,配合 UML 分析的黃金三角 (點到為止的概念),讓您可以學習到,如何使用 UML 也不至讓專案前期會花許多時間在繪圖上、甚至學習到在最短的時間內,繪製出恰到好處的模型。
若你正在學習 DDD (Domain-Driven Design),本課程絕對是你學習 DDD 的最佳跳板!因為 DDD 中要繪製好的領域模型,其基礎也都來自最基礎的 OOA/OOD
按一下 進入設定
# 反覆與漸進式模型,快速打造產品!
在軟體技術蓬勃發展的時代,Agile、Scrum、Kanban 各種流程發展不斷湧現,可是... 當實際進行開發時,又覺得使用者需求很難收集與管理?到了 SD 階段時變得容易發散?更不用說到了工程師在進行開發時,難以確保撰寫的東西是不是實際符合使用者需求?在快速發展下,我們被迫在短時間內確保團隊間能有效溝通且清楚傳遞需求,因此確保團隊溝通的需求與客戶認知沒有落差、程式碼是否與需求是一致的,是非常重要的課題!
而 UML 正好能解決此問題,在 UML 裡面所採用的是反覆式 (Iteration)、漸進式 (Incremental),也就是有錯必改、有誤就修,直到所有模型都貼近實際的需求為止。反覆與漸進式模型會利用幾個初步主要需求進行開發,以便快速建立初期版本的產品 (Minimum Viable Product)再交付給客戶,因為我們不可能一開始就完全清楚需求,但是透過 UML 的黃金三角關係,我們很容易抓出方向,之後實際進行時,再針對客戶的回饋來修正系統,這麼一來,我們便容易盡早的發現、並導正系統發展的方向,以便符合客戶預期。
# 透過不同的角度,看待問題並解決問題!
誰說不能在 Agile/Scrum 流程裡,使用 OOAD 與 UML 的?本課程希望用比較新穎的 UML 分析概念帶大家進入一個不一樣的 UML 系統分析設計到實作殿堂。在 Agile 與 Scrum 的概念中使用 UML,甚至在使用 TDD (測試驅動開發)開發方法時,除了透過 BDD (行為驅動開發)實例化需求外,在系統設計的切入點也使用 Use Case 來驅動 Domain Modeling 的設計,讓 UML 繪製的圖形也能串接程式碼!
課程中,會以一個實作案例「房屋貸款的線上申請系統」來講述 UML 分析過程,讓大家體驗從系統分析到實作的完整過程,在一天裡跑一個 Sprint,並將分析的結果透過 MDA (Model Driven Design) 來 Generate Code 之後,也真的撰寫程式,然後真的做出一個最小可行性產品MVP(Minimum Viable Product)的雛形,且培養具備不同角色的 View (軟體架構師、SA 系統分析師、SD 系統設計師、PG 程式設計師),在這樣的架構性思考下,你會發現更能夠以不同角度來看待開發問題、那麼會更能夠解決各種問題!
課程裡,將使用一個「線上房貸申請系統」為例子,帶著大家使用 Mind Map 擷取需求,接著使用 EA 進行 User Case 的基本分析,在新興的使用案例分析方法裡,搭配 User Story 來收集使用者需求,將 User Story 與 Use Case 合併起來,更容易瞭解客戶的需求,減降低需求傳遞的錯誤機率。
上完這堂課後,能增進自身分析、設計能力,並應用在架構設計,也提升自己在不同角色間的轉換思考、跳脫思維的能力,不被表象的問題給限制住!
另外,本課程與先前的實體課程相比增加了更多的內容,像是:
先前開過的實體課程連結可參考:Gelis - 程式設計訓練營 -決戰 OOAD 系列課程 - 使用 UML (第二梯)
從 UML 的兩大重心「使用案例圖」與「類別圖」來探討,透過 UML 的黃金三角分析方法,快速建立初期版本的產品 (MVP, Minimum Viable Product),UML 中的使用案例圖,幾乎可為 UML 中所有圖形的起點,如下圖所示,所有的其他圖型更是都由黃金三角支撐出來的。
使用 UML 分析的黃金三角

課程中,我除了會帶大家用 EA 繪製 Use Case、Domain Class Diagram、Sequence Diagram、Activity Diagram、State Diagram 外,並說明在實務上,如何使用穩健分析順暢的從類別圖到循序圖,並使用正三角形法與倒三角形法進行分析。
1. 正三角形法
所謂的「正三角形法」是在業界常見的一種方式,但是其實並不完整,因為只是用半套 UML 而已。

2. 倒三角形法
若是撰寫使用案例描述 Scenario 與包含操作屬性的類別圖,再加上包含操作的循序圖,那麼就是「倒三角形法」。

3. 循環星形法
事實上,應該是兩者搭配起來使用較為全面,稱作循環星形法,這也是目前業界常見的用法。
我是 Gelis,從事軟體專案開發相關工作已經 20 餘年(顧問工作 5 年),專案開發 15 年,目前任職資深 .NET 技術顧問,目前主要負責與 .NET 相關的開發、顧問與訓練工作。
我熱愛軟體工程、UML 系統分析與設計,擅長 OO 物件導向分析與設計外,也擅長將看似與程式碼無關的 OOA 與 OOD 的設計模型推導為實際程式碼設計,專精於 .NET 平台網頁 ASP.NET Web Form 與 MVC 開發與 WinForm 開發,領域包含了 WinForm、WPF 等。
主要負責軟體開發架構、流程的導入的顧問工作,主要核心價值在於在導入適當的開發平台 Platform 框架 Framework,配合 (Team Foundation Server, TFS) 產品與 ALM 的Scrum 流程,搭配自動化 Code-Review 並結合 Team Build 進行自動化測試,自動化部署 (Continuous Deployment, CD),並達到持續整合 (Cintinuous Integrated, CI),以提升開發團隊的效率與價值。
曾經連任七屆微軟最有價值專家 MVP (2011 ~ 2017),有個人的技術部落格 『Gelis 技術隨筆』,以記錄在技術上學習的新知與個人的研究發表。
部落格 (Gelis 技術隨筆):
http://gelis-dotnet.blogspot.tw
https://www.dotblogs.com.tw/gelis/
FB 社團 (軟體開發之路):
https://www.facebook.com/groups/361804473860062/
FB 粉絲團 (Gelis 的程式設計訓練營):
https://www.facebook.com/gelis.dev.learning/
我講授過的課程 SlideShare:
https://www.slideshare.net/GelisWu
Github:
如果您購買的是募資課程,請在課程的【簡介】中查看開課時間,募資課程將於開課時間所述日期開放同學上課。
若您購買的是一般課程(開放上課課程),則在購買完成後可以立即開始觀看。
所有線上課程皆不受時間限制,享無限次永久觀看!
老師您好,我覺得之後跟團隊開發專案應該會用到UML和SCRUM,但我主要是寫c++和python,請問適合上這堂課嗎? 謝謝
主要是寫機器人系統架構或新功能開發相關的
黃承奕 您好
本課程著重在『系統的(分析/設計)』面向,前面章節 1-3 章不管使用哪一種語言,都可以學習與在工作中銜接。
除了第四章會使用『網頁』來開發,這對於您使用 C++ 就會顯得毫無助益,不過若改用 Python 來銜接也是有機會,因為 Python 也是能夠開發網頁系統 ,只是我在 .NET Framework 所提及的 ASP.NET MVC 會對你比較沒有幫助就是了,不過如果您 Python 熟悉的話,自行切換為 Python+Django 也有機會銜接課程第 4 章節的實作內容唷。
也就是說,您可以採用我的『分層架構』,只是你改採用 Python+Django 來開發 MVC 的線上房貸網頁系統。
只是 MDA 的部分就幫不到您了,因為課程中的 Astah Professional 的 Templates 我只有撰寫 C# 的範例,不過由於 Any Code 非常強大,可以自由地讓你想產生什麼語言就產生什麼語言,您也是可以試著撰寫適合您的 Templates Scripting Language
詳細可參考我的文章:
http://gelis-dotnet.blogspot.com/2019/08/astah-professional-templates-scripting.html