UML-Based Software Product Line Engineering with SMarty

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

This book is about software product lines (SPLs) designed and developed taking UML diagrams as the primary basis, modeled according to a rigorous approach composed of an UML profile and a systematic process for variability management activities, forming the Stereotype-based Management of Variability (SMarty) approach.


The book consists of five parts. Part I provides essential concepts on SPL in terms of the first development methodologies. It also introduces variability concepts and discusses SPL architectures finishing with the SMarty approach. Part II is focused on the design, verification and validation of SMarty SPLs, and Part III concentrates on the SPL architecture evolution based on ISO/IEC metrics, the SystEM-PLA method, optimization with the MOA4PLA method, and feature interaction prevention. Next, Part IV presents SMarty as a basis for SPL development, such as, the M-SPLearning SPL for mobile learning applications, the PLeTs SPL for testing tools, the PlugSPL plugin environment for supporting the SPL life cycle, the SyMPLES approach for designing embedded systems with SysML, the SMartySPEM approach for software process lines (SPrL), and re-engineering of class diagrams into an SPL. Eventually, Part V promotes controlled experimentation in UML-based SPLs, presenting essential concepts on how to plan, conduct, and document experiments, as well as showing several experiments carried out with SMarty.


This book aims at lecturers, graduate students and experienced practitioners. Lecturers might use the book for graduate level courses about SPL fundamentals and tools; students will learn about the SPL engineering process, variability management, and mass customization; and practitioners will see how to plan the transition from single-product development to an SPL-based process, how to document inherent variability in a given domain, or how to apply controlled experiments to SPLs.


Author(s): Edson OliveiraJr
Publisher: Springer
Year: 2023

Language: English
Pages: 516
City: Cham

Foreword
Introduction
Product Lines and ``Value''
Modern Product Lines with Data-Driven Capabilities
Product Line Research Versus Product Line Practice
Concluding Remarks
Preface
What Is This Book About?
Who Should Read This Book?
How Is This Book Structured?
How Did This Book Start?
Acknowledgments
Contents
Contributors
Part I Fundamentals of Software Product Lines and the SMarty Approach
1 Principles of Software Product Lines
1.1 Characterizing Software Product Lines
1.2 SPL Terminology
1.3 SPL Engineering Methodologies and Reference Model
1.3.1 First-Generation Methodologies
1.3.1.1 FODA: Feature-Oriented Domain Analysis (1990)
1.3.1.2 RSEB: Reuse-Driven Software Engineering Business (1997)
1.3.1.3 FORM: Feature-Oriented Reuse Method for Product Line Software Engineering (1998)
1.3.1.4 FAST: Family-Oriented Abstraction, Specification, and Translation (1999)
1.3.1.5 PuLSE: Fraunhofer Product Line Software Engineering (1999)
1.3.1.6 KobrA: Komponenten basierte Anwendungsentwicklung (2000)
1.3.1.7 SEI Framework for Software Product Line Practice (2002)
1.3.1.8 PLUS: Product Line UML-Based Software Engineering (2004)
1.3.1.9 SMarty: Stereotype-Based Management of Variability (2005)
1.3.1.10 Pohl et al.'s SPL Framework (2005)
1.3.2 Second-Generation Software Product Line Engineering (2GPLE)
1.3.3 ISO/IEC Standards for SPL Engineering, Management, and Tools
1.4 SPL Development Approaches
1.4.1 The Proactive Approach
1.4.2 The Extractive Approach
1.4.3 The Reactive Approach
1.4.4 Feature-Oriented SPL Development
1.5 Final Remarks
References
2 Variability Implementation and UML-Based Software Product Lines
2.1 Introduction
2.2 Implementing Variability
2.2.1 Variability in the Problem Space
2.2.2 Variability in the Solution Space
2.2.3 SPL Variability Tools
2.3 Overview of UML-Based SPL
2.4 Discussion
2.5 Final Remarks
References
3 Software Product Line Architectures
3.1 Software Architecture Foundations
3.1.1 What Is Software Architecture
3.1.2 Quality Attributes and Software Architecture
3.1.3 Software Architecture Descriptions
3.1.3.1 Module Dependency Graph
3.1.3.2 Design Structure Matrix
3.1.4 Variability in Software Architecture
3.2 Software Product Line Architectures Foundations
3.2.1 Product Lines and Product Line Architectures
3.2.2 Product Line Design
3.2.3 Product Line Architecture Description
3.3 Product Line Architectures Versus Reference Architectures
3.4 A Product Line Architecture Example
3.5 Final Remarks
References
4 The SMarty Approach for UML-Based Software Product Lines
4.1 Overview of the SMarty Family
4.2 The SMartyProfile
4.3 The SMartyProcess and Guidelines
4.3.1 Guidelines for Use Case Diagrams
4.3.2 Guidelines for Class Diagrams
4.3.3 Guidelines for Component Diagrams
4.3.4 Guidelines for Sequence Diagrams
4.3.5 Guidelines for Activity Diagrams
4.4 Final Remarks
References
Part II SMarty-Based Software Product Lines: Design, Verification and Validation
5 Designing, Tracing, and Configuring Software Product Lines with SMarty
5.1 Quick Start to SMartyModeling
5.2 Designing SMarty Diagrams
5.2.1 Use Case Diagrams
5.2.2 Class Diagrams
5.2.3 Component Diagrams
5.2.4 Activity Diagrams
5.2.5 Sequence Diagrams
5.3 Traceability Among Designed Elements
5.4 Configuring Specific Products
5.5 Exporting and Importing SPLs
5.6 Final Remarks
References
6 Product-Line Architecture Designing with SMartyComponents
6.1 The Role of SMarty in This Work
6.2 SMartyComponents
6.3 Requirements Workflow
6.3.1 Activity: Requirements Definition
6.3.1.1 Task: Describe Business Processes
6.3.1.2 Task: Develop Business Concept Model
6.3.1.3 Task: Identify Use Cases
6.4 Specification Workflow
6.4.1 Activity: Component Identification
6.4.1.1 Task: Develop Business Type Model
6.4.1.2 Task: Identify Business Interfaces
6.4.1.3 Task: Identify System Interfaces and Operations
6.4.1.4 Task: Create Initial Components and Architecture Specification
6.4.2 Activity: Component Interaction
6.4.2.1 Task: Find Business Operations
6.4.2.2 Task: Refine Interfaces and Operations
6.4.2.3 Task: Refine Component and Architecture Specification
6.4.3 Activity: Specify Components
6.4.3.1 Task: Define Interface Information Model
6.4.3.2 Task: Specify Operations Pre-and Post-Conditions
6.4.3.3 Specify Component-Interface Constraints
6.5 Final Remarks
References
7 Model-Based Inspections of Software Product Lines
7.1 The Role of SMarty in This Work
7.2 Software Inspection Foundations
7.2.1 Checklist-Based Reading
7.2.2 Scenario-Based Reading
7.2.3 Perspective-Based Reading
7.3 SMartyCheck
7.3.1 SMartyCheck: Defect Types Taxonomy
7.3.2 SMartyCheck: Inspection of SMarty SPLs
7.3.3 SMartyCheck: Application Examples
7.4 SMartyPerspective
7.4.1 SMartyPerspective: Defect Types Taxonomy
7.4.2 SMartyPerspective Scenarios
7.4.3 The Product Manager Perspective
7.4.4 The Domain Requirements Engineer Perspective
7.4.5 The Domain Architect Perspective
7.4.6 The Domain Developer Perspective
7.4.7 The Domain Asset Manager Perspective
7.4.8 SMartyPerspective: Application Examples
7.4.8.1 Domain Architect Example
7.4.8.2 Domain Developer Example
7.4.8.3 Domain Asset Manager Example
7.5 Final Remarks
References
8 Model-Based Testing of Software Product Lines
8.1 The Role of SMarty in This Work
8.2 SPLiT-MBt: A Model-Based Testing Method for Software Product Lines
8.2.1 SPLiT-MBt Characterization
8.2.2 SPLiT-MBt Phases
8.2.3 SPLiT-MBt Application Example
8.2.3.1 Add Test Information to SPL Models
8.2.3.2 Generate Test Sequences with Variability
8.2.3.3 Resolving Variability
8.2.3.4 Abstract Test Case Generation
8.2.3.5 Test Script Generation and Test Execution
8.3 SMartyTesting: MBT on Use Case and Sequence Diagrams
8.3.1 SMartyTesting Characterization
8.3.2 Used Models
8.3.3 Converting Sequence Diagrams to Activity Diagrams
8.3.4 Used Tool
8.3.5 SMartyTesting Phases
8.3.6 Step 1: Mapping Sequence Diagrams to Activity Diagrams
8.3.7 Step 2: Generating Test Sequences
8.3.8 Variability Resolution
8.3.9 Limitations on the Use of SPLiT-MBt
8.3.10 SMartyTesting Application Example
8.4 Final Remarks
References
Part III Product-Line Architecture Evolution
9 Maintainability Metrics for PLA Evaluation Based on ISO/IEC 25010
9.1 The Role of SMarty in This Work
9.2 SMartyMetrics Characterization
9.3 SMartyMetrics: Quality Attributes
9.4 SMartyMetrics: Metrics
9.4.1 Modularity
9.4.2 Reusability
9.4.3 Modifiability
9.4.4 Testability
9.5 SMartyMetrics Guidelines
9.6 Applying Metrics in SMartyModeling
9.7 Application Example
9.8 Final Remarks
References
10 The SystEM-PLA Evaluation Method
10.1 The Role of SMarty in This Work
10.2 Characterization of SystEM-PLA
10.3 Evaluation Metaprocess (EMP)
10.4 Evaluation Guidelines
10.5 Application Example
10.5.1 Product Line Architecture
10.5.2 Planning
10.5.2.1 Business Drivers
10.5.2.2 Scenarios
10.5.2.3 Classified Scenarios
10.5.2.4 Selected Quality Attributes
10.5.2.5 Management and Technical Questions
10.5.2.6 Quality Attribute Metrics
10.5.3 Data Collection
10.5.4 Data Analysis and Documentation
10.5.4.1 Graphical Representation of Data
10.5.4.2 Analysis of Collected Data
10.5.4.3 Scenarios That Satisfy Quality Attributes
10.5.4.4 Quality Attributes That Satisfy the PLA
10.5.4.5 Trade-Off Analysis
10.5.4.6 Evaluation Report
10.5.4.7 Storage of Artifacts
10.6 Final Remarks
References
11 Optimizing Product-Line Architectures with MOA4PLA
11.1 Introduction
11.2 Introduction to Multi-Objective Optimization
11.3 Search-Based SPL Optimization
11.4 The Role of SMarty in This Work
11.5 MOA4PLA
11.5.1 Product-Line Architecture Representation
11.5.2 Evaluation Model
11.5.3 Search Operators
11.5.4 Implementation Aspects
11.6 Application Example
11.7 Final Remarks
References
12 Preventing Feature Interaction with Optimization Algorithms
12.1 Introduction
12.2 Background
12.2.1 Approaches to Detect and Resolve Feature Interaction
12.2.2 PLA Design Optimization
12.2.3 The Role of SMarty in This Work
12.3 A Search-Based Approach to Prevent Feature Interaction
12.3.1 Potential Feature Interaction Detection Patterns
12.3.2 Feature Interaction Preventive Actions
12.3.3 Implementation Aspects
12.4 Application Example
12.5 Limitations
12.6 Final Remarks
References
Part IV SMarty-Related Research
13 M-SPLearning: A Software Product Line for Mobile Learning Applications
13.1 M-Learning Domain and the Role of SMarty in This Work
13.2 M-SPLearning Domain Engineering
13.2.1 Domain Analysis
13.2.2 Architecture Definition
13.2.3 Component Design
13.2.4 Production Plan
13.3 M-SPLearning Application Engineering
13.3.1 Product Generation
13.3.2 Product Evaluation
13.3.3 Related Work
13.4 Final Remarks
References
14 PLeTs: A Software Product Line for Testing Tools
14.1 The Role of SMarty in This Work
14.2 Model-Based Testing
14.3 PLeTs Project
14.3.1 Requirements
14.3.2 Design Decisions, Process, and Variability Control
14.3.3 Architecture and Implementation
14.4 Example of Use: Generating Performance MBT Tools
14.5 Example of Use: Generating Structural MBT Tools
14.6 Final Remarks
References
15 PlugSPL: An Environment to Support SPL Life Cycle
15.1 The Role of SMarty in This Work
15.2 Introduction
15.3 Context
15.4 Background
15.5 Requirements
15.6 Design Decisions
15.7 PlugSPL Environment: Supporting Plugin-Based Software Product Lines
15.7.1 SPL Design Activity
15.7.2 Component Management Activity
15.7.3 Product Configuration Activity
15.7.4 Product Generation Activity
15.8 Related Work
15.9 Final Remarks
References
16 SyMPLES: Embedded Systems Design with SMarty
16.1 The Role of SMarty in This Work
16.2 The SyMPLES Approach
16.2.1 SyMPLES Profiles
16.2.2 SyMPLES Processes
16.2.3 SyMPLES Model Transformation
16.3 Application Example
16.3.1 Product Configuration
16.3.2 ATL Transformation
16.3.3 Generate Functional Blocks
16.4 Validation of MDE Transformations
16.4.1 Test Case Generation Based on the Metamodel
16.4.2 Test Case Generation Based on the SPL
16.5 Final Remarks
References
17 Variability Representation in Software Process with the SMartySPEM Approach
17.1 The Role of SMarty in This Work
17.2 Software Process Line (SPrL) Fundamentals
17.2.1 Software Process Line Overview
17.2.2 SPrL Variability Management
17.3 The SMartySPEM Approach
17.4 Application Example
17.5 Final Remarks
References
18 Reengineering UML Class Diagram Variants into a Product Line Architecture
18.1 Introduction
18.2 Proposed Approach
18.2.1 Step 1: Search-Based Model Merging
18.2.1.1 Representation of Individuals and Initial Population
18.2.1.2 Fitness Function
18.2.1.3 Genetic Operators
18.2.2 Step 2: Variability Annotation
18.3 Evaluation
18.3.1 Implementation Aspects and Experimental Setup
18.3.2 Subject Systems
18.3.3 Results and Analysis
18.4 UML-Based SPLs
18.5 Final Remarks
References
Part V Software Product Line Experimentation
19 Controlled Experimentation of Software Product Lines
19.1 Experimentation in Software Engineering
19.2 Quality of Experiments in Software Engineering
19.3 Software Product Line Experiments
19.4 Guidelines to Report SPL Experiments
19.4.1 Proposed Guidelines
19.4.2 Conceptual Model to Support Guidelines
19.5 An Ontology for SPL Experimentation
19.5.1 Software Engineering Ontologies
19.5.2 Building the OntoExper-SPL
19.5.2.1 Ontology Conception
19.5.2.2 Ontology Design
19.5.2.3 Populating Ontology
19.5.2.4 Use Case Scenario
19.6 Final Remarks
References
20 Experimentally Based Evaluations of the SMarty Approach
20.1 Experiments on UML-Based Variability Management Approaches
20.1.1 The UML-Based Variability Management Approaches
20.1.1.1 Product Line UML-Based Software Engineering (PLUS) Method
20.1.1.2 The Ziadi et al. Approach
20.1.1.3 The Razavian and Khosravi's Method
20.2 Experimental Evaluations of Effectiveness of Identification and Representation of Variabilities
20.2.1 Objectives (G.1)
20.2.2 Hypothesis Formulation (G.2)
20.2.3 Variable Definitions (G.3)
20.2.4 Sample Size (G.4)
20.2.5 Participants' Definition and Selection (G.5)
20.2.6 Research Experiment Topic Definition (G.6)
20.2.7 Experimental Design Definition (G.7)
20.2.8 Experimental Material Definition and Selection (G.8)
20.2.8.1 Description of the SPL Adopted (G.8.1)
20.2.8.2 Source of the SPL (G.8.1.1)
20.2.8.3 SPL Artifacts (G.8.2)
20.2.9 Experimental Material Validation (G.9)
20.2.10 Experimental Task Description (G.10)
20.2.11 Training Requirement Description (G.11)
20.2.12 Pilot Project Conduction (G.12)
20.2.13 Experimental Environment Conduction (G.13)
20.2.14 Experimental Date of Execution (G.14)
20.2.15 Experimental Execution (G.15)
20.2.16 Data Collected Description (GD.16)
20.2.16.1 Experiment #1
20.2.16.2 Experiment #2
20.2.16.3 Experiment #3
20.2.16.4 Experiment #4
20.2.16.5 Experiment #5
20.2.16.6 Experiment #6
20.2.16.7 Experiment #7
20.2.17 Data Analysis Procedures (GD.17)
20.2.17.1 Experiment #1
20.2.17.2 Experiment #2
20.2.17.3 Experiment #3
20.2.17.4 Comparison of the Quantity of Checks in the SPL Description to Support the Understanding of Classes
20.2.17.5 Experiment #4
20.2.17.6 Experiment #5
20.2.17.7 Experiment #6
20.2.17.8 Effectiveness at Configuring Products
20.2.17.9 Effectiveness vs. Participants' Knowledge
20.2.17.10 Traceability in Diagram Elements
20.2.17.11 Experiment #7
20.2.17.12 Effectiveness at Configuring Products
20.2.18 Mortality Rate (GD.18)
20.2.19 Statistical Data Analysis Tools (GD.19)
20.2.20 Effect Size (GD.20)
20.2.20.1 Experiment #1
20.2.20.2 Experiment #2
20.2.20.3 Experiment #3
20.2.20.4 Experiment #4
20.2.20.5 Experiment #5
20.2.20.6 Experiment #6
20.2.20.7 Experiment #7
20.2.21 Results in the Point of View of Researchers and Practitioners (GD.21)
20.2.22 Implications of Developed Treatments (GD.22)
20.2.23 Threats to Validity Identified in the Experiment (GD.23)
20.2.24 Experimental Package Source (GD.24)
20.2.25 Experimental Template Used to Conduct, Plan, or Document the Experiment (GD.25)
20.3 SMarty Improvements Based on the Experimental Evaluations
20.3.1 Evolution of the SMarty Approach for Identification and Representation of Variabilities
20.3.2 Evolution of the SMarty Approach for Configuration and Support for Traceability
20.4 Lessons Learned and SMarty Improvements
20.5 Final Remarks
References