培訓搜索引擎

軟件設計全程演練與最佳實踐(楊老師)

參加對象:1、中高級程序員、系統(tǒng)分析員、架構設計師、產品市場技術人員; 2、具備IT部門工作經驗,將負責信息化系統(tǒng)規(guī)劃等相關任務的技術人員; 3、希望加強軟件架構理論和實踐能力的軟件開發(fā)人員; 4、負責軟件產品規(guī)劃與定義的相關人員; 5、需要了解軟件設計全過程的項目經理。

公開課編號 GKK5531
主講老師 楊老師
參加費用 5500元
課時安排 3天
近期開課時間 2018-07-17
舉辦地址 加載中...

其他開課時間
  • 開課地址: 開課時間:

公開課大綱
學員基礎
1、三年以上開發(fā)經驗,經歷過頻繁需求變更或者系統(tǒng)重復開發(fā)的折磨;
2、熟悉Java/C#/C++任意一種面向對象語言或者具備面向對象編程基本概念。
 
師資
由業(yè)界知名軟件架構師親自授課:
楊老師  中科院計算所培訓中心特聘講師,總后信息化顧問,國家SOA技術專家委常務委員、ISO國際標準組織SOA組中國區(qū)代表(首批4人小組成員)、國家人事部考試中心計算機命題評審委員會委員、軍隊信息化標準委員會副秘書長。
 
培訓內容
時間 內容 案例實踐與練習
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)境中的作用就會越來越?。?br /> 4、需求改變的態(tài)度-拒絕變化無用,積極心態(tài)面對變化。
二、針對變化的敏捷過程與設計
1、而敏捷對預測未來的方式是全新的,強調通過提高團隊的能力、設計的彈性和流程的靈活性來適應變化。這種思路對軟件開發(fā)也是很大的沖擊;
2、軟件設計的目標-靈活性,因為增加一個功能特性的成本并不單單是為這些功能編碼所花費時間的成本,還應該包括特性擴展的障礙成本。現在我們遇到的最大障礙是現在系統(tǒng)的混亂,難以擴展;
3、發(fā)現和封裝變化的原則——找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼交織在一起;
4、抽象穩(wěn)定接口(抽象類),針對接口編程,而不是針對實現編程;
5、分離變化維度,單一職責原則;
6、動態(tài)綁定還是靜態(tài)綁定,多用組合,少用繼承;
7、創(chuàng)建與使用分離,創(chuàng)建有變化也要封裝。
網上訂單、嵌入式項目系統(tǒng)案例練習:
1、現場模擬架構需求獲取過程,點評要點;
2、采用敏捷方式設計案例系統(tǒng)組成架構模型;
3、故障單類型的增加后,設計如何通過代碼進行演化。
Day2
(9:00-12:00)
 
第三部分:改造類項目案例分析與實踐
 
一、軟件復用與基于框架技術的架構設計
1、框架的選擇/已有系統(tǒng)的架構;
2、軟件通用服務組件的設計;
3、軟件復用的管理策略:復用已有的東西,比自己編寫更容易。如果不容易,大家就不會去復用;
4、軟件復用之道:對象級別、模塊、架構層次復用;5、在詳細設計之中,分析發(fā)現共同的行為的抽象和共同的機制來實現;
6、詳細設計的核心——領域建模,領域模型中的常見問題。
二、軟件腐化與希波克拉底宣言
1、First, Do No Harm.  首先,做到不傷害!— Hippocrates  希波克拉底;
2、Proxy代理模式與軟件修改方案;
3、decorator模式與遺留軟件修改。
三、軟件改造過程
1、初始設計的問題分析;
2、拙劣設計常見癥狀以及如何發(fā)現和治療;
3、在詳細設計中如何對設計問題進行重構;
4、代碼壞味道;
5、常見的重構設計方式;
6、重構到設計模式;
7、流程審核的改變。
薪酬系統(tǒng)、出租系統(tǒng)等案例設計分析與實操演練
 1、結合多個案例項目進行分析,怎樣發(fā)現和封裝變化,如何通過具體的手段來進行適應這些變化;
2、分析真實項目,如何做的詳細設計,給我們哪些啟示,我們可以學習到什么;
3、分析我們在項目之中是那些原因導致了沒有實現這些目標;
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)設計應該有如下的性質:可擴展性、靈活性、可插入性;
3、可擴展性(Extensibility)容易添加新的功能. 結合案例,通過那些手段如何實現該目標;
4、靈活性(Flexibility)代碼修改平穩(wěn)地發(fā)生. 結合案例,通過那些手段如何實現該目標;
5、可插入性(Pluggability)容易將一個類抽出去,同時將另一個有同樣接口的類加入進來. 結合案例,通過那些手段如何實現該目標。
二、優(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、數據視圖設計案例練習;
5、非功能需求對架構的影響。
Day3
(9:00-12:00)
 
第五部分:大型系統(tǒng)項目案例分析與實踐(下)
 
一、靈活性設計的最佳實踐
1、多態(tài)(polymorphism)和針對接口的編程;
2、數據驅動(Data-Driven Design);
3、元數據驅動設計;
4、反射驅動(Meta-data or Reflective );
5、解釋器驅動;
6、腳本引擎技術。
二、演化式設計(Emergent Design)
1、演化式設計Emergent Design ;
2、演化設計--重構帶來了一種新的構設計方法,稱為反思性設計(Reflective Design)。除了創(chuàng)建一種設計并用代碼實現它之外,你現在還可以分析已有代碼的設計并改善它。尋求改進的一種最好的方法是通過代碼嗅覺(code smells);
3、在詳細設計之中,如何對發(fā)現問題的設計進行重構。
二、軟件設計原則/模式
1、項目系統(tǒng)的演變,以及設計原則的應用效果,通過項目的演化分析這些核心設計原則的應用場景;
2、通過一個大型實例,傳遞Clean Code,設計原則等,包括DIY原則,Tell Don't Ask原則,Soild原則(Single Responsibility原則,Open Closed原則,Liskov Substitution原則,Interface Segregation原則,Dependency Inversion原則)。
三、架構評審與架構重構
1、現場設計案例系統(tǒng)部署架構模型,并開展ATAM評估;
2、現場設計案例系統(tǒng)數據架構模型,討論中間件對架構決策的影響;
3、實操細化架構設計練習,嘗試優(yōu)化分解架構設計,使之適應未來架構變化。
銀行、政府等多領域大型核心系統(tǒng)設計最佳實踐案例分析
 1、結合多個案例項目進行分析,怎樣發(fā)現和封裝變化,如何通過具體的手段來進行適應這些變化;
2、很多公司習慣做大量的預習設計,這被證明是風險很高的做法。好的架構和設計是演進出來的,通過這個環(huán)節(jié)了解演進式設計的方法,包括演進式設計的方法、工具、模式等內容;
3、案例分析,根據課程介紹的壞癥狀,進行重構合理的設計;
4、如何計劃重構活動以實現架構演進,如何從設計方法、技術債務、復雜性等角度看架構演。
Day3
(13:00-16:00)
 
第六部分  千萬級訪問量網站架構變遷案例分析與最佳實踐
 
三、     用戶體驗與交互設計
1、基本概念;
2、6大設計原則;
3、亞馬遜網站案例剖析。
二、千萬級訪問量的大型網站架構變遷
1、物理分離webserver和數據庫;
2、增加頁面緩存;
3、增加頁面片段緩存;
4、數據緩存;
5、增加webserver ;;
7、分表、DAL和分布式緩存;
8、增加更多的webserver ;
9、數據讀寫分離和廉價存儲方案;
10、大型分布式應用和廉價服務器群時代。
Web互聯網電子商務系統(tǒng)設計最佳實踐和案例分析
 1、如何從開源起步;
2、隨著訪問量的增加如何變遷架構;
3、淘寶VS 12306,兩類系統(tǒng)架構的差異性分析;
4、IBM小型機會被大量X86服務器替代嗎?各自的應用背景與優(yōu)勢分析;
5、云計算、移動應用等新興技術的發(fā)展意味著什么?創(chuàng)業(yè)黃金期的到來。
 
課程目標
1、了解軟件設計基本原理、主要原則和國內外主流方法論;
2、掌握前沿技術的同時,獲得解決實際問題的規(guī)范和能力;
3、幫助軟件企業(yè)完善軟件架構設計、評審流程,改善軟件開發(fā)質量和效率。

上一篇:高端商務禮儀與職業(yè)形象塑造(賀文靜)
下一篇:軟件配置管理培訓(郭老師)

培訓現場