7. Product-line architectures 7.1 Introduction 7.2 Product-line basics 7.3 Layered style for product-lines 7.4 Variability management 7.5 Benefits and problems with product-lines 1
Short history of software engineering Requirements Programming language Problem-solution mapping Programming-in-the-small Problem: Managing the programming language Solution: Programming environments 2
Short history of software engineering Requirements Programming language Problem-solution mapping Programming-in-the-large Problem: Managing dependencies between components Solution: Architecture Component Component Component Component 3
Short history of software engineering Requirements Programming language Programming-in-the-many Problem: Managing people Solution: Processes Problem-solution mapping Component Component Component Component 4
Short history of software engineering Requirements Programming language model model Model-driven development Problem: Managing complexity Solution: Abstraction Problem-solution mapping model Component Component Component Component 5
Short history of software engineering Requirements Programming language Domain s model model Platform-based development Problem: Managing variability Solution: Product-line architecture Problem-solution mapping model Component Component Component Component 6
Short history of software engineering Requirements model Programming language Domain s Problem-solution mapping model model Component Component Component Component Architecture is the key to - manage the relationships of components - manage complexity of systems - manage the variability in -based development 7
Role of architecture Architecture explains system Architecture guides system Architecture enables systems 8
Reducing the system implementation gap with architectures Requirements Compiler Executable application Traditional Code 9
Reducing the system implementation gap with architectures Requirements Compiler Executable application Traditional DSL = Domain- Specific Language Code DSL DSL code DSL generator Code 10
Reducing the system implementation gap with architectures Requirements Common architecture and Compiler Executable domain support application Traditional DSL = Domain- Specific Language Code DSL DSL code DSL generator Code Platform-based Code Platform interface 11
Reducing the system implementation gap with architectures Requirements Common architecture and Compiler Executable domain support application Traditional DSL = Domain- Specific Language Code DSL DSL code DSL generator Code Platform-based Code Platform interface 12
7.2 Product-line basics Product line architecture (PLA): An architecture for a set of software products sharing similar structure and functionality Central aims: reuse, shorter time-to-market, better quality with less resources, rationalized process Prerequisites: the product family has sufficiently common features and well understood variation Requirements specify: domain model, commonalities, variabilities (e.g. range and binding time) Sometimes unknown requirements lead to product-line approach Product-line architectures: http://www.sei.cmu.edu/plp/product_line_overview.html http://www.sei.cmu.edu/architecture/essays.html#jazayeri 13
Definitions Product-family: a set of software products with similar structure and functionality Product-line: the assets, tools and processes supporting the development of members of a product family Product-line : the common software of a product-family Product-line architecture: the common architecture of the product family (or the product-line ) (=PLA) Product-family architecture 14
When does PLA pay off? 4C 3C payback point (A) without PLA (B) with PLA Cumulative cost 2C C I 1 2 3 4 Number of family members 15
Domain analysis Domain model Variability requirements Common requirements Variability management Requirements capture engineering Product-line process PLA design requirements Product-line architecture interface implementation Domain engineering Platform implementation Platform Specialization 16
Product-line in the organization Marketing Product-line capabilities Customer Platform capabilities Understand domain Design skills Architectural skills Abstraction skills Technologically update Communication skills Customer needs Managers Requirements Product capabilities Understand application Understand customer Can engineer from components Can customize Implementation expertise Platform Group Components Updates Requirements Capabilities Product Groups Products Feedback 17
Strategies for creating a product-line Transforming existing components and products into a product-line Replacing existing components with product-line components Developing a new product-line incrementally Developing a new product-line at one go 18
Supporting technologies Component technologies Component integrators (scripts, visual tools) OO (domain modeling, specialization mechanisms) Domain-specific languages generators Frameworks 19
Hierachical product-lines 20
7.3 Layered style for product-lines Architecture Architecture Resource 21
Resource Architecture Architecture Resource 22
Architecture Architecture Architecture Resource 23
Architecture Architecture Resource 24
Architecture Architecture Resource 25
Product communities Product culture Product tribe Product family Architecture Resource 26
Example: EJB-based product-line (s) Architecture Stock market system Bank framework EJB Resource Database, CORBA 27
Potential problems How can we find the parts affected by hardware changes? How do we know that we are not changing the basic architecture assumptions? How do we know that a new application framework is based on the same architectural principles as the previous ones? How do we know that we are not introducing applicationspecific things to the basic architectural solutions? How can we find the parts mostly responsible for the quality attributes of applications? 28
TAUKO 5 min 29
S60 Product Platform 30