l
顯示具有 工商服務 標籤的文章。 顯示所有文章
顯示具有 工商服務 標籤的文章。 顯示所有文章

2024年3月10日 星期日

2024 新課程:【重構既有系統:邁向整潔架構實作班】

March 10 21:59~23:14

▲實作Clean Architecture需要了解的「設計模式」

 

前言

2023年七月Teddy開始每天錄製一則YouTube影片之後就荒廢了部落格寫作,這兩天有鄉民提醒Teddy:「blog也重要,文字也是好東西」。鄉民說得有道理啊,還是要分配點時間給blog才對。

2024年第一篇blog,就先打個廣告,介紹泰迪軟體的最新課程:【重構既有系統:邁向整潔架構實作班】。

***

課程介紹

Teddy在幾年前開過軟體重構的課,當初的想法是完整介紹Refactoring這本書,從Bad Smells出發,然後舉很多小例子說明不同的重構方法如何移除這些壞味道。這種重構方式固然有用,但Teddy總是覺得有點「小打小鬧」的感覺,對於整個系統的架構改善有限。就好像「你花了時間把家裡整理乾淨,但對於整個市容其實沒什麼影響,還是一樣中華民國美學:斑駁的外牆、陽台外推,以及到處都是鐵皮屋加蓋的違建。」

軟體架構層面的「大規模重構」,一直是很困難的一件事。去年Teddy與ezKanban團隊著手開發ezDoc:一個Living Documentation(活文件)系統,功能性需求開發完成之後,這幾個月花了很多時間在重構系統。一開始團隊也是採用傳統「由下而上」的重構方式,重構完成之後,可能是受到這幾年深入研究整潔架構(Clean Architecture)與領域驅動設計(Domain-Driven Design)的影響,Teddy突然有一個想法:「設計應是由上而下的過程,如果反過來先確定就是要把軟體系統重構成Clean Architecture,接著再依據Clean Architecture的架構指導原則並套用DDD戰術設計模式來重構系統,會有怎樣的結果?」

Teddy與ezKanban團隊把ezDoc的兩個主要功能:Living Readme(活自我說明檔)與Living Glossary(活字彙表)依據這個想法重構,期間Teddy另外找了Task List Kata這個很經典的重構範例來驗證這個做法,發現的確比傳統由下而上的重構方式要好很多。

Teddy整理了一套「整潔架構驅動重構方法(Clean Architecture-Driven Refactoring)」,就誕生了這個課程(還是要想辦法賺錢XD)。在這個課程中,Teddy以Task List Kata作為範例,逐步說明Teddy所發明的「整潔架構驅動重構方法」。這門課不使用紙本講義,Teddy會先引導學員思考一個核心的設計問題:「為什麼軟體架構重構很難?」,接著Teddy用實作的方式,藉由重構Task List Kata,把逐步將「整潔架構驅動重構方法」介紹給學員。在這個過程中,主要由Teddy在課堂上引導設計思考與重構程式碼給學員看,學員則採用mob programming的方式,以組為單位撰寫Teddy所安排的練習範例。

課程涉及Clean Architecture與領域驅動設計的以下內容:

  • 分層原則:將軟體架構分為四層。
  • 建立Entities Layer:透過移除基本型別依戀壞味道尋找物件,建立通用語言。並使用DDD戰術設計模式,遵守Aggregate Root設計原則。
  • 建立Use Cases Layer物件、區分Command Use Case與Query Use Case(在使用案例層讀寫分離)、依賴反轉、依賴注入、套用Repository、Controller、Presenter、DTO(Data Transfer Object)、Mapper等設計模式。。
  • 在Interface Adapters Layer形成Controllers、依賴注入、Presenter設計模式的使用方法討論。
  • Main Component,使用Spring Boot作為依賴注入框架。
  • 在Interface Adapters Layer增加Web Controllers (使用Spring Boot)。
  • 使用Persistent Object 以滿足跨層原則,重新設計Repository介面與Mapper。
  • 使用關連式資料庫,透過 JPA (Java Persistence API) 使用Spring Boot連結H2資料庫。

課程練習範例Task List Kata有C#, Go, Java, Kotlin, Python, Ruby, Scala, Typescript這幾種語言,上課練習Teddy用Java語言示範,團隊mobbing也是使用Java。使用不同語言的學員在了解「整潔架構驅動重構方法」並看過一次Java重構範例後,在課後可選擇自己熟悉的語言重新練習一次,將你所常用的語言範例版本重構成整潔架構。

▲Teddy套用Clean Architecture重構後的Task List Kata,包含測試案例由3個Java程式變成106個。

***

報名網址

本課程今年上半年兩個班次已經確定開課:

  • 2024年4月22、23日(一、二)
  • 2024年5月25、26日(六、日)


課程介紹與報名網址:https://teddysoft.tw/courses/refactor-to-ca/,有興趣的鄉民歡迎參考。

***

友藏內心獨白:一個課程四種享受—Refactoring、Clean Architecture、DDD與Teddy。

2020年12月2日 星期三

泰迪軟體2021年上半年開課時間表

Dec. 02 09:29~09:57

▲因應疫情Event Storming (事件風暴) 活動改用線上工具miro


2020年轉眼就要過去,又來到年底年底排課表的時間。今年因為新冠肺炎疫情的緣故,雖然泰迪軟體的生意沒有特別忙,但Teddy在下半年把主要空閒時間都供獻給ezKanban軟體的開發,持續增強【領域驅動設計與簡潔架構入門實作班】的課程深度與累積更多實作經驗。

以下是泰迪軟體2021年上半年課表:

Scrum敏捷方法實作班

  • 假日班:2月20、21日(六、日)。

領域驅動設計與簡潔架構入門實作班

  • 平假日班:1月15、16、17日(五、六、日)。

敏捷開發懶人包:物件導向技能

  • 平日班:2月23日(二)。

Design Patterns這樣學就會了--入門實作班

  • 假日班:3月13、14、20日(六、日、六)。

單元測試實作班

  • 假日班:3月27、28日(六、日)。

看板方法與精實開發實作班

  • 平假日班:5月8、9日(五、六)

Design Patterns這樣學就會了--進階實作班

  • 平假日班:5月28、29、30日(五、六、日)。

軟體重構入門實作班

  • 平假日班:5月14、15、16(五、六、日)。

例外處理設計與重構實作班

  • 平日班:6月22、23日(二、三) 。

***

以為下課程活動照片。


▼領域驅動設計與簡潔架構入門實作班


▼看板方法與精實開發實作班課程照片

螢幕截圖 2017-12-12 10.08.45


▼「單元測試實作班」課程照片。

螢幕截圖 2017-12-12 10.14.10螢幕截圖 2017-12-12 10.15.07


▼「敏捷開發懶人包:物件導向技能」課程照片。

***

友藏內心獨白:2021年還請鄉民們繼續支持。

2019年12月11日 星期三

【模式寫作工作坊】第二梯次

Dec.11 16:40~17:22


第一梯次的【模式寫作工作坊】於上11/30圓滿結束,原本配合AsianPLoP 2020的截稿日期,這個工作坊只預計舉辦一次。

12月初與主辦單位討論,以推廣中文模式寫作為出發點,把中文模式與主辦單位正式徵稿的活動脫鉤。主辦單位將會在AsianPLoP 2020安排一個下午的session,讓(台灣的)與會者體驗中文的 Writer's Workshop,在活動中討論用中文撰寫的模式.

Teddy預計徵求3~5篇中文模式在該session中討論,目前有三位參加第一梯次【模式寫作工作坊】的朋友有興趣嘗試。一直到明年二月底之前,Teddy會免費協助有意願者修改他們的作品。

離明年三月會議舉辦還有一點時間,Teddy計畫舉辦第二梯次的【模式寫作工作坊】。

***

工作坊簡介

模式寫作工作坊議程如下:

  • 介紹模式起源與PLoP研討會Writer’s Workshop進行方式。
  • 模式六大格式介紹,並透過閱讀模式來驗證模式格式的作用。
  • 模式寫作,介紹Pattern Language、確定寫作主題以及現場寫作與修改練習。

***

報名

  • 課程費用: 8,000元。活動由「台灣軟體工程學會」開立收據(無提供發票)。
  • 日期:2020年1/7和1/14日(禮拜二),19:00~22:00,共6小時。
  • 地點:泰迪軟體,台北市延平南路12號四樓
  • 備註:
    報名本工作坊之「本人」將可免費參加2020 Asian PLoP (報名費價值約6,000元),https://pl.csie.ntut.edu.tw/asianplop2020/

    ***

    友藏內心獨白:真的是最後一梯次了。

    2019年12月3日 星期二

    泰迪軟體2020年上半年開課時間表

    Dec. 03 16:43~17:28

    ▲領域驅動設計與簡潔架構入門實作班課程照片 (原Clean Architecture實作班)


    時間過得好快轉眼就要跟2019說Bye Bye,又到了年底排課表的時間。2020年Teddy預計新開一門【行為驅動設計與實例化規格實作班】課程,開課時間大約在2020年8月之後。

    以下是泰迪軟體2020年上半年課表,原本的【Clean Architecture實作班】,因為課程內容包含許多領域驅動設計(Domain Driven Design;DDD),所以Teddy將課名調整成【領域驅動設計與簡潔架構入門實作班】。

    Scrum敏捷方法實作班

    • 假日班:2月22、23號(六、日)。
    • 假日班:5月9、10號(六、日)。

    看板方法與精實開發實作班

    • 假日班:3月21、22號(六、日)

    Design Patterns這樣學就會了--入門實作班

    • 假日班:3月7、8、14號(六、日、六)。

      Design Patterns這樣學就會了--進階實作班

      • 假日班:4月24、25、26號(五、六、日)。

      敏捷開發懶人包:物件導向技能

      • 平日班:3月24(二)。

      領域驅動設計與簡潔架構入門實作班(舊課程名稱為:Clean Architecture實作班

      • 平假日班:2月14、15、16號(五、六、日)。

      單元測試實作班

      • 假日班:4月11、12號(六、日)。

      例外處理設計與重構實作班

      • 假日班:6月13、14號(六、日)。

        軟體重構入門實作班

        • 平假日班:4月17、18、19號(五、六、日)


        ▼看板方法與精實開發實作班課程照片

        螢幕截圖 2017-12-12 10.08.45

        ▼「單元測試實作班」課程照片。

        螢幕截圖 2017-12-12 10.14.10螢幕截圖 2017-12-12 10.15.07

        螢幕截圖 2017-12-12 10.15.26螢幕截圖 2017-12-12 10.15.51螢幕截圖 2017-12-12 10.16.10

        ▼「敏捷開發懶人包:物件導向技能」課程照片。

        螢幕截圖 2017-12-12 10.11.38

        ***

        友藏內心獨白:2020年還請鄉民們繼續支持。

        2019年3月6日 星期三

        最新課程:【Clean Architecture實作班】

        March 06 14:00~16:20


        今年泰迪軟體新規畫一門兩天課程:【Clean Architecture實作班】(簡潔架構實作班),這是去年「Clean Architecture嘴砲班」的進化版。今年的新課程,打嘴砲練練嘴上功夫還是必要的,此外增加了一個完整的實作練習,讓大家動動腦與練練手上功夫。

        關於這個練習題目Teddy規劃了超過一整年,去年設計好的題目經過實驗發現整體來說有點太難。於是今年Teddy從新設計一個練習範例,除了學習Clean Architecture以外,還同時兼顧TDD/BDD/SBE,並借用DDD(領域驅動設計)的Ubiquitous Language(通用語言)Event Storming(事件風暴)AggregateEntity來幫助學員分析domain model(領域模型)的物件邊界。

        今天簡短介紹一下課程範例。

        ***

        看板系統需求

        課程範例要開發一個看板系統(Kanban System),稱為cleanKanban。看板範例如下所示,由不同工作階段所組成,以下圖為例,有待辦事項、分析、實作、測試、可佈署等五個工作階段。

        ▲看板範例


        每個工作階段還可以分為子工作階段,以上圖為例,待辦事項細分成「想法」與「Top 6」,分析階段細分成「進行中」與「完成」。

        使用者將工作項目移入不同的工作階段,以視覺化方式追蹤工作進度。每個工作階段可以設定WIP上限(Work In Progress Limit),當工作項目已達WIP上限時,就不可以再拉入工作到該工作階段。

        最後,系統要計算工作項目在每個工作階段所停留的時間,稱為Cycle Time,以及Lead Time

        結論就是,cleanKanban系統要支援看板系統三原則:

        • 視覺化(工作流程)
        • 限制WIP
        • 管理工作流

        ***

        測試驅動開發/行為驅動開發

        Clean Architecture的重點之一就是將系統分層,如下圖所示,由內而外分別是:Entity(Domain Model)Use CaseInterface AdapterFramework and Driver

        ▲Clean Architecture,圖片來源在此


        課程採取測試驅動開發(TDD/BDD/SBE)方式,首先寫出規則(Specification)例子(Example)


        看到這裡鄉民們可能會想:「要用BDD或Specification by Example方法,需要使用Cucumber或SpecFlow工具嗎?

        答案是:可以使用但先不要用工具之前,先練習用腦,以免在學習過程中被工具綁住。本練習只需要最簡單的xUnit單元測試工具即可 。


        ▲用JUnit撰寫第一個失敗的驗收測試


        ▲因為要套用Clean Architecture,最後的驗收測試長成這樣,直接呼叫use case。

        ***

        事件風暴(Event Storming)

        Clean Architecture非常重視領域模型的建立,如果有學過物件導向分析與設計(OOAD)的朋友,可以沿用原本OOAD的技巧來建立領域模型。在這門課中,Teddy將介紹在領域驅動設計很流行的事件風暴,來協助建立領域模型與通用語言。

        ***

        專案結構

        最後開發出來的專案結構,反應Clean Architecture的三大原則:

        • 分層原則
        • 相依性原則
        • 跨層原則

        ***

        課程費用

        • 原價$22,000元。
        • 早鳥優惠: NT$18,900/人(2019年3月19日前報名並完成繳費。)
        • 2人團報:$17,900 元/人。
        • 嘴砲班舊生優惠:$9,900 元/人(僅限五名)。

        課程網址:http://teddysoft.tw/courses/clean-architecture/

        上課地點:台北市(近台北車站)。2019年4月19、20日(五、六),09:30-16:30,共12小時

        image

        ***

        友藏內心獨白:一個課程三種享受—Clean Architecture、TDD與DDD。

        2018年11月21日 星期三

        泰迪軟體2019年上半年開課時間表

        November 21 12:00~14:23

        螢幕截圖 2018-11-21 09.56.20

        ▲Scrum敏捷方法實作班課程照片


        時間過得好快轉眼就要跟2018說Bye Bye,又到了年底排課表的時間。以下是泰迪軟體2019年上半年課表,提供給鄉民們參考。2018年的新課程「敏捷開發懶人包:Clean Architecture嘴砲班」在明年將改版為兩天的「Clean Architecture實作班」,打嘴砲之餘也要不忘動手寫程式。


        Scrum敏捷方法實作班

        • 假日班:1月26、27號(六、日)。
        • 假日班:4月28、29號(六、日)。

        看板方法與精實開發實作班

        • 假日班:1月19、20號(六、日)

        Design Patterns這樣學就會了--入門實作班

        • 假日班:3月9、10、16號(六、日、六)。

          Design Patterns這樣學就會了--進階實作班

          • 假日班:5月3、4、5號(五、六、日)。

          敏捷開發懶人包:物件導向技能

          • 假日班:1月12(六)。
          • 假日班:5月18(六)。

          Clean Architecture實作班

          • 平假日班:4月19、20號(五、六)。

          單元測試實作班

          • 假日班:2月23、24號(六、日)。
          • 假日班:5月25、26號(六、日)。

          例外處理設計與重構實作班

          • 假日班:6月1、2號(六、日)。

            軟體重構入門實作班

            • 假日班:3月22、23、24號(五、六、日)


            ▼看板方法與精實開發實作班課程照片

            螢幕截圖 2017-12-12 10.08.45


            ▼「單元測試實作班」課程照片。

            螢幕截圖 2017-12-12 10.14.10螢幕截圖 2017-12-12 10.15.07

            螢幕截圖 2017-12-12 10.15.26螢幕截圖 2017-12-12 10.15.51螢幕截圖 2017-12-12 10.16.10

            ▼「敏捷開發懶人包:物件導向技能」課程照片。

            螢幕截圖 2017-12-12 10.11.38

            ***

            友藏內心獨白:2019年也要繼續努力。

            2018年8月10日 星期五

            【敏捷開發懶人包:Clean Architecture嘴砲班】九月平日班首發團招生中

            August 10 14:00~15:20

            螢幕截圖 2018-08-10 15.19.07


            2018年最新課程

            俗話說「水清無魚、嘴賤無敵」,誰說嘴砲不能當一位好工程師?!對於身為技術主管或有志成為技術主管的你,沒時間寫code卻不能不跟上最新軟體架構潮流。

            你的需求Teddy看到了,經由Teddy濃縮再濃縮、提煉再提煉的【Clean Architecture嘴砲班】,最適合沒時間深入瞭解的你。由Teddy為你展示Clean Architecture的日月精華,再一起透過最後的精選Clean Architecture專案設計與程式碼評論練習,帶你邁向說得一口好程式的主管行列XD。

            ***

            課程大綱。

            • 軟體架構的定義與目的。
            • 從範例學整潔架構。
            • 整潔架構三原則:
              • 首部曲:分層原則。
              • 二部曲:相依性原則。
              • 三部曲:跨層原則。
            • 邁向Clean Architecture。
            • 嘴砲實戰練習:
              • 精選數個網路上實作Clean Architecture之範例專案,讓學員實際練習評論這些專案的架構設計。
              • 實作細節討論。
            • 回顧。

            ***

            課程效益

            • 一日之內掌握《Clean Architecture》(中文版《整潔的軟體設計與架構》)這本書的重點,讓別人誤以為你已經看完了整本書  為日後深入學習奠定基礎。
            • 了解架構審視(architecture review)所需關注的焦點。
            • 應用分層原則、相依性原則、跨層原則於自己的軟體開發專案中。
            • 透過多個clean architecture 專案的architecture review與code review實際演練,強化嘴砲 架構分析能力,

            ***

            課程費用

            • 原價NT$11,000元。
            • 首發團早鳥優惠: NT$8,900(2018年8月22日前報名並完成繳費)
            • 首發團2人團報,每人只需:NT$7,900。

            地點:台北市(近台北車站)。上課日2018年9月4日(週二) 09:30-16:30,共六小時 。

            image

            ***

            友藏內心獨白:意圖使人家覺得自己好棒棒。

            ***

            相關文章閱讀

            2017年12月12日 星期二

            泰迪軟體2018年上半年開課時間表

            December 12 08:50~10:22

            螢幕截圖 2017-12-12 10.08.45

            ▲看板方法與精實開發實作班課程照片


            明年泰迪軟體預計會有三個新課程,分別是:

            • Agile Retrospective Workshop:自省會議(retrospective)是敏捷開發中用來落實持續改善的一項重要機制,本工作坊將介紹多種有用且有趣的自省會議進行方式,課程結束後可立即回團隊中使用。適合對象為Scrum Master、敏捷團隊成員、主管。
            • 敏捷產品規劃實作班:敏捷開發是一種價值驅動的開發方法,如何定義價值、安排與管理產品功能的開發順序與相依性,一直是Product Owner、產品經理、主管、團隊成員與Scrum Master所關心或困擾的議題。本課程介紹影響地圖與用戶故事地圖這兩種方法,用來協助產品規劃與管理。
            • 行為驅動開發入門實作班:行為驅動開發(Behavior-Driven Development),或稱為實例化規格(Specification By Example),可以協助團隊交付正確軟體並產生規格與程式碼一致的活文件。本課程將介紹如何撰寫有效的可執行規格文件,並透過實際案例貫穿行為驅動開發的重要活動。


            對課程有興趣的朋友可以訂閱最新課程通知」,課程開放註冊時會通知各位。

            ***

            以下是泰迪軟體2018年上半年課表,提供給鄉民們參考。

            新課程 Agile Retrospective Workshop

            • 假日班:2月25號(六)。

            新課程敏捷產品規劃實作班

            • 假日班:3月31、4月1號(六、日)。

            新課程行為驅動開發入門實作班

            • 平假日班:6月1、2號(五、六)。

            Scrum敏捷方法實作班

            • 【台北】假日班:1月27、28號(六、日)。
            • 【台中】平假日班:2月02、03號(五、六)。
            • 【台北】假日班:4月28、29號(六、日)。

            看板方法與精實開發實作班

            • 假日班:3月24、25號(六、日)

            Design Patterns這樣學就會了--入門實作班

            • 假日班:3月3、4、10號(六、日、六)。

              Design Patterns這樣學就會了--進階實作班

              • 假日班:05月04、05、06號(五、六、日)。

              敏捷開發懶人包:物件導向技能

                • 假日班:02月24(六)。
                • 假日班:05月26(六)。

              單元測試實作班

                • 假日班:03月16、17號(五、六)。
                • 假日班:06月23、24號(五、六)。

              例外處理設計與重構實作班

              • 假日班:06月09、10號(六、日)。

                軟體重構入門實作班

                • 假日班:05月12、13、19號(六、日、六)


                ▼「單元測試實作班」課程照片。

                螢幕截圖 2017-12-12 10.14.10螢幕截圖 2017-12-12 10.15.07

                螢幕截圖 2017-12-12 10.15.26螢幕截圖 2017-12-12 10.15.51螢幕截圖 2017-12-12 10.16.10


                ▼「敏捷開發懶人包:物件導向技能」課程照片。

                螢幕截圖 2017-12-12 10.11.38

                ***

                友藏內心獨白:感謝舊雨新知持續支持。

                2017年11月15日 星期三

                【敏捷開發懶人包:物件導向技能】12月假日班

                November 15 12:19~13:35

                螢幕截圖 2017-11-15 12.34.12


                問題

                10月份在上【單元測試這樣學就會了實作班】有一位學員問了一個問題…

                學員:我的待測程式(System Under Test;SUT)呼叫某個Google API,這個API是需要依據呼叫次數計費的。一開始我想要用Mock Object去mock Google API,後來發現這個Google API太複雜,很難用mock object去處理。後來我還是想了一種方法去測試SUT,但我想請問你對於這個問題有沒有什麼建議?

                在Teddy發表自己的看法之前,鄉民們有沒有什麼好建議?

                ***

                測試即設計,設計即測試

                這個問題可以從測試設計這兩方面來思考,從測試的角度,要做到單獨測試(test in isolation),可以用測試替身(Test Double)來取代相依元件。在這個例子中,相依元件就是Google API。問題來了,對於非常複雜的相依元件,不容易用直接用測試替身去取代,除非網路上已經有人寫好相同的測試替身可以直接拿來使用,否則自幹StubFake都需要花費不少心力。

                舉個例子,幾個月前Teddy用Java Mail API撰寫寄送郵件的程式,遇到與這位學員類似的問題。Teddy可以選擇用mock object來提供假的Java Mail的Session或Transport物件,但覺得有點太瑣碎後來找到一個用Java開發的in memory的mail server—greenmail,改用它來做測試(等於從mock改成用Fake)。

                無論是用哪種測試方法,只要待測程式直接相依於一個複雜的外部元件,都會讓測試變得更複雜。

                ***

                如果可以從設計上動手腳,這個問題應該可以簡化許多。原本的設計SUT直接相依於底層的Google API,這種設計違反了相依反倒原則(Dependency-Inversion Principle)。只要把原先的設計改一下,變成下圖這樣子,將SUT原本直接呼叫Google API所需要介面抽離出來,SUT只相依於這個介面。之後再設計一個Adapter來實作這個介面,實作的方式則可以呼叫Google API。

                螢幕截圖 2017-11-15 13.08.57


                如此一來,要用假的實作來欺騙SUT就變得簡單許多。

                ***

                迭代與增量的過程

                要變成軟體開發高手,不應該將每種技能單獨切開來看:需求就是需求、架構就是架構、設計就是設計、實作就是實作、測試就是測試、維護就是維護。不對,因為這些技能,或者說開發活動,彼此互相影響,設計的好可以互相提攜,設計的不好則是互相「帶賽」。

                學習的過程應該是一種迭代與增量的過程。舉個例子,有人說,學好物件導向設計原則就可以不用管設計模式,也有人說學會設計模式就自然懂物件導向原則。這兩者應該是相輔相成,而不是可以誰取代誰。學一些物件導向原則有助於理解設計模式,看了設計模式有助於知道物件導向原則應用的各種不同情境(Context)。

                同理,設計能力越好,測試能力也越好,反之亦然。整個開發流程是一個End-To-End的價值鏈,任何一點太弱都會成為開發的瓶頸。

                ***

                打好基礎—物件導向技能

                擷取

                敏捷開發懶人包:物件導向技能課程設定目標是希望鄉民們在找工作面試的時候,如果面試官問到物件導向技術方面的問題,能夠具備輕鬆回答的能力。另一方面也為學員的物件導向軟體設計能力打下良好的基礎,對於以後學習設計模式、軟體測試以及軟體架構都有很大的助益。

                課程內容依據學員每次上課的回饋稍加調整,對於下列人士特別有效:

                • 寫了多年的C程式,突然被叫去學Java、C#或是開發App,不知道如何著手用物件導向觀念作設計。
                • 寫了多年物件導向程式,但不確定自己是否用正確的方法使用它。
                • 想知道有沒有比較好的方式可以設計物件介面與分配責任。
                • 軟體設計如何有彈性地應付改變?
                • 物件導向分析與設計到底在講什麼東東?
                • 我沒有時間與耐心慢慢學會以上這幾個問題。


                ▼課程照片

                屏幕截图 2017-03-31 09.54.10

                Teddy挑選以下幾個最常使用的重要主題加以介紹,快速幫學員打底,補充身體所缺乏的「物件導向養分」:

                • 物件導向基礎觀念
                  • 封裝、多型、繼承
                  • 耦合、內聚
                  • 介面、委託、聚合
                  • 物件導向與程序導向之優缺點比較
                • 依合約設計(Design By Contract)
                  • 為什麼防衛式程式設計不好?
                  • 前置條件、後置條件、類別不變量
                  • 違反合約:例外處理機制
                  • 合約與繼承
                  • 依合約設計(DBC)與測試驅動開發(TDD)比較
                • 物件導向設計原則這樣聽就懂了
                  • S.O.L.I.D.五大原則
                • 物件導向分析與設計
                  • 問題敘述
                  • 環境圖
                  • 分析模型
                  • 設計模型
                • 實例討論

                上課日12月9日(週六) 09:30-14:30,共六小時。

                image

                ***

                友藏內心獨白:基礎功還是很重要。