Variability in Software Systems The Key to Software Reuse

Slides:



Advertisements
Similar presentations
Introduction To System Analysis and Design
Advertisements

Course Instructor: Aisha Azeem
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
UML and Object Oriented Concepts
Introduction To System Analysis and design
Proceso kintamybių modeliavimas Modelling process variabilities Donatas Čiukšys.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Copyright © 2002, Systems and Computer Engineering, Carleton University Intro.ppt * Object-Oriented Software Development Unit 1 Course.
Design Patterns.
Faculty of Informatics and Information Technologies Slovak University of Technology Peter Kajsa and Ľubomír Majtás Design.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
Sadegh Aliakbary Sharif University of Technology Fall 2011.
1 CS 456 Software Engineering. 2 Contents 3 Chapter 1: Introduction.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
CS 390- Unix Programming Environment CS 390 Unix Programming Environment Topics to be covered: Distributed Computing Fundamentals.
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 20 Object-Oriented.
Database Management System Prepared by Dr. Ahmed El-Ragal Reviewed & Presented By Mr. Mahmoud Rafeek Alfarra College Of Science & Technology Khan younis.
Introduction To System Analysis and Design
Generative Programming. Automated Assembly Lines.
L8 - March 28, 2006copyright Thomas Pole , all rights reserved 1 Lecture 8: Software Asset Management and Text Ch. 5: Software Factories, (Review)
1 COMP 350: Object Oriented Analysis and Design Lecture 1Introduction References: Craig Larman Chapter 1.
1 What is OO Design? OO Design is a process of invention, where developers create the abstractions necessary to meet the system’s requirements OO Design.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Object Oriented Software Development
Frameworks CompSci 230 S Software Construction.
1 OO Analysis & Design - Introduction to main ideas in OO Analysis & design - Practical experience in applying ideas.
Interfaces About Interfaces Interfaces and abstract classes provide more structured way to separate interface from implementation
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
From Use Cases to Implementation 1. Structural and Behavioral Aspects of Collaborations  Two aspects of Collaborations Structural – specifies the static.
Sadegh Aliakbary Sharif University of Technology Fall 2010.
CSCE 240 – Intro to Software Engineering Lecture 3.
From Use Cases to Implementation 1. Mapping Requirements Directly to Design and Code  For many, if not most, of our requirements it is relatively easy.
Software Reuse. Objectives l To explain the benefits of software reuse and some reuse problems l To discuss several different ways to implement software.
OOP - Object Oriented Programming
Design Patterns: MORE Examples
Chapter 1: Introduction to Systems Analysis and Design
The Movement To Objects
What is UML? What is UP? [Arlow and Neustadt, 2005] October 5, 2017
Low Budget Productions, LLC
APPLICATION OF DESIGN PATTERNS FOR HARDWARE DESIGN
Distribution and components
SNSCT_CSE_PROGRAMMING PARADIGM_CS206
Presented by Igor Ivković
Chapter 16 – Software Reuse
Inheritance Basics Programming with Inheritance
Lec 3: Object-Oriented Data Modeling
University of Houston-Clear Lake
Chapter 20 Object-Oriented Analysis and Design
Computer Programming with JAVA
Software Design Lecture : 15.
Software Design Lecture : 14.
An Introduction to Software Architecture
Chapter 7 –Implementation Issues
CS310 Software Engineering Lecturer Dr.Doaa Sami
Chapter 1: Introduction to Systems Analysis and Design
CS 8532: Advanced Software Engineering
OBJECT ARCHITECTURE DESIGN
On the notion of Variability in Software Product Lines
Chapter 5 Architectural Design.
Design Yaodong Bi.
Use Case Analysis – continued
Chapter 1: Introduction to Systems Analysis and Design
UML  UML stands for Unified Modeling Language. It is a standard which is mainly used for creating object- oriented, meaningful documentation models for.
From Use Cases to Implementation
Software Architecture & Design
Presentation transcript:

Variability in Software Systems The Key to Software Reuse Jilles van Gurp

Contents Overview of the past 2 years Papers in the thesis Problems/Causes Solutions Frameworks Software Product Lines Variability Future/Current Work Conclusion 31/12/2018 Jilles van Gurp

History Studied CS in Utrecht Joined Jan Bosch in Ronneby late 1998 Got a masters degree from Utrecht early 1999 Continued doing research for Jan Bosch Moved to Groningen summer 2000 Finished my Lic. in October 2000 31/12/2018 Jilles van Gurp

Licentiate Thesis Thesis consists of 4 papers + introduction Download & view: http://www.xs4all.nl/~jgurp Or pick one of the available copies. 31/12/2018 Jilles van Gurp

Papers in thesis Paper I: J. van Gurp, J. Bosch, “On the Implementation of Finite State Machines“, in Proceedings of the 3rd Annual IASTED International Conference Software Engineering and Applications, IASTED/Acta Press, Anaheim, CA, pp. 172-178, 1999. Paper II: J. van Gurp, J. Bosch, “Design, implementation and evolution of object oriented frameworks: concepts & guidelines”, Software Practice & Experience, no 33(3) pp 277-300, March 2001. Paper III: J. van Gurp, J. Bosch, “SAABNet: Managing Qualitative Knowledge in Software Architecture Assessment“, Proceedings of the 7th IEEE conference on the Engineering of Computer Based Systems, pp. 45-53, April 2000. Paper IV: J van Gurp, J. Bosch, M. Svahnberg “On the notion of variability in software product lines“, submitted to Wicsa 2001, Januari 2001. 31/12/2018 Jilles van Gurp

Looking back I started with frameworks Then came assessment of frameworks and architectures (paper III) Currently I’m concerned with the key mechanisms behind frameworks and reusable architectures The keyword is variability 31/12/2018 Jilles van Gurp

Building Software Theory vs. practice Nice building blocks that can be used to create new software So many dependencies that nobody understands it anymore 31/12/2018 Jilles van Gurp

Theory vs. practice (2) Theory: Component = building block with well defined interfaces Practice: Component = large (100 KLOC is nothing) blob of software with no clear boundaries 31/12/2018 Jilles van Gurp

Problems Everything is connected to everything Changes may have system wide consequences Each change increases the above problems Radical changes are increasingly less cost effective The development strategy is to work around problems rather than addressing them 31/12/2018 Jilles van Gurp

Causes Requirements are not stable, new ones are added constantly Some of the requirement changes were not anticipated during the design The software was not designed to incorporate such changes 31/12/2018 Jilles van Gurp

Solutions OO Frameworks? Software Product Lines? Variability management? 31/12/2018 Jilles van Gurp

OO Frameworks? RE Johnson: Framework = Components + design patterns We: Framework: a set of classes, abstract classes, interfaces and OO components bundled in a set of modules that partially implement an application in a particular domain. * Waarschijnlijk komt deze definitie uit PLOP (evolving frameworks, roberts & johnson) 31/12/2018 Jilles van Gurp

Why yet another definition? We discuss a lot in the thesis: OO SPLs Components …. Without proper definition the discussion becomes meaningless Unfortunately there are no one-size-fits-all definitions, so we created our own 31/12/2018 Jilles van Gurp

Why so specific? Terms like OO and frameworks tend to be heavily overloaded We want to make statements about frameworks, we need to decompose The more specific our definitions are, the more specific our statements are 31/12/2018 Jilles van Gurp

Contributions in OO Fws Definitions based on existing literature and current practice. Motivated the use of Role Oriented Programming (next slide) Guidelines for designers (Paper II) 31/12/2018 Jilles van Gurp

Roles & Objects Without roles: Class = Type With Roles: Class has more than one Type Class Type = interface. So a class with roles has more than one interface. 31/12/2018 Jilles van Gurp

Roles, why? Objects collaborate in many ways Usually only part of the interface is needed in a particular collaboration The rest of the interface is not needed in such collaborations Objects of other classes may collaborate in the same way 31/12/2018 Jilles van Gurp

Example 31/12/2018 Jilles van Gurp

Expressiveness This model expresses that a person can own cash receive cash be requested for cash However, it can’t express that a person gives cash to another person because there’s no way to identify the involved persons in the transaction from the set of all persons 31/12/2018 Jilles van Gurp

Object Collaboration 31/12/2018 Jilles van Gurp

Expressiveness This model is very concrete a particular object with the identity “Trygve” requests and receives cash from another particular object “Gina”. This model is too concrete because it only applies to Trygve and Gina It doesn’t scale up (imagine having to model the collaborations for 1000 persons like this) 31/12/2018 Jilles van Gurp

Specification level Collaboration 31/12/2018 Jilles van Gurp

What’s different Objects have been replaced with Roles ClassifierRole: A named slot for an object participating in a specification level collaboration. Object behavior is represented by its participation in the overall behavior of the Collaboration. Object identity is preserved through this constraint: “In an instance of a collaboration, each classifierrole maps onto at most one object”. One object can play multiple roles One role can be implemented by multiple classes 31/12/2018 Jilles van Gurp

A bit more concrete 31/12/2018 Jilles van Gurp

Implementation Java allows classes to implement more than 1 interface. Multiple Inheritance can be used to do the trick in other languages (Mixin) IDL interfaces can be used in a COM or Corba like architecture 31/12/2018 Jilles van Gurp

Software Product Lines? >> Frameworks Similar to product lines in e.g. a car factory Involves: Architecture (e.g. frameworks) Reusable parts (e.g. components, libraries) Hotspots/plug points (e.g. IDL interfaces, abstract classes) Development Process Issues (e.g. waterfall model) Large amounts of code are involved (millions LOC) 31/12/2018 Jilles van Gurp

More about SPLs … See the SPL book: Design and Use of Software Architectures Adopting and Evolving a Product-Line Approach By Jan Bosch ISBN 0-201-67494-7, Addison Wesley, June 2000 31/12/2018 Jilles van Gurp

So, why build a SPL? Practice shows: Opportunistic reuse does not work: you need to plan ahead otherwise you’ll keep reinventing the wheel. It saves you time when creating new products: time to market allows you to focus on the product specifics 31/12/2018 Jilles van Gurp

Building a SPL Is planning for change: you decide what things are not going to change from product to product It’s separating the static parts (commonality) of your software from the variable parts (variability) 31/12/2018 Jilles van Gurp

Variability? A returning topic in both SPLs and FWs The title of my thesis says it is the key to software reuse 31/12/2018 Jilles van Gurp

Variability during the development 31/12/2018 Jilles van Gurp

Variability is … Delaying design decisions Leaving things open 31/12/2018 Jilles van Gurp

Variation point A concrete place in the system where variants of a particular entity can be inserted Properties: Representation (e.g. architecture design, UML class diagram, source code, …) E.g a #define in the source code; an abstract class in the design Design status: implicit -> designed -> bound E.g. variation point X is designed during Detailed Design. Before that, it was implicit. At some point in the future it will become bound Binding time (I.e. binding a variant to the variation point) E.g. instantiating a subclass of an abstract class. Open/closed for new variants E.g. creating a subclass during Detailed Design implies that the variation point is open during Detailed Design. 31/12/2018 Jilles van Gurp

Features & Variability Features can be seen as a unit of change in software systems Variability points can thus be described in terms of features Feature diagrams can be used to identify where variability is needed 31/12/2018 Jilles van Gurp

Example Feature Diagram 31/12/2018 Jilles van Gurp

Variability = specialization Each time you leave open a decision, you put in some generic description of the possible variants. A variant then is a specialization of this description. 31/12/2018 Jilles van Gurp

Variability != limited to design phase We can have variability in any development phase, including run-time! 31/12/2018 Jilles van Gurp

Variability Realization Techniques Binding-time Examples Abstraction Inheritance Implementation GUI Components Abstract class Plugins Link-time / Run-time (language dep.) Winamp visualization Interface Parameters Application startup Xterm parameters A variable #define Compilation Support for different platforms Preprocessor variable 31/12/2018 Jilles van Gurp

Management of variation points Identify variation points (e.g. by making feature diagrams) Assess the variation point properties Specify the abstract variant (e.g. create abstract class) Collect the variants (e.g. create subclasses) Bind the variation points to a variant (e.g. instantiate a class and assign the instance to a property) 31/12/2018 Jilles van Gurp

A method Make Feature Diagram For each variation point: Abstraction level Assess binding time When it’s open Select Realization Technique + variant management technique (e.g. manual or automatic) Add variants Bind 31/12/2018 Jilles van Gurp

Reuse requires Variability Reusing = using an existing piece of software in a new situation The reused part needs to be adapted to the new situation Set paramaters, Change the interface, Remove redundant pieces, Adjust some functionality Reusable parts must facilitate variability The more situations a part can adjust to the more reusable it is A part that can only adjust to 1 situation is not reusable 31/12/2018 Jilles van Gurp

How much variability do we need? Just enough to meet future requirements Too much: Flexibility usually costs you in terms of complexity, time to market, performance, maintainability … Too few: You may not be able to meet a new requirement, you may have to work around design errors, starting from scratch is becoming good alternative to adapting the system. 31/12/2018 Jilles van Gurp

Future/current work What are the limitations of OO? How can we work around these limitations? How useful are OO extensions such as AOP and SOP? AOP = Aspect Oriented Programming SOP = Subject Oriented Programming Can we lift novel approaches to the architecture level? 31/12/2018 Jilles van Gurp

Constraints on our work We can’t expect radical programming paradigm shifts so we have to rely on existing technology Whatever we come up with: it has to be applicable to large industrial systems We don’t want to focus on implementation solutions, instead we want to focus on architecture 31/12/2018 Jilles van Gurp

Recent work Two Wicsa Papers: Revised version of the variability paper A paper discussing a case study regarding Architecture Erosion Architecture Design & Separation of concerns 31/12/2018 Jilles van Gurp

Variability in Software Systems The Key to Software Reuse Summary/conclusion Title says all: Variability in Software Systems The Key to Software Reuse Questions? 31/12/2018 Jilles van Gurp