【課程背景】
決定軟件開發(fā)項目成敗主要有四方面的因素:過程、技術、人和范圍。據(jù)統(tǒng)計,導致軟件開發(fā)項目失敗的因素中,需求方面的原因占了80%。傳統(tǒng)的軟件工程是基于面向過程的開發(fā)方法,側重于研究過程對于項目的影響,其對軟件開發(fā)起了巨大的推動作用。但隨著問題領域的不斷復雜化以及軟件規(guī)模的不斷擴大,傳統(tǒng)軟件工程的弊端也逐漸顯現(xiàn)出來,面向過程的方法論,在問題領域到需求,在從需求到設計存在兩個巨大的鴻溝,其固有的特性也決定了軟件的維護成本高昂。而面對對象的方法論,從問題領域,到業(yè)務模型,到需求模型,到設計模型,再到實現(xiàn)與測試模型,模型與模型之間是逐步演化和統(tǒng)一的;而且由于面向對象自身的封裝、繼承、多態(tài)、抽象等特性,使軟件有一個更加合理的架構成為可能,進而可能很大地提升軟件的可維護性。
隨著軟件技術以及開發(fā)工具的發(fā)展,面向對象的分析設計初步成為軟件開發(fā)的主流,然而在實際開發(fā)過程中,開發(fā)人員由于對面向對象理解的不透徹,以及受傳統(tǒng)軟件工程和過程化思維的影響,并不能很好的應用面向對象進行分析與設計,徒有其表。 因此,本課程以需求和設計為主線,UML作為建模語言,詳細論述面向對象思想在業(yè)務建模、需求分析以及系統(tǒng)設計中的應用,使開發(fā)人員對面向對象的分析設計方法能有一個清晰的認識。
課程基于成熟的平臺化開發(fā)管理模式、工具及方法,并結合國內(nèi)出色研發(fā)管理企業(yè)的典型實踐,針對中國企業(yè)的實際,幫助您掌握平臺化研發(fā)管理的核心思想、組織模式以及系統(tǒng)的方法與工具,進而實現(xiàn)平臺化、模塊化開發(fā),提升企業(yè)的核心競爭力。
【培訓收益】
1、 掌握UML建模語言
2、 深入理解面向對象思想
3、 了解需求工程的內(nèi)涵,掌握需求獲取、需求分析、需求描述的方法
4、 了解什么是架構,以及架構的意義
5、 設計模式入門,了解一般的分析、設計原則
6、 掌握數(shù)據(jù)庫設計的基本原則和方法
【培訓對象】
企業(yè)CEO/總經(jīng)理、研發(fā)總監(jiān)、研發(fā)經(jīng)理/項目經(jīng)理/技術經(jīng)理/產(chǎn)品經(jīng)理、系統(tǒng)工程師、產(chǎn)品規(guī)劃從業(yè)者
【課程時長】
12小時(2天)
【課程大綱】
1. 案例分析
2. 軟件項目開發(fā)概述;
1) 什么是項目;
2) 軟件項目的特點;
3) 影響軟件項目開發(fā)的主要因素。
3. UML介紹;
1) 什么是建模以及建模的意義;
2) 用例圖;
3) 類圖;
4) 交互圖(順序圖和協(xié)作圖)
5) 活動圖
6) 狀態(tài)圖
4. 業(yè)務建模;
1) 業(yè)務用例模型;
2) 業(yè)務對象模型;
3) 業(yè)務建模流程
a) 業(yè)務需求的組成
b) 業(yè)務需求的來源
c) 軟件產(chǎn)品的業(yè)務目標
d) 軟件產(chǎn)品的前景與范圍
e) 干系人及特征
f) 業(yè)務需求如何編寫、模板范例及說明
g) 不明確的業(yè)務需求帶來的常見問題
h) 業(yè)務需求如何決定用戶需求與功能需求
i) 業(yè)務需求應該由誰來負責
j) 組織中的需求分工與需求團隊
4) 案例分析與演練2
5. 需求開發(fā)和獲取
1) 什么是需求工程?
a) 什么是需求開發(fā)?
b) 什么是需求管理?
c) 需求開發(fā)與需求管理的關系
2) 需求工程的推薦方法
3) 迭代的需求開發(fā)過程
a) 用戶需求的來源
b) 干系人與用戶,用戶的參與程度對需求質量的直接影響
c) 從用戶角度看需求
d) 尋找用戶類,常見的分類方法
e) 設立用戶代表,用戶代表的作用
f) 案例分析與演練3
g) 需求獲取的常見方法
h) 需求訪談
i) 需求研討會
j) 需求整理:分類與分層
k) 案例分析與演練4
l) 用例法
l 用例定義
l 參與者目標清單
l 從業(yè)務事件發(fā)現(xiàn)用例
l 業(yè)務用例與場景
l 在業(yè)務用例中對干系人利益的保障
l 從業(yè)務用例中提取產(chǎn)品用例
l 用例模板
l 用例開發(fā)中的常見問題
l 用例的作用
m) 案例分析與演練5
n) 原型法
o) 業(yè)務規(guī)則與術語
l 業(yè)務規(guī)則的分類
l 業(yè)務規(guī)則與需求
l 術語
p) 尋找遺漏的需求
q) 案例分析與演練
6. 需求編寫
1) 問題探討和概念澄清
2) 需求規(guī)格的特點和作用
3) 需求的標識
4) 需求規(guī)格的框架及匯編
5) 需求屬性與需求矩陣的使用
6) 需求的存儲和使用
7) 需求規(guī)格說明模板和使用
8) 需求矩陣模板
9) 案例分析與演練9
7. 分析與設計;
1) 架構設計;
a) 架構概述
b) 架構的層次
c) 典型架構
d) 邏輯視圖、開發(fā)視圖、部署視圖、運行視圖、數(shù)據(jù)視圖 ,實現(xiàn)視圖
e) 如何和怎樣繪制軟件架構視圖
f) UML建模工具在架構視圖的應用
g) 軟件架構文檔的概述
h) 軟件架構模板(根據(jù)實際項目情況選擇合適內(nèi)容)
i)
2) 系統(tǒng)分析
a) 用例實現(xiàn)
b) 分析類
c) 設計子系統(tǒng)
d) 設計包
e) 軟件系統(tǒng)邊界和外部系統(tǒng)接口的定義
f) 大型軟件系統(tǒng)的劃分子系統(tǒng)原則
g) 子系統(tǒng)功能模塊的分解
h) 子系統(tǒng)間的通信接口的設計
i) 如何應對系統(tǒng)內(nèi)部緊耦合、高內(nèi)聚
j) 軟件系統(tǒng)關鍵質量屬性樹和可行性分析
k) 軟件系統(tǒng)部署架構(分布式/數(shù)據(jù)分布/通信/安全)
l) 軟件系統(tǒng)部署容量評估(主機/中間件/數(shù)據(jù)庫等資源容量評估)
m) 應用系統(tǒng)的類型和架構風格
n) 架構模式在實際項目的應用
o) 軟件架構立方體圖(軟件架構的分層,分區(qū)和基礎服務)
p) 軟件架構通用機制的分析(如何處理基礎設施擴展和具體有什么方法做基礎設施擴展, 掌握如何分離這些基礎設施用例)
q) 使用質量場景屬性進行迭代架構設計
r) 軟件架構各層的架構策略(針對企業(yè)應用分層,每層的架構策略)
s)
3) 面向對象設計:
a) 深入理解面向對象;
b) 泛化與繼承;
c) 設計原則;
d) 抽象(Abstraction)、封裝(Encapsulation)和信息隱藏(Information Hiding)
e) 分而治之(Divide-And-Conquer)和模塊化(modularization)
f) 松耦合和高內(nèi)聚(Coupling and Cohesion)
g) 策略和實現(xiàn)的分離(Separation of Policy and Implementation)
h) 接口和實現(xiàn)的分離(Separation of Interface and Implementation)
i) 單一引用點(Single Point of Reference)
j) 數(shù)據(jù)架構(數(shù)據(jù)模型/數(shù)據(jù)分布/數(shù)據(jù)存取,以及核心數(shù)據(jù)流)
k) 用例視圖(抽取典型,有風險和客戶關心用例進行分析,結合架構進行設計)
l) 實現(xiàn)視圖(架構,設計和開發(fā),實現(xiàn)原則和指南)
m) 完成架構文檔,對架構文檔進行評估
8. 數(shù)據(jù)庫設計
4) 關系數(shù)據(jù)庫
l 關系模型
l 關系數(shù)據(jù)結構及形式化定義
l 關系的完整性
5) 關系數(shù)據(jù)庫規(guī)范化
l 函數(shù)依賴
l 規(guī)范化
l 模式分解及分解應具有的特性
6) 數(shù)據(jù)庫的控制功能
l 事務管理
l 數(shù)據(jù)庫的備份與恢復
l 并發(fā)控制
l 安全性和授權
a) 數(shù)據(jù)庫設計
l 概念結構設計
l 邏輯結構設計
l 數(shù)據(jù)庫的物理設計
l 數(shù)據(jù)庫的實施和維護
9. 總結