Software Architecture in Practice

Slides:



Advertisements
Similar presentations
Software Architecture Reconstruction By Elizabeth Griffith Derived from a report done by Vijaya Datta Mayyuri.
Advertisements

Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Outline About author. The problem that discussed in the article.
Building Enterprise Applications Using Visual Studio ®.NET Enterprise Architect.
L4-1-S1 UML Overview © M.E. Fayad SJSU -- CmpE Software Architectures Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I.
Building Documentation Generators Arie van Deursen Tobias Kuipers CWI, The Netherlands.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
1/31 CS 426 Senior Projects Chapter 1: What is UML? Chapter 2: What is UP? [Arlow and Neustadt, 2005] January 22, 2009.
© Copyright Eliyahu Brutman Programming Techniques Course.
Software Architecture Quality. Outline Importance of assessing software architecture Better predict the quality of the system to be built How to improve.
Strategies to relate the program and problem domains using code instrumentation Mario Marcelo Berón University of Minho Pedro Rangel Henriques University.
Visualization By: Simon Luangsisombath. Canonical Visualization  Architectural modeling notations are ways to organize information  Canonical notation.
Basic Concepts The Unified Modeling Language (UML) SYSC System Analysis and Design.
CASE Tools And Their Effect On Software Quality Peter Geddis – pxg07u.
Chapter 6– Artifacts of the process
UML - Development Process 1 Software Development Process Using UML (2)
Software Construction and Evolution - CSSE 375 Reverse Engineering Tools and Techniques Shawn & Steve Left – Reengineering from the competition can be.
Karolina Muszyńska. Reverse engineering - looking at the solution to figure out how it works Reverse engineering - breaking something down in order to.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Model Driven Development An introduction. Overview Using Models Using Models in Software Feasibility of MDA MDA Technologies The Unified Modeling Language.
Abstract We present two Model Driven Engineering (MDE) tools, namely the Eclipse Modeling Framework (EMF) and Umple. We identify the structure and characteristic.
UML diagrams What is UML UML diagrams –Static modeoing –Dynamic modeling 1.
Unified Modeling Language* Keng Siau University of Nebraska-Lincoln *Adapted from “Software Architecture and the UML” by Grady Booch.
L6-S1 UML Overview 2003 SJSU -- CmpE Advanced Object-Oriented Analysis & Design Dr. M.E. Fayad, Professor Computer Engineering Department, Room #283I College.
Software Architecture Reconstruction By Vijaya Datta Mayyuri Symphony, Cacophony.
Object-Oriented Software Engineering using Java, Patterns &UML. Presented by: E.S. Mbokane Department of System Development Faculty of ICT Tshwane University.
Computer Systems & Architecture Lesson 4 8. Reconstructing Software Architectures.
3.2 Semantics. 2 Semantics Attribute Grammars The Meanings of Programs: Semantics Sebesta Chapter 3.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Concepts and Realization of a Diagram Editor Generator Based on Hypergraph Transformation Author: Mark Minas Presenter: Song Gu.
Connecting Architecture Reconstruction Frameworks Ivan Bowman, Michael Godfrey, Ric Holt Software Architecture Group University of Waterloo CoSET ‘99 May.
1 Architectural Blueprints—The “4+1” View Model of Software Architecture (
Object Oriented Programming and Data Abstraction Earl Huff Rowan University.
Module: Software Engineering of Web Applications Dr. Samer Odeh Hanna 1.
Building Enterprise Applications Using Visual Studio®
Compiler Design (40-414) Main Text Book:
Chapter 20: Architecture Reconstruction and Conformance
UML Diagrams By Daniel Damaris Novarianto S..
Component and Deployment Diagrams
Chapter 1: Introduction to Systems Analysis and Design
Definition CASE tools are software systems that are intended to provide automated support for routine activities in the software process such as editing.
Module: Software Engineering of Web Applications
Architecting Web Services
What is UML? What is UP? [Arlow and Neustadt, 2005] October 5, 2017
Introduction to Unified Modeling Language (UML)
Architecting Web Services
Software Engineering Architectural Design Chapter 6 Dr.Doaa Sami
Software Engineering and Best Practices
UML Diagrams Jung Woo.
Modelling and Extracting the Build-Time Architectural View
Authors: Khaled Abdelsalam Mohamed Amr Kamel
Module: Software Engineering of Web Applications
Documenting an Architecture
Reconstructing an Architecture
Chapter 2 – Software Processes
Software Architecture
Chapter 7 –Implementation Issues
Chapter 1: Introduction to Systems Analysis and Design
4+1 View Model of Software Architecture
Reconstructing an Architecture
Module: Software Engineering of Web Applications
Lecture 06:Software Maintenance
4+1 View Model of Software Architecture
Reconstructing an Architecture
Database System Concepts and Architecture
Graphical Modeling of INFOD applications
Chapter 1: Introduction to Systems Analysis and Design
Software Re-engineering and Reverse Engineering
Logical Architecture & UML Package Diagrams
Software Architecture & Design
Presentation transcript:

Software Architecture in Practice Architectural Reconstruction Credits: Original slideset made by Klaus Marius Hansen

Literature Main [van Deursen et al., 2004] van Deursen, A., Hofmeister, C., Koschke, R., Moonen, L., Riva, C.(2004) Symphony: View-Driven Software Architecture Reconstruction. In Proceedings of the Fourth Working IEEE/IFIP Conference on Software Architecture (WICSA’04), pp 122-132 [Bass et al., 2013], Chapter 20 Background [Koschke, 2005a] Koschke, R. (2005). What architects should know about reverse engineering and reengineering. In Proceedings of the Third Working IEEE/IFIP Conference on Software Architecture (WICSA’05), pp 4-10 [Gorton and Zhu, 2005] Gorton, I. and Zhu, L. (2005) Tool Support for Just-in-Time Architecture Reconstruction and Evaluation: An Experience Report. In Proceedings of ICSE'05, pp 514-523

Motivation Many software engineering activities need correct architectural information, in, e.g., Evolution Application integration (Architecture) evaluation Architectural documentation is ideally updated as decisions are taken Architecture-as-design = architecture-as-implemented

Motivation Unfortunately, architectural documentation is often Outdated in that new decisions are not reflected, e.g., because of time pressure Wrong in that the information in the documentation was never correct Or plainly missing ! However, the system-as-implemented embodies the (architectural) design and implicitly design decisions Architectural reconstruction may help in retrieving these

Architecture reconstruction Architecture reconstruction is the process of obtaining a documented architecture for an existing system Why is architecture reconstruction difficult? Implementation and architecture/design are on different abstraction levels E.g., source code versus CC view Non-local decisions may never be reflected in code E.g., a decision on using a layered architectural style

Architecture Reconstruction One consequence is that no comprehensive tool exists for architecture reconstruction – needs to be tailored to problem The Symphony process is a viable process to structure the work I have supervised several works that use the Symphony proces to aid in real-world reconstructions

Exercise Do you have comprehensive architecture documentation of all systems in your organization? Is it a problem?

Software Architecture Reconstruction The process of obtaining a documented architecture for an existing system Architectural requirements Architectural views Architectural decisions … Essentially a design recovery process Extract -> abstrac t-> present Data gathering Knowledge inference Information presentation Hard for software architectures Potentially a big gap between implementation and architecture

Process: “Symphony” We will look at the “Symphony” process Concepts Created a.o. by Nokia Research Concepts Views and viewpoints as in IEEE 1471 Source view View that can be extracted from artifacts of a system Not all source views are architectural views E.g., abstract syntax tree Target view View that describes architecture-as-implemented with the information needed for the purpose of the reconstruction E.g. CC viewpoint to assess performance bottle-neck Hypothetical view Hypothetical architecture-as-designed, (inaccurate, maybe postulated) Interview with architects, existing docs

Symphony Stages Reconstruction design Reconstruction execution

Reconstruction design Performance issues, maintenance costs, replacements, poor reliability, … Problem elicitation “Business case” for reconstruction What is the problem? Requires the stakeholders (testers, developers, managers, users,…) Concept determination What architectural information is needed to solve the problem? Which viewpoints are relevant? Define target and source viewpoints Define mapping rules, i.e. how does source view translate into target view? Often heuristics and informal approaches x.java in directory y => Class X is-in Layer Y; classname ends-in ‘Strategy’ Class plays Strategy role in Strategy

Reconstruction execution Data gathering i.e. collect the data: static+dynamic techiques ‘the truth is in the source’ Knowledge inference Get the target view from the source view Often iterative and highly manual  Information interpretation Decide  Extract-abstract-present

Data gathering Source view in Rigi format Sources Running system Build files (Unit) tests Configuration files Source code Data(base) … Techniques Static Source-code-based Manual inspection Lexical analysis Syntactic analysis Fuzzy parsing Island grammars Semantic analyses Dynamic Trace collection Profiling Debugging Code instrumentation, e.g., using aspects Special runtime environment Source view in Rigi format Result: Repository of source views

Inference and Interpretation Knowledge inference Going from source to target view… Techniques Manual E.g., Rigi [Storey et al., 1996] Semi-automatic E.g, SQL queries for defining grouping rules (Dali) Automatic ? Information Interpretation E.g., visualizing using UML SHRiMP is from Rigi: A Visualization Environment for Reverse Engineering

Henrik Bærbak Christensen Bass § 20 Somewhat more coarse grained process Raw View Extraction Database Construction Convert raw info into ‘standard form’ View Fusion ‘combines views of info in db’  Architecture Analysis Test hypotheses about the architecture My perception: Abstract to the point of irrelevance… Morale: Symphony process is the one to emphasize CS@AU Henrik Bærbak Christensen

Reverse Engineering Tool Some examples „Traditional“ IDE support for ‘reverse engineering’ a UML diagram based upon the source code „Untraditional“ Rigi DiscoTect

Rigi Components of the system are nodes, relationships are arcs Lead to graphs E.g., call graph Example IBM's SQL/DS system

MagicDraw (1): Module View

MagicDraw (2): Module View

Module View: Example Manual

Dynamic Views Module viewpoints are really the ‘easy case’. Static elements ‘are’ in the code Problems: ‘hidden dependencies’ Program A writes file in format Z that is read by program B DB schemas, etc. etc. The dynamic views (run-time / CC view) are even more complex Require execution and data collection… … and they only describe one instance of the system

JSeq Jseq instruments java code and makes (textual) sequence diagrams. (And no longer maintained) backgammon.domain.ConfigurableGame.newGame backgammon.domain.AbstractGame.newGame backgammon.domain.ConfigurableGame.getBoard backgammon.domain.strategies.StandardBoard.reset backgammon.domain.strategies.StandardBoard.putCheckerOntoBoard (x 8) backgammon.domain.Color.getSign backgammon.domain.strategies.AbstractBoard._notify backgammon.domain.ConfigurableGame$LocalBoardListener.update backgammon.view.AbstractBackgammonApplication.boardChange

MagicDraw (4): C&C View

DiscoTect: C&C View

Discussion Obvious difficulties for dynamic view generation are in distributed settings  How do we trace this central TM16 use case?

Henrik Bærbak Christensen Akhera A (now defunct) research project, used AspectJ to produce traces for Java programs… CS@AU Henrik Bærbak Christensen

State of the Art (2005 ) Koscke

Discussion Allocation view? What about rationale and decisions  ? Docker-compose files actually are machine readable documentation of deployment What about rationale and decisions  ?

Can we do better? If we cannot find the architecture in the code… Because code is much more low level And code is the primary artifact Because it is what pays our paycheck … then why do we not put the architecture back into the code???

Architectural Annotations

Henrik Bærbak Christensen Quite a few have tried… It is a recurring problem I just got appointed as maintainer of this pile of (---) code and no-one knows how its architecture is… Check http://www.daimi.au.dk/~hbc/ProjectReports/index.html And I guess there is some on the masters produced page as well… CS@AU Henrik Bærbak Christensen