ABSE and AtomWeaver
-
Upload
rui-curado -
Category
Documents
-
view
219 -
download
0
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