一、 緒論
1.3 研究方法
本研究所採用之研究方法,有文獻探討與個案研究。文獻探討主要就目 前相關軟體工廠、軟體元件等文獻,作一分析探討。找出可以參考的軟體工 廠解決方案。參考案例則以國內上市的系統整合電腦公司所屬的軟體工廠為 研究對象,個案公司分別在大陸、台灣都建置軟體工廠,承接軟體代工設計 與編碼,是一個標準分散式軟體生產模式。透過個案公司來了解目前建置軟 體工廠的做法與方向。
二. 文獻探討
2.1 軟體工廠
軟體工廠 (Software Factory) 是軟體工程 (Software Engineering) 中的一個研究方向,依不同地區特性與經驗大約可分為幾個不同類型
[16],日本的軟體工廠研究以電腦與通訊產業的製造商為主,如 NEC, Toshiba, NTT 等公司,以強調製造生產的組織與紀律 [23, 24]。歐洲 Eureka 軟體工廠研究專案 [32, 33, 34],是一個從 1987 年到 1996 年,
共 2400 人年的研究計劃,成員包括電腦製造商、軟體公司、大學等單位,
計劃目標為是以提供技術、標準、組織為基礎,建構一個軟體工廠共用架 構,參與計劃成員以共用架構開發元件與軟體,讓不同的應用軟體可以透 過軟體通道互通。美國軟體工廠研究最初是以經驗庫知識 [35, 36] 及標 準架構 [42] 及軟體成熟度 (CMMI) 為主。中國大陸以小型生產單位導入 ISO 9001 與 CMM 做為研究 [31]。軟體工廠主要是將其他產業的管理概念 移植到軟體開發,以工廠嚴謹的生產管理方式,來改善軟體產業的生產力 與品質。製造業追求品質持續改善的成效如果可以移植在軟體生產中可以 解決多年來的軟體問題。最早的軟體工廠概念是 1968 年美國奇異
(General Electric) 公司的工程師 R.W. Bemer 建議奇異公司設立軟體工 廠 [15],目的是降低程式設計師之間的生產力差異,使用的方法是採用標 準化工具,電腦化介面管理暨儲存財務與管理的歷史資料庫。雖然奇異公
司於 1970 年底退出商用軟體與硬體的市場。Bemer 先提出了軟體工廠第一 個重要的概念:標準工具 (Standardized tools) 與控制 (Control)。用 標準工具來來控管產能與品質,用電腦化財務與管理資料來追蹤成本和時 程。
1980 年代日本的電腦與通訊廠商紛紛加入軟體工廠的研究,其研究方 向是將生產製造的概念製轉換到軟體開發,主要軟體工廠的重點有:(1) 建 構一個支援軟體生產的流程;(2) 建構軟體作業平台;(3) 建構組織來監 控軟體生產流程;(4) 建構標準化工具、介面、維護、標準設計流程;(5) 型態管理 (Configuration Management);(6) 教育訓練;(7) 專案管理系 統;(8) 成本管理系統;(9) 產能管理系統;(10) 品質保證系統;(11) 品 質衡量機構;(12) 品質循環活動。1980 年日本 NEC 公司建置軟體工廠 [17],為了要改善軟體生產力和品質,NEC 的軟體工廠包含了:(1) 軟體 開發生產線 (Production Line);(2) 管理系統;(3) 資訊系統;(4) 電 腦與通訊開發環境;(5) 人力資源;(6) 軟體品管小組 (圖 8 所示)。
1988 年 Nunamaker 提出提昇軟體生產力的四個方向 [30] 為:(1) 自 動化軟體開發工具;(2) 考率軟體開發過程中人的因素;(3) 評估與改善 的資訊系統;(4) 軟體工廠。1991 年 Humphrey [19] 認為軟體工廠要有標 準生產工具、方法與再使用元件 (reuse software component),同時工廠 的紀律不容易應用在軟體開發上。
Users / Markets
Pre support Post support
Test
requirement Products
Service support
Production Line Development/
maintenance/Service (Intelligent information base)
Study and Analysis Trend of Market needs (Product and Technologies)
standardization , penetration , improvement
C&C Based Environment / CASE + ES and AI Human Factors
SWQC
Goal setting
Data
Analysis and evaluation
Feedback
Goal reviewing Management System
Customer information , products, parts Documents, quality, productivity Process, cost, personnel, equipment Resources, subcontracting, technology
Standards , organization
圖 8:NEC Advanced software Factory (資料來源:NEC corporation)
2.2 軟體元件再使用
1968 年 AT&T 貝爾電話實驗室 (Bell Telephone Lab.),Dr. M.D.
Mcllroy 在 NATO Science Committee 提出另一個概念 “在開發新程式時 使用舊程式碼" 以達成大量生產 (mass production) 的目標 [18]。
Mcllroy 啟發了軟體元件再使用與元件工廠的大量生產概念。1977 年日本 Toshiba 公司為了開發工業流程控制系統軟體 [26, 27],成立 FUCHU 軟 體工廠 (圖 9 所示),Fuchu 軟體工廠的組織是以高度軟體再使用為目標,
部門分成元件製造與專案開發,在兩部門之上成立軟體元件指導委員會 (Software Part Steering committee, SPST)。
Project i DES PROG
V &V
Part center
(Software Part Steering Committee)
CERT
Alteration Notices
Utilization Notices
PMD DES
PROG
CERT SPST
PMD: parts Manufacturing Department
圖 9:Toshiba Fuchu SF
元件製造部門負責軟體元件設計、生產、測試,元件中心為一個軟體
元件資料庫,提供專案開發所需的軟體元件。Basili [35, 36] 提出重複 Products, Models,
Lessons Learned, Data Etc.
Direct feedback
Products, Lessons Learned,Data Etc.
Models, Baselines, Tools, Consulting Etc.
Project Organization
Analysis Products, Models,
Lessons Learned, Data Etc.
Direct feedback
Products, Lessons Learned,Data Etc.
Models, Baselines, Tools, Consulting Etc.
Project Organization
圖 10:經驗庫軟體開發模式
1992 年 HP 軟體實驗室提出以軟體元件(圖 11 所示)組合概念的彈性軟 體工廠(Flexible software factory)[37],以不同產業別的軟體元件組裝 應用軟體,軟體開發前先做產業分析、系統設計、產品線生產等步驟。(圖 12 所示) ,完全類似工廠生產模式。
A1
Glue Code
Applications
B1
C1
Builder / Generator + Generic Application + Environment, Process + Documentation…
G
Glue Code
Applications
B1
C1
Builder / Generator + Generic Application + Environment, Process + Documentation…
G
Product 1
Product 2
Product 3 Generic Kit Technology
Domain
Application user Application
Developer Domain Knowledge Analysis and Trends.
Application Developer Skills And requirement
Kit developer
Domain
Product 1
Product 2
Product 3 Generic Kit Technology
Domain
Application user Application
Developer Domain Knowledge Analysis and Trends.
Application Developer Skills And requirement
Kit developer
圖 12. 元件組合軟體開發
三. 軟體工廠生產模式 3.1 軟體工廠解決策略
軟體開發流程依序分為需求分析、系統分析、系統設計、程式編碼,測 試、維護。其中可以大量自動化的部份從系統設計到程式編碼、測試、維護。
[21][22][25]這部份是軟體工廠主要涵蓋的部份。在建置軟體工廠前需考慮 到軟體生產工廠和製造工廠的差異性 (表 1 所示),製造工廠管理的重點對 像是 “物料",而軟體工廠管理的對像是 “人",以生產製造的角度來看 軟體工廠的管理,著重的是 “標準化" 和 “作業程序"。軟體工廠是將 製造業的生產與品管概念,應用到軟體開發流程,以達到人員生產力,時程、
品質的一致性與可預測性。其所需要規劃建置的工作有標準化的軟體製程與 生產中心,軟體元件庫,自動化工具支援等。利用軟體工廠生產模式可以做 到下列三項目標:(1) 降低人的因素,品質一致;(2) 軟體模具與元件再使 用 (re-use),開發時程短,專案成本低;(3) 製程標準化,可以分工,容 易計算時程與成本 [28][29] 。在國外大型專案軟體開發也有許多應用工廠 製造概念[40][41]。
表 1:軟體工廠和製造工廠的差異
軟體工廠 製造工廠
產品 無形與有形(文件) 有形
產品儲存性 低 高
產品一致性 低 高
對勞力依賴程度 高 低
投入 (Input) 人力 物料 轉換程序
(Process)
腦力密集,不易標準化 資本密集,容易標準化
產出 (Output) 程式碼 實體 回饋 (Feed
back)
QC 不易進行 QC 容易進行
因此軟體工廠的重點應包含:軟體生產製程、元件庫、自動化生產工 具、管理工具支援環境。
3.2 軟體工廠組成
依照軟體工廠概念軟體工廠應該有下列組成 (圖 13 所示)。設計研發 單位負責生產線設計、元件製作、軟體模版設計;生產管理單位負責生產 規劃、派工、排程、外包管理;生產中心則負責元件組裝,編碼;品管單 位負責單元測試、整合測試。從功能模組方塊來看 (圖 14 所示),軟體工 廠投入的有程式規格、資料模型規格、使用界面規格,透過生產中心依照 模版與元件組成合於規格的程式碼,並作完單元測試與整合測試,產出程 式碼與文件,產出屬於非實體的數位格式,需存放在儲存媒體上。由於產
出是數位格式資料,方便於網路上直接傳輸,且容易被修改造成版本混亂,
因此需要型態管理 (Configuration Management) 來控制規格異動與版本 異動。
產出 (output) 程式規格
Re-use library 共用件程式庫
程式設計 系統設計
知識庫 (Knowledge Base) 控制 (Control)
生產規劃 Production Planning
建構管理
Configuration management 品質控制
Quality Control 測試 使用文件
3.3 從訂單到派工的製程規劃
軟體生產中心主要為元件組裝與編碼,為了規劃產能與計算成本,軟體 工廠需依程式等級標準來分類 (表 2 所示),作為生產中心成本與績效管理 的標準
表 2:程式等級與標準工時 程式等
級
標準工時(人 天)
功能點數 備註
A 級 5 20 核心交易
B 級 3 10 一般交易、流程 C 級 1.5 7 報表
D 級 1 5 建檔(新增、查詢、刪除) E 級 0.5 3 功能修改
F 級 0.25 1 功能修改
從訂單承接開始必需先完成生產規劃,將訂單展開成工作分解結構 (Work Breakdown Structure) 。 從 訂 單 分 解 成 工 作 (Task) , 次 工 作 (Subtask),從次工作分解成基本工作單元 (Work Unit)。每一個工作單元 即是單一工作者可以獨立完成的部份。依據工作單元與產能狀況,決定生 產排程。生產規劃內容包括:程式數量、程式規格、完工日、使用工具、
程式模版、測試標準、效能標準,生產計劃確認後產生外包計劃或派工單。
軟體工廠所需之流程控制與管理模式,從訂單計劃到派工管理、元件規劃、
模版製作、編碼、測試、重工與外包的整個製程。這些過程都需要控制及 管理,且需借助於下列功能。
1. 生產規劃:生產依訂單型態分成兩種:按訂單生產及元件生產,提供最 程式等級程式規格、完工日、使用工具、程式模版、測試標準、效能標 準。
2. 生產排程:用有限或無限產能,進行各工作站進度排程,視需要再前後 調整,另外也進行訂單模擬,以訂單交期反推至各工作站,該站產能比 對,若超出產能限制,視狀況發出外包申請。
3. 製程工單:列出生產工作途程,及優先次序,元件及測試標準、效能標 準。
4. 品質管制:可即時查詢訂單製程狀況,並收集在現場上的生產數據,包 括重工及不良品數量與原因,元件使用率,生產效率及作業成本。各部 門之相關職掌如圖 15 所示。
生產中心
ERD
使用個案圖 (use case diagram) 活動圖(流程圖) (use case diagram) 活動圖(流程圖)
Table Layout UI
商業邏輯 Business Logic
設計規格
Architecture Design 架構設計
Table Layout UI
商業邏輯 Business Logic
設計規格
Architecture Design 架構設計
圖 17:生產中心規劃
這兩類方法論的設計文件產出完全不同,但是都可歸類為 程式規格、
介面、資料模型三項。生產中心的配置原則上以開發工具特性或產品特性 為分類標準,依不同狀態可以做彈性配置 (圖 17 所示)。傳統專案開發,
每一次都是從新編碼不考慮重複性,通常使用複製舊程式再依差異做修 改。軟體工廠重要觀念是重複使用元件、設計、架構,再使用軟體元件,
軟體元件可依其層次、大小可分類 (圖 18 所示)。設計樣版 (Template) 為 不同產業的系統模組,框架 (Framework) 是系統設計的架構,如 CORBA、
J2EE、.NET 都是標準框架,骨架 (Skeleton) 描述介面與基本元件規格。
每一個可重複使用的軟體必須可管理,以資料庫方式儲存 (Store)、擷取 (Retrieve)。
Re-use Library
Template 醫療 Template 政府 Template 金融
Framework
Skeleton
Framework
Skeleton
Framework
Skeleton
Component Component Component
圖 18:軟體再使用元件階層 3.5 軟體模版設計與標準化工具
軟體工廠的兩項主要工作是架構設計與程式碼生產,軟體模版是生產 工具用來產生程式樣式的基本雛形定義。為了讓設計與編碼工作可以大量
軟體工廠的兩項主要工作是架構設計與程式碼生產,軟體模版是生產 工具用來產生程式樣式的基本雛形定義。為了讓設計與編碼工作可以大量