軟體工廠
出自 MBA智库百科(https://wiki.mbalib.com/)
目錄 |
軟體工廠是軟體生產實現社會化、標準化的一種組織形式,是能按需要形成批量生產軟體產品的場所。
軟體工廠的工作過程[1]
1.軟體產品線開發
產品線開發的目標是為一個產品系列提供生產資產。我們可以把產品線開發認為是產品線的分析、設計和實現。
產品線分析是決定產品線開發什麼產品。包括產品線定義、問題和解決方案的領域範圍、商業案例分析和範圍鑒定。其分析強調:
①通過捕獲風險承擔者的觀點來揭示產品線需求;
②通過系統的推理和分析、集成功能需求和分功能需求來完成產品線需求;
③產品線設計師對產品線需求的可用性。
產品線設計決定產品線怎樣開發產品,其中包括產品線體繫結構開發和映射、產品開發過程的定義和自動化。
產品線實現的目的是提供產品線體繫結構和需要的實現資產和過程自動化需要的過程資產。
2.產品開發
(1)產品開發活動要素
產品開發活動取決於產品線範圍、核心資源庫、產品計劃和需求的輸出。
產品開發的輸入有:
1)特定產品的需求,通常由包含在產品線範圍內的一些產品描述來表達;
2)產品線範圍,指明正在考慮的產品是否適合包含在產品線中;
3)構建產品所需的核心資源庫;
4)產品計劃,指明核心資源如何應用到產品的構建中。
本質上說,產品線是一組相關產品的集合,但是,怎樣實現卻有很大的不同,這取決於資源、產品計劃和組織環境。
(2)生成產品涉及到的活動
1)問題分析:確定問題是否位於軟體工廠的範圍內;
2)產品規範:根據與產品要求之間的差異來定義產品要求;
3)產品設計:將要求方面的差異映射到產品系列體繫結構和產品開發過程方面的差異,從而生成產品體繫結構和自定義的產品開發過程;
4)產品實現:可以使用一系列機制來開發實現,具體取決於差異的範圍,例如,屬性表、配置組件的嚮導和功能模型、裝配組件並生成其他人工製品(例如,模型、代碼和配置文件)的可視模型,以及完成框架擴展點或者創建、修改、擴展或改裝組件的源代碼;
5)產品部署:通過供應設備、驗證主機配置來創建或重用預設的部署約束、邏輯主機配置以及可執行文件到邏輯主機的映射,通過安裝和配置必需的資源來重新配置主機,以及安裝和配置所部署的可執行文件;
6)產品測試:創建或重用測試資產(包括測試用例、測試裝置、測試數據集和測試腳本)以及應用儀錶化和度量工具。
軟體工廠涉及的基本概念和技術[1]
1.軟體產品系列
軟體產品系列是有相同特征的一組產品的集合。軟體產品系列成員具有很多共同特征,成員可以是組件也可是整個產品。
系列成員可以根據個性問題特征指定,根據個性解決方案來實現,從而可以忽略共性,減小瞭解決問題的範圍和需要提供解決方案的範圍。
2.軟體產品線
由一個產品線體繫結構、一個可重用構件集合(核心資源)和一個源自共用資源的產品集合組成,是組織一組相關軟體產品開發的方式。軟體產品線系統獲取生產系列產品成員的知識,以可重用資產的形式使用,例如組件、過程、工具,然後用這些資產生產系列成員。產品就像是家族成員一樣重覆使用需求、體繫結構、框架、組件、測試和其他資產。軟體產品線主要有以下建立方式:
(1)將現有產品演化為產品線。
(2)用軟體產品線替代為現有產品集。
(3)全新軟體產品線的演化。
(4)全新軟體產品線的開發。
3.供應鏈
供應鏈是一個網路,以原始材料為起點,將其轉換為中間產品,然後轉換為最終的產品,以便通過配送系統提供給客戶。
供應商互相連接在一起,以便使來自上游供應商的輸出變成下游供應商的輸入。上游供應商可以向下游供應商提供實現資產(例如,組件)或過程資產(例如工具和過程文檔)。由於下游供應商生產的產品要結合上游供應商提供的實現資產,因此下游供應商具有較窄的活動範圍,並且生產的產品比上游產品更大。
軟體工廠通過劃分軟體架構(縱向或橫向)以便將職責轉移給外部供應商來促進供應鏈的形成:
(1)縱向劃分使軟體工廠可以裝配由上游供應商提供的組件。例如,實體框架來自獨立軟體供應商。
(2)橫向劃分可以分隔產品系列和產品開發人員,使得產品開發人員可以使用由處於供應鏈同一級別的外部產品系列開發人員提供的生產資產。這可以採取下列兩種形式之一:
①產品系列開發被外包。例如,開發軟體工廠的產品系列開發人員為外部的系統集成商工作,而不是為獨立軟體供應商工作。他們為客戶組織中的開發人員生成軟體工廠,而不是為內部開發人員生成它們。
②產品開發被外包。例如,產品開發人員為系統集成商工作,並使用為獨立軟體供應商工作的產品系列開發人員所開發的軟體工廠。產品開發人員可能位於境外成本較低的勞務市場中。