Beruflich Dokumente
Kultur Dokumente
- Decreasing time-to-market
- Decreasing budgets
Software development
is an
ever-growing
challenge...
What
have we done
so far
to address this?
The “Software Crisis”
Software Crisis
In the seventies,
people developed software line-by-line, file-by-file
Waterfall
First described in 1970, is still the most widespread development organizational method.
“The waterfall model is argued by many to be a bad idea in practice, mainly because of their belief that it is impossible,
for any non-trivial project, to get one phase of a software product's lifecycle perfected before moving on to the next
phases and learning from them.”
http://en.wikipedia.org/wiki/Waterfall_model
One-Off Development
Every developed application is unique, started from scratch
“The assumption of one-off development is so deeply ingrained in this industry that most of us are not conscious of either
the practice or the alternatives. Even XP* and UP** assume that every product will be designed and developed
independently from first principles to accommodate its unique requirements, and neither of them provides guidance for
supplying or consuming reusable assets.”
This makes it hard to identify all of the things that need to change in the
implementation, and to ensure that all of the changes are made consistently, when
the requirements change.
Source
Specification
Code
Failed Promises
“UML has become complex and clumsy. For 80% of all software only 20% of UML
is needed. However, it is not easy to find the subset of UML which we would call
the Essential UML”.
Ivar Jacobson, Co-Inventor of UML, June 2009
#2 : MDA – Model-Driven Architecture
“At its most basic, MDA involves transforming one UML model into another UML model, possibly
several times and possibly automatically [...]. The MDA approach leads to the same results as
wizards: lots of code (and models) that you didn’t write yourself but that you are expected to
maintain. The MDA idea gets even worse when you consider round-tripping—would you like to
update the manually made changes to the code and lower level models back to all the higher-level
models?”
Kelly / Tolvanen – Metacase
“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 the
point 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
#3 : DSLs - Domain-Specific Languages
“[...] the Tower Of Babel* effect that results from having so many languages that a person needs to
be 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 concise
expression of solutions to specific problems. But a problem arises when The Next Guy comes along
and 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 a
competent programmer with expertise in the problem domain - DSL's that can be described on a
page or two, and are tailored to a specific application/environment. These language are seldom
usable outside the very limited context.”
“But writing a good DSL that is robust and reusable beyond a limited context, is a lot of work. It
requires persons with both domain expertise and language design expertise (not necessarily the
same person) to pull off. A truly reusable DSL will require reasonable documentation, otherwise it
won'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.”
“Forrester expects model-driven development (MDD) to play a key role in the future of software
development; it is a promising technique for helping application development managers address
growing business complexity and demand.”
Diego Lo Giudice – Forrester Research
ABSE - Overview
ABSE
AtomWeaver
*
Atom Template Metamodels
1
*
Atom Instance Models
1
*
Text / Data Generated artifacts
Atom Types
Language Lib
Solution
Domain
Libraries can use or extend Platform Lib
other libraries.
Domain Lib
The vision behind Software Product Lines (SPL) is that once the
company's domain is converted into models, they can be
reused and combined to create similar, but different, systems.
●
Traditional file-oriented methods Root Lib
Literate Programming
Higher Abstraction
●
Language Lib
●
Aspect-Oriented Programming
Platform Lib
●
Component-Based Development
●
… is not targeted to a specific language, architecture, or platform
●
… allows generation of any kind of text or data
●
… uses association as its paradigm, the basis of human thinking
ABSE is Domain-Agnostic
Science
Embedded Devices
FortranHaskellEiffelC#PhytonSQLJavaABAPErlangScalaSmalltalkVHDLPrologC++
AdaPascalPHPLispRubyJavaScriptDelphiSASCOBOLCamlTclDVisualBasicCGroovyML
ABSE is Refactorable
Line-Oriented
ABSE meta-metamodel
designed to support 100% atom_concept_a Generated code
Model Transformation
code
Generated code
Instance D
Instance E
And through a supporting tool
(like AtomWeaver), workflows Instance F
Benefits:
- Repetitive patterns
- Repetitive coding
- Repetitive changes
- Interfacing code/specification
- Unit test preparation
- Debug/log/trace code
“To realize a return on the investments we make in developing the solutions, we must reuse them
enough 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”
ABSE Promotes Reuse
The most common type of reuse is the reuse of software components, but
other artifacts produced during the software development process can also
be reused: system architectures, analysis models, design models, design
patterns, database schemas, web services, etc.
In the same way, ABSE lets you turn recurring patterns into
templates, reducing project complexity and maintenance costs.
ABSE Reduces Maintenance Costs
With ABSE you'll have
less code to maintain.
Traditional Approach ABSE Approach
That's because you
only have to maintain Manual Code
one instance of your
code. All other
instances of that code
are automatically Manual Code
Codebase Size
updated.
Generated
And since manual code Manual Code Code
is natively supported,
Manual Code
there's no need to Generated
Code
waste time maintaining
protected regions,
code guards and other
trickery, just to Atom Library
maintain the integrity Atom Library
Relocation
Form Functions
Transformation
Custom Areas
Code
Transformation
Custom Areas
The most common use is to define Code
Atom Behaviors.
Form Functions
Most common task is to generate
Transformation
code, but other tasks like modifying Code
Custom Areas
other atoms and OS calls are also
possible.
java_function source_file.java
int Function()
parameter {
generated code;
generated code;
parameter
custom_code custom_code
generated code;
}
The Instance's Creation Condition
Atom Instance
The inclusion of each Atom Instance Variables
on the project can be subject to an
Creation
expression that dictates whether that Condition
Atom is executed or not.
Custom Code
cpp_class
db_persistent_object
The derived template will inherit all
properties and code from its base template.
ABSE Strength #2 : Composition
Then a Persistent
Component
metamodel was
created by inheriting
a C++ Component
model and adding
specific DB features.
ABSE lets you build applications like Lego . A simple, yet effective
tm
+ =
ABSE is an Executable Model
Every Atom on the ABSE Tree has its own transformation code
(acquired from its template).
Atom cpp_class
Defines: class_name, Variables are set on Atom
inheritance
Can access: ... Instances, and each variable
corresponds to an Atom
Template parameter.
Atom cpp_function
Defines: func_name
Can access: class_name,
inheritance Any variable from an Atom
is automatically available to
Atom cpp_argument all branch children.
Defines: arg_name,
arg_type
Can access: class_name,
Inheritance, func_name
This way, any Atom can
work “in context” with its
Atom cpp_member
ancestors.
Defines: member_name,
member_type
Can access: class_name,
inheritance
PART V
AtomWeaver
Some statistics:
(Current version of AtomWeaver Prototype)
No other present system lets you start creating models in a few minutes
AtomWeaver : The Universal Generator
Library, Model, Files and Log are the mandatory modules. All
others are optional.
●
Atom Dictionary : Lets you reference any project Atom by
its associated name.
●
Atom Lists : Lets you categorize atoms and build lists according
to your pre-defined criteria.
For: For:
IDE X X
Library Repository X X
Model Versioning X
Developer Roles X
Any kind of diagram can be Mockups for any system will AtomWeaver will be
created, following rules be possible using ABSE's scriptable, opening the door
defined in Atom Templates generic constraint system. to user-defined ABSE
and in the Library. Hybrid Programmers can program models, extensions, custom
diagram/tree development while designers can design actions on atoms, and third-
will be possible. and rearrange. party add-ons.
The Library Exchange
- Free Libraries
- Commercial Libraries
- Individual users
- Commercial vendors
- Isomeris
The two main roles are Architects and Developers. Other roles
can be created
Summary
www.twitter.com/atomweaver
community.atomweaver.com
www.abse.info
www.atomweaver.com
www.ruicurado.com
Thank you for your interest in
www.isomeris.com