Application Lifecycle Management

開始之前

小故事

巴格王

a

小調查

你是怎麼寫程式的?

工作流程

六個階段

需求

OOA(Object-Oriented Analysis)1

對需求的不瞭解

PM想的跟客戶要的不一樣,Developer做出來的不是PM要的

PM想的跟客戶要的不一樣,Developer做出來的不是PM要的

扶把害消防設備無法驗收

扶把害消防設備無法驗收

設計

OOD(Object-Oriented Design)

3 Layer

根據實際狀況調整

開發

OOP(Object-Oriented Programming)

ALM 開發 for C#

LINQ for C#

ADO.NET Entity Framework for C#

同一個專案,同時維護debug和release mode

測試

你如何驗證程式?

需求

需求

實例化

實例化

種類

功能驗收測試

效能測試

壓力測試

冒煙測試

ALM 測試

m

部署

常見問題

應用程式在自己的電腦跑沒有問題

拿到別台電腦就不能跑

建置流程

目的

程式不能只有你自己的電腦能跑

確保每個人拿到程式碼都能夠Build

任何一個人簽入程式碼

TFS會從程式碼版控取得最新的程式碼

然後在TFS上Build

然後在TFS上執行測試

部署流程

自動佈署到測試環境

QA用測試環境測試

QA手動(簽核機制)佈署到正式環境

部署-WebSite

m

部署-Desktop

m

部署-SQL

m

維運

Feedback

Continuous Integration,CI

用途

特性

迷思

『買了CI Server,就可以天下無敵、藥到病除』
流程的改進是要由內至外,由上至下,不論決定使用哪一套CI Server,它不會自動縮短交付時間,不會自動提昇品質,開發/管理人員必需要投入一定的時間持續學習、持續進步。

『犧牲品質可以增加開發速度』
專案不會因為接受低品質的軟體而進行得比較快,也不會因為要求高品質而進行得比較慢,一旦因為低品質而造成無法交付,日後的維護可能要花兩至三倍的時間;我只有在實作Prototype時會犧牲品質

我怎麼做Prototype

『工作單越多代表績效越高』
工作單數量不應該拿來當做績效依據,軟體開發項目有分簡單跟困難,若拿到困難的單子的成員,績效永遠都不好??這會讓工作進度會議看起來像批鬥大會

『軟體工程需要在多人團隊下運行』
管理,最困難的部份在溝通,人數越少,溝通路徑越少,溝通路徑公式P=N(N-1),人數越少溝通路徑越短,就算是一人開發也是能夠使用ALM

Continuous Delivery,CD

自動化部署

協同平台