Chapter 25: Architecture and Product Lines

Slides:



Advertisements
Similar presentations
SWE Introduction to Software Engineering
Advertisements

Course Instructor: Aisha Azeem
Configuration Management
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Architecture and Software Product Lines A software architecture represents a significant investment of time and effort, usually by senior talent. So it.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
Computer Systems & Architecture Lesson Software Product Lines.
Software Architecture in Practice (3rd Ed) Introduction
This chapter is extracted from Sommerville’s slides. Text book chapter
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Implementation Yaodong Bi. Introduction to Implementation Purposes of Implementation – Plan the system integrations required in each iteration – Distribute.
1 Process Engineering A Systems Approach to Process Improvement Jeffrey L. Dutton Jacobs Sverdrup Advanced Systems Group Engineering Performance Improvement.
Configuration Management (CM)
Architectural Design lecture 10. Topics covered Architectural design decisions System organisation Control styles Reference architectures.
Software Product Line Material based on slides and chapter by Linda M. Northrop, SEI.
Configuration Management and Change Control Change is inevitable! So it has to be planned for and managed.
1 Chapter 12 Configuration management This chapter is extracted from Sommerville’s slides. Text book chapter 29 1.
UML (Unified Modeling Language)
Chapter 25 – Configuration Management 1Chapter 25 Configuration management.
Product Line Architecture. Systems Systems often come in families: basic, regular, professional, enterprise,… Can we share components? Is architecture.
Chapter 12: Other Quality Attributes
Systems Analysis and Design in a Changing World, Fifth Edition
SOFTWARE TESTING Date: 29-Dec-2016 By: Ram Karthick.
Chapter 7: Modifiability
Software Configuration Management
Chapter 4: Understanding Quality Attributes
Lecture 05 Interoperability, Modifiability, Performance
Chapter 6: Interoperability
CompSci 280 S Introduction to Software Development
Regression Testing with its types
Chapter 24: Architecture Competence
Chapter 1: Introduction to Systems Analysis and Design
IS301 – Software Engineering Dept of Computer Information Systems
Chapter 17: Designing an Architecture
Lecture 17 ATAM Team Expertise
Chapter 11: Usability © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License.
Software Engineering Architectural Design Chapter 6 Dr.Doaa Sami
Chapter 19: Architecture, Implementation, and Testing
Part 3 Design What does design mean in different fields?
Systems Analysis – ITEC 3155 Evaluating Alternatives for Requirements, Environment, and Implementation.
Epilog © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License.
Design and Implementation
Chapter 22: Management and Governance
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 2 Database System Concepts and Architecture.
Lecture 7 – Quality Attributes
Product Lines.
Introduction to Software Testing
The Object-Oriented Thought Process Chapter 05
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
Patterns.
Software Architecture
Architectural Design.
Chapter 6 – Architectural Design
Software Architecture in Practice
Chapter 9 – Software Evolution and Maintenance
An Introduction to Software Architecture
Product Lines.
Chapter 1: Introduction to Systems Analysis and Design
Lecture 7 – Quality Attributes
Lecture 5 – Quality Attributes
Lecture 5 – Quality Attributes
Configuration management
DEPLOYING SECURITY CONFIGURATION
Software Architecture
Software Architecture
Chapter 5 Architectural Design.
Design Yaodong Bi.
CSSE 477 Software Architecture
Chapter 1: Introduction to Systems Analysis and Design
A Case Study of Variation Mechanism in an Industrial Product Line
Presentation transcript:

Chapter 25: Architecture and Product Lines © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Chapter Outline An Example of Product Line Variability What Makes a Software Product Line Work? Product Line Scope The Quality Attribute of Variability The Role of a Product Line Architecture Variation Mechanisms Evaluating a Product Line Architecture Key Software Product Line Issues Summary © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Product Lines of Software A product line of software is: a set of software-intensive systems sharing a common, managed set of features that satisfy the specific needs of a particular market segment or mission and that are developed from a common set of core assets in a prescribed way © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Reuse A product line represents strategic (planned) reuse. A common set of assets (core assets) that includes Architecture Requirements Test cases Build scripts Documentation … These assets are constructed specifically to support reuse. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

An Example You are constructing software that supports a bank loan office. There are 21 products in your product line. An existing module calculates customer interest payment. Perfectly adequate for 18 of the products Needs 240 lines modification for Delaware. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

How to Manage the Modifications? One strategy is to make another copy of the affected module and insert the necessary changes Called “clone and own” Fast and easy Does not scale! Suppose each of the 21 products has 1000 modules. Potentially huge number of distinct versions of the product to maintain. A better strategy is to introduce a “variation point” in the module and manage the variation point with, e.g., a configuration parameter. Setting configuration parameter to “normal” will generate the 18 products as before. Setting the configuration parameter to “Delaware” will generate the new version specifically for Delaware. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Variation Point (briefly) Example mechanisms are Compiler flags Module parameters Resource file settings Configuration parameters can be managed and deployed from a data base. Ensures that a record of configuration files is maintained. Allows tools to generate various versions. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

What Makes Product Lines Work? Planned reuse of Requirements. Most of the requirements are common with those of earlier systems and so can be reused. Architectural design. For a new product, if quality goals are the same then the architecture is largely the same. Software elements. Software elements are applicable across individual products because the architecture is the same across products. Modeling and analysis. Performance models, schedulability analysis, distributed system issues (such as proving the absence of deadlock), allocation of processes to processors, fault tolerance schemes, and network load policies all carry over from product to product. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

What Makes Product Lines Work? - 2 Planned reuse of Testing. Test plans, test processes, test cases, test data, test harnesses, and the communication paths required to report and fix problems are already in place. Project planning artifacts. Budgeting and scheduling are more predictable because experience is a high-fidelity indicator of future performance. and more… © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Costs of Product Lines Up front planning takes time. It takes 2-3 systems to start seeing savings begin for product lines. Alternatively, the product line can be evolved when new products are defined. But this may require rework of the architecture. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Product Line Scope Some products are in scope (white) Some products are out of scope (speckled) Some products need to be decided on a case by case basis (lined) © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Scope is a Critical Decision Too broad a scope and the systems become difficult to design and construct. Too narrow a scope and there are too few systems to justify the additional expense and complexity. Scoping decisions made by finding commonality and variation points among potential products interactions between marketing and the architect to define as broad a scope as technically feasible without introducing excessive cost when building products. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Variability General Scenario Portion of Scenario Possible Values Source Actor requesting variability Stimulus Requests to support variations in: Hardware, Feature sets, Technologies, User interfaces, Quality attributes, etc. for the range of products affected, such as: All A specified subset Those that include feature set x New products Artifacts Requirements, architecture, component x, test suite y, project plan z… Environment Variants are to be created at: Runtime Build time Development time Response The requested variants can be created. Response Measure   A specified cost and/or time to create the core assets and to create the variants using these core assets. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Architectural Mechanisms for Variability Inclusion or omission of elements: Through build procedures for different products, you can include a different number of replicated elements. For instance, high capacity variants might be produced by adding more servers. The actual number should be unspecified, as a point of variation. This may be chosen dynamically. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Architectural Mechanisms for Variability - 2 Selection of different versions of elements that have the same interface but different behavioral or quality attribute characteristics. Selection can occur at compile, build time, or run time. Selection mechanisms include static libraries, which contain external functions linked after compilation time, dynamic link libraries, add-ons (e.g. plug-ins, extensions, themes) © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Other Variability Mechanisms Extension points. These are identified places in the architecture where additional behavior or functionality can be safely added. Reflection. This is the ability of a program to manipulate data on itself or its execution environment or state. Reflective programs can adjust their behavior based on their context. Overloading. This is a means of reusing a named functionality to operate on different types. Overloading promotes code reuse, but at the cost of understandability and code complexity. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Other Variability Mechanisms Inheritance; specializing or generalizing a particular class Component substitution Add-ons, plug-ins Templates Parameters (including text preprocessors) Generator Aspects Runtime conditionals Configurator © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Each Mechanism Has a Cost Costs include The skill set required to implement mechanism One time cost for establishing mechanism Recurring cost for each instance Impact on qualities such as Performance Modifiability © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Evaluating a Product Line Architecture Largely the same as a normal evaluation. Special attention should be paid to variation points. Can be applied to core assets, to assess suitability for product line instance architecture, to assess suitability for a particular desired product. © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Key Product Line Issues Adoption strategies Top down versus Bottom up Proactive adoption versus reactive adoption Incremental versus Big-bang Organizational structure Dedicated group for core assets Core asset group composed of various product members Paying for core asset development © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License

Summary A product line is strategic, planned reuse. The product line approach to developing software can pay huge dividends. Requires an understanding of: Architecture Organizational issues Process issues © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License