Designing Software Product Lines with UML : From Use Cases to Pattern-Based Software Architectures
暫譯: 使用UML設計軟體產品線:從用例到基於模式的軟體架構

Hassan Gomaa

  • 出版商: Addison Wesley
  • 出版日期: 2004-07-17
  • 售價: $2,690
  • 貴賓價: 9.5$2,556
  • 語言: 英文
  • 頁數: 736
  • 裝訂: Paperback
  • ISBN: 0201775956
  • ISBN-13: 9780201775952
  • 相關分類: UML軟體架構
  • 已絕版

買這商品的人也買了...

商品描述

Description:

 

"Designing Software Product Lines with UML is well-written, informative, and addresses a very important topic. It is a valuable contribution to the literature in this area, and offers practical guidance for software architects and engineers."
—Alan Brown
Distinguished Engineer, Rational Software, IBM Software Group

"Gomaa's process and UML extensions allow development teams to focus on feature-oriented development and provide a basis for improving the level of reuse across multiple software development efforts. This book will be valuable to any software development professional who needs to manage across projects and wants to focus on creating software that is consistent, reusable, and modular in nature."
—Jeffrey S Hammond
Group Marketing Manager, Rational Software, IBM Software Group

"This book brings together a good range of concepts for understanding software product lines and provides an organized method for developing product lines using object-oriented techniques with the UML. Once again, Hassan has done an excellent job in balancing the needs of both experienced and novice software engineers."
—Robert G. Pettit IV, Ph.D.
Adjunct Professor of Software Engineering, George Mason University

"This breakthrough book provides a comprehensive step-by-step approach on how to develop software product lines, which is of great strategic benefit to industry. The development of software product lines enables significant reuse of software architectures. Practitioners will benefit from the well-defined PLUS process and rich case studies."
—Hurley V. Blankenship II
Program Manager, Justice and Public Safety, Science Applications International Corporation

"The Product Line UML based Software engineering (PLUS) is leading edge. With the author's wide experience and deep knowledge, PLUS is well harmonized with architectural and design pattern technologies."
—Michael Shin
Assistant Professor, Texas Tech University

Long a standard practice in traditional manufacturing, the concept of product lines is quickly earning recognition in the software industry. A software product line is a family of systems that shares a common set of core technical assets with preplanned extensions and variations to address the needs of specific customers or market segments. When skillfully implemented, a product line strategy can yield enormous gains in productivity, quality, and time-to-market. Studies indicate that if three or more systems with a degree of common functionality are to be developed, a product-line approach is significantly more cost-effective.

To model and design families of systems, the analysis and design concepts for single product systems need to be extended to support product lines. Designing Software Product Lines with UML shows how to employ the latest version of the industry-standard Unified Modeling Language (UML 2.0) to reuse software requirements and architectures rather than starting the development of each new system from scratch. Through real-world case studies, the book illustrates the fundamental concepts and technologies used in the design and implementation of software product lines.

This book describes a new UML-based software design method for product lines called PLUS (Product Line UML-based Software engineering). PLUS provides a set of concepts and techniques to extend UML-based design methods and processes for single systems in a new dimension to address software product lines. Using PLUS, the objective is to explicitly model the commonality and variability in a software product line.

Hassan Gomaa explores how each of the UML modeling views—use case, static, state machine, and interaction modeling—can be extended to address software product families. He also discusses how software architectural patterns can be used to develop a reusable component-based architecture for a product line and how to express this architecture as a UML platform-independent model that can then be mapped to a platform-specific model.

Key topics include:

  • Software product line engineering process, which extends the Unified Development Software Process to address software product lines
  • Use case modeling, including modeling the common and variable functionality of a product line
  • Incorporating feature modeling into UML for modeling common, optional, and alternative product line features
  • Static modeling, including modeling the boundary of the product line and information-intensive entity classes
  • Dynamic modeling, including using interaction modeling to address use-case variability
  • State machines for modeling state-dependent variability
  • Modeling class variability using inheritance and parameterization
  • Software architectural patterns for product lines
  • Component-based distributed design using the new UML 2.0 capability for modeling components, connectors, ports, and provided and required interfaces
  • Detailed case studies giving a step-by-step solution to real-world product line problems

Designing Software Product Lines with UML is an invaluable resource for all designers and developers in this growing field. The information, technology, and case studies presented here show how to harness the promise of software product lines and the practicality of the UML to take software design, quality, and efficiency to the next level. An enhanced online index allows readers to quickly and easily search the entire text for specific topics.

 

Table of Contents:

Foreword.

Preface.

Acknowledgments.

I. OVERVIEW.

1. Introduction.

Software Reuse.

Software Product Lines.

Modeling Requirements Variability in Software Product Lines: Feature Modeling.

Modeling Design Variability in Software Product Lines.

Reusable Design Patterns.

Modeling Single Systems with UML.

COMET: A UML-Based Software Design Method for Single Systems.

Modeling Software Product Lines with UML.

UML as a Standard.

Related Texts.

Summary.

2. Design Concepts for Software Product Lines.

Object-Oriented Concepts.

Information Hiding.

Relationships between Classes.

Dynamic Modeling.

Sequential and Concurrent Applications.

Software Architecture and Components.

Summary.

3. Software Product Line Engineering.

Evolutionary Software Product Line Engineering Process.

Software Product Line Engineering Phases.

Forward and Reverse Evolutionary Engineering.

Integration of PLUS with the Spiral Model.

Integration of PLUS with Unified Software Development Process.

Requirements, Analysis, and Design Modeling in Software Product Lines.

Software Product Line Scoping.

Summary.

II. REQUIREMENTS, ANALYSIS, AND DESIGN MODELING FOR SOFTWARE PRODUCT LINES.

4. Use Case Modeling for Software Product Lines.

The Use Case Model in Single Systems.

The Use Case Model for Software Product Lines.

Identifying Use Cases.

Documenting Product Line Use Cases.

Example of a Use Case Description.

Modeling Variability in Use Cases.

Modeling Small Variations.

Modeling Variability with the Extend Relationship.

Modeling Variability with the Include Relationship.

Use Case Development Strategies.

Summary.

5. Feature Modeling for Software Product Lines.

Introduction to Feature Analysis.

Commonality/Variability Feature Analysis.

Features and Use Cases.

Feature Modeling with UML.

Feature Groups.

Advanced Feature Modeling with UML.

Summary.

6. Static Modeling in Software Product Lines.

Modeling Commonality and Variability in Product Lines.

Static Modeling of the Software Product Line Problem Domain.

Static Modeling of the Software Product Line Scope.

Static Modeling of Entity Classes.

Modeling Application Classes and Objects.

Summary.

7. Dynamic Interaction Modeling for Software Product Lines.

Dynamic Modeling in Single Systems.

Evolutionary Dynamic Modeling in Software Product Lines.

Kernel First Approach.

Software Product Line Evolution Approach.

Message Sequence Numbering on Interaction Diagrams.

Example of Evolutionary Dynamic Analysis for the Microwave Oven Product Line.

Summary.

8. Finite State Machines and Statecharts for Software Product Lines.

Finite State Machines for Kernel and Single Systems.

Hierarchical Statecharts.

Finite State Machines and Statecharts for Software Product Lines.

Inherited State Machines in Software Product Lines.

Parameterized State Machines in Software Product Lines.

Comparison of Approaches.

Kernel First Approach: State-Dependent Dynamic Analysis.

Software Product Line Evolution Approach.

Dynamic Analysis with Communicating State-Dependent Objects.

Summary.

9. Feature/Class Dependency Modeling for Software Product Lines.

Classes and Variation Points.

Class Reuse Categorization for Software Product Lines.

Feature/Class Dependencies.

Feature-Based Impact Analysis.

Feature/Object and Feature/Class Dependency Modeling in UML.

Summary.

10. Architectural Patterns for Software Product Lines.

Categorization of Software Patterns.

Software Architectural Structure Patterns.

Software Architectural Communication Patterns.

Software Architectural Transaction Patterns.

Documenting Software Architectural Patterns.

Applying Software Architectural Patterns.

Summary.

11. Software Product Line Architectural Design: Component-Based Design.

Software Architecture Issues.

Configurable Architectures and Software Components.

Steps in Designing Distributed Applications.

Design of Software Architecture.

Design of Component-Based Software Architecture.

Separation of Concerns in Component Design.

Aggregate and Composite Subsystems.

Component Structuring Criteria.

Design of Server Components.

Distribution of Data.

Design of Component Interfaces.

Design of Components.

Summary.

12. Software Application Engineering.

Phases in Software Application Engineering.

Software Application Engineering with the USDP.

Application Deployment.

Tradeoffs in Software Application Engineering.

Example of Software Application Engineering.

Summary.

III. CASE STUDIES.

13. Microwave Oven Software Product Line Case Study.

Problem Description.

Use Case Modeling.

Feature Modeling.

Static Modeling.

Dynamic Modeling.

Software Product Line Evolution.

Feature/Class Dependency Analysis.

Design Modeling.

Software Application Engineering.

14. Electronic Commerce Software Product Line Case Study.

Problem Description.

Use Case Modeling.

Feature Modeling.

Static Modeling.

Dynamic Modeling.

Software Product Line Evolution.

Feature/Class Dependency Analysis.

Design Modeling.

Software Application Engineering.

15. Factory Automation Software Product Line Case Study.

Problem Description.

Use Case Modeling.

Feature Modeling.

Static Modeling.

Dynamic Modeling.

Software Product Line Evolution.

Feature/Class Dependency Analysis.

Design Modeling.

Software Application Engineering.

Appendix A: Overview of the UML Notation.

UML Diagrams.

Use Case Diagrams.

Classes and Objects.

Class Diagrams.

Interaction Diagrams.

Statechart Diagrams.

Packages.

Concurrent Communication Diagrams.

Deployment Diagrams.

UML Extension Mechanisms.

Conventions Used in This Book.

Summary.

Appendix B: Catalog of Software Architectural Patterns.

Software Architectural Structure Patterns.

Software Architectural Communication Patterns.

Software Architectural Transaction Patterns.

Glossary.

Bibliography.

Index.

商品描述(中文翻譯)

描述:

「使用 UML 設計軟體產品線的書寫流暢、資訊豐富,並且探討了一個非常重要的主題。這對於該領域的文獻是一項寶貴的貢獻,並為軟體架構師和工程師提供了實用的指導。」
—Alan Brown
IBM 軟體集團 Rational Software 的傑出工程師

「Gomaa 的流程和 UML 擴展使開發團隊能夠專注於以功能為導向的開發,並提供了一個基礎,以提高多個軟體開發工作的重用水平。這本書對於任何需要跨專案管理的軟體開發專業人士來說都是非常有價值的,並且希望專注於創建一致、可重用和模組化的軟體。」
—Jeffrey S Hammond
IBM 軟體集團 Rational Software 的市場經理

「這本書匯集了理解軟體產品線所需的多種概念,並提供了一種有組織的方法,使用物件導向技術和 UML 開發產品線。Hassan 再次出色地平衡了經驗豐富的軟體工程師和新手的需求。」
—Robert G. Pettit IV, Ph.D.
喬治梅森大學軟體工程兼任教授

「這本突破性的書籍提供了一個全面的逐步方法,說明如何開發軟體產品線,這對於行業具有重大的戰略利益。軟體產品線的開發使得軟體架構的重用變得顯著。從明確定義的 PLUS 流程和豐富的案例研究中,實踐者將受益。」
—Hurley V. Blankenship II
科學應用國際公司司法與公共安全計畫經理

「基於產品線的 UML 軟體工程 (PLUS) 是前沿的。憑藉作者的廣泛經驗和深厚知識,PLUS 與架構和設計模式技術良好協調。」
—Michael Shin
德州科技大學助理教授

產品線的概念在傳統製造業中長期以來一直是標準做法,現在在軟體行業中迅速獲得認可。軟體產品線是一組系統,這些系統共享一組共同的核心技術資產,並具有預先規劃的擴展和變化,以滿足特定客戶或市場細分的需求。當巧妙實施時,產品線策略可以在生產力、質量和上市時間上帶來巨大的收益。研究表明,如果要開發三個或更多具有一定共同功能的系統,則產品線方法在成本效益上顯著更高。

為了建模和設計系統家族,單一產品系統的分析和設計概念需要擴展以支持產品線。《使用 UML 設計軟體產品線》展示了如何利用行業標準的統一建模語言 (UML 2.0) 的最新版本來重用軟體需求和架構,而不是從頭開始開發每個新系統。通過現實世界的案例研究,本書說明了在設計和實施軟體產品線中使用的基本概念和技術。

本書描述了一種基於 UML 的新軟體設計方法,稱為 PLUS(基於產品線的 UML 軟體工程)。PLUS 提供了一組概念和技術,以擴展基於 UML 的單一系統設計方法和流程,從而在新維度上解決軟體產品線的問題。使用 PLUS 的目標是明確建模軟體產品線中的共性和變異性。

Hassan Gomaa 探討了每個 UML 建模視圖——用例、靜態、狀態機和互動建模——如何擴展以解決軟體產品家族的問題。他還討論了如何使用軟體架構模式來開發可重用的基於組件的架構,並如何將這種架構表達為一個平台無關的 UML 模型,然後可以映射到特定平台的模型。

主要主題包括:

- 軟體產品線工程過程,擴展統一開發軟體過程以解決軟體產品線
- 用例建模,包括建模產品線的共同和可變功能
- 將功能建模納入 UML,以建模共同、可選和替代的產品線功能
- 靜態建模,包括建模產品線的邊界和信息密集型實體類
- 動態建模,包括使用互動建模來解決用例變異性
- 用於建模狀態依賴變異性的狀態機
- 使用繼承和參數化建模類變異性
- 產品線的軟體架構模式
- 使用新的 UML 2.0 功能進行基於組件的分佈式設計,建模組件、連接器、端口以及提供和要求的介面
- 詳細的案例研究,提供針對現實世界產品線問題的逐步解決方案

《使用 UML 設計軟體產品線》是所有設計師和開發人員在這一不斷增長的領域中的寶貴資源。這裡提供的信息、技術和案例研究展示了如何利用軟體產品線的潛力和 UML 的實用性,將軟體設計、質量和效率提升到新的水平。增強的在線索引使讀者能夠快速輕鬆地搜索整個文本中的特定主題。

目錄:

前言。

序言。

致謝。

I. 概述。

1. 介紹。

軟體重用。

軟體產品線。

在軟體產品線中建模需求變異性:功能建模。

在軟體產品線中建模設計變異性。

可重用設計模式。

使用 UML 建模單一系統。

COMET:一種基於 UML 的單一系統軟體設計方法。

使用 UML 建模軟體產品線。

UML 作為標準。

相關文本。

摘要。

2. 軟體產品線的設計概念。

物件導向概念。

信息隱藏。

類之間的關係。

動態建模。

順序和並行應用。

軟體架構和組件。

摘要。

3. 軟體產品線工程。

演化軟體產品線工程過程。

軟體產品線工程階段。

前向和反向演化工程。

PLUS 與螺旋模型的整合。

PLUS 與統一軟體開發過程的整合。

軟體產品線中的需求、分析和設計建模。

軟體產品線範疇。

摘要。

II. 軟體產品線的需求、分析和設計建模。

4. 軟體產品線的用例建模。

單一系統中的用例模型。

軟體產品線的用例模型。

識別用例。

記錄產品線用例。

用例描述的範例。

建模用例中的變異性。

建模小變化。

使用擴展關係建模變異性。

使用包含關係建模變異性。

用例開發策略。

摘要。

5. 軟體產品線的功能建模。

功能分析簡介。

共性/變異性功能分析。

功能和用例。

使用 UML 的功能建模。

功能組。

使用 UML 的高級功能建模。

摘要。

6. 軟體產品線中的靜態建模。

建模產品線中的共性和變異性。

軟體產品線問題域的靜態建模。

軟體產品線範疇的靜態建模。

實體類的靜態建模。

建模應用類和對象。

摘要。

7. 軟體產品線的動態互動建模。

單一系統中的動態建模。

軟體產品線中的演化動態建模。

核心優先方法。

軟體產品線演化方法。

互動圖上的消息序列編號。

微波爐產品線的演化動態分析範例。

摘要。

8. 軟體產品線的有限狀態機和狀態圖。

核心和單一系統的有限狀態機。

層次狀態圖。

軟體產品線的有限狀態機和狀態圖。

軟體產品線中的繼承狀態機。

軟體產品線中的參數化狀態機。

方法比較。

核心優先方法:狀態依賴的動態分析。

軟體產品線演化方法。

使用通訊狀態依賴對象的動態分析。

摘要。

9. 軟體產品線的功能/類依賴建模。

類和變異點。

軟體產品線的類重用分類。

功能/類依賴。

基於功能的影響分析。

在 UML 中的功能/對象和功能/類依賴建模。

摘要。

10. 軟體產品線的架構模式。

軟體模式的分類。

軟體架構結構模式。

軟體架構通信模式。

軟體架構交易模式。

記錄軟體架構模式。

應用軟體架構模式。

摘要。

11. 軟體產品線架構設計:基於組件的設計。

軟體架構問題。

可配置架構和軟體組件。

設計分佈式應用的步驟。

軟體架構的設計。

基於組件的軟體架構的設計。

組件設計中的關注點分離。

聚合和組合子系統。

組件結構標準。

伺服器組件的設計。

數據的分佈。

組件介面的設計。

組件的設計。

摘要。

12. 軟體應用工程。

軟體應用工程的階段。

使用 USDP 的軟體應用工程。

應用部署。

軟體應用工程中的權衡。

軟體應用工程的範例。

摘要。

III. 案例研究。

最後瀏覽商品 (20)