Identifying Architectural Bad Smells Joshua Garcia, Daniel Popescu, George Edwards and Nenad Medvidovic University of Southern California.

Slides:



Advertisements
Similar presentations
Software Architecture Lecture 3
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Analysis of Software Architectures.
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Basic Concepts Software Architecture Lecture 3.
Software Architecture Lecture 2
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Analysis of Software Architectures Software Architecture Lecture.
ARCHITECTURAL RECOVERY TO AID DETECTION OF ARCHITECTURAL DEGRADATION Joshua Garcia*, Daniel Popescu*, Chris Mattmann* †, Nenad Medvidovic*, and Yuanfang.
Cataloging and Detecting Architectural Bad Smells Joshua Garcia, Daniel Popescu, and Nenad Medvidovic, University of Southern California Yuanfang Cai,
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors.
Software Architecture Research and Practice Nenad Medvidovic University of Southern California
Automated Analysis and Code Generation for Domain-Specific Models George Edwards Center for Systems and Software Engineering University of Southern California.
Analysis of Software Architectures. What Is Architectural Analysis? Architectural analysis is the activity of discovering important system properties.
Software Connectors. Attach adapter to A Maintain multiple versions of A or B Make B multilingual Role and Challenge of Software Connectors Change A’s.
The Architecture Design Process
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors Software Architecture Lecture 7.
A Model-Driven Framework for Architectural Evaluation of Mobile Software Systems George Edwards Dr. Nenad Medvidovic Center.
An Architectural Approach to Robotics Software Design, Implementation, and Deployment Brian D’Souza Joshua Garcia Ivo Krka Natachart Laotheppitak Hossein.
Demystifying Architectural Styles Nikunj Mehta 3/11/02Demystifying Architectural Styles2 Architectural Styles Characterize –Structure, i.e. external.
Software Architecture Lecture 3
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors Software Architecture Lecture 7.
Software Architecture in Practice (3rd Ed) Introduction
Free Mini Course: Applying SysML with MagicDraw
Architecture-Based Runtime Software Evolution Peyman Oreizy, Nenad Medvidovic & Richard N. Taylor.
Assessing the Suitability of UML for Modeling Software Architectures Nenad Medvidovic Computer Science Department University of Southern California Los.
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.
By Xiangzhe Li Thanh Nguyen.  Introduction  Terminology  Architecture  Component  Connector  Configuration  Architectural Style  Architectural.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
Model-Driven Analysis Frameworks for Embedded Systems George Edwards USC Center for Systems and Software Engineering
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
1 SAM ‘08 © 2008, Dewayne E PerryICSE ’08 – Leipzig, Germany Composable Context-Aware Architectural Connectors Christine Julien Dewayne Perry.
Cohesion and Coupling CS 4311
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
GRASP: Designing Objects with Responsibilities
Design Analysis builds a logical model that delivers the functionality. Design fully specifies how this functionality will be delivered. Design looks from.
1 Increasing the Confidence of Engineers during Component Upgrades Marija Rakic ARR, February 6 th, 2001.
CSE 303 – Software Design and Architecture
Slide 1 Service-centric Software Engineering. Slide 2 Objectives To explain the notion of a reusable service, based on web service standards, that provides.
Software Connectors Acknowledgement: slides mostly from Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic,
Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Software Connectors in Practice Software Architecture.
Basic Concepts and Definitions
Foundations, Theory, and Practice Software Architecture Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Basic.
Improving System Availability in Distributed Environments Sam Malek with Marija Mikic-Rakic Nels.
Metadata Driven Aspect Specification Ricardo Ferreira, Ricardo Raminhos Uninova, Portugal Ana Moreira Universidade Nova de Lisboa, Portugal 7th International.
Architecture Recovery (a special, and especially important type of architectural analysis)
Basic Concepts of Software Architecture. What is Software Architecture? Definition: – A software system’s architecture is the set of principal design.
 System Requirement Specification and System Planning.
Software Architecture Lecture 3
GRASP – Designing Objects with Responsibilities
Software Architecture
Analysis of Software Architectures
Software Engineering Fall 2005
Software Connectors.
Software Architecture Lecture 3
Designing Software for Ease of Extension and Contraction
Software Architecture Lecture 2
Model-Driven Analysis Frameworks for Embedded Systems
The Extensible Tool-chain for Evaluation of Architectural Models
Software Connectors – A Taxonomy Approach
Software Architecture Lecture 3
Service-centric Software Engineering 1
Software Architecture Lecture 3
Software Architecture Lecture 3
Automated Analysis and Code Generation for Domain-Specific Models
Software Architecture Lecture 7
Software Architecture Lecture 7
Software Architecture Lecture 3
Software Architecture Lecture 7
Analysis of Software Architectures
Software Architecture Lecture 6
Presentation transcript:

Identifying Architectural Bad Smells Joshua Garcia, Daniel Popescu, George Edwards and Nenad Medvidovic University of Southern California

Contribution Definition of notion Architectural Smell Definition of four concrete architectural smells Quality impact of each smell 2

Motivation Successful systems are maintained over multiple years System’s Life-Cycle Properties worsen over time Understandability Testability Extensibility Reusability Restructuring/Refactoring helps to improve life-cycle properties What structures need to be refactored? 3

Code Smells Code smells are implementation structures that negatively affect system lifecycle properties Defined in terms of implementation-level constructs Classes Methods Statements Examples Long parameter list Large methods Code smells do not address architectural decisions 4

Software Architecture Software system’s architecture is the set of principal design decisions made about the system Usually includes system decomposition Subsystems/Components Services offered and required by a component Component interactions 5

Examples of Architectural Decompositions 6

Architectural Smell Architectural smell A commonly used architectural decision that negatively impacts lifecycle properties Possible Causes Applying a design solution in an inappropriate context Mixing design fragments that have undesirable emergent behaviors Architectural Refactoring – The remedy Altering the internal structure of the system Altering the behaviors of internal system elements No change of the external system behavior Goal: Clearly codifying architectural smells will allow engineers to avoid and/or correct common design pitfalls. 7

Concrete Architectural Smells Definition of four concrete architectural smells 1. Connector Envy 2. Scattered Functionality 3. Ambiguous Interfaces 4. Extraneous Connector Quality impact of each smell Source: Recovery 18 Grid systems Refactoring of industrial middleware 8

Ambiguous Interfaces – Description An Ambiguous Interface offers only one public interface Internally dispatches to multiple services Appears especially in event- based publish-subscribe systems 9

Ambiguous Interfaces – Quality Impact User has to inspect the component’s implementation before knowing about its offered services Negatively affects Analyzability Understandability Example: JMS 10

Connector Envy – Description Connector roles Communication Coordination Conversion Facilitation Components with Connector Envy encompass extensive interaction- related functionality Example: Gridfarm Filesystem Daemon 11

Connector Envy – Quality Impact Violates separation of concerns Negatively affects Reusability Understandability Testability 12

Scattered Functionality – Description Multiple components are responsible for realizing the same high-level concern Some of those components are responsible for orthogonal concerns Example: Linux’s Status Reporting 13

Scattered Functionality – Quality Impact Violates the principle of separation of concerns twice Negatively affects Reusability Understandability Testability 14

Extraneous Connector - Description Two connectors of different types are used to link a pair of component Example: Events vs. Procedure Calls Example system: Example: Old MIDAS version 15

Extraneous Connector – Quality Impact Benefits of each connector type may cancel each other out This example negatively impacts Understandability Reusability Adaptability 16

Contribution Definition of Architectural Smell Identification of concrete architectural smells Definition of four concrete smells Connector Envy Scattered Functionality Ambiguous Interfaces Extraneous Connector Discussed quality impact of each smell 17