Architecture Recovery (a special, and especially important type of architectural analysis)

Slides:



Advertisements
Similar presentations
Software Architecture Lecture 3
Advertisements

Copyright © Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy. All rights reserved. Basic Concepts Software Architecture Lecture 3.
Software Architecture Lecture 2
ARCHITECTURAL RECOVERY TO AID DETECTION OF ARCHITECTURAL DEGRADATION Joshua Garcia*, Daniel Popescu*, Chris Mattmann* †, Nenad Medvidovic*, and Yuanfang.
By Xiangzhe Li Thanh Nguyen.  Components and connectors are composed in a specific way in a given system’s architecture to accomplish that system’s objective.
Cataloging and Detecting Architectural Bad Smells Joshua Garcia, Daniel Popescu, and Nenad Medvidovic, University of Southern California Yuanfang Cai,
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
UML Static diagrams. Static View: UML Component Diagram Component diagrams show the organization and dependencies among software components. Component:
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
The Unified Software Development Process - Workflows Ivar Jacobson, Grady Booch, James Rumbaugh Addison Wesley, 1999.
Analysis of Software Architectures. What Is Architectural Analysis? Architectural analysis is the activity of discovering important system properties.
Architecture-driven Modeling and Analysis By David Garlan and Bradley Schmerl Presented by Charita Feldman.
Introduction to Software Architecture. Software Architecture Definition  Definition. A software system’s architecture is the set of principal design.
Identifying Architectural Bad Smells Joshua Garcia, Daniel Popescu, George Edwards and Nenad Medvidovic University of Southern California.
© Copyright Eliyahu Brutman Programming Techniques Course.
What Is Object-Oriented Design? (Chapter 1). Software Development Life Cycle 1. Problem statement and requirements 2. Solution specification 3. Code design.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Software Architecture Lecture 3
© Drexel University Software Engineering Research Group (SERG) 1 Based on the paper by Philippe Kruchten from Rational Software.
Implementation Yaodong Bi. Introduction to Implementation Purposes of Implementation – Plan the system integrations required in each iteration – Distribute.
Software Design Refinement Using Design Patterns Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
An Introduction to Software Architecture
 To explain the importance of software configuration management (CM)  To describe key CM activities namely CM planning, change management, version management.
Introduction to J2EE Architecture Portions by Kunal Mehta.
1 SYS366 Lecture Visual Modeling and Business Use Case Diagrams.
By Xiangzhe Li Thanh Nguyen.  Introduction  Terminology  Architecture  Component  Connector  Configuration  Architectural Style  Architectural.
OBJECT ORIENTED SYSTEM ANALYSIS AND DESIGN. COURSE OUTLINE The world of the Information Systems Analyst Approaches to System Development The Analyst as.
SOFTWARE DESIGN.
Basic Concepts Software Architecture. What is Software Architecture? Definition: – A software architecture is the set of principal design decisions about.
Contents 1.Introduction, architecture 2.Live demonstration 3.Extensibility.
L8 - March 28, 2006copyright Thomas Pole , all rights reserved 1 Lecture 8: Software Asset Management and Text Ch. 5: Software Factories, (Review)
Object Oriented Analysis and Design using the UML CIS 520 Advanced Object-Oriented Design.
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Grid programming with components: an advanced COMPonent platform for an effective invisible grid © 2006 GridCOMP Grids Programming with components. An.
CS 772: Global Knowledge Networks V. “Juggy” Jagannathan CSEE, West Virginia University.
Construction Planning and Prerequisite
July 27, 2005High Performance Distributed Computing 05 Recording and Using Provenance in a Protein Compressibility Experiment Paul Groth, Simon Miles,
02:01© hello2morrow1 Love your Architecture Alexander v. Zitzewitz blog.hello2morrow.com.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
1 Software Design Lecture What’s Design It’s a representation of something that is to be built. i.e. design  implementation.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
Basic Concepts and Definitions
OOD OO Design. OOD-2 OO Development Requirements Use case analysis OO Analysis –Models from the domain and application OO Design –Mapping of model.
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.
1 Architectural Blueprints—The “4+1” View Model of Software Architecture (
Basic Concepts of Software Architecture. What is Software Architecture? Definition: – A software system’s architecture is the set of principal design.
Software Architecture Lecture 3
Software Architecture
Integration Testing.
Architecture Analysis Techniques
Course Outcomes of Object Oriented Modeling Design (17630,C604)
Chapter 5:Design Patterns
Object-Oriented Software Engineering Using UML, Patterns, and Java,
Software Architecture Lecture 3
Software Architecture Lecture 2
Software Architecture Lecture 3
IMPORTANT NOTICE TO STUDENTS:
Software Architecture Lecture 3
An Introduction to Software Architecture
Software Architecture Lecture 3
Architecture Recovery
Operating System Introduction.
Presented By: Darlene Banta
Design Yaodong Bi.
Software Architecture Lecture 3
Presentation transcript:

Architecture Recovery (a special, and especially important type of architectural analysis)

Temporal Aspect of Architecture Design decisions are made and unmade over a system’s lifetime – At time t a system has only one architecture Prescriptive architecture (PA) captures design decisions made prior to system construction – as-designed Descriptive architecture (DA) describes how the system has been built – as-implemented

iRODS – Descriptive Architecture How Many Systems Start off iRODS – Prescriptive Architecture …and End up

What Happened? Software decay – Drift – introduction of design decisions into a system that are not encompassed or implied by its architectural design – Erosion – introduction of design decisions into a system that violate its architectural design Decaying systems begin to “smell”  More on this later…

Another Example Hadoop Distributed File System – Prescriptive Architecture HDFS – Descriptive Architecture

Hadoop – HDFS + MapReduce

Hadoop – Complete Architecture

Hadoop – Complete Architecture, Another View

Architectural Decay Can exist both in the design and code Software smell Commonly made design or implementation decision Negatively impacts your system’s lifecycle properties It is not a bug – it doesn’t break your system It is a manifestation of technical debt Inspired by Refactoring: Improving the Design of Existing Code by Martin Fowler

A Catalogue of Architectural Smells Brick Concern Overload Brick Use Overload Brick Dependency Cycle Unused Interface Ambiguous Interface Duplicate Component Functionality Scattered Functionality Component Envy Connector Envy Connector Chain Extraneous Adjacent Connector …

Examples of Smells from Real Systems This document contains no technical data subject to the EAR or the ITAR.

Linux Architecture

Linux – Memory Manager Subsystem

Bash Architecture

Bash – Job Control Component

Bash – Commands Component

Hadoop – Complete Architecture

Hadoop – Dependency Cycle

Hadoop – Component Use Overload

Hadoop – Brick Concern Overload Value Aggregator

Hadoop – * Envy InterDataNode Protocol

What Can Be Done? Architectural recovery and then refactoring – The process of determining a system’s architecture from its implementation-level artifacts – Source code, executable files, Java.class files, … Difficult in practice – Size of code bases – Irrelevant details – Misleading details – Missing information – Hard to objectively assess existing techniques Still, many automated solutions available

Example: ShareDraw – Recovered Application Class Diagram

Clustering ShareDraw’s Implementation – Isolated Classes

Clustering ShareDraw’s Implementation – Generalization, Aggregation, Composition

Clustering ShareDraw’s Implementation – Two-Way Associations

Clustering ShareDraw’s Implementation – Recovered Partial Configuration FrameWindows_Mgr Dialog_Mgr View_Mgr Summary_Mgr DrawDocument_Mgr +m_pSummInfo DrawTool_Mgr DrawObj_Mgr Server

Existing Recovery Techniques ACDC – Algorithm for Comprehension-Driven Clustering – Structural pattern-based clustering ARC – Architecture Recovery Using Concerns – Concern-based hierarchical clustering based on similarity measure Bunch-NAHC & Bunch-SAHC – Hill-climbing algorithm for maximizing Modularization Quality LIMBO – scaLable InforMation BOttleneck – Probabilistic hierarchical clustering WCA-UE & WCA-UENM – Weigted Combined Algorithm – Dependency-based hierarchical clustering ZBR – Zone-Based Recovery – Hierarchical clustering based on textual information

Multiple Views Bash from ACDC Bash from BunchBash from ZBR Bash “Ground Truth”

Empirical Comparison Eight architectures of six open-source systems Obtained ground-truths for each ArchStudio 4 IDE Java 280K 54 comp. Bash OS Shell C 70K 25 Hadoop Data Prc Java 200K 68 Linux-C OS C 750K 7 Linux-D OS C 750K 120 Mozilla-C 1.3 Browser C/C++ 4M 10 Mozilla-D 1.3 Browser C/C++ 4M 233 OODT 0.2 Data Mgt Java 180K 217

Proximity to Ground Truth

Average Proximity 45%

Cluster Comparison

Average Cluster Similarity 20%

What Does This Mean? Architecture is multi-faceted Multiple ground-truths per system Different abstraction levels may be appropriate Architects may not really know what goes on in their system