軟件設計全程演練與最佳實踐培訓(北京,7月17-19日)
【舉辦單位】北京曼頓培訓網(wǎng) www.mdpxb.com 中國培訓資訊網(wǎng) www.e71edu.com
【咨詢電話】4006820825 010-56133998 13810210257
【培訓日期】2018年7月17-19日
【培訓地點】北京
【培訓對象】
1、中高級程序員、系統(tǒng)分析員、架構設計師、產品市場技術人員。
2、具備IT部門工作經驗,將負責信息化系統(tǒng)規(guī)劃等相關任務的技術人員。
3、希望加強軟件架構理論和實踐能力的軟件開發(fā)人員。
4、負責軟件產品規(guī)劃與定義的相關人員。
5、需要了解軟件設計全過程的項目經理。
【課程背景】
在軟件產品的開發(fā)組織中,軟件設計人員是軟件企業(yè)新產品、新技術體系的構建者,是目前軟件開發(fā)中急需的高層次技術人才。為此,培訓中心特舉辦“軟件設計全程演練與最佳實踐”培訓班
【授課思路】
重點關注提升軟件開發(fā)人員設計能力,整個課程由多個實戰(zhàn)案例貫串始終,老師帶領大家通過實戰(zhàn)練習,一起走完項目設計的全過程。案例練習中老師著重闡述和分析在實際項目中遇到的問題,提煉架構決策的思維方法,使學員體會在項目各個階段中架構設計的發(fā)展演化規(guī)律,從而在實戰(zhàn)中提煉理論,培養(yǎng)學員的實際應用能力。課程主要特點:
1、理論與實踐相結合,注重案例的講解;
2、有深刻的理論深度,準確把握設計原則與要義;
3、全真案例講解,學員邊做邊學,具體、深刻;
4、能夠對學員提出的案例進行咨詢,指導分析、設計。
【學員基礎】
1、3年以上開發(fā)經驗,經歷過頻繁需求變更或者系統(tǒng)重復開發(fā)的折磨。
2、熟悉Java/C#/C++任意一種面向對象語言或者具備面向對象編程基本概念。
【課程目標】
1、了解軟件設計基本原理、主要原則和國內外主流方法論;
2、掌握前沿技術的同時,獲得解決實際問題的規(guī)范和能力;
3、幫助軟件企業(yè)完善軟件架構設計、評審流程,改善軟件開發(fā)質量和效率。
【課程大綱】
Day1
(9:00-12:00)
第一部分:架構設計思想與原理
一、架構設計的內涵
1. 概念和定義
2. 架構原理
3. 架構的三個層次
4. 企業(yè)架構設計的產物
5. 大型系統(tǒng)架構設計的產物
6. 中小型系統(tǒng)設計的產物
二、架構設計的外延
1. 架構設計方法體系
2. 架構與軟件工程
3. 架構與模式
三、架構師的成長
1. 架構師關鍵素質
2. 架構師職業(yè)發(fā)展建議
3. 設計師與設計技能
4. 設計師能力模型 案例分析,某研發(fā)中心引入敏捷的實戰(zhàn)分析,什么才是真正的敏捷
1、 某研發(fā)團隊5年前引入敏捷的失敗教訓-能力比方法重要,但改變方法比改變能力簡單多了
2、優(yōu)秀的設計來自優(yōu)秀的設計師,因此應該首先是尊重個體的主動和創(chuàng)造性,提高個體工作技能,而不是應用了一種流程,消滅了個體的活力。首先關注人,才能真敏捷。
Day1
(13:00-16:00)
第二部分:中小型項目案例分析與實踐
一、良好需求是優(yōu)秀設計的開端
1、 不管你在何處工作,構建些什么,用何種語言,在軟件開發(fā)上,一直最痛苦的事情是什么?? 或者什么是你開發(fā)之中最討厭的問題是什么?---需求變更 2、殺死一個程序員不需要刀,只要需求變3次就好了!!
3、軟件不斷變更法則:真實世界中使用的程序必須進行變更,否則它在環(huán)境中的作用就會越來越小.
4、需求改變的態(tài)度-拒絕變化無用,積極心態(tài)面對變化
二、針對變化的敏捷過程與設計
1、而敏捷對預測未來的方式是全新的,強調通過提高團隊的能力、設計的彈性和流程的靈活性來適應變化。這種思路對軟件開發(fā)也是很大的沖擊。
2、軟件設計的目標-靈活性,因為增加一個功能特性的成本并不單單是為這些功能編碼所花費時間的成本,還應該包括特性擴展的障礙成本,F(xiàn)在我們遇到的最大障礙是現(xiàn)在系統(tǒng)的混亂,難以擴展。
3、發(fā)現(xiàn)和封裝變化的原則——找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼交織在一起.
4、抽象穩(wěn)定接口(抽象類),針對接口編程,而不是針對實現(xiàn)編程
5、分離變化維度,單一職責原則
6、動態(tài)綁定還是靜態(tài)綁定,多用組合,少用繼承
7、創(chuàng)建與使用分離,創(chuàng)建有變化也要封裝 網(wǎng)上訂單、嵌入式項目系統(tǒng)案例練習:
1、現(xiàn)場模擬架構需求獲取過程,點評要點;
2、采用敏捷方式設計案例系統(tǒng)組成架構模型;
3、故障單類型的增加后,設計如何通過代碼進行演化
Day2
(9:00-12:00)
第三部分:改造類項目案例分析與實踐
一、軟件復用與基于框架技術的架構設計
1、框架的選擇/已有系統(tǒng)的架構
2、 軟件通用服務組件的設計
3、 軟件復用的管理策略:復用已有的東西,比自己編寫更容易。如果不容易,大家就不會去復用。
4、軟件復用之道:對象級別、模塊、架構層次復用5、在詳細設計之中,分析發(fā)現(xiàn)共同的行為的抽象和共同的機制來實現(xiàn)
6、詳細設計的核心——領域建模,領域模型中的常見問題
二、軟件腐化與希波克拉底宣言
1、 First, Do No Harm.?
首先,做到不傷害!— Hippocrates? 希波克拉底
2、 Proxy代理模式與軟件修改方案
3、 decorator模式與遺留軟件修改
三、軟件改造過程
1、初始設計的問題分析
2、拙劣設計常見癥狀以及如何發(fā)現(xiàn)和治療
3、在詳細設計中如何對設計問題進行重構
4、代碼壞味道
5、常見的重構設計方式
6、重構到設計模式
7、流程審核的改變 薪酬系統(tǒng)、出租系統(tǒng)等案例設計分析與實操演練
1、結合多個案例項目進行分析,怎樣發(fā)現(xiàn)和封裝變化,如何通過具體的手段來進行適應這些變化
2、分析真實項目,如何做的詳細設計,給我們哪些啟示,我們可以學習到什么
3、分析我們在項目之中是那些原因導致了沒有實現(xiàn)這些目標.
4、案例分析—如何維護遺留系統(tǒng)而不是遺留系統(tǒng)變爛
5、通過該案例分析,對比有時是因為人員的設計技能導致加速軟件的腐化
6、通過該案例分析,講師加入項目之后,將進行哪些重構
Day2
(13:00-16:00)
第四部分:大型系統(tǒng)項目案例分析與實踐(上)
一、優(yōu)秀大型系統(tǒng)架構設計的要點
1、什么是好的設計和衡量的手段,世界大師的觀點(Robert C Martin , Peter Code,` James Shor)
2、一個好的系統(tǒng)設計應該有如下的性質:可擴展性、靈活性、可插入性。-Peter Code
3、可擴展性(Extensibility)容易添加新的功能. 結合案例,通過那些手段如何實現(xiàn)該目標
4、靈活性(Flexibility)代碼修改平穩(wěn)地發(fā)生. 結合案例,通過那些手段如何實現(xiàn)該目標
5、可插入性(Pluggability)容易將一個類抽出去,同時將另一個有同樣接口的類加入進來. 結合案例,通過那些手段如何實現(xiàn)該目標
二、優(yōu)秀大型系統(tǒng)架構設計的最佳實踐
1、合理的架構設計來源于正確的需求過程;
2、業(yè)務建模和需求分析中的架構因素;
3、采用原型法降低架構風險;
4、架構風險管理方法與決策;
5、幾種典型高層架構介紹;
6、高層架構設計的應用技巧和實踐;
7、高層架構的表示;
8、非功能性需求對架構的影響;
9、架構評審與決策;
10、ATAM的參與人員、步驟和結果;
軍隊大型信息系統(tǒng)設計分析與實操演練
一、需求分析案例練習
1、案例背景介紹
2、提出問題,捕獲需求
3、工作量與開發(fā)計劃制定
二、架構設計案例練習
1、邏輯架構視圖設計案例練習
2、物理架構視圖設計案例練習
3、運行架構視圖設計案例練習
4、數(shù)據(jù)視圖設計案例練習
5、非功能需求對架構的影響
Day3
(9:00-12:00)
第五部分:大型系統(tǒng)項目案例分析與實踐(下)
一、靈活性設計的最佳實踐
1、 多態(tài)(polymorphism)和針對接口的編程
2、數(shù)據(jù)驅動(Data-Driven Design)
3、元數(shù)據(jù)驅動設計
4、反射驅動(Meta-data or Reflective? )
5、解釋器驅動
6、腳本引擎技術
二、演化式設計(Emergent Design)
1、 演化式設計 Emergent Design
2、演化設計--重構帶來了一種新的構設計方法,稱為反思性設計(Reflective Design)。除了創(chuàng)建一種設計并用代碼實現(xiàn)它之外,你現(xiàn)在還可以分析已有代碼的設計并改善它。尋求改進的一種最好的方法是通過代碼嗅覺(code smells).
3、在詳細設計之中,如何對發(fā)現(xiàn)問題的設計進行重構
二、軟件設計原則/模式
1、項目系統(tǒng)的演變,以及設計原則的應用效果,通過項目的演化分析這些核心設計原則的應用場景
2、通過一個大型實例,傳遞Clean Code,設計原則等,包括DIY原則,Tell Don't Ask原則,Soild原則(Single Responsibility原則,Open Closed原則,Liskov Substitution原則,Interface Segregation原則,Dependency Inversion原則)。
三、架構評審與架構重構
1、現(xiàn)場設計案例系統(tǒng)部署架構模型,并開展ATAM評估;
2、現(xiàn)場設計案例系統(tǒng)數(shù)據(jù)架構模型,討論中間件對架構決策的影響;
3、實操細化架構設計練習,嘗試優(yōu)化分解架構設計,使之適應未來架構變化。 銀行、政府等多領域大型核心系統(tǒng)設計最佳實踐案例分析
1、結合多個案例項目進行分析,怎樣發(fā)現(xiàn)和封裝變化,如何通過具體的手段來進行適應這些變化
2、很多公司習慣做大量的預習設計,這被證明是風險很高的做法。好的架構和設計是演進出來的,通過這個環(huán)節(jié)了解演進式設計的方法,包括演進式設計的方法、工具、模式等內容。
3、案例分析,根據(jù)課程介紹的壞癥狀,進行重構合理的設計;
4、如何計劃重構活動以實現(xiàn)架構演進,如何從設計方法、技術債務、復雜性等角度看架構演進
Day3
(13:00-16:00)
第六部分 千萬級訪問量網(wǎng)站架構變遷案例分析與最佳實踐
一、用戶體驗與交互設計
1.基本概念
2.6大設計原則
3.亞馬遜網(wǎng)站案例剖析
二、千萬級訪問量的大型網(wǎng)站架構變遷
1.物理分離webserver和數(shù)據(jù)庫
2.增加頁面緩存
3.增加頁面片段緩存
4.數(shù)據(jù)緩存
5.增加webserver
6.分庫
7.分表、DAL和分布式緩存
8.增加更多的webserver
9.數(shù)據(jù)讀寫分離和廉價存儲方案
10.大型分布式應用和廉價服務器群時代
某Web互聯(lián)網(wǎng)電子商務系統(tǒng)設計最佳實踐和案例分析
1、如何從開源起步
2、隨著訪問量的增加如何變遷架構;
3、淘寶 VS 12306,兩類系統(tǒng)架構的差異性分析;
4、IBM小型機會被大量X86服務器替代嗎?各自的應用背景與優(yōu)勢分析;
5、云計算、移動應用等新興技術的發(fā)展意味著什么?創(chuàng)業(yè)黃金期的到來。
【講師介紹】
楊老師,曼頓培訓網(wǎng)網(wǎng)(www.mdpxb.com)資深講師?偤笮畔⒒檰枺瑖襍OA技術專家委常務委員、ISO國際標準組織SOA組中國區(qū)代表(首批4人小組成員)、國家人事部考試中心計算機命題評審委員會委員、軍隊信息化標準委員會副秘書長。
【費用及報名】
1、費用:培訓費5000元(含培訓費、講義費);如需食宿,會務組可統(tǒng)一安排,費用自理。
2、報名咨詢:4006820825 010-56133998 56028090 13810210257 鮑老師
3、報名流程:電話登記-->填寫報名表-->發(fā)出培訓確認函
4、備注:如課程已過期,請訪問我們的網(wǎng)站,查詢最新課程
5、詳細資料請訪問北京曼頓培訓網(wǎng):www.mdpxb.com (每月在全國開設四百多門公開課,歡迎報名學習)