Software Development using. Architecture-Driven. Acme and ArchJava. Marwan Abi-Antoun. Software Research Seminar (SSSG)



Similar documents
A Workbench for Prototyping XML Data Exchange (extended abstract)

SourceAnywhere Service Configurator can be launched from Start -> All Programs -> Dynamsoft SourceAnywhere Server.

Terms and Definitions for CMS Administrators, Architects, and Developers

Getting Started Guide

Lesson 4 Web Service Interface Definition (Part I)

Editors Comparison (NetBeans IDE, Eclipse, IntelliJ IDEA)

IBM Operational Decision Manager Version 8 Release 5. Getting Started with Business Rules

Microsoft Visual Studio Integration Guide

Software Analysis Visualization

Modeling Guidelines Manual

Announcements. Project status demo in class

Specify the location of an HTML control stored in the application repository. See Using the XPath search method, page 2.

CHAPTER 6: TECHNOLOGY

Design Report: Resource Management Software CS400 Senior Design I

OpenEmbeDD basic demo

Change Manager 5.0 Installation Guide

Supporting Software Development Process Using Evolution Analysis : a Brief Survey

Content Management Implementation Guide 5.3 SP1

Step- by- Step guide to extend Credential Sync between IBM WebSphere Portal 8.5 credential vault and Active Directory 2012 using Security Directory

WebSphere Business Monitor

TSM Studio Server User Guide

Developing the Architectural Framework for SOA Adoption

tools that make every developer a quality expert

SAP Business Objects Business Intelligence platform Document Version: 4.1 Support Package Data Federation Administration Tool Guide

Manage Software Development in LabVIEW with Professional Tools

Change Management for Rational DOORS User s Guide

CA Data Protection. Content Provider Development Guide. Release 15.0

Security Development Tool for Microsoft Dynamics AX 2012 WHITEPAPER

WHITE PAPER DATA GOVERNANCE ENTERPRISE MODEL MANAGEMENT

JRefleX: Towards Supporting Small Student Software Teams

RTI Database Integration Service. Getting Started Guide

Business Application Services Testing

WebRatio 5: An Eclipse-based CASE tool for engineering Web applications

Authoring for System Center 2012 Operations Manager

WebSphere Business Monitor

Symantec Enterprise Vault

Program Understanding in Software Engineering

Jos Warmer, Independent

SignalDraw: GUI Tool For Generating Pulse Sequences

PTC Integrity Integration with Microsoft Visual Studio PTC Integrity 10.8

Testing Tools Content (Manual with Selenium) Levels of Testing

Symantec Enterprise Vault

JOURNAL OF OBJECT TECHNOLOGY

Building A Very Simple Web Site

Visual Studio Team Edition for Database Professionals. Woody Pewitt Developer Evangelist

Chapter 3 Authenticating Users

today 1,700 special programming languages used to communicate in over 700 application areas.

The presentation explains how to create and access the web services using the user interface. WebServices.ppt. Page 1 of 14

Citrix EdgeSight for Load Testing User s Guide. Citrix EdgeSight for Load Testing 3.8

Novell ZENworks 10 Configuration Management SP3

Veritas Cluster Server Database Agent for Microsoft SQL Configuration Guide

Quality Assurance of Software Models within Eclipse using Java and OCL

WebSphere Business Modeler

2. Analysis, Design and Implementation

International Journal of Software Engineering and Knowledge Engineering c World Scientific Publishing Company

PTC Integrity Eclipse and IBM Rational Development Platform Guide

Jet Data Manager 2012 User Guide

SOFTWARE TESTING TRAINING COURSES CONTENTS

Auditing manual. Archive Manager. Publication Date: November, 2015

Intellect Platform - The Workflow Engine Basic HelpDesk Troubleticket System - A102

Software Distribution Reference

An introduction to creating JSF applications in Rational Application Developer Version 8.0

Setting Up Resources in VMware Identity Manager

Framework as a master tool in modern web development

Enhanced Connector Applications SupportPac VP01 for IBM WebSphere Business Events 3.0.0

A Mind Map Based Framework for Automated Software Log File Analysis

Hands-On Lab. Web Development in Visual Studio Lab version: Last updated: 12/10/2010. Page 1

Rev 7 06-OCT Site Manager Installation Guide

Custom Web Development Guidelines

Applying Cognitive Patterns to Support

Table of Contents. CHAPTER 1 Web-Based Systems 1. CHAPTER 2 Web Engineering 12. CHAPTER 3 A Web Engineering Process 24

Increasing Development Knowledge with EPFC

Sage CRM Connector Tool White Paper

DAVE Usage with SVN. Presentation and Tutorial v 2.0. May, 2014

Embarcadero DB Change Manager 6.0 and DB Change Manager XE2

Symantec Enterprise Vault

UML PROFILING AND DSL

Cross-domain Identity Management System for Cloud Environment

<Insert Picture Here> Introducing Data Modeling and Design with Oracle SQL Developer Data Modeler

Data processing goes big

Configuration Manager

Tool Support for Model Checking of Web application designs *

Data Tool Platform SQL Development Tools

Business Insight Report Authoring Getting Started Guide

WS_FTP Professional 12

Proceedings of the 6th Educators Symposium: Software Modeling in Education at MODELS 2010 (EduSymp 2010)

Symantec Enterprise Vault

CA Spectrum. Microsoft MOM and SCOM Integration Guide. Release 9.4

Engineering Process Software Qualities Software Architectural Design

Gladinet Cloud Backup V3.0 User Guide

IBM Tivoli Software. Document Version 8. Maximo Asset Management Version 7.5 Releases. QBR (Ad Hoc) Reporting and Report Object Structures

Back Up and Restore the Project Center and Info Exchange Servers. Newforma Project Center Server

The Real Challenges of Configuration Management

ORACLE BUSINESS INTELLIGENCE WORKSHOP

Rational Team Concert. Guido Salvaneschi Dipartimento di Elettronica e Informazione Politecnico di Milano salvaneschi@elet.polimi.

What is a database? COSC 304 Introduction to Database Systems. Database Introduction. Example Problem. Databases in the Real-World

CA APM Cloud Monitor. Scripting Guide. Release 8.2

Transcription:

Architecture-Driven Software Development using Acme and ArchJava Never go to sea with two chronometers; take one or three Presentation on research in progress Software Research Seminar (SSSG) Jan 12 th 2005 Marwan Abi-Antoun

Problem Statement How does one ensure that every trifling detail of an architectural specification gets communicated to the implementer, properly understood by him, and accurately incorporated into the product? Frederick P. Brooks, Jr., in The Mythical Man-Month 2

Conceptual Integrity Importance of a documented software architecture specification: Outsourcing and/or distributed development Software maintenance and evolution Architectural model either missing or obsolete or evolves separately from implementation Need to check conformance and keep specification in sync with implementation 3

ArchJava in a Nutshell Extension of Java programming language Specify architecture directly within code: Components, Connectors, Ports, Glue... Code serves as documentation of architecture Guarantee architectural conformance Type system enforces inter-component communication Component substitutability 4

Acme Terminology 5

Acme + ArchJava Use Acme to check other properties: Architectural style System behavior Use Acme s tool support (AcmeStudio): Visualization Advanced analyses: Performance analysis based on queuing theory Rate monotonic schedulability analysis 6

Main Contribution Continuous/incremental synchronization of an Architecture (Acme) and an Implementation (ArchJava) Initial generation of ArchJava stubs from Acme model Initial creation of Acme model from existing ArchJava implementation Synchronization between existing Acme model and existing ArchJava implementation 7

Industrial Experience Generate architecture diagrams Boxes and arrows Generate UML class diagrams from existing code: Pull-in too many low-level details! Spend time weeding output (every time) No way to bridge the gap between the two Manual comparison Manual merge 8

Bridging the Gap Perceived difficulties: Reconstruct architecture from implementation Breakthrough: ArchJava Handle overlapping/missing information Partial support from ArchJava Detecting differences: First step of synchronization process Adopt structural not textual comparison 9

Textual Comparison Used by most commonly available tools Line-oriented Arbitrary ordering on unordered data Not suitable for tree/graph structured data: XML files Database schemas Architecture Description Languages (ADLs) Focus on string labels at the expense of other semantic attributes 10

Limitations of Textual Comparison 11

Example Structural Comparison 12

Key Ideas Use only architecturally relevant elements: Ignore classes/fields not of type component Can ignore port methods if not in Acme Ignore non-essential details: Names for connectors, roles, attachments, Component instance as organizing entity Compare both types and instances Type-driven 13

Structural Comparison Build complete intermediate representation for Acme and ArchJava Includes types, instances, attachments, Compare intermediate representations: Exclude parts from comparison as needed Do NOT generate or rely on tags/comments in Acme or ArchJava Do NOT listen to Acme or ArchJava change events (disconnected operation) 14

Structural Comparison Goals Be able to detect: Matches Inserts Deletes Renames (do NOT treat as Insert + Delete) Not (initially) supported: Moves 15

Your Feedback Demonstration of early prototype Unordered comparison completed last week Some features not enabled yet We re very interested in your feedback! Approach Usability Suggestions for improvement Periodic demonstrations (outside SSSG) 16

Currently Supported Scenarios ArchJava Stub Generation (skip) Generate ArchJava stubs from Acme Model Architectural Import Import Acme model from ArchJava implementation Architectural/Code Evolution Additional code is added Detect and create representation in Acme Architectural Synchronization Rename components in Acme Detect renames when comparing with ArchJava 17

Walkthrough Setup Synchronization Compare Type Information (skipped) Compare Instance Information Generate Edit Script Only Acme edits supported for now Apply Edit Script Visualize Changes in AcmeStudio 18

Setup Synchronization Select/Create Acme model: Current model: select system/representation New model: select or import families Select an ArchJava project from the workspace (import if necessary) Select the main component class 19

Setup Demo 20

Compare Type Information Retrieve types from Acme and ArchJava Not very useful if no ArchJava classes were generated for Acme component types: InstanceOnly setting for generating ArchJava stubs Most commonly used setting 21

Type Information Demo 22

View Instance Information Components Port Port Involvements Provided Methods Required Methods Connectors Attachments Bindings Types for instances 23

View Instance Information Demo 24

Compare Instance Information Assigning Types affects the Matching Assigning a type to a component could mean that the component inherits port from the type E.g., port can be inherited from the type 25

Compare Instance Information Demo 26

Edit Script Demo 27

Visualize in AcmeStudio Visualize Acme Model: AcmeStudio: no layout engine out of the box Implemented layout using a force-directed layout algorithm (JIGGLE) Accidental difficulty: Layout unrelated to synchronization Absolutely essential when generating many Acme elements automatically Bad/Missing coordinates crash AcmeStudio 28

Apply Edit Script Layout depends on assigned type: Ports: input ports left, output ports right Clicking on Cancel abandons all changes Future Work: Verify types assigned to Acme elements to be created Verify no illegal Acme names (e.g., reserved keywords) will be generated Allow user to modify edit script 29

Imported Architecture Part 1 Raw layout currently generated for system 30

Imported Architecture Part 2 Raw layout currently generated for representation 31

A hard case Early ArchJava implementation Predates current Acme model Many changes: Everything renamed One insertion (component) Some deletions (ports) Subtrees are too similar! Acme model may not have required/provided methods Cannot use to distinguish between children Acme lower merge split upper Arch Java b l m s u 32

Demonstration of the hard case 33

Research Questions - 1 Missing type information in ArchJava: No declared types for ports, connectors, Missing instance information in ArchJava: No declared names for ports, connectors, attachments, bindings, False positives: Global attachments (Acme) v/s attachments spread out across components (ArchJava) port involvements minimize structural differences between Acme and ArchJava 34

Research Questions - 2 Structural typing instead of nominal typing: Java-like languages use nominal typing Names are the most easily changed Rely on additional semantic information Architectural type inference: User-assigned types for Acme model elements to be created Is it possible to infer (some) types? 35

Research Questions - 3 Type-check incremental changes/additions to Acme and ArchJava Never push breaking changes (e.g., create dangling ports, break substitutability, ) Better handling of first-class connectors: Assigning types to connectors, roles Assigning representations to connectors Using connector instances as organizing entities for structural comparison 36

Structural Comparison Standard tree-to-tree correction problem Ordered Tree Comparison Unordered Tree Comparison May fit problem domain better Less attention than ordered comparison General problem proved MAX SNP-HARD Assumptions can produce polynomial time We think we should keep both for now 37

Ordered Tree Comparison Implemented Zhang-Sasha algorithm: Exact (not approximation) algorithm Generates optimal Tree Edit Distance Good performance (with no optimization) Our enhancements: Structural instead of alphabetical ordering String-to-string correction instead of matching Forced matches between selected nodes 38

Unordered Tree Comparison Implemented adaptation of algorithm by Torsello, Hidovi and Pelillo Chosen assumption: If two nodes match (i.e., either exact match or rename), so do their parents Order does matter within each sub-tree! This assumption can yield bad answers: Create new component which wraps already existing components 39

Usability Questions - 1 Using trees for software architecture visualization Asymmetric display of changes Right-click menu to edit/assign types Propagate up to root detected differences Using trees for other than inheritance trees! Present user with multiple choices Allow manual override of detected differences 40

Usability Questions 2 Allow the user to modify the edit script The allowed changes not orthogonal Support saving edit script as patch file Can be applied repeatedly Undo support Global Find/Replace with regular expressions to specify possible (pattern) matches (e.g., in* input, in1, ) 41

Engineering Questions Generalize implementation to allow comparing/merging between: Two Acme implementations Two ArchJava implementations Useful for comparing versions stored in a configuration management system Layout engine as AcmeStudio plug-in: Mainly packaging/licensing issues Need architectural style-specific rendering 42

Future Implementation Work Refactor ArchJava code generation as special case of synchronization Add support for incremental changes in ArchJava Improve layout inside Acme representation Support modify/save/import Edit Script 43

Generality of Approach Other Architecture Description Languages: Main consideration: availability of tool support Other implementation languages as long as architectural information available: Use Java annotation or C# custom attribute to specify a component class Retrieve coclass es from type-library (TLB) or Interface Definition Language (IDL) in Microsoft COM implementations (Visual Basic, Visual C++) 44

Scalability of Approach Some parts more stable than others Start synchronization of large systems at: Acme representation ArchJava component class Polynomial-time algorithms Tree structure amenable to optimization: Lazy population on node expansion Edit script used to keep track of changes 45

Complementary Approaches We focus on upstream activities Architecture Implementation Others focus on downstream activities Change Impact Analysis E.g., CHIANTI (fine-grained structural comparison) Refactoring Eclipse support (textual comparison) NOT implying a waterfall process 46

Chianti: Change Impact Analysis of Java Programs 47

Related Work Comparing and Synchronizing Tree- Structured Data (e.g., XML, HTML, SGML) X-Diff, X-Tree Diff, XML Diff (Microsoft), XML TreeDiff (IBM) Graph exchange Language (GXL): Description language used in reverse engineering community to communicate data between reverse engineering tools 48

Acknowledgements Nagi Nahas Implementation of ordered and unordered comparison algorithms Bradley Schmerl Help with AcmeLib and AcmeStudio Daniel Tunkelang (CS Ph.D. 98) Author of Java Interactive Graph Layout Environment (JIGGLE) http://www-2.cs.cmu.edu/~quixote/ 49

References [1] Dennis Shasha, Kaizhong Zhang. Approximate Tree Pattern Matching, in Pattern Matching Algorithms, A. Apostolico and Z. Galil, Eds., chapter 14. Oxford University Press, 1997. [2] Kaizhong Zhang and Tao Jiang. Some MAX SNP-hard results concerning unordered labeled trees. Information Processing Letters, 49:249 254, 1994. [3] Andrea Torsello, Džena Hidovi, Marcello Pelillo. Polynomial-Time Metrics for Attributed Trees. Dipartimento di Informatica, Università Ca Foscari di Venezia. TR CS-2003-19. 50