ABSE and AtomWeaver

download ABSE and AtomWeaver

of 86

Transcript of ABSE and AtomWeaver

  • 8/8/2019 ABSE and AtomWeaver

    1/86

    ABSE and AtomWeaver

    A Quantum Leap in Software Development

  • 8/8/2019 ABSE and AtomWeaver

    2/86

    About Software Development

    Acriticallookintosoftwaredevelopment

    PART I

  • 8/8/2019 ABSE and AtomWeaver

    3/86

    Software, Everywhere

    From wrist watches to the Space Shuttle,software is everywhere

    Every day, millions of lines of code are writtenby thousands of software developers around the world

    Our society becomes more dependent on softwareevery passing day

  • 8/8/2019 ABSE and AtomWeaver

    4/86

    Increasing Software Complexity

    70's 90's 2010

    Cell Phone - 100.000 10.000.000

    High-End Car 100.000 1.000.000 100.000.000(GM/IBM Estimates)

    Word Processor - 78.000(Word 4.0 DOS)

    2.000.000+

    Operating System 10.000(Unix v1)

    4.500.000(Windows NT 3.1)

    50.000.000+(Windows Vista)

    Evolution in lines of code on typical systems

    Every system, every application, in every version,in any domain, gets more complex at each iteraction

  • 8/8/2019 ABSE and AtomWeaver

    5/86

    Increasing Software Demand

    Demand for software is skyrocketing

    More and more traditional tasks are being

    assisted or replaced by software

    Today, most consumer devices have some sort

    of software running inside. A growing trend.

    Disposable computing is not far away...

  • 8/8/2019 ABSE and AtomWeaver

    6/86

    Increasing Challenges

    - Compliance regulations (HL7, Sarbanes-Oxley, HIPPA)

    - Multi-core & Multi-threading

    - Development paradigms (SOA, Web 2.0, SaaS, cloud computing)

    Software makers need to address the evolution in:

    And at the same time face:

    - Decreasing time-to-market

    - Decreasing budgets

  • 8/8/2019 ABSE and AtomWeaver

    7/86

    Software development

    is anever-growingchallenge...

    Whathave we done

    so farto address this?

  • 8/8/2019 ABSE and AtomWeaver

    8/86

    Themajorcauseofthesoftwarecrisisis that the machines have becomeseveral orders of magnitude morepowerful!Toputitquitebluntly:aslongas there were no machines,programming was no problem at all;when we hada few weak computers,

    programmingbecame amildproblem,and nowwehavegiganticcomputers,programming has become an equallygiganticproblem.

    EdsgerDijkstra,1972

    The Software Crisis

    This was written almost four decades ago,but looks as it could have been written today.

  • 8/8/2019 ABSE and AtomWeaver

    9/86

    The Software Crisis

    Software Crisis

    Same

    Workforce

    IncreasingDemand

    IncreasingComplexity

    IncreasingChallenges

    Same

    Methods

    Same

    Tools

    Consecutive revolutions are being achieved in many domainsthanks to computer software.

    However, software engineering is not seeing the same evolutionrate as in the domains it addresses.

  • 8/8/2019 ABSE and AtomWeaver

    10/86

    Problem : Slow tool evolution

    In the seventies,people developed software line-by-line, file-by-file

    Four decades later,most people still develop software line-by-line, file-by-file

    While there has been some evolution in development methodsand tools, most are essentially based on flat source files.

  • 8/8/2019 ABSE and AtomWeaver

    11/86

  • 8/8/2019 ABSE and AtomWeaver

    12/86

    Problem : Feature Traceability

    The traceability problem occurs when the solution features that implement a problem

    feature cannot be easily identified.

    This makes it hard to identify all of the things that need to change in theimplementation, and to ensure that all of the changes are made consistently, whenthe requirements change.

    Failing to trace all elementsthat belong to a given featureleads to bugs, inconsistencies,and excess time.

    It's a (too) common scenario.

    Which?

    Feature

    SpecificationSourceCode

    Data

  • 8/8/2019 ABSE and AtomWeaver

    13/86

    In the recent past, several promises have emerged,claiming to be the silver bullet to the software crisis.

    But many have failed, or simply did not deliver.

    Let us have a look into the most important ones:(Quoting the opinion of others)

    Failed Promises

  • 8/8/2019 ABSE and AtomWeaver

    14/86

    #1 : UML Unified Modeling Language

    UML has become complex and clumsy. For 80% of all software only 20% of UMLis needed. However, it is not easy to find the subset of UML which we would callthe Essential UML.

    Ivar Jacobson, Co-Inventor of UML, June 2009

    UML is applying an abstraction at the wrong end of the problem. It isprimarily used to sketch object models for inferior languages. As such,it tends to explode into incomprehensible patterns of accidentalcomplexity in order to accommodate the various design patternsthat are used work around the lack of essential language features.

    Because the UML models cannot be compiled, executed, or

    interpreted, they are reduced to the level of mere documentation. Assuch, it is generally not even worth keeping in sync the manualround trip from the code to the model and back is just too expensivefor something that adds no more value to a project than an elaboratecode comment.From lispy.wordpress.com

  • 8/8/2019 ABSE and AtomWeaver

    15/86

    #2 : MDA Model-Driven Architecture

    At its most basic, MDA involves transforming one UML model into another UML model, possiblyseveral times and possibly automatically [...]. The MDA approach leads to the same results aswizards: lots of code (and models) that you didnt write yourself but that you are expected tomaintain. The MDA idea gets even worse when you consider round-trippingwould you like to

    update the manually made changes to the code and lower level models back to all the higher-levelmodels?

    MDA is limited to the effectiveness of the UML as a language for model driven development,a task it was not designed to support.

    Jack Greenfield - Microsoft

    Unfortunately, early enthusiasm for Model Driven Architecture (MDA) has dissipated to thepoint that many people are openly skeptical of the value of any model-driven approach.

    From MDA Redux, by Alan Brown, published by IEEE Computer Society

    Kelly / Tolvanen Metacase

  • 8/8/2019 ABSE and AtomWeaver

    16/86

    #3 : DSLs - Domain-Specific Languages

    [...] the Tower Of Babel* effect that results from having so many languages that a person needs tobe familiar with (if not master) in order to get common jobs done.

    ... nothing is better than having your own Little Language to do a specific job. It allows for conciseexpression of solutions to specific problems. But a problem arises when The Next Guy comes alongand has to learn the concepts behind the language, the motivations for particular elements of it,

    the syntax, etc.

    Writing a decent DSL is hard. Very limited, very simple DSL's can be adequately produced by acompetent programmer with expertise in the problem domain - DSL's that can be described on apage or two, and are tailored to a specific application/environment. These language are seldomusable outside the very limited context.

    But writing a good DSL that is robust and reusable beyond a limited context, is a lot of work. Itrequires persons with both domain expertise and language design expertise (not necessarily thesame person) to pull off. A truly reusable DSL will require reasonable documentation, otherwise itwon't survive the departure of its designers. And, it will eventually require a good set of tools -debugging environments and the like - for it to become worthwhile.

    Taken from http://c2.com/cgi/wiki?DomainSpecificLanguage * http://c2.com/cgi/wiki?TowerOfBabel

  • 8/8/2019 ABSE and AtomWeaver

    17/86

    Forrester expects model-driven development (MDD) to play a key role in the future of softwaredevelopment; it is a promising technique for helping application development managers address

    growing business complexity and demand.

    Gaining Momentum : MDSD and DSM

    Diego Lo Giudice Forrester Research

    Unlike MDA, MDSD (Model-Driven Software Development) and

    DSM (Domain-Specific Modeling) follow a more pragmatic, lessformal approach to software modeling. That makes theseapproaches more accessible to the mere developer.

    Domain-Specific Modeling raises the level of abstractionbeyond programming by specifying the solution directly using

    domain concepts. The final products are generatedfrom these high-level specifications, because both the modeland generators fit the requirements of only one company anddomain. Your experts define them, your developers use them.

  • 8/8/2019 ABSE and AtomWeaver

    18/86

    PART II

    ABSE - Overview

    HowcanABSEaddresstoday'ssoftwaredevelopmentproblems

  • 8/8/2019 ABSE and AtomWeaver

    19/86

    Quick Facts

    - Stands for Atom-Based Software Engineering

    - Is a generative approach (generates code from models) to

    MDSD (Model-Driven Software Development) and DSM (Domain-Specific Modeling)

    - Relies on tree-based models

    - Is a cross-platform Integrated Development Environment (IDE)

    - Implements and extends ABSE

    ABSE

    AtomWeaver

  • 8/8/2019 ABSE and AtomWeaver

    20/86

    A software engineering project is made up of Atoms, organizedas a tree. That tree is the Project Model.

    The ABSE Tree

    < A partial view of AtomWeaver's ABSE model

    A tree conveys association, mimicking

    the associative human brain, thereforebeing able to represent and decomposeany problem or data structure.

    The tree is ABSE's supporting paradigm,allowing the model to think like us.

  • 8/8/2019 ABSE and AtomWeaver

    21/86

    Atom

    Atom Template

    Atom Instance

    ABSE's single meta-metamodel

    Metamodels

    Models in ABSE

    An ABSE model, like in other MDSD methodologies, is abstractedat multiple levels:

    1

    *

    1

    Models*

    Text / Data Generated artifacts

    1

    *

  • 8/8/2019 ABSE and AtomWeaver

    22/86

    Atom Types

    There are only three types of Atoms:

    Atom Organizer Organizes library contents into meaningful structures

    Atom Template The metamodels (building blocks) of any ABSE model

    Atom Instance The actual models that make up a project model

  • 8/8/2019 ABSE and AtomWeaver

    23/86

    Atom Libraries

    An Atom Library contains Atom Templates, possibly structured in ameaningful way through Atom Organizers.

    Any ABSE model must be built fromone or more libraries as it canonly contain Atom Instances. Root Lib

    Language Lib

    Platform Lib

    Domain Lib

    DomainComponents

    Lib

    Libraries can use or extendother libraries.

    ProblemDomain

    SolutionDomain

    We can raise the abstractionlevel everytime we extenda library.

  • 8/8/2019 ABSE and AtomWeaver

    24/86

    The Atom Libraries are the driving force behind ABSE.

    A good library can help you save many development hours,and even more test hours.

    Atom Libraries

    The vision behind Software Product Lines (SPL) is that once the

    company's domain is converted into models, they can bereused and combined to create similar, but different, systems.

    ABSE and its libraries help SPL's become a reality.

    Libraries can be exchanged between systems throughALX (AtomWeaver Library Exchange) files.

  • 8/8/2019 ABSE and AtomWeaver

    25/86

    ABSE is Universal

    It can support and combine all forms of software engineering,including:

    Traditional file-oriented methods Literate Programming

    Aspect-Oriented Programming

    Component-Based Development

    Feature-Driven Development Domain-Specific Modeling

    Software Product Lines Software Factories

    Root Lib

    Language Lib

    Platform Lib

    Domain Lib

    DomainComponents

    Lib

    Hig

    herAbstraction

  • 8/8/2019 ABSE and AtomWeaver

    26/86

    ABSE is Universal

    This is possible because ABSE...

    is not targeted to a specific language, architecture, or platform

    allows generation of any kind of text or data

    has a very flexible meta-metamodel

    uses association as its paradigm, the basis of human thinking

  • 8/8/2019 ABSE and AtomWeaver

    27/86

    ABSE is Domain-Agnostic

    Enterprise Defense Systems AutomotiveAerospace

    ABSE can be applied to virtually any domain.

    Horizontal (solution domain) libraries can beextended with vertical (problem domain)libraries to achieve reductions in time-to-market and savings on development andtesting efforts.

    Atoms can represent and generate code forspecific aspects of the target domain.

    Entertainment Engineering

    Embedded Devices

    Science

    Healthcare

    Internet

  • 8/8/2019 ABSE and AtomWeaver

    28/86

    ABSE is Language-Independent

    FortranHaskellEiffelC#PhytonSQLJavaABAPErlangScalaSmalltalkVHDLPrologC++

    AdaPascalPHPLispRubyJavaScriptDelphiSASCOBOLCamlTclDVisualBasicCGroovyML

    Being largely based on text generation,ABSE can generate all kinds of textualoutput, from plain text files to completesoftware systems.

    A single ABSE project can target multiplelanguages and file types.

  • 8/8/2019 ABSE and AtomWeaver

    29/86

    ABSE is Refactorable

    ABSE metamodels can evolve with your skill.

    You can start doing just some texttransformation, grow up by refactoring

    Metamodels into common patterns.

    You can continue right up to fullDomain-Specific Modeling andSoftware Product Lines.

    Each time you derive an Atom Template intoanother Template, you increase theabstraction level.

    Line-Oriented

    Patterns

    Components

    Domain-Specific

    Software Factory

    Objects

  • 8/8/2019 ABSE and AtomWeaver

    30/86

    ABSE is Easy

    You don't need to be a rocket scientistto apply in an effective way.ABSE is accessible to the "mere developer mortal".

    An ABSE project is like a large mechanismthat can built from smaller, pre-built orcustom parts.

    The ABSE approach is more pragmatic and simpler than otherDSL/model-driven tools or technologies like oAW, OMG'sMDA/MOF/XMI, Eclipse EMF/GMF, Microsoft OSLO/M, Xtext.

  • 8/8/2019 ABSE and AtomWeaver

    31/86

    ABSE is Complete

    ABSE meta-metamodeldesigned to support 100%code generation from themodel.

    No round-trip necessary.

    The mix of custom andgenerated code is directlysupported by the meta-metamodel.

    No worries aboutoverwritten custom code,no management issues.

    atom_concept_a

    Customcode

    Generated code

    Custom code

    atom_concept_b

    Customcode

    Generatedcode

    Generated code

    source_file.h

    source_file.cpp

    Customcode

    Generated code

    Custom code

    Generatedcode

    Custom

    code

    Generated code

    Mo

    delTransform

    ation

  • 8/8/2019 ABSE and AtomWeaver

    32/86

    ABSE is Manageable

    An ABSE model can grow togenerate multi-million lineapplications, and still be easyto manage.

    That's because ABSE is based ona tree and not on a graph:

    Tree branches easily encapsulateother branches.

    A complex application using a graph

  • 8/8/2019 ABSE and AtomWeaver

    33/86

    ABSE is Comprehensive

    The complete ALM (Application Lifecycle Management)

    cycle can be supported.

    An ABSE tree is not exclusive to software implementation:it can also represent processes, documentation, SCM, etc.

    Documentation Project Bugs&Support

  • 8/8/2019 ABSE and AtomWeaver

    34/86

    ABSE is Collaborative

    Due to its granular nature,an ABSE model can beconcurrently manipulated.Two or more developers canwork on the same ABSE model.

    And through a supporting tool(like AtomWeaver), workflowscan be applied. Individual atomsor tree branches can bechecked-in or out, versioned andconditionally enabled/disabled.

    Instance A

    Instance B

    Instance C

    Instance D

    Instance E

    Instance F

    Instance G

  • 8/8/2019 ABSE and AtomWeaver

    35/86

    PART III

    ABSE in the Enterprise

    HowcanABSEimprovesoftwareengineering

  • 8/8/2019 ABSE and AtomWeaver

    36/86

    ABSE Can Bridge All Stakeholders

    By making available the appropriate Templates to each stakeholder,domain experts, designers, developers and testers can worktogether on the same ABSE model.

    Domain experts can specify Designers can design & re-arrange Developers can build Testers can debug & test

  • 8/8/2019 ABSE and AtomWeaver

    37/86

    ABSE Captures & Shares Knowledge

    The company's domain knowledge and the team's developmentknowledge can be captured into ABSE metamodels.

    Benefits:

    - Individual expertise can be shared with the whole team

    - Less skilled developers can work like the experts

    - Architectural uniformity can be achieved

    - Best practices are easily disseminated and enforced

  • 8/8/2019 ABSE and AtomWeaver

    38/86

    ABSE Increases Productivity

    - Repetitive patterns- Repetitive coding- Repetitive changes- Interfacing code/specification- Unit test preparation- Debug/log/trace code

    These and many other boring and error-prone tasks canbe reduced or even completely eliminated by using amodel-driven approach like ABSE.

    Some tasks under manual coding simply cannot scale:

  • 8/8/2019 ABSE and AtomWeaver

    39/86

    ABSE Increases Productivity

    Each time an ABSE metamodel is instantiated, time is saved.

    Each time an ABSE metamodel is extended, more time is saved.

    The team's productivity potential increases whenever it addsanother metamodel (Atom Template) to the ABSE library.Working on a higher abstraction level boosts your productivity.

  • 8/8/2019 ABSE and AtomWeaver

    40/86

    ABSE Increases Quality of Code

    The code produced by the ABSE metamodelscan (and should) be tried and tested code.

    By reducing the amount of custom code usedin the model, overall code quality increases.

    It is known that more time is spent debuggingcode than actually writing it.

  • 8/8/2019 ABSE and AtomWeaver

    41/86

    Critical Innovation : Software Reuse

    To realize a return on the investments we make in developing the solutions, we must reuse themenough to more than recover the cost of their development, either directly through cost reductions,or indirectly, through time to market reductions and quality improvements.

    Jack Greenfield et al - Software Factories

    Systematic software reuse is a promising means to reducedevelopment cycle time and cost, improve software quality, andleverage existing effort by constructing and applying multi-useassets like architectures, patterns, components, andframeworks.

  • 8/8/2019 ABSE and AtomWeaver

    42/86

    ABSE Promotes Reuse

    ABSE's meta-metamodel allows Atom Templates to be aggregators,so you can turn any part of your project into a new template forfuture reuse.

    Project A

    Instance A

    Instance B

    Instance C

    Library A

    Instance A

    Instance B

    Instance C

    Template 1

    Project B

    Instance D

    Instance 1

    Instance E

    Instance F

    The most common type of reuse is the reuse of software components, but

    other artifacts produced during the software development process can alsobe reused: system architectures, analysis models, design models, designpatterns, database schemas, web services, etc.

    ReuseTemplatization

    In the same way, ABSE lets you turn recurring patterns intotemplates, reducing project complexity and maintenance costs.

  • 8/8/2019 ABSE and AtomWeaver

    43/86

    ABSE Reduces Maintenance Costs

    Manual Code

    Atom Library

    Manual Code

    Atom Library

    Manual Code

    Manual Code

    Traditional Approach ABSE Approach

    CodebaseSize

    With ABSE you'll have

    less code to maintain.

    That's because youonly have to maintainone instance of yourcode. All otherinstances of that code

    are automaticallyupdated.

    And since manual codeis natively supported,there's no need to

    waste time maintainingprotected regions,code guards and othertrickery, just tomaintain the integritybetween manual andgenerated code.

    GeneratedCode

    GeneratedCode

  • 8/8/2019 ABSE and AtomWeaver

    44/86

    PART IV

    ABSE - Technical Overview

    AcloserlookintoABSEandhowitworks

  • 8/8/2019 ABSE and AtomWeaver

    45/86

    The Atom (ABSE's Meta-metamodel)

    Atom Template

    Custom Areas

    ParametersAdmin

    Base Template

    Derived Template

    TransformationCode

    Atom Instance

    Variables

    The Atom can be

    instantiated intoAtom Templates.

    Atom Templatesderive from othertemplates.

    All Atom Templatesderive fromroot_default, theonly pre-existing

    Atom Template inABSE.

    Atom Templates canbe instantiated into

    Atom Instances.

    Custom Code

    root_default An Atom can also

    be compared to anobject in an object-orientedprogramminglanguage.

    Form FunctionsCreationCondition

    Relocation

    Instantiation

    Composition

    S

  • 8/8/2019 ABSE and AtomWeaver

    46/86

    Atom Template

    Custom Areas

    ParametersAdmin

    TransformationCode

    Form Functions

    The Atom Admin Section

    The Admin Section of an AtomTemplate determines how its instancesare presented and how they behaveon the Model Tree.

    On the Admin Section you can define:

    - Icon and Label to be shown on the model- Construction constraints- Atom parameters- Other discovery and construction helpers

    The Admin Section also inherits from its base templates.

    Th At F S ti

  • 8/8/2019 ABSE and AtomWeaver

    47/86

    The Atom Form Section

    Atom Template

    Custom Areas

    ParametersAdmin

    TransformationCode

    Form Functions

    Each Atom Template has a dedicatedEditor.

    The Form Section lets you define howthe editor presents the Atom TemplateParameters and how you can set thecorresponding Instance Variables.

    The Form Section also inherits from its base templates.

    Th At F ti S ti

  • 8/8/2019 ABSE and AtomWeaver

    48/86

    The Atom Functions Section(and Behaviors)

    Atom Template

    Custom Areas

    ParametersAdmin

    TransformationCode

    Form Functions

    This section lets you define extra atomFunctions.

    The most common use is to defineAtom Behaviors.

    An Atom Behavior is a powerful generalization technique: It allowsthe atom to respond to a specific, globally-defined query.

    Any atom can request processing from another atom without

    actually knowing its type, allowing unlimited future extensions.

    Th At T f ti C d

  • 8/8/2019 ABSE and AtomWeaver

    49/86

    The Atom Transformation Code

    Atom Template

    Custom Areas

    ParametersAdmin

    TransformationCode

    Form Functions

    The transformation code allows any

    atom to perform actions based on itsinput parameters.

    Most common task is to generatecode, but other tasks like modifyingother atoms and OS calls are also

    possible.

    CreateCode

    PreCode

    ExecCode

    PostCode

    The Atom's transformation code issegmented into the following steps:

    The Atom's C stom Code

  • 8/8/2019 ABSE and AtomWeaver

    50/86

    The Atom's Custom Code

    Atom Template

    Custom Areas

    ParametersAdmin

    TransformationCode

    Form Functions

    To support 100% code generation fromthe model, and to avoid synchronizationproblems between generated andcustom code, ABSE allows you to defineone or more custom code areas on anAtom Instance.

    java_function

    custom_code

    source_file.java

    int Function()

    {

    generated code;

    generated code;

    generated code;

    }

    custom_code

    parameter

    parameter

    The Instance's Creation Condition

  • 8/8/2019 ABSE and AtomWeaver

    51/86

    Atom Instance

    Variables

    Custom Code

    CreationCondition

    Relocation

    The Instance's Creation Condition

    The inclusion of each Atom Instanceon the project can be subject to anexpression that dictates whether thatAtom is executed or not.

    If the evaluated condition is false, the

    Atom becomes invisible to the project.

    This brings more flexibility to thegeneration process and allows templatesto include/exclude some of their auto-generated atoms based on user-suppliedvalues.

    Instance Relocation

  • 8/8/2019 ABSE and AtomWeaver

    52/86

    Atom Instance

    Variables

    Custom Code

    CreationCondition

    Relocation

    Instance Relocation

    Atom Instances that are auto-generated by

    an Atom Template can then be relocated toanother position on the model tree.

    The relocated atom may be again movedby the user, if it is not blocked.

    For instance, user interface programmers may create atoms thatwill automatically create the interface visual elements's atoms.

    Designers can then manipulate and edit those atoms to achievethe desired application visuals.

    ABSE Strength #1 : Inheritance

  • 8/8/2019 ABSE and AtomWeaver

    53/86

    ABSE Strength #1 : Inheritance

    Like classes in several programming

    languages, Atom Templates can bederived into more complex andspecialized Templates.

    This allows you tobuild metamodelsthat share commonconcepts.

    cpp_class

    gui_dialog ext_data_object

    db_persistent_object

    root_default

    The derived template will inherit allproperties and code from its base template.

    ABSE Strength #2 : Composition

  • 8/8/2019 ABSE and AtomWeaver

    54/86

    ABSE Strength #2 : Composition

    Atoms can be combined to build larger structures.

    Atom Instances are combined to build the Project Model.

    Atom Templates can be composed of several other Templates which,on their turn, can also be composed of other Templates.

    From Wikipedia:http://en.wikipedia.org/wiki/Object_composition

    Composited (composed) objects areoften referred to as having a "has a"relationship. A real-world example ofcomposition may be seen in anautomobile: the objects wheel,steering wheel, seat, gearbox and

    engine may have no functionality bythemselves, but an object calledautomobile containing all of thoseobjects would serve a higherfunction, greater than the sum of itsparts.

    ext_powered_class

    cpp_member

    cpp_member

    cpp_method

    cpp_argument

    cpp_return_value

    Inheritance & Composition Combined

  • 8/8/2019 ABSE and AtomWeaver

    55/86

    Actual metamodels from AtomWeaver project

    Inheritance & Composition Combined

    You can see here how a metamodel of

    a C++ class, composed of two AtomInstances, is derived into anextended class with addedfeatures. Then a C++ Componentmetamodel is defined byinheriting Extended Classand adding data andconfigurationfeatures...

    Inheritance & Composition Combined

  • 8/8/2019 ABSE and AtomWeaver

    56/86

    Inheritance & Composition Combined

    Then a Persistent

    Componentmetamodel wascreated by inheritinga C++ Componentmodel and addingspecific DB features.

    The same was doneto create a DatabaseDocumentmetamodel.

    Inheritance & Composition Combined

  • 8/8/2019 ABSE and AtomWeaver

    57/86

    You can implicitly generate dozensor even hundreds of atoms just byadding a single atom instance to

    the project.

    If each of those atoms generatesjust a few lines of code...

    Imagine how much code that canbe generated at once!

    Now imagine that the generatedcode is mature, tested, quality

    code...

    Inheritance & Composition Combined

    Atom Templates = Software Components

  • 8/8/2019 ABSE and AtomWeaver

    58/86

    Atom Templates Software Components

    Metamodels

    ABSE lets you build applications like Legotm. A simple, yet effective

    constraint system drives you on the component discovery andconstruction process.

    Constraints Correct Models

    + =

    ABSE is an Executable Model

  • 8/8/2019 ABSE and AtomWeaver

    59/86

    ABSE is an Executable Model

    Every Atom on the ABSE Tree has its own transformation code(acquired from its template).

    To generate code, the Model Treerecursively executes its atoms,

    which is equivalent to say that all

    atoms are executed from top tobottom.

    The tree is executed four times,and on each iteraction one of thefollowing Atom Template sectionsis executed:

    ExecutionSequence

    CreateCode

    PreCode

    ExecCode

    PostCode

    Variable Transmission

  • 8/8/2019 ABSE and AtomWeaver

    60/86

    Variable Transmission

    Atom cpp_class

    Defines: class_name,inheritance

    Canaccess: ...

    Atom cpp_function

    Defines: func_name

    Canaccess: class_name,inheritance

    Atom cpp_argument

    Defines: arg_name,arg_type

    Canaccess: class_name,Inheritance, func_name

    Atom cpp_member

    Defines: member_name,member_type

    Canaccess: class_name,inheritance

    Variables are set on AtomInstances, and each variablecorresponds to an AtomTemplate parameter.

    Any variable from an Atomis automatically available toall branch children.

    This way, any Atom can

    work in context with itsancestors.

  • 8/8/2019 ABSE and AtomWeaver

    61/86

    PART V

    AtomWeaver

    AnABSEIntegratedDevelopmentEnvironment

    AtomWeaver is an ABSE Model

  • 8/8/2019 ABSE and AtomWeaver

    62/86

    AtomWeaver is being developed through an ABSE Model.

    AtomWeaver is ABSE's proof-of-concept, showing that afairly sophisticated application can be easily built using amodel-driven approach like ABSE.

    Some statistics:

    (Current version of AtomWeaver Prototype)

    - 38000 Total Atoms- 7800 User-Created Atoms- 30200 Auto-Generated Atoms

    - 334 Atom Templates in Library- 2456 Atom Instances in Model

    - 174756 Lines of Generated (+ Manual) Code- 701 Generated Files

    Introducing AtomWeaver

  • 8/8/2019 ABSE and AtomWeaver

    63/86

    AtomWeaver implements and extends ABSE

    into a complete, agile, dynamic IDE.

    g

    AtomWeaver prototype AtomWeaver's own ABSE model loaded

    Introducing AtomWeaver

  • 8/8/2019 ABSE and AtomWeaver

    64/86

    g

    Due to ABSE's genericity,AtomWeaver works on anydevelopment environment,Integrated with any tool chain

    AtomWeaver is presently the market's only plug-and-play MDSD system

    No other present system lets you start creating models in a few minutes

    AtomWeaver : The Universal Generator

  • 8/8/2019 ABSE and AtomWeaver

    65/86

    Besides pure programming,

    the modern software vendorfaces a long list of otherperipheral, but equallyimportant activities:

    - Requirement management- Research

    - Change management- Building- Testing- Version control- Issue management- Internal/customer reporting- End-user documentation- Code revisions

    - Installer packaging- Application resources- Databases- ...

    Why use separate tools?

    AtomWeaver can be the centralpoint of all development activities.

    Using AtomWeaver's modeling andgeneration capabilities, it'ssurprisingly easy to:

    - Build your own bug tracker- Implement code coverage- Automate documentation- Build synch'ed intranets/websites- Create configurations/build files

    - Package resources- Automatically build tests- Embed debug/trace code- Refactor features/architecture

    AtomWeaver Modules

  • 8/8/2019 ABSE and AtomWeaver

    66/86

    AtomWeaver is composed of several mandatory and optionalmodules. Each module contains a different aspect of the project.

    Future AtomWeaver versions will allow the creation of other,

    custom-defined modules through its API.

    Library, Model, Files and Log are the mandatory modules. Allothers are optional.

    AtomWeaver Modules

  • 8/8/2019 ABSE and AtomWeaver

    67/86

    Documentation For development support documentation, drafts, etc.

    Library Contains all libraries loaded into the project

    Model Holds the project's main model

    Files Lists and manages all generated artifacts

    Issues Manages SCM operations (bug tracking as the most common)

    Help Builds and concentrates all end-user documentation

    Log Registers all that is happening in AtomWeaver

    AtomWeaver's Model Transformation DSL: Lua

  • 8/8/2019 ABSE and AtomWeaver

    68/86

    Instead of using an exotic, custom DSL, AtomWeaver uses Lua to

    transform ABSE models into final source code.

    Lua is a lightweight, reflective, imperative and functionalprogramming language, designed to be a scripting language.

    Several benchmarks show Lua as the fastest interpreted scriptinglanguage available.

    This is specially important to code generation where millions oflines of transformation code are typically needed on a large project.

    AtomWeaver Extends ABSE

  • 8/8/2019 ABSE and AtomWeaver

    69/86

    AtomWeaver adds tools and commands to ABSE's basic featuresetto improve the developer's experience and productivity, including :

    Atom Dictionary: Lets you reference any project Atom byits associated name.

    Atom Lists : Lets you categorize atoms and build lists accordingto your pre-defined criteria.

    Counters : Lets you use unique values project-wide.

    AtomWeaver editions

  • 8/8/2019 ABSE and AtomWeaver

    70/86

    Two editions of AtomWeaver are planned:

    Solo Edition Team Edition

    For:

    - Individuals- MicroISVs- Small projects- Isolated generation tasks

    For:

    - Collaborative projects- SME's- Large corporations- Research institutes

    AtomWeaver 1.0 feature matrix

  • 8/8/2019 ABSE and AtomWeaver

    71/86

    Feature Solo Edition Team Edition

    Code Generator, Interpreter, Rules Engine X X

    IDE X X

    Library Repository X X

    File-based Database Storage (SQLite) X

    Server-based Database Storage (MS SQL Server) X

    ALM (Application LifeCycle Management) Support X X

    Model Versioning X

    Developer Roles X

    Concurrent Model Edition X

    Workflows & Tasks X

    AtomWeaver estimated prices

  • 8/8/2019 ABSE and AtomWeaver

    72/86

    Prices not definitive, subject to changeOptional support and/or maintenance not included

    Solo Edition Team Edition

    USD $499Regular

    USD $199Early Adopter Campaign

    USD $999Regular, Per Seat

    USD $499Early Adopter Campaign

    Per Seat

    AtomWeaver's next major features

  • 8/8/2019 ABSE and AtomWeaver

    73/86

    The following major features are planned

    for versions 2 & 3 of AtomWeaver

    Flexible Diagramming Generic GUI Mockups Scripting API

    Any kind of diagram can becreated, following rules

    defined in Atom Templatesand in the Library. Hybriddiagram/tree development

    will be possible.

    Mockups for any system willbe possible using ABSE's

    generic constraint system.Programmers can programwhile designers can design

    and rearrange.

    AtomWeaver will bescriptable, opening the door

    to user-defined ABSEmodels, extensions, customactions on atoms, and third-

    party add-ons.

    The Library Exchange

  • 8/8/2019 ABSE and AtomWeaver

    74/86

    AtomWeaver will have its dedicated Library Exchange site thatwill concentrate all publicly available Atom Libraries:

    - Free Libraries- Commercial Libraries

    These libraries can be supplied by:

    - Individual users- Commercial vendors- Isomeris

    By using ready-made libraries, you save time and get qualitycode and models from the domain experts.

    Team Edition Feature:Concurrent Model Edition

  • 8/8/2019 ABSE and AtomWeaver

    75/86

    Concurrent Model Edition

    The project is stored on a central database

    Developers can load a copy of the project into their workstations

    An Atom or a branch can be checked-out for edition. Other users

    are denied write access to that atom or branch

    After check-in, changes are incorporated into the central database

    AtomWeaver regularly checks for new updates and automaticallyloads them to the local copy of the project

    Team Edition Feature:Developer Role Management

  • 8/8/2019 ABSE and AtomWeaver

    76/86

    Developer Role Management

    The structure of a development team is mimicked in theAtomWeaver environment

    Each user must log in to work on a project

    The two main roles are Architects and Developers. Other rolescan be created

    Each role can have different privileges regarding code accessor changes

    Developer roles are also useful for workflows

    Team Edition Feature:Model Versioning

  • 8/8/2019 ABSE and AtomWeaver

    77/86

    Model Versioning

    Like in a source control system, atoms can be versioned

    Branches/forks can be made

    Past project snapshots can be obtained

    Atoms can be reverted to a previous version

    Different versions of atoms or branches can be diff'ed

    Team Edition Feature:Workflows and Tasks

  • 8/8/2019 ABSE and AtomWeaver

    78/86

    Workflows and Tasks

    The development process can be pro-actively managed byAtomWeaver

    All processes are defined by the organization through Atoms,stored as libraries

    Workflows, tasks and memos can be issued.

    Activities like testing, change requests, code reviews, etc. canbe implemented

    Atoms can be selected & associated to these activities

    AtomWeaver release timeline*

  • 8/8/2019 ABSE and AtomWeaver

    79/86

    2010 2011 2012

    *Timings subject to change

    Sep.2010 : AtomWeaver Solo v1.0 CTP

    Apr.2011 : AtomWeaver Team v1.0 CTP

    Sep.2011 : AtomWeaver Solo v2.0

    Dec.2011 : AtomWeaver Team v2.0

    May.2011 : AtomWeaver Solo v3.0

    AtomWeaver Competitors

  • 8/8/2019 ABSE and AtomWeaver

    80/86

    Code Generation is a high-growth market segment: There

    are currently dozens of competitors.

    However, most of these products are specific to agiven domain, platform, or function.

    None of the other existing products today

    is able to offer a technologicalinnovation that can be recognized asa true software developmentbreakthrough asABSE & AtomWeaverdo.

  • 8/8/2019 ABSE and AtomWeaver

    81/86

    PART VI

    Summary

    SummingupABSE&AtomWeaver

    ABSE aims to lead the MDSD movement

  • 8/8/2019 ABSE and AtomWeaver

    82/86

    MDSD is recognized as the next revolution in the Software

    Engineering industry, and is gaining momentum among largerorganizations.

    However, complexity in its various implementations prevents itfrom gaining mainstream adoption.

    ABSE aims to lead MDSD adoption by:

    - Defining a very light meta-metamodel- Having a small set of rules- Being flexible (can mix custom and generated code)

    - Having a reference implementation (AtomWeaver)

    AtomWeaver aims to compete with otherhigh-end IDE's

  • 8/8/2019 ABSE and AtomWeaver

    83/86

    high end IDEs

    MS Visual Studio and Eclipse are the major players in thegeneral-purpose software IDE segment

    AtomWeaver can differentiate itself by:

    - Its unique development approach (ABSE)- A high adaptability to very specific industries and domains- Having lower licensing costs

    Reality Check !

  • 8/8/2019 ABSE and AtomWeaver

    84/86

    ABSE still in its infancy

    AtomWeaver is still just a bare-bones IDE

    Developer mindset inertia is a respectful opponent

    ABSE & AtomWeaver on the Internet

  • 8/8/2019 ABSE and AtomWeaver

    85/86

    www.twitter.com/atomweaver

    www.ruicurado.com

    www.atomweaver.com

    www.abse.info

    community.atomweaver.com

  • 8/8/2019 ABSE and AtomWeaver

    86/86

    ABSE and AtomWeaver

    Thank you for your interest in

    www.isomeris.com