Upgrading of component-based application Program Analysis and Transformation MSE-Seminar 09.12.20081© Raphael Gfeller,

Slides:



Advertisements
Similar presentations
Testing Relational Database
Advertisements

Component-Based Software Engineering Main issues: assemble systems out of (reusable) components compatibility of components.
COM vs. CORBA.
SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
Alternate Software Development Methodologies
Introduction To System Analysis and Design
Object Oriented System Development with VB .NET
Page 1 Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Chapter 19 Industrial Experience.
How to effectively store the history of data in a relational DBMS Database systems MSE-Seminar © Raphael Gfeller,
© 2006 Pearson Addison-Wesley. All rights reserved4-1 Chapter 4 Data Abstraction: The Walls.
Component and Deployment Diagrams
Presented by IBM developer Works ibm.com/developerworks/ 2006 January – April © 2006 IBM Corporation. Making the most of Creating Eclipse plug-ins.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
Matthew J Mattia CSC  Cumbersome Code  Consistent/Predictable design (GUEPs #5, CD’s #10)  Display “proper” amount of information  Including.
VENDORS, CONSULTANTS AND USERS
© 2006, Cognizant Technology Solutions. All Rights Reserved. The information contained herein is subject to change without notice. Automation – How to.
User Group 2015 Version 5 Features & Infrastructure Enhancements.
CVSQL 2 The Design. System Overview System Components CVSQL Server –Three network interfaces –Modular data source provider framework –Decoupled SQL parsing.
 1. Introduction  2. Development Life-Cycle  3. Current Component Technologies  4. Component Quality Assurance  5. Advantages and Disadvantages.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
Problems with reuse – Increased maintenance costs; lack of tool support; not-invented- here syndrome; creating, maintaining, and using a component library.
Introduction To System Analysis and design
Introduction to the Enterprise Library. Sounds familiar? Writing a component to encapsulate data access Building a component that allows you to log errors.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
M1G Introduction to Programming 2 4. Enhancing a class:Room.
Component Based Development
L6 - March 1, 2006copyright Thomas Pole , all rights reserved 1 Lecture 6: Software Packaging: Dynamically Integrable Components and Text Ch.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 12 Object-Oriented.
Evolution-enabled application-programming interfaces Ralf Lämmel Data Programmability Team Microsoft, Redmond.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
An Introduction to Software Architecture
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
 Chapter 6 Architecture 1. What is Architecture?  Overall Structure of system  First Stage in Design process 2.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.
Introduction To System Analysis and Design
OBJECT ORIENTED SYSTEM ANALYSIS AND DESIGN. COURSE OUTLINE The world of the Information Systems Analyst Approaches to System Development The Analyst as.
Chapter 14 Part II: Architectural Adaptation BY: AARON MCKAY.
Introduction into component programming based on Java beans Dušan Tošić
Universal Data Access and OLE DB. Customer Requirements for Data Access Technologies High-Performance access to data Reliability Vendor Commitment Broad.
Component Technology. Challenges Facing the Software Industry Today’s applications are large & complex – time consuming to develop, difficult and costly.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Methodology: The AOP Refactoring Process Aspect-Oriented Refactoring of the Apache Cocoon Shared-Object Resource Allocation System Jeff Dalton Advisor:
Chapter 2: A Brief History Object- Oriented Programming Presentation slides for Object-Oriented Programming by Yahya Garout KFUPM Information & Computer.
VENDORS, CONSULTANTS AND USERS. WHY CAN’T COMPANIES DEVELOP THEIR OWN ERP PACKAGES? To develop an ERP package is a complex & time consuming activity which.
Lecture 14 Maintaining the System and Managing Software Change SFDV Principles of Information Systems.
Basic Concepts of Component- Based Software Development (CBSD) Model-Based Programming and Verification.
Enterprise Integration Patterns CS3300 Fall 2015.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
Design and Implementation of a Rationale-Based Analysis Tool (RAT) Diploma thesis from Timo Wolf Design and Realization of a Tool for Linking Source Code.
1 Service Creation, Advertisement and Discovery Including caCORE SDK and ISO21090 William Stephens Operations Manager caGrid Knowledge Center February.
IBM Software Group ® Managing Reusable Assets Using Rational Suite Shimon Nir.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
MVC WITH CODEIGNITER Presented By Bhanu Priya.
1 Object-Oriented Analysis and Design with the Unified Process Figure 13-1 Implementation discipline activities.
Recommending Adaptive Changes for Framework Evolution Barthélémy Dagenais and Martin P. Robillard ICSE08 Dec 4 th, 2008 Presented by EJ Park.
T EST T OOLS U NIT VI This unit contains the overview of the test tools. Also prerequisites for applying these tools, tools selection and implementation.
 System Requirement Specification and System Planning.
Component Object Model(COM)
Chapter 18 Maintaining Information Systems
Component-Based Software Engineering
ABHISHEK SHARMA ARVIND SRINIVASA BABU HEMANT PRASAD 08-OCT-2018
CS310 Software Engineering Lecturer Dr.Doaa Sami
Recommending Adaptive Changes for Framework Evolution
Presentation transcript:

Upgrading of component-based application Program Analysis and Transformation MSE-Seminar © Raphael Gfeller,

Agenda Component-based Software Engineering, CBSE – History – Benefits – Challenges Change management on CBSE – Approaches to reduce the effort for the consumer New fields of application Questions References © Raphael Gfeller,

Component-based Software Engineering, CBSE Component-based Software Engineering also known as Component-Based Development (CBD) or Software Componentry -focus that software should be developed by combining prefabricated components together (like in the field of electronics or mechanics) In contrast to object-oriented programming, (OOP) which -focus on modeling real-world interactions Abstraction © Raphael Gfeller,

Component-based Software Engineering, CBSE History 1968, Idea that software should be componentized from Douglas McIlroy  pipes and filters are included in UNIX 1986, definition of the modern concept of software component by Brad Cox  Objective-C (Smalltalk-style messaging to C) 1990, IBM invents their System Object Model 1990, as a reaction, Microsoft released OLE 1.0 – OLE custom controls (OCX) 1993, Component Object Model (COM) as an interface standard for software componentry was introduced by Microsoft © Raphael Gfeller,

Component-based Software Engineering, CBSE Benefits Decrease of development time and total cost because systems are not developed from scratch. Results in standard and reusable architectures Separation of skills because much complexity is packaged into specific frameworks. Fast access to new technology because we can acquire components instead of developing them in house. Improved reliability by shared components … Challenges Change management (many stakeholders involed)  focused in this presentation Robustness (input validity, error handling) Composable with other components Realizing an independent component … © Raphael Gfeller,

Change management on CBSE Problem 1: A new version of a component may Change the behavior or Not change the behavior (no behavior changes are often done by refactorings) Behavior changesBehavior does not change © Raphael Gfeller,

Change management on CBSE Problem 2: Multiple stakeholders are involved Producer, multiple consumer, multiple competitors, state, … Problem 3: Different interests of the stakeholders Size of the circle: Effort for the consumer Occurs most © Raphael Gfeller,

Change management on CBSE Problem 4: There is no deterministic reaction by the consumer if a new component is shipped. Possible reaction: Ignore the new version Adapt his software for using the new component. – That is the most common approach Adapt the shipped component to make it compatible with the exiting application – source code has to be available Create a compatibility wrapper for the new component © Raphael Gfeller,

Change management on CBSE Problem 5: Dilemma for the component consumer  Using of the new version or not ? Benefits Less bugs Performce improvements New features Costs New behavior? Upgrading the software Retest the software Decision drivers: Group change steps (remove features, add features, bug fixing, …) together  better ratio between benefits and efforts for the consumer Reduce the effort to adapt the new versio n  focused on the next slides © Raphael Gfeller,

“Using the new version of a component in a successful way; Implicates that the changes between the current and the new one are known!” 2008, Raphael Gfeller © Raphael Gfeller,

Approaches to reduce the effort for the consumer Detection of behavioral changes Communicated within release notes Detected by the consumer by doing faithful Unit Testing's.  To reduce the effort for the consumer, the producer should write release notes careful! © Raphael Gfeller,

Approaches to reduce the effort for the consumer Detection of non behavioral changes Approach 1: No communication Approach 2: Communicated within release notes A pproach 3: Using helper keywords within the programming language API documentation \ release notes Example 1: Example 2: © Raphael Gfeller,

Approaches to reduce the effort for the consumer Approach 4: Using Naming conventions Old clients still use the old version New clients can us the new features or can still use the old version Example 2: Example 1: © Raphael Gfeller,

Approaches to reduce the effort for the consumer Approach 5: Coexistent Old clients still use the old version New clients use the new features Example 1: Two versions of the “Person” exist in coexistent within the component © Raphael Gfeller,

Approaches to reduce the effort for the consumer Approach 6: COM-Style interface query, Coexistent Clients using their favorite version Example 1: Two versions of the “Person” exist in coexistent within the component © Raphael Gfeller,

Approaches to reduce the effort for the consumer Approach 7: Automatic approach based on approach 3 – Find code that is marked as deprecated – Find calls to deprecated code – Calls to deprecated code are replaced by their bodies Realized by Jeff H. Perkins  Can handle about 80% of all deprecated code Example 1: Body of the deprecated method © Raphael Gfeller,

Approaches to reduce the effort for the consumer Approach 8: Automatic approach, Record and replay refactoring – Producer records all applied refactorings Extension to the refactoring engine – Recorded refactorings are shipped – Consumer replays the refactorings Demonstrated by Johannes Henkel and Amer Diwan in CatchUp Example 1: Source: Henkel & Diwan: “CatchUp! Capturing and Replaying Refactorings to Support API Evolution” International Conference on Software Engineering, © Raphael Gfeller,

Approaches to reduce the effort for the consumer Approach 9: Automatic approach, detects refactorings  used by approach 8 Uses – a fast syntactic analysis that finds candidates for refactoring – a precise semantic analysis step that finds the refactoring Demonstrated by Daniel Dig in RefactoringCrawler Detects up to 85% of applied refactorings © Raphael Gfeller,

Approaches to reduce the effort for the consumer Summary: Best method to be used is approach 8 “Record and replay refactoring”  Less effort for the producer and consumer  Information is collected on the source Unfortunately the tool chain is not existent  Further work has to be done – Publicize this approach – Realizing a tool chain than can be used by everyone – Make these tools as a standard fitting for modern development environment – Shipping refactoring logs should be a part of new setup and deployment assistants © Raphael Gfeller,

New fields of application Based on approach 9: Detect an illegal usage of a component Situation: – Company A writes a well tested component C A, test T, test results R, – Company B writes a component C B that includes C A in a illegal way and apply refactorings to hide the origin of C A.  C B =some functions + C A + refactorings  It is not obvious that C A has been integrated into C B. Solution: – Detect refactorings between C A and C B. – Replay this refactorings on T  T’ – Rerun T’ on C B  R’ – If R and R’ are equal  the chance that C A has been integrated into C B is high © Raphael Gfeller,

New fields of application Based on approach 9: Detect cheating of students Situation: – Students have to solve a given problem in Java including writing of Unit Tests  Solution 1-n – A cheating student B will use the solution from student A. Apply refactoring to hide its cheat.  S B =some edits + S A + refactorings.  It is not obvious that S B has cheated. Solution: – Detect refactorings between S A and S B. – Replay this refactorings on T  T’ – Rerun T’ on S B  R’ – If R and R’ are equal  the chance that B has cheated is high. Remarks: – Only valid if the given problem results in given solution © Raphael Gfeller,

New fields of application Based on approach 8: Reduce the transferred data in a CVS Situation: – Textual changes are transmitted from the client to the server – Assume that the often used method doLog is renamed to doLogging.  large amount of data has to be transferred Optimization: – Transfer refactorings instead of the textual changes, if possible Requirements – Client has to be able to record refactorings – Server has to have knowledge about the project structure like Microsoft Team Foundation Server does – Server has to be able to replay refactorings CVS Client transmit the changed file CVS Server CVS Client transmitt refactoring CVS Server © Raphael Gfeller,

New fields of application Based on “approach 8” and “Reduce the transferred data in a CVS “: Extend change management within a small company Situation: – A Company uses their common code C in different Projects P 1-n – During evolution, multiple versions of C exits. P 1-n reference on one of the special versions of C.  Bug fixing of C becomes painful Optimization: – Server has to have knowledge about all projects in a company. – Transmitted refactorings are forwarded to the C and to the referenced projects P 1-n that are using C.  Only one version of C exists. All projects within the company are using the actual version of the C © Raphael Gfeller,

New fields of application Based on “approach 9”: Component Evaluation Situation: – Normally more than one component does the same job.  Evaluation is a time intensive job. Assumption: – If a component C A is doing nearly the same job as C B  API of C A and C B is similar Optimization: – Test the application with C A  test T, application A and test result R Realize a tool that: 1.Find refactoring between C A and C B  Ref 2.Apply Ref on A  A’, on T  T’ 3.Run T’ on A’  R’, store R’ 4.[For all component goto 1] 5.Display all R’ 6.Convert A to use with the best component C. Program could do the job with Component 1 from Vender A could do the job with Component 2 from Vendor B could do the job with Component 3 from Vendor C © Raphael Gfeller,

Questions? © Raphael Gfeller,

References Gfeller Raphael, Upgrading of component-based application, [Online] [Citied ] OMPONENT-BASEDAPPLICATIONS OMPONENT-BASEDAPPLICATIONS © Raphael Gfeller,