課程費(fèi)用

5800.00 /人

課程時長

2

成為教練

課程簡介

一個背景:軟件產(chǎn)品化
一個中心:可擴(kuò)展設(shè)計(jì)
一套實(shí)踐:拉通需求、設(shè)計(jì)和代碼,讓“需求的變更”變成“代碼的擴(kuò)充”

目標(biāo)收益

一個背景:軟件產(chǎn)品化
一個中心:可擴(kuò)展設(shè)計(jì)
一套實(shí)踐:拉通需求、設(shè)計(jì)和代碼,讓“需求的變更”變成“代碼的擴(kuò)充”

培訓(xùn)對象

1.想聽架構(gòu)課程的所有學(xué)員,包括架構(gòu)師、技術(shù)經(jīng)理、開發(fā)高手、開發(fā)骨干
2.想從重復(fù)做項(xiàng)目,過渡到做產(chǎn)品的團(tuán)隊(duì)

課程大綱

Big Picture——產(chǎn)品化:誤區(qū)與真相 產(chǎn)品化,就是死磕“可擴(kuò)展”
? 可擴(kuò)展的實(shí)質(zhì):需求有變更,代碼可方便擴(kuò)充
? 遠(yuǎn)離代碼不行:代碼可擴(kuò)充?架構(gòu)設(shè)計(jì)是條件,詳細(xì)設(shè)計(jì)是關(guān)鍵

成功的兩個條件和兩個關(guān)鍵
? 【條件一】將產(chǎn)品擴(kuò)展壓力,捕捉為需求
? 【條件二】架構(gòu)要穩(wěn)定,即代碼擴(kuò)充時架構(gòu)不變
? 【關(guān)鍵一】模塊間接口是隔離模塊、使模塊可擴(kuò)展的關(guān)鍵
? 【關(guān)鍵二】模塊實(shí)現(xiàn)是否重用與可變分離,是第二個關(guān)鍵
【需求篇】 產(chǎn)品擴(kuò)展壓力,如何盡早捕捉為需求?

設(shè)計(jì)產(chǎn)品化軟件,洞察需求變更的幾點(diǎn)規(guī)律
1. 什么需求沒變?
2. 什么需求在變?
3. 分析和識別需求變更的實(shí)際技巧


設(shè)計(jì)產(chǎn)品化軟件,可這么加強(qiáng)需求文檔
1. 分析: 《SRS》案例一 vs. 《SRS》案例二
2. 練習(xí):學(xué)員將需求的變更,定義到這兩份文檔中
主要收獲:體會《SRS》的變更包容力不同
主要收獲:長期以來“輸入-處理-輸出”式需求的弊病
主要收獲:專業(yè)的話,用例技術(shù)這么用

分析、識別需求變更實(shí)戰(zhàn)
1. 小組任務(wù):應(yīng)用上述技巧,分析和識別功能變更
2. 小組提交:xxx組《用例圖 + 用例規(guī)約》
3. 小組對標(biāo):老師提供的《用例圖 + 用例規(guī)約》
【架構(gòu)篇】 為支持?jǐn)U展,產(chǎn)品化的架構(gòu)必須穩(wěn)定!
設(shè)計(jì)師劃分模塊時,代碼結(jié)構(gòu)的全局劃分方法
1. 從模式開始——巧妙的“五橫一縱”分層模式
2. 模塊劃分——覆蓋上下文圖定義的接口需求
3. 模塊劃分——覆蓋功能樹、用例定義的功能需求
3.1. 起步:分析用例規(guī)約,識別實(shí)現(xiàn)用例需要哪些類
3.2. 后續(xù):協(xié)作設(shè)計(jì),即用序列圖、協(xié)作圖串起這些類
3.3. ……即運(yùn)用用例驅(qū)動設(shè)計(jì)思維

專項(xiàng)練習(xí)
1. 用例驅(qū)動
2. 到底是“用例?模塊?類”還是“用例?類?模塊”

設(shè)計(jì)師劃分模塊時,注意幾個基本原則
1. 通用-專用分離:提煉應(yīng)用無關(guān)的Library、或選擇三方庫
2. 通用-專用分離:機(jī)制與策略分離,開發(fā)或選擇Framework
3. 隔離外部交互:僅UI層“知道”操作細(xì)節(jié)和展現(xiàn)格式
4. 隔離外部交互:僅SI層“知道”和外部系統(tǒng)通信的細(xì)節(jié)
5. 隔離外部交互:僅DM層“知道”數(shù)據(jù)存儲格式

設(shè)計(jì)師劃分模塊時,可參考的優(yōu)秀范例一則
1. 著名開源產(chǎn)品套件——Mumble
主要收獲:模塊的劃分、通用庫的提煉、三方框架…

實(shí)戰(zhàn)演練
1. 任務(wù):模塊劃分,必須覆蓋代碼結(jié)構(gòu)全局、不能漏模塊
2. 貫穿案例推進(jìn)……
【詳細(xì)設(shè)計(jì)上】 承載產(chǎn)品功能的代碼模塊,重用與可變分離!
設(shè)計(jì)師設(shè)計(jì)模塊時,利用好OO Package結(jié)構(gòu)規(guī)律
1. 提供中心控制類,不要暴漏一堆小類
2. 接口類與實(shí)現(xiàn)類分離
3. 通用實(shí)現(xiàn)類與擴(kuò)展實(shí)現(xiàn)類分離
4. ……


如何應(yīng)用上述結(jié)構(gòu),包容需求變更
1. 分析需求變更,擴(kuò)充/增加/改變 用例規(guī)約
2. 分析對設(shè)計(jì)的影響
a) 增加了Optional Feature (最常見)
b) 改變了Function Point
c) 改變了Process Flow
3. 如何設(shè)計(jì)合理的OO Package支持上門三種變更

設(shè)計(jì)師設(shè)計(jì)模塊時,可參考的優(yōu)秀范例二則
1. 一個通用庫——類的組織
主要收獲:接口分離、提供中心控制類、可擴(kuò)展支持
2. 著名開源產(chǎn)品——類的組織
主要收獲:抽象領(lǐng)域概念的提煉、可擴(kuò)展支持

過關(guān)演練
1. 分析材料,熟悉設(shè)計(jì)要求
2. 設(shè)計(jì)一個通用模塊,必須可擴(kuò)展……
【詳細(xì)設(shè)計(jì)下】 設(shè)計(jì)松耦合、可擴(kuò)展的模塊接口 設(shè)計(jì)師設(shè)計(jì)接口時,考慮的三件事兒
1. 技術(shù)選擇:接口設(shè)計(jì)容易?做漂亮最難!
2. 機(jī)制選擇:調(diào)用/回調(diào)/同步/異步/輪詢/超時
3. 格式定義:函數(shù)風(fēng)格 vs.報(bào)文或消息風(fēng)格

設(shè)計(jì)師設(shè)計(jì)接口時,可參考的優(yōu)秀范例幾則
1. 某通用產(chǎn)品——漂亮的封裝、方便的配置
主要收獲:圍繞Domain Type定義模塊的核心接口
主要收獲:在核心接口基礎(chǔ)上,可定義便捷接口
注?英文術(shù)語為Core Interface、Convenience Interface
2. 某平臺接口分析——既能跨平臺又方便調(diào)用?
主要收獲:跨平臺協(xié)議 + 便于二次開發(fā)的API
1. MFC、Swing等API設(shè)計(jì)對比——更靈活的接口風(fēng)格
主要收獲:Message在接口設(shè)計(jì)中的作用
主要收獲:Callback回調(diào)、及“注冊-回調(diào)”接口機(jī)制

設(shè)計(jì)師設(shè)計(jì)接口時,這些經(jīng)驗(yàn)可以用
1. 基于代碼:專項(xiàng)練習(xí)一
2. 基于代碼:專項(xiàng)練習(xí)二
3. 基于代碼:專項(xiàng)練習(xí)三
4. 原則與“坑”總結(jié)

實(shí)戰(zhàn)演練
1. 任務(wù)1:接口的命令化(Command)支持可擴(kuò)展
2. 任務(wù)2:讓接口包含回調(diào)(Callback)使模塊通用化
3. 貫穿案例設(shè)計(jì)推進(jìn)……
Big Picture——產(chǎn)品化:誤區(qū)與真相
產(chǎn)品化,就是死磕“可擴(kuò)展”
? 可擴(kuò)展的實(shí)質(zhì):需求有變更,代碼可方便擴(kuò)充
? 遠(yuǎn)離代碼不行:代碼可擴(kuò)充?架構(gòu)設(shè)計(jì)是條件,詳細(xì)設(shè)計(jì)是關(guān)鍵

成功的兩個條件和兩個關(guān)鍵
? 【條件一】將產(chǎn)品擴(kuò)展壓力,捕捉為需求
? 【條件二】架構(gòu)要穩(wěn)定,即代碼擴(kuò)充時架構(gòu)不變
? 【關(guān)鍵一】模塊間接口是隔離模塊、使模塊可擴(kuò)展的關(guān)鍵
? 【關(guān)鍵二】模塊實(shí)現(xiàn)是否重用與可變分離,是第二個關(guān)鍵
【需求篇】 產(chǎn)品擴(kuò)展壓力,如何盡早捕捉為需求?


設(shè)計(jì)產(chǎn)品化軟件,洞察需求變更的幾點(diǎn)規(guī)律
1. 什么需求沒變?
2. 什么需求在變?
3. 分析和識別需求變更的實(shí)際技巧


設(shè)計(jì)產(chǎn)品化軟件,可這么加強(qiáng)需求文檔
1. 分析: 《SRS》案例一 vs. 《SRS》案例二
2. 練習(xí):學(xué)員將需求的變更,定義到這兩份文檔中
主要收獲:體會《SRS》的變更包容力不同
主要收獲:長期以來“輸入-處理-輸出”式需求的弊病
主要收獲:專業(yè)的話,用例技術(shù)這么用

分析、識別需求變更實(shí)戰(zhàn)
1. 小組任務(wù):應(yīng)用上述技巧,分析和識別功能變更
2. 小組提交:xxx組《用例圖 + 用例規(guī)約》
3. 小組對標(biāo):老師提供的《用例圖 + 用例規(guī)約》
【架構(gòu)篇】 為支持?jǐn)U展,產(chǎn)品化的架構(gòu)必須穩(wěn)定!

設(shè)計(jì)師劃分模塊時,代碼結(jié)構(gòu)的全局劃分方法
1. 從模式開始——巧妙的“五橫一縱”分層模式
2. 模塊劃分——覆蓋上下文圖定義的接口需求
3. 模塊劃分——覆蓋功能樹、用例定義的功能需求
3.1. 起步:分析用例規(guī)約,識別實(shí)現(xiàn)用例需要哪些類
3.2. 后續(xù):協(xié)作設(shè)計(jì),即用序列圖、協(xié)作圖串起這些類
3.3. ……即運(yùn)用用例驅(qū)動設(shè)計(jì)思維

專項(xiàng)練習(xí)
1. 用例驅(qū)動
2. 到底是“用例?模塊?類”還是“用例?類?模塊”

設(shè)計(jì)師劃分模塊時,注意幾個基本原則
1. 通用-專用分離:提煉應(yīng)用無關(guān)的Library、或選擇三方庫
2. 通用-專用分離:機(jī)制與策略分離,開發(fā)或選擇Framework
3. 隔離外部交互:僅UI層“知道”操作細(xì)節(jié)和展現(xiàn)格式
4. 隔離外部交互:僅SI層“知道”和外部系統(tǒng)通信的細(xì)節(jié)
5. 隔離外部交互:僅DM層“知道”數(shù)據(jù)存儲格式

設(shè)計(jì)師劃分模塊時,可參考的優(yōu)秀范例一則
1. 著名開源產(chǎn)品套件——Mumble
主要收獲:模塊的劃分、通用庫的提煉、三方框架…

實(shí)戰(zhàn)演練
1. 任務(wù):模塊劃分,必須覆蓋代碼結(jié)構(gòu)全局、不能漏模塊
2. 貫穿案例推進(jìn)……
【詳細(xì)設(shè)計(jì)上】 承載產(chǎn)品功能的代碼模塊,重用與可變分離!

設(shè)計(jì)師設(shè)計(jì)模塊時,利用好OO Package結(jié)構(gòu)規(guī)律
1. 提供中心控制類,不要暴漏一堆小類
2. 接口類與實(shí)現(xiàn)類分離
3. 通用實(shí)現(xiàn)類與擴(kuò)展實(shí)現(xiàn)類分離
4. ……


如何應(yīng)用上述結(jié)構(gòu),包容需求變更
1. 分析需求變更,擴(kuò)充/增加/改變 用例規(guī)約
2. 分析對設(shè)計(jì)的影響
a) 增加了Optional Feature (最常見)
b) 改變了Function Point
c) 改變了Process Flow
3. 如何設(shè)計(jì)合理的OO Package支持上門三種變更

設(shè)計(jì)師設(shè)計(jì)模塊時,可參考的優(yōu)秀范例二則
1. 一個通用庫——類的組織
主要收獲:接口分離、提供中心控制類、可擴(kuò)展支持
2. 著名開源產(chǎn)品——類的組織
主要收獲:抽象領(lǐng)域概念的提煉、可擴(kuò)展支持

過關(guān)演練
1. 分析材料,熟悉設(shè)計(jì)要求
2. 設(shè)計(jì)一個通用模塊,必須可擴(kuò)展……
【詳細(xì)設(shè)計(jì)下】 設(shè)計(jì)松耦合、可擴(kuò)展的模塊接口
設(shè)計(jì)師設(shè)計(jì)接口時,考慮的三件事兒
1. 技術(shù)選擇:接口設(shè)計(jì)容易?做漂亮最難!
2. 機(jī)制選擇:調(diào)用/回調(diào)/同步/異步/輪詢/超時
3. 格式定義:函數(shù)風(fēng)格 vs.報(bào)文或消息風(fēng)格

設(shè)計(jì)師設(shè)計(jì)接口時,可參考的優(yōu)秀范例幾則
1. 某通用產(chǎn)品——漂亮的封裝、方便的配置
主要收獲:圍繞Domain Type定義模塊的核心接口
主要收獲:在核心接口基礎(chǔ)上,可定義便捷接口
注?英文術(shù)語為Core Interface、Convenience Interface
2. 某平臺接口分析——既能跨平臺又方便調(diào)用?
主要收獲:跨平臺協(xié)議 + 便于二次開發(fā)的API
1. MFC、Swing等API設(shè)計(jì)對比——更靈活的接口風(fēng)格
主要收獲:Message在接口設(shè)計(jì)中的作用
主要收獲:Callback回調(diào)、及“注冊-回調(diào)”接口機(jī)制

設(shè)計(jì)師設(shè)計(jì)接口時,這些經(jīng)驗(yàn)可以用
1. 基于代碼:專項(xiàng)練習(xí)一
2. 基于代碼:專項(xiàng)練習(xí)二
3. 基于代碼:專項(xiàng)練習(xí)三
4. 原則與“坑”總結(jié)

實(shí)戰(zhàn)演練
1. 任務(wù)1:接口的命令化(Command)支持可擴(kuò)展
2. 任務(wù)2:讓接口包含回調(diào)(Callback)使模塊通用化
3. 貫穿案例設(shè)計(jì)推進(jìn)……

活動詳情

提交需求