重點關注提升軟件開發人員設計能力,整個課程由多個實戰案例貫串始終,老師帶領大家通過實戰練習,一起走完項目設計的全過程。案例練習中老師著重闡述和分析在實際項目中遇到的問題,提煉架構決策的思維方法,使學員體會在項目各個階段中架構設計的發展演化規律,從而在實戰中提煉理論,培養學員的實際應用能力。課程主要特點:
1、理論與實踐相結合,注重案例的講解;
2、有深刻的理論深度,準確把握設計原則與要義;
3、全真案例講解,學員邊做邊學,具體、深刻;
4、能夠對學員提出的案例進行咨詢,指導分析、設計。
證 書
培訓結束,頒發中科院計算所職業培訓中心“軟件設計全程演練與最佳實踐”結業證書。
培訓對象
1、中高級程序員、系統分析員、架構設計師、產品市場技術人員;
2、具備IT部門工作經驗,將負責信息化系統規劃等相關任務的技術人員;
3、希望加強軟件架構理論和實踐能力的軟件開發人員;
4、負責軟件產品規劃與定義的相關人員;
5、需要了解軟件設計全過程的項目經理。
學員基礎
1、三年以上開發經驗,經歷過頻繁需求變更或者系統重復開發的折磨;
2、熟悉Java/C#/C++任意一種面向對象語言或者具備面向對象編程基本概念。
時間 |
內容 |
案例實踐與練習 |
Day1 上午
第一部分:架構設計思想與原理
|
一、架構設計的內涵 1、概念和定義; 2、架構原理; 3、架構的三個層次; 4、企業架構設計的產物; 5、大型系統架構設計的產物; 6、中小型系統設計的產物; 二、架構設計的外延 1、架構設計方法體系; 2、架構與軟件工程; 3、架構與模式。 三、架構師的成長 1、架構師關鍵素質; 2、架構師職業發展建議; 3、設計師與設計技能; 4、設計師能力模型; |
案例分析,某研發中心引入敏捷的實戰分析,什么才是真正的敏捷 1、 某研發團隊5年前引入敏捷的失敗教訓-能力比方法重要,但改變方法比改變能力簡單多了; 2、優秀的設計來自優秀的設計師,因此應該首先是尊重個體的主動和創造性,提高個體工作技能,而不是應用了一種流程,消滅了個體的活力。首先關注人,才能真敏捷。
|
Day1 下午
第二部分:中小型項目案例分析與實踐
|
一、良好需求是優秀設計的開端 1、需求變更; 2、軟件不斷變更法則; 3、積極心態面對需求變更。 二、針對變化的敏捷過程與設計 1、敏捷設計的彈性和流程的靈活性; 2、軟件設計的目標:靈活性; 3、發現和封裝變化的原則; 4、抽象穩定接口(抽象類),針對接口編程,而不是針對實現編程; 5、分離變化維度,單一職責原則; 6、動態綁定還是靜態綁定,多用組合,少用繼承; 7、創建與使用分離,創建有變化也要封裝。 |
網上訂單、嵌入式項目系統案例練習: 1、現場模擬架構需求獲取過程,點評要點; 2、采用敏捷方式設計案例系統組成架構模型; 3、故障單類型的增加后,設計如何通過代碼進行演化。 |
Day2 上午
第三部分:改造類項目案例分析與實踐
|
一、軟件復用與基于框架技術的架構設計 1、框架的選擇/已有系統的架構; 2、 軟件通用服務組件的設計; 3、 軟件復用的管理策略; 4、軟件復用之道; 5、在詳細設計之中,分析發現共同的行為的抽象和共同的機制來實現; 6、詳細設計的核心:領域建模。 二、軟件腐化與希波克拉底宣言 1、 First, Do No Harm. 首先,做到不傷害; 2、 Proxy代理模式與軟件修改方案; 3、 decorator模式與遺留軟件修改。 三、軟件改造過程 1、初始設計的問題分析; 2、拙劣設計常見癥狀以及如何發現和治療; 3、在詳細設計中如何對設計問題進行重構; 4、代碼壞味道; 5、常見的重構設計方式; 6、重構到設計模式; 7、流程審核的改變。 |
薪酬系統、出租系統等案例設計分析與實操演練 2、分析真實項目,如何做的詳細設計,給我們哪些啟示,我們可以學習到什么; 3、分析我們在項目之中是那些原因導致了沒有實現這些目標; 4、案例分析—如何維護遺留系統而不是遺留系統變爛; 5、通過該案例分析,對比有時是因為人員的設計技能導致加速軟件的腐化; 6、通過該案例分析,講師加入項目之后,將進行哪些重構。 |
Day2 下午
第四部分:大型系統項目案例分析與實踐(上)
|
一、優秀大型系統架構設計的要點 1、好的設計和衡量的手段,世界大師的觀點; 2、一個好的系統設計應該有如下的性質; 3、可擴展性(Extensibility)容易添加新的功能; 4、靈活性(Flexibility)代碼修改平穩地發生; 5、可插入性(Pluggability)。 二、優秀大型系統架構設計的最佳實踐 1、合理的架構設計來源于正確的需求過程; 2、業務建模和需求分析中的架構因素; 3、采用原型法降低架構風險; 4、架構風險管理方法與決策; 5、幾種典型高層架構介紹; 6、高層架構設計的應用技巧和實踐; 7、高層架構的表示; 8、非功能性需求對架構的影響; 9、架構評審與決策; 10、ATAM的參與人員、步驟和結果。 |
軍隊大型信息系統設計分析與實操演練 一、需求分析案例練習 1、案例背景介紹; 2、提出問題,捕獲需求; 3、工作量與開發計劃制定。 二、架構設計案例練習 1、邏輯架構視圖設計案例練習; 2、物理架構視圖設計案例練習; 3、運行架構視圖設計案例練習; 4、數據視圖設計案例練習; 5、非功能需求對架構的影響。 |
Day3 下午
第五部分:大型系統項目案例分析與實踐(下)
|
一、靈活性設計的最佳實踐 1、 多態(polymorphism)和針對接口的編程; 2、數據驅動(Data-Driven Design); 3、元數據驅動設計; 4、反射驅動(Meta-data or Reflective ); 5、解釋器驅動; 6、腳本引擎技術。 二、演化式設計(Emergent Design) 1、 演化式設計 Emergent Design ; 2、演化設計--重構,反思性設計(Reflective Design)。; 3、在詳細設計之中,對發現問題的設計進行重構。 三、軟件設計原則/模式 1、項目系統的演變,以及設計原則的應用效果; 2、通過一個大型實例,傳遞Clean Code,設計原則等。 四、架構評審與架構重構 1、現場設計案例系統部署架構模型,并開展ATAM評估; 2、現場設計案例系統數據架構模型,討論中間件對架構決策的影響; 3、實操細化架構設計練習,嘗試優化分解架構設計,使之適應未來架構變化。 |
銀行、政府等多領域大型核心系統設計最佳實踐案例分析 2、很多公司習慣做大量的預習設計,這被證明是風險很高的做法。好的架構和設計是演進出來的,通過這個環節了解演進式設計的方法,包括演進式設計的方法、工具、模式等內容; 3、案例分析,根據課程介紹的壞癥狀,進行重構合理的設計; 4、如何計劃重構活動以實現架構演進,如何從設計方法、技術債務、復雜性等角度看架構演。 |
Day3 下午
第六部分 千萬級訪問量網站架構變遷案例分析與最佳實踐
|
一、用戶體驗與交互設計 1、基本概念; 2、6大設計原則 ; 3、亞馬遜網站案例剖析。 二、千萬級訪問量的大型網站架構變遷 1、物理分離webserver和數據庫; 2、增加頁面緩存; 3、增加頁面片段緩存; 4、數據緩存; 5、增加webserver ;; 7、分表、DAL和分布式緩存; 8、增加更多的webserver ; 9、數據讀寫分離和廉價存儲方案; 10、大型分布式應用和廉價服務器群時代。 |
某Web互聯網電子商務系統設計最佳實踐和案例分析 2、隨著訪問量的增加如何變遷架構; 3、淘寶 VS 12306,兩類系統架構的差異性分析; 4、IBM小型機會被大量X86服務器替代嗎?各自的應用背景與優勢分析; 5、云計算、移動應用等新興技術的發展意味著什么?創業黃金期的到來。 |
匯款、微信轉帳
匯款信息:
單位名稱:北京市海淀區中科院計算所職業技能培訓學校
開戶行:工行海淀西區支行
賬號:0200 0045 1920 0043 667
開戶銀行代碼:1021 0000 0458
微信轉賬:
步驟一:打開微信,掃描二微碼付款時,點擊打開微信右下角里的“發現”,在列表界面有一個“掃一掃”選項,點擊打開“掃一掃”(如下圖):
步驟二:點擊打開“掃一掃”后,會出現一個掃描框,將中科院計算所培訓中心二維碼/條碼放入框內,即可自動掃描,并顯示支付信息,輸入付款金額。
(中科院計算所培訓中心二維碼)
步驟三:點擊 “添加付款備注”,填寫付款人姓名和單位全稱,所有信息核對無誤后,點擊“確認付款”,完成支付。