Merijn de Jonge IPA Spring Days 2005 April 1, 2005 Build-level Components.

Slides:



Advertisements
Similar presentations
Chapter 7 System Models.
Advertisements

Copyright © 2006 Data Access Technologies, Inc. Open Source eGovernment Reference Architecture Approach to Semantic Interoperability Cory Casanave, President.
Vilmos Zsombori , Shanghai
1 RDF Tools Brian Kelly UKOLN University of Bath Bath, BA2 7AY UKOLN is funded by the British Library Research and Innovation Centre,
.NET Technology. Introduction Overview of.NET What.NET means for Developers, Users and Businesses Two.NET Research Projects:.NET Generics AsmL.
Profiles Construction Eclipse ECESIS Project Construction of Complex UML Profiles UPM ETSI Telecomunicación Ciudad Universitaria s/n Madrid 28040,
Configuration management
Configuration management
Code Generation in CDE Remi Lequette ILOG.
Component-Based Software Engineering Main issues: assemble systems out of (reusable) components compatibility of components.
•7/12 /07 F-1 © 2010 T. Horton CS 4240 Principles of SW Design Packages in Java and UML.
Kellan Hilscher. Definition Different perspectives on the components, behavioral specifications, and interactions that make up a software system Importance.
Background information Formal verification methods based on theorem proving techniques and model­checking –to prove the absence of errors (in the formal.
Page 1 Building Reliable Component-based Systems Chapter 16 - Component based embedded systems Chapter 16 Component based embedded systems.
Software Reuse Building software from reusable components Objectives
CBSD – Component Based Software Development - Introduction -
Software Factory Assembling Applications with Models, Patterns, Frameworks and Tools Anna Liu Senior Architect Advisor Microsoft Australia.
1 SWE Introduction to Software Engineering Lecture 5.
WebDynpro for ABAP Short introduction.
UML and Object Oriented Concepts
Deploying Dynamics Applications Thomas Hansen – Director, appSolutions a|s
CONNECT Installation and Configuration Les Westberg Copyright All Rights Reserved. 1.
SCRAM Software Configuration, Release And Management Background SCRAM has been developed to enable large, geographically dispersed and autonomous groups.
Systems Analysis and Design in a Changing World, Fifth Edition
Maven & Bamboo CONTINUOUS INTEGRATION. QA in a large organization In a large organization that manages over 100 applications and over 20 developers, implementing.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 1.
Project Source Code Structure and Build Process ● Remember consistency matters as source code structure, build process, and release processes are all intertwined.
C Copyright © 2009, Oracle. All rights reserved. Appendix C: Service-Oriented Architectures.
Implementation Yaodong Bi. Introduction to Implementation Purposes of Implementation – Plan the system integrations required in each iteration – Distribute.
C++ Code Analysis: an Open Architecture for the Verification of Coding Rules Paolo Tonella ITC-irst, Centro per la Ricerca Scientifica e Tecnologica
Implementation Considerations Yonglei Tao. Components of Coding Standards 2  File header  file location, version number, author, project, update history.
© 2007 by «Author»; made available under the EPL v1.0 | Date | Other Information, if necessary Eclipse SOA Tools Platform Project Eric Newcomer IONA Technologies.
Parser-Driven Games Tool programming © Allan C. Milne Abertay University v
Component-based software architecture Overview Divides the problem into sub-problems each associated with component partitions. The interfaces of the components.
Unified Modeling Language, Version 2.0
Configuration Management (CM)
By Xiangzhe Li Thanh Nguyen.  Introduction  Terminology  Architecture  Component  Connector  Configuration  Architectural Style  Architectural.
Tutorial build Main ideas –Reuse as much previously obtained configuration information as possible: from Babel, cca-spec-babel, etc. –Extract all irrelevant.
1 Schema Registries Steven Hughes, Lou Reich, Dan Crichton NASA 21 October 2015.
CONNECT: Building an Adapter Les Westberg Copyright All Rights Reserved. 1.
Distributed Java Programming Distributed Java Programming Setting up a Java Development Environment.
L8 - March 28, 2006copyright Thomas Pole , all rights reserved 1 Lecture 8: Software Asset Management and Text Ch. 5: Software Factories, (Review)
A Logic Meta-Programming Approach to support the Co-Evolution of Object-Oriented Design and Implementation Roel Wuyts , PROG.
Roles in Software Development using Domain Specific Modelling Languages Holger Krahn, Bernhard Rumpe, Steven Völkel Software Systems Engineering Technische.
Component Oriented Programming 1 Introduction to COP.
Chapter 1 Introduction. Chapter 1 - Introduction 2 The Goal of Chapter 1 Introduce different forms of language translators Give a high level overview.
1. 2 Preface In the time since the 1986 edition of this book, the world of compiler design has changed significantly 3.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14Slide 1 Chapter 14 Design with Reuse.
CPSC 871 John D. McGregor Change management Module 2 Session 3.
GLite build and integration system Building and Packaging Robert HARAKALY
Slide 1 Systems Analysis and Design With UML 2.0 An Object-Oriented Approach, Second Edition Chapter 2: Introduction to Object-Oriented Systems Analysis.
J.P. Wellisch, CERN/EP/SFT SCRAM Information on SCRAM J.P. Wellisch, C. Williams, S. Ashby.
Maven for building Java applications By Nalin De Zoysa
1 Chapter 12 Configuration management This chapter is extracted from Sommerville’s slides. Text book chapter 29 1.
Concepts and Realization of a Diagram Editor Generator Based on Hypergraph Transformation Author: Mark Minas Presenter: Song Gu.
Introduction to business component technologies. Component definitions Szyperski: A software component is a unit of composition with contractually specified.
310414IMPLEMENTATION1 IMPLEMENTATIONIMPLEMENTATION SOFTWARE ENGINEERING SOFTWARE ENGINEERING.
Formal Verification. Background Information Formal verification methods based on theorem proving techniques and model­checking –To prove the absence of.
GLite build and integration system Building and Packaging Robert HARAKALY
Basic Characteristics of Object-Oriented Systems
JRA1 Meeting – 09/02/ Software Configuration Management and Integration EGEE is proposed as a project funded by the European Union under contract.
350 parts. i-bank functional structure ▪technical modules – authentication – auditing – user profile – OTP functionality – notifications – push.
© 2010 IBM Corporation RESTFul Service Modelling in Rational Software Architect April, 2011.
*DT Project Model Leo Treggiari Intel Corp. Dec, 2005.
Systems Analysis and Design With UML 2
CIS 375 Bruce R. Maxim UM-Dearborn
Analysis models and design models
Architecture Description Languages
An Introduction to Software Architecture
Franca+ Bernhard Hennlich and Manfred Bathelt
Presentation transcript:

Merijn de Jonge IPA Spring Days 2005 April 1, 2005 Build-level Components

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Overview Introduction/motivation Build-level components Build-level composition Decoupling into build-level components Concluding remarks

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Overview

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Mozilla

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Mozilla Directory Structure One very large directory tree 26,000 files 2,500 subdirectories 240 file types One very large directory tree 26,000 files 2,500 subdirectories 240 file types

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Mozilla Directory References 1,521 directory references Avg. fan-in/fan-out 12 Max fan-in=100 Max fan-out=42 Median fan-in=5 Median fan-out=12 1,521 directory references Avg. fan-in/fan-out 12 Max fan-in=100 Max fan-out=42 Median fan-in=5 Median fan-out=12

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Build-level File (atomic entity) –Source –Documentation Directory tree (container) = source tree Build process –To build/install software –Driven by make/ANT/… Configuration process –To control build process –Driven by configure/configuration files/… Build-level interfaces –Build interface –Configuration interface

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Mozilla Build Level 1,350 Makefiles 40,000 LOC build instructions 16,000 LOC configuration Cyclic dependencies Two-phase build process Centralized build/configuration knowledge Code duplication Component implementations scattered 1,350 Makefiles 40,000 LOC build instructions 16,000 LOC configuration Cyclic dependencies Two-phase build process Centralized build/configuration knowledge Code duplication Component implementations scattered

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Wishes Independent deployment (of build-level artifacts) –No circular dependencies –Individual build processes –Individual configuration processes Automated composition –Standardized build interface –Standardized configuration interface –Standardized binding mechanism for build-level variability and dependencies

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Idea Apply CBSE principles to the build level Make build-level artefacts available for reuse by decomposing software systems into build-level components Make build-level component usable by assembling them into software systems using automated composition techniques

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Overview

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Component Definition (Szyperski) A software component is A unit of composition … with contractually specified interfaces … and explicit context dependencies only. It is subject to independent deployment … and to third-party composition.

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Standardized Build Interface Different build systems exist, e.g., –make, ANT, shell scripts, IDE Different software systems require different build actions, e.g., –make –make bootstrap, make, make install make clean make all make check make (un)install make dist make clean make all make check make (un)install make dist Standardized build interface to enable that software construction can be controlled via a standard set and sequence of build actions:

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Standardized Configuration Interface Different mechanisms exist to control software construction, e.g., –configuration files, configuration tools, Makefile editing Standardized configuration interface to enable uniform compile-time configuration: configure --help configure --prefix=/usr configure --with-aterm=/usr/lib configure --with-optimization=true configure --with-debug=false configure --help configure --prefix=/usr configure --with-aterm=/usr/lib configure --with-optimization=true configure --with-debug=false

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Explicit Context Dependencies Dependencies on build-level components are declared in configuration interfaces > configure --help … --with-aterm=DIR use ATerm Library at DIR --with-sglr=DIR use SGLR Parser at DIR … > configure --help … --with-aterm=DIR use ATerm Library at DIR --with-sglr=DIR use SGLR Parser at DIR …

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Independent Deployment Build-level components are deployed as packages A package is a versioned release of a build-level component, e.g., firefox-1.0.tar.gz Packages are published on web/ftp sites

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Third-party Composition A configuration interface enables late-binding of dependencies Compositions are thus not predefined and can be defined by a third party > configure --with-aterm=/usr/local/aterm --with-sglr=/usr/local/sglr --with-…= > configure --with-aterm=/usr/local/aterm --with-sglr=/usr/local/sglr --with-…=

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Overview

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Architectural Description Language Package Definition Language (PDL) –Domain-specific language designed specially for build- level component composition –Used for initial implementations –No explicit provides interfaces Koala –Re-use of existing composition language –Implementation is work in progress –Multiple provides interfaces –No version resolution

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Koala Concepts for Build-level Composition Interface definitions –To group build-level artefacts into types Explicit provides interfaces –To declare the type(s) of a component Diversity interfaces –To declare build-level variation points Module as atomic entity –To declare the implementation of a component

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Koala Definition for Build-level Component component Sglr { provides ISglr p; requires IATerm aterm; IToolbusLib libtb; IErrorSupport error_support; IPtSupport pt_support; contains module m url=" connects p = m; m = aterm; m = libtb; m = error_support; m = pt_support; } component Sglr { provides ISglr p; requires IATerm aterm; IToolbusLib libtb; IErrorSupport error_support; IPtSupport pt_support; contains module m url=" connects p = m; m = aterm; m = libtb; m = error_support; m = pt_support; }

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Mapping Koala to Build-level Concepts component Sglr { provides ISglr p; requires IATerm aterm; IToolbusLib libtb; IErrorSupport error_support; IPtSupport pt_support; contains module m url=" connects p = m; m = aterm; m = libtb; m = error_support; m = pt_support; } component Sglr { provides ISglr p; requires IATerm aterm; IToolbusLib libtb; IErrorSupport error_support; IPtSupport pt_support; contains module m url=" connects p = m; m = aterm; m = libtb; m = error_support; m = pt_support; } > configure --help … --with-aterm=DIR use ATerm component at DIR --with-libtb=DIR use LIBTB component at DIR --with-error_support=DIR use ERROR_SUPPORT component at DIR --with-pt_support=DIR use PT_SUPPORT component at DIR … > configure --help … --with-aterm=DIR use ATerm component at DIR --with-libtb=DIR use LIBTB component at DIR --with-error_support=DIR use ERROR_SUPPORT component at DIR --with-pt_support=DIR use PT_SUPPORT component at DIR … > curl | tar xfz - > configure --with-aterm= \ --with-libtb= \ --with-error_support= \ --with-pt_support= > configure --with-aterm= \ --with-libtb= \ --with-error_support= \ --with-pt_support=

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Koala source tree composition Checkout Implementation Parsing Realizatio n Normalization generic Component definition Package Component definition

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Unbound Diversity/Requires Interfaces Propagate upwards to top-level configuration interface r interface IConf { string foo=“some_value”; string bar; } interface IConf { string foo=“some_value”; string bar; } > configure --help --with-bar=VAL bind bar to VAL --with-r=DIR use R component at DIR > configure --help --with-bar=VAL bind bar to VAL --with-r=DIR use R component at DIR > configure --with-foo=“some_value” > configure --with-foo=“some_value” \ --with-bar=bar_binding() \ --with-r=r_binding() > configure --with-foo=“some_value” \ --with-bar=bar_binding() \ --with-r=r_binding() rr

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Online Package Base

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Overview

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Three Phases of Source Tree Decoupling 1.Source tree analysis 2.Source tree transformation 3.Online package base creation Performed successfully for graphviz ( )

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Source Tree Analysis Find components Find component references Fine tune –Add missing arrows –Remove cycles –Combine nodes with strong cohesion

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Create components Create component definitions Fine tune Source Tree Transformation sglr-3.13.tar.gz

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Decoupling Mozilla Cyclic dependencies Centralized build/configuration knowledge Cyclic dependencies Centralized build/configuration knowledge

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Dealing with Cyclic Dependencies 108 potential build-level components 4 cyclic-dependent clusters 37 non-cyclic components 108 potential build-level components 4 cyclic-dependent clusters 37 non-cyclic components

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Dealing with Cyclic Dependencies For each cluster create a composite component and a Koala component definition One provides interface for each sub- component On-demand refactoring to remove cyclic dependencies If all cyclic dependencies for a sub- component are removed, the component can be separated

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Dealing with centralized build/configuration Build knowledge –Duplicate build system for each component, or … –Generate (Automake) build process, or … –Dedicated component with build knowledge Configuration knowledge –Duplicate for each component, –Prune to remove irrelevant code

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Overview

April 1, 2005IPA Spring DaysMerijn de JongeBuild-level Components‹#› Concluding Remarks Reusable functionality is often not independently deployable due to build-level deficiencies CBSE principles help to decouple source trees into build-level components Composition of build-level components can be automated Introducing CBSE principles can be (partly) automated