Diagnosing Design Problems in Object Oriented Systems Adrian Trifu, Radu Marinescu Proceedings of the 12th IEEE Working Conference on Reverse Engineering.

Slides:



Advertisements
Similar presentations
EDUC4417 Senior Computers Dr. Mumbi Kariuki January 28, 2004 Object-Orientation David Cuillerier.
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Test-Driven Development and Refactoring CPSC 315 – Programming Studio.
General OO Concepts and Principles CSE301 University of Sunderland Harry R. Erwin, PhD.
SERL - Software Engineering Research Labslide1 Frameworks and Hooks by Garry Froehlich Paul Sorenson SERL (Software Engineering Research Lab)
Object-Oriented Analysis and Design
Page 1 Building Reliable Component-based Systems Chapter 7 - Role-Based Component Engineering Chapter 7 Role-Based Component Engineering.
Object-Oriented Metrics. Characteristics of OO ● Localization ● Encapsulation ● Information hiding ● Inheritence ● Object abstraction.
Procedural vs Object Oriented Design Bad code smells Game Design Experience Professor Jim Whitehead January 23, 2009 Creative Commons Attribution 3.0 creativecommons.org/licenses/by/3.0.
1 SWE Introduction to Software Engineering Lecture 23 – Architectural Design (Chapter 13)
Object-Oriented Databases
© Wolfgang Pelz Introduction Object-Oriented Methods: Analysis, Design & Programming Dr. Wolfgang Pelz Dr. Yingcai Xiao The University of Akron.
REFACTORING Improving the Design of Existing Code Atakan Şimşek e
Investigating the Evolution of Bad Smells in Object-Oriented Code Alexander Chatzigeorgiou Anastasios Manakos University of Macedonia Thessaloniki, Greece.
Software Testing and Quality Assurance: Introduction and Terminology
Itntroduction to UML, page 1 Introduction to UML.
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
1 Object-Oriented Software Engineering CIS 375 Bruce R. Maxim UM-Dearborn.
UML and Object Oriented Concepts
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
Design Patterns OOD. Course topics Design Principles UML –Class Diagrams –Sequence Diagrams Design Patterns C#,.NET (all the course examples) Design Principles.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
The Software Development Life Cycle: An Overview Presented by Maxwell Drew and Dan Kaiser Southwest State University Computer Science Program.
1 CS 456 Software Engineering. 2 Contents 3 Chapter 1: Introduction.
By: Md Rezaul Huda Reza 5Ps for SE Process Project Product People Problem.
Software Quality Improvements from Removing Code Smells Wes J. Lloyd July 15, 2008 Computer Science Department Colorado State University Dr. Sudipto Ghosh,
Refactoring Cristescu Marilena. Definitions Loose Usage: Reorganize a program(or something) As a noun: a change made to the internal structure of some.
© S. Demeyer, S. Ducasse, O. Nierstrasz Intro.1 1. Introduction Goals Why Reengineering ?  Lehman's Laws  Object-Oriented Legacy Typical Problems  common.
Aspect Oriented Programming Scott Nykl CSSE 411 Senior Seminar.
Software Refactoring Part I: Introduction Bartosz Walter Advanced Object-Oriented Design Lecture 5.
Sadegh Aliakbary Sharif University of Technology Spring 2012.
Creational Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
A language to describe software texture in abstract design models and implementation.
CSC480 Software Engineering Lecture 11 September 30, 2002.
Refactoring1 Improving the structure of existing code.
Object Oriented Reverse Engineering JATAN PATEL. What is Reverse Engineering? It is the process of analyzing a subject system to identify the system’s.
November 2011CSC7302: Testing & MetricsHangMan-Refactoring.1 HangMan PBL - Refactoring Use your updated (best) version of Hangman (with a dictionary of.
1 Object-Oriented Design in Practice. Could/Should We Do Better? Dr. Radu Marinescu Timişoara, Object-Oriented Design in Practice. Could/Should.
Incremental Design Why incremental design? Goal of incremental design Tools for incremental design  UML diagrams  Design principles  Design patterns.
Software Engineering CS3003 Lecture 4 Code bad smells and refactoring.
ITEC 3220A Using and Designing Database Systems Instructor: Gordon Turpin Course Website: Office: CSEB3020.
Software Waterfall Life Cycle
Module 3. Smells Between Classes Course: Refactoring.
Designing Classes. Software changes Software is not like a novel that is written once and then remains unchanged. Software is extended, corrected, maintained,
Chapter 8: Aspect Oriented Programming Omar Meqdadi SE 3860 Lecture 8 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Five design principles
PC204 Lecture 5 Programming Methodologies Copyright 2000 by Conrad Huang and the Regents of the University of California. All rights reserved.
Refactoring Advanced Software Engineering Dr Nuha El-Khalili.
Refactoring as a Lifeline : Lessons Learned from Refactoring Amr Noaman Abdel-Hamid Software Engineering Competence Center ( SECC ) IT Indeustry Development.
Ontology Support for Abstraction Layer Modularization Hyun Cho, Jeff Gray Department of Computer Science University of Alabama
Pertemuan 12 Refactoring Mata kuliah: T0144 – Advanced Topics in Software Engineering Tahun: 2010.
Quality Assurance in the Presence of Variability Kim Lauenroth, Andreas Metzger, Klaus Pohl Institute for Computer Science and Business Information Systems.
1 COS 260 DAY 12 Tony Gauvin. 2 Agenda Questions? 5 th Mini quiz –Chapter 5 40 min Assignment 3 Due Assignment 4 will be posted later (next week) –If.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Presented by Lu Xiao Drexel University Quantifying Architectural Debt.
The PLA Model: On the Combination of Product-Line Analyses 강태준.
Design Patterns: MORE Examples
Object-Oriented Modeling with UML
Abstract descriptions of systems whose requirements are being analysed
Object Oriented Analysis and Design
Object-Oriented and Classical Software Engineering Sixth Edition, WCB/McGraw-Hill, 2005 Stephen R. Schach
Code Smells 1.
Component-Level Design
Object oriented analysis and design
An Introduction to Software Architecture
Refactoring.
UML  UML stands for Unified Modeling Language. It is a standard which is mainly used for creating object- oriented, meaningful documentation models for.
Chapter 13 Logical Architecture.
Presentation transcript:

Diagnosing Design Problems in Object Oriented Systems Adrian Trifu, Radu Marinescu Proceedings of the 12th IEEE Working Conference on Reverse Engineering Presented by James T. O’Hara SE 516, Fall 2006

1 Software Design Problems Software decay is a phenomena that plagues aging software systems Modern IDEs provide tools for automatic detection of “code smells” and code refactoring Restructuring practices are severely hampered by their symptomatic and informal nature

2 Software Decay Maintenance activities account for more than 70% of the total costs associated with the life cycle of software systems A significant part of maintenance efforts is concerned with the phenomena called software decay (Fowler, Refactoring: Improving the Design of Existing Code. )

3 Correcting Design Problems Fixing large object oriented systems is still largely a manual time-consuming process extremely risky requires human design and domain expertise

4 Problem A: God Class A large, overly complex, non-cohesive class Caused by: excessive intra-class code duplication cut-and-paste coding the class encapsulates more than one cohesive concept

5 A Real World Analogy A disease is diagnosed based on the presence of a specific group of symptoms Therapies are reusable procedures describe how to cure a disease

6 Terminology Structural anomaly (symptom) Contextual hint Design problem problem indicators Diagnosis Restructuring strategy (treatment)

7 Relationships between terminology

8 Design Problems Patterns Description Indicators M (mandatory) all are required to fire O (optional) provide increased certainty Restructuring strategy how to eliminate the problem

9 Pattern Structure For Specifying Design Problems Description Indicators Restructuring strategy

10 Design Problems Examples Abusive Centralization of Control Abusive Conceptualization Inheritance for Implementation Reuse

11 Abusive Centralization of Control Description The abusive centralization of control is a typical design problem for systems that have undergone repeated extensions over a period of time. Indicators (M) “feature envy” (O) class is a “god class” (O) class has satellite data classes (envied classes) Restructuring strategy 1: let A be the set of methods suffering from “feature envy”… 2: identify cohesive feature envious kernels in method A. Apply Fowler’s heuristic concerning extraction of methods…

12 Case Study Example

13 Abusive Conceptualization Description One class should model one abstraction Indicators (M) class is a “god class” (O) extensive coupling to other classes in the system (O) refused parent bequest in subclasses of the affected class Restructuring strategy 1: identify A, the set of cohesive kernels of data and associated functionality in the class 2: extract classes corresponding to the identified cohesive kernels replacing calls with delegations where necessary

14 Inheritance for Implementation Reuse Description This problem corresponds to the situation in which the inheritance mechanism of the programming language is not used in conformity with the object oriented paradigm Indicators (M) at least two of the following indicators must fire (O) refused parent bequest in subclass (O) subclass is a “tradition breaker” (O) subclass uses multiple inheritance Restructuring strategy 1: replace inheritance relation with composition

15 Related Work Refactoring Design Patterns Design Rules Detection Strategies Automation

16 Conclusion The paper presented a causal approach to support the decision making process in object oriented restructuring The approach has a high potential for automation, which can lead to an important decrease in costs associated with restructuring

17 The illusion of simplicity* *The Complexity of Programming Models. Grady Booch

18 Links Martin Fowler Refactoring Home Page In pursuit of code quality: Monitoring cyclomatic complexity ibm.com/developerworks/java/libr ary/j-cq03316/ ibm.com/developerworks/java/libr ary/j-cq03316/

19 References Diagnosing Design Problems in Object Oriented Systems. Adrian Trifu, Radu Marinescu, Diagnosing Design Problems in Object Oriented Systems, Proceedings of the 12th IEEE Working Conference on Reverse Engineering (WCRE 2005), IEEE Computer Society Press, 2005 Martin Fowler. Refactoring: Improving the Design of Existing Code. Addison-Wesley Grady Booch. The Complexity of Programming Models. aosd.net/2005/archive/Complexity.ppt