R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Jens Knodel

Slides:



Advertisements
Similar presentations
 Dr. Syed Noman Hasany.  Review of known methodologies  Analysis of software requirements  Real-time software  Software cost, quality, testing and.
Advertisements

Software Process Models
Software Construction
Presented by: Thabet Kacem Spring Outline Contributions Introduction Proposed Approach Related Work Reconception of ADLs XTEAM Tool Chain Discussion.
Evaluating a Software Architecture By Desalegn Bekele.
Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process.
Software engineering for real-time systems
Azad Madni Professor Director, SAE Program Viterbi School of Engineering Platform-based Engineering: Rapid, Risk-mitigated Development.
PowerPoint Presentation for Dennis, Wixom & Tegarden Systems Analysis and Design Copyright 2001 © John Wiley & Sons, Inc. All rights reserved. Slide 1.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Notion of a Project Notes from OOSE Slides - modified.
© Copyright Eliyahu Brutman Programming Techniques Course.
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
Software Architecture Quality. Outline Importance of assessing software architecture Better predict the quality of the system to be built How to improve.
Software Reengineering 2003 년 12 월 2 일 최창익, 고광 원.
Software Re-engineering
Chapter 9 – Software Evolution and Maintenance
SEG Software Maintenance1 Software Maintenance “The modification of a software product after delivery to correct faults, to improve performance or.
Chapter 2 The process Process, Methods, and Tools
Institut Experimentelles Software Engineering Fraunhofer IESE Klaus Schmid Relating Product Line Adoption Mode and Transition Process.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
RUP Implementation and Testing
An Introduction to Software Architecture
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
The Software Product Line Architectures
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Reviewing Recent ICSE Proceedings For:.  Defining and Continuous Checking of Structural Program Dependencies  Automatic Inference of Structural Changes.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 Lecture 17: Chapter 26 Estimation for Software Projects Slide Set to accompany Software Engineering: A Practitioner’s Approach, 7/e by Roger S. Pressman.
1 Chapter 23 Estimation for Software Projects. 2 Software Project Planning The overall goal of project planning is to establish a pragmatic strategy for.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Object-oriented Analysis and Design Stages in a Software Project Requirements Writing Analysis Design Implementation System Integration and Testing Maintenance.
R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Identifying Domain-Specific Reusable Components from Existing OO Systems to Support.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
Component Based SW Development and Domain Engineering 1 Component Based Software Development and Domain Engineering.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Manag ing Software Change CIS 376 Bruce R. Maxim UM-Dearborn.
Enabling Reuse-Based Software Development of Large-Scale Systems IEEE Transactions on Software Engineering, Volume 31, Issue 6, June 2005 Richard W. Selby,
Computing and SE II Chapter 15: Software Process Management Er-Yu Ding Software Institute, NJU.
Software Architecture Evaluation Methodologies Presented By: Anthony Register.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 28Slide 1 CO7206 System Reengineering 4.2 Software Reengineering Most slides are Slides.
Chapter 5: Software Re-Engineering Omar Meqdadi SE 3860 Lecture 5 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
 Dr. Syed Noman Hasany.  Review of known methodologies  Analysis of software requirements  Real-time software  Software cost, quality, testing and.
SSQSA present and future Gordana Rakić, Zoran Budimac Department of Mathematics and Informatics Faculty of Sciences University of Novi Sad
Topic 4 - Database Design Unit 1 – Database Analysis and Design Advanced Higher Information Systems St Kentigern’s Academy.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
Smart Home Technologies
Process Asad Ur Rehman Chief Technology Officer Feditec Enterprise.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
310414IMPLEMENTATION1 IMPLEMENTATIONIMPLEMENTATION SOFTWARE ENGINEERING SOFTWARE ENGINEERING.
©Ian Sommerville 2000, Tom Dietterich 2001 Slide 1 System prototyping l Prototyping is the rapid development of a system l In the past, the developed system.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Certification of Reusable Software Artifacts
Chapter 33 Estimation for Software Projects
Lecture 3 Prescriptive Process Models
Security SIG in MTS 05th November 2013 DEG/MTS RISK-BASED SECURITY TESTING Fraunhofer FOKUS.
Software Project Sizing and Cost Estimation
Software Engineering: A Practitioner’s Approach, 6/e Chapter 23 Estimation for Software Projects copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
Designing Software for Ease of Extension and Contraction
An Introduction to Software Architecture
Chapter 33 Estimation for Software Projects
Software Engineering: A Practitioner’s Approach, 6/e Chapter 23 Estimation for Software Projects copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
Chapter 8 Software Evolution.
Completing and Presenting the Class Project
Chapter 26 Estimation for Software Projects.
From Use Cases to Implementation
Presentation transcript:

R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Jens Knodel Dirk Muthig

Slide 1 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Outline Subject Component Architecture Development Reverse Engineering Discussion

Slide 2 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Context Large organization migrating towards product line engineering -Application of PuLSE  Scoping  Architecting  Component engineering Product line architecture -Family of car multimedia systems -Automotive domain -Two major parts  Panel: mainly used for user interaction  Back-end system: mainly used for computation, network functionality, and external media

Slide 3 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Motivation Components as part of product line architectures -Explicitly developed for systematic reuse -Support the scope of variability required -Flexible towards the anticipated changes Existing components -Do they achieve sufficient product line adequacy?  Injection the required variability support  Resolution potential architectural mismatches  Improvement of the internal quality Decision conflict of product line architects -Reuse and adaptation of existing component -Construction of new components from scratch  Application of reverse engineering to analyze the product line adequacy of the existing components

Slide 4 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Subject Component Subject: Graphics component -Key component of the panel -Responsibilities  User interface visualization based on predefined masks  Composition of masks  Interaction between back-end and panel  Graphical elements -Static information -Dynamic sequence control -Main architectural driver: minimization of the data flow between the two parts -Written in C++, approximately 180 KLOC

Slide 5 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Approach

Slide 6 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components PuLSE-DSSA Product Line Software Engineering – Domain-Specific Software Architecture -Scenario-based development in iterations that explicitly addresses the stakeholders’ needs -Incremental development, which successively prioritizes requirements and realizes them -Direct integration of reengineering activities into the development process on demand -View-based documentation -Main loop steps  Planning  Realization  Documentation  Assessment

Slide 7 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components ADORE Architecture- and Domain-Oriented Reengineering -Reverse engineering  Identification of components  Assessment of their adequacy  Initiated product line architecture needs -Reuse Decision  Reuse of existing component  Development of a new product line component from scratch -Renovation  Necessary renovation and extension activities  Adaptation of the component for its product line use

Slide 8 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Reverse Engineering Techniques Concerns -Static architecture evaluations.  Was the component implemented accordingly to its documentation, how consistent is the documentation and can it integrated seamlessly into the product line architecture? -Variability analysis  To which degree contains the subject component already existing variability?  Is it possible to relate these code-level variations to higher levels? -Source code analysis  What are maintenance and evolution risks of the current implementation? -Code comments  Have the algorithms and implementation decisions made so far been documented?

Slide 9 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Static Architecture Evaluation Consistency of the component to its documentation Component engineering models -Decomposition into three internal layers -Mapping of layers to the source code files High degree of consistency -Layer-1 uses Layer-2, grey arrow, cardinality Violations:  Layer-2 to Layer-1 (blue arrow, cardinality 2) -Absence  Layer-2 to Layer-3  the layer was only realized in stubs, was still under development Detailed analysis of layers internals -Pointers for improvement

Slide 10 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Variability Analysis Variants in the source code -Conditional compilation with macros -Optional or variable code parts or alternative implementations with preprocessor commands #if, #ifdef, etc.) -Resolution by the preprocessor Variability analysis -To which extent the macros and compile switches realize variability with respect to the product map -Explicit documentation of variability identified -Derivation of decision models Advanced variability management: frame processors -Frames contain both source code and frame-specific code providing adaptation (frame commands) -Frames can be arranged in hierarchies -Resolution at compile time by the frame processor, an advanced preprocessor -Tool-supported conversion of macros into frames -Adding a new variant involves only the creation of the respective frames

Slide 11 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Clone Detection Code clone is a code fragment that occurs in more than one place -Master and clone: produced by copy and paste (sometimes containing minor modifications) -Threat to the evolution of a system or a component  Increased total code size  Higher effort for maintenance (when there is the need for a change, all duplicates have to be addressed)  Reduced code readability  Increased risk because an error can be propagated to several places in the source code Clone detection -Based on text pattern matching -Internal clones (duplicated code lines found in a single file) -External clones (clones found in different files) -Number of code clones with a size greater than 20 lines

Slide 12 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Metric Hotspots Source code metrics -Learn about potentially problematic areas -Measurement of coupling, size and complexity metrics -Analysis of the outliers, unanticipated values, problematic areas and hotspots Significant outliers for the following metrics: -cyclomatic complexity (for methods and class averages) -CBO (coupling between object classes) -NOC (number of derived children) -Function size in terms of LOC (lines of code) Code reviews -Error-proneness -Risks of unwanted side effects -Difficult to understand -Avoidance of potential maintenance problems

Slide 13 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Source Code Analysis Source code analysis -Folder structure and files: decomposition not reflected as it was documented -Empty files: a couple of empty (or almost empty) files were identified (less than 20 LOC) -Inconsistent naming conventions: not used consistently throughout the component -Ratio of commented lines to source code lines: below 10 percent Refactorings -Risk mitigation -Improvement of readability

Slide 14 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Conclusion Graphics component -Sufficient adequacy for the emerging product line -Need for renovations and extensions  Improvement of the internal quality  Assurance of consistency to the documentation and the intended design  Refactoring of variabilities  Removal of architectural mismatches and integration of the component Successful application of Fraunhofer PuLSE™ and ADORE™ -Well-invested effort in reverse engineering -Architectural reuse decision well-grounded on the reverse engineering Need for adaptation for single system components -In our experience so far, as-is reuse mostly does not work -Need for efficient and focused reverse engineering analyses to support the reuse decision making -Estimation the effort required

Slide 15 R2PL, Pittsburgh November 10, 2005 Copyright © Fraunhofer IESE 2005 Analyzing the Product Line Adequacy of Existing Components Discussion Points Did as-is reuse of existing components developed for single systems work for you product line? What are additional reverse engineering techniques suitable for analyses of the adequacy of a component? How do you evaluate the adequacy of components to be reused? How to analyze a component more efficiently? How to keep the effort for adaptation low?