軟體產品線工程方法 - 四個主要方法原則

來源:互聯網
上載者:User

資訊系統存在很多共性,如果作為產品來開發,那麼如何能夠通過平台來進行重用和擴充,業界中的產品線工程方法就是進行大範圍複用的一種方法。 在園子裡也住了不短時間,發現關注技術的佔多數,而除了技術外,軟體工程中還有很多我們需要關注的,如,軟體架構平台基於產品線工程開發。前一陣子對Scrum進行了介紹,接下來準備寫幾篇產品線相關的內容,本篇將對產品線中的四個主要概念進行簡要的說明(可變性管理、商業驅動、架構驅動、兩階段生命週期) ,希望對不熟悉產品線知識的有所協助。

在講解之前先解釋兩個概念:

產品族:一組使用通用的資源來構建的產品。一個產品族是基於它的成員產品的結構相似性而定義的。產品族成員建立在一個通用平台之上,主要基於產品之間的技術通性而設定的。產品族可以重用於多個產品線。

產品線:一組共用一組公用管理的特徵的產品,這些特徵滿足一個選定市場的特定需要。一個產品線的定義是基於市場策略的,而不是基於它的成員產品之間的技術相似性。為一個產品定義的特徵,可能需要完全不同於其它成員產品的解決方案。一個產品線可能是與一個產品族一起提供出來,但是它也可能需要不止一個產品族。

在下面介紹過程中,在談架構平台時更偏向於產品族的概念。

為什麼需要產品線方法

隨著軟體應用的普及,企業對軟體也越來越重視,不斷的要求採用軟體提高效率,提升技能增強企業競爭力。隨著客戶的增多,軟體企業這時需要
面對更多的客戶,處理共性和個性問題。如何保證低成本、高品質、快速上市等要求就成為了企業競爭力的主要表現之一,而產品線工程方法就是支援這種大範圍重
用(large-scale
reuse)的方法。產品線區別於傳統的代碼重用就是大量的使用重用(可以達到90%),不僅僅是代碼,還包括需求、業務等。在《OpenExpressApp架構-一個資訊系統的平台》中我畫了一個重用的圖,產品線將基於更大範圍的重用進行開發。

 

  • 減少成本

大家都知道,軟體開發成本是成本的一部分,軟體的維護成本也是很大一塊,產品線工程除了可以減少開發成本外,維護成本也可以大大降低,不再需要維護大量不同版本不同架構的代碼,也沒有大量不同的文檔需要維護。

  • 快速上市

     

產品基於重用開發,不需要在每個開發環節都重頭開始,這樣可以大大的縮短上市時間。

  • 減少風險

     

由於產品線除了可以重用架構,對同類型產品也可以重用開發方法,這樣對於任務估計、開發計劃都可以很好的重用,這樣也可以減少項目開發的風險。

  • 提高品質

     

軟體基於大量成熟和經過驗證的核心資產進行開發,這些組件都已經經過大量使用並得到驗證,所以在項目中應用可以保證出現的問題很少。

雖然產品線預計帶來的效果很迷人,但是它並不是一開始就可以給企業帶來效益的,它必須進行一些前期的投資(核心資產的開發、組織的轉變等)才能獲得回報,右圖是產品線的經濟走線圖,在第三個項目時才能達到收支平衡。

產品線方法基本原則
  • 產品線方法與傳統的單項目開發的主要不同在於關注點的轉移:從單獨的產品到產品線的項目。這個轉移暗示了一個策略:從特定的項目開發到特定業務領域產品的願景。
  • 產品線工程對開發以重用(development for reuse)使用重用來開發( development with reuse)
    明確的區分。對比傳統的重用,產品線基礎設施包括產品開發週期的所有資產(架構、業務模組、開發計劃,需求到測試階段),而不只是在代碼級的重用。這些重
    用資產都包含明確可變性說明的,如需求原型中表明這個功能只在特定子產品中才包括,這對產品業務的理解要求就更高了。 
  • 四個主要原則
    • 可變性管理(Variability management):每個產品都是核心資產的變體,必須系統化的管理產品的可變性,這對業務分析的要求就更高了,由於它在產品開發生命週期的重要性,下面會單獨進行說明。
    • 商業驅動(Business-centric):產品線瞄準的是長期的商業戰略,而不是僅僅走單。
      傳統的軟體開發基於各個單獨的項目進行,產品線開發要求系統全面的對市場進行定位。商業驅動方法需要決定哪些功能應該包括在產品線中,是在領域工程還是應
      用工程中進行。這個在產品線中叫做確定範圍(scoping)。在《軟體產品線實踐和模式》中提出一個公司是採用一條產品線還是多條產品線?書中提到大型
      產品線只有同時具備以下兩個條件時才會起到好的作用:第一,
      產品具有足夠多的相同點,將它們作為一條產品線是有利可圖的,第二,公司有能力控制這樣大大型的市場運作、開發以及其他方面。如果暫時不能滿足這兩個條
      件,那麼還是分為兩個產品線進行,而不能一味的一個公司只要一個產品線。
    • 架構驅動(Architecture-centric):技術上需要支援最大化的重。產品線工程依賴一個通用的參考架構(reference architecture),特定項目架構都基於參考架構進行開發。
    • 兩階段生命週期(Two-life-cycle approach):每個產品基於平台開發,產品和平台有各自的Team Dev和開發生命週期。如果條件不允許需要同時做這兩種工作時,自己一定要清晰自己所做的工作哪些是領域工程,哪些是應用工程。為兩階段圖:

      架構分為兩個階段:領域工程和應用工程。
      領域工程產出平台的公用核心資產,應用工程產出產品。在整個開發生命週期中,存在9個子流程,八個流程互相匹配成四組類似流程,需求、設計、在實現和測試
      領域工程和應用工程都存在,每一匹配組的流程都緊密相連。領域工程的子流程目的在於滿足通用需求,而在應用工程是為了生產可供使用的產品。應用工程的子流
      程可以重用多達90%的領域工程資產,在生產過程中會不斷的提供反饋給領域工程,這種迴圈反饋才能確保平台一直都能有效生產出最終產品。

可變性管理(Variability management)


品線工程是支援一系列有共性的產品,比較清楚的表明了產品的主要點,可變性(variability)是很重要的一個概念,在產品開發過程中可變性必
須明確的定義、表達、開發、實現和不斷的完善,它必須是被管理的。可變性管理應該在早期範圍界定是就開始,它與所有核心資產相關。其實現在很多公司,只要
做的軟體是產品性質的,很多都是服務大量不同客戶,都需要進行可變性管理,但是因為沒有明確提出是在進行產品線開發,所以可變性的概念並沒有提出來,所以
自然也得不到重視和研究。可變性管理應該成為產品開發的核心問題之一,這也是我後年的關注點。

可變性類型

中顯示了可變性的三種主要類型:共性、變化點、基於特定產品。要注意,隨著產品的進展,基於特定產品的功能可以會變成變化點,變化點可能會變成共性。

共性和變化點在領域工程中解決,特定產品功能在應用工程解決。

三種基本的實現可變性技術

 

 

可視化可變性

上面簡單講了一下可變性的概念,那麼我們如何表達出來並與別人交流呢?業界有通過模型來表達的,

展現了一個可變性模型和領域模型的關聯。

可供參考資料:

Software Product Lines in Action
 

更多內容:  規模化產品開發方法-產品線工程 100222.pdf

 

歡迎轉載,轉載請註明:轉載自周金根 [ http://zhoujg.cnblogs.com/ ]

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.