20

Agile Modelling Architecture

Embed Size (px)

DESCRIPTION

Considerations about how to gain an agile modelling approach

Citation preview

Page 1: Agile Modelling Architecture
Page 2: Agile Modelling Architecture

MDA/EA Forum 2009MDA/EA Forum 2009

Model Driven Architecture►Conceived and sponsored by the OMG►It's about a IT discipline to use models to automate the

construction of applications (freely rephrased from the MDA User Guide)

►Yes, but what is a model?

►Definition: “a simplified representation of a system or phenomenon,”

Page 3: Agile Modelling Architecture

MDA/EA Forum 2009MDA/EA Forum 2009

The Code is a Model►It represents high level logical structure

► “Repeat until” or “JNE x00ef, x003F” ?►It hides irrelevant details

► Which processors is there beneath?►Code has always about abstraction:

► Machine code -> Assembly -> 3GL -> OO -> Java -> WSDL->UML->RuleML->XBRL.. and still proceeding

Page 4: Agile Modelling Architecture

MDA/EA Forum 2009MDA/EA Forum 2009

A Model is a Code►Services can be represented by a model

► WSDL, language classes..►Applications can be represented by models

► UI, services, components, data model, object model, deployment...

►A Model can be run now► Action semantics, BPMN, OCL► OCL is code .. or is it a model?► There are many commercial tools outside there (and

here too) which this capability►Models can be checked and transformed … as code►Models can be tested and debugged … as code

Page 5: Agile Modelling Architecture

MDA/EA Forum 2009MDA/EA Forum 2009

Models in Electronics►Models in electronics

► Testable before built► Decoupled from electronic

components► Store the solution as an asset

• Assets beyond technology► The value or repeatable tasks► Reusable across different

technologies► Scale across technology generations

Nathalie Moreno and Antonio VallecilloUniversidad de Málaga

Page 6: Agile Modelling Architecture

MDA/EA Forum 2009MDA/EA Forum 2009

Code vs Model, state machine

Page 7: Agile Modelling Architecture

MDA/EA Forum 2009MDA/EA Forum 2009

Code vs Model

[omissis]

try{

if (System.getSecurityManager() == null) {

System.setSecurityManager(new RMISecurityManager());

}

} catch {/*tech Error handling*/}

try {

PowerService service = (PowerService) Naming.lookup("rmi://" + serverIp+ "/PowerService");

} catch {/*tech Error handling*/}

try {

System.transactionMon(IN, context);

context=service.doSomething(contex, 123);

System.transactionMon(OUT, context);

} catch {/* tech and behavioral error handling*/}

[omissis]

sd Class Model

Service:PowerServiceReqT ype:M yRequester

doSom eth ing(context, 123)

Page 8: Agile Modelling Architecture

MDA/EA Forum 2009MDA/EA Forum 2009

Demystifying modelling approach► Models do not execute

► False, many solutions exists► Models generate slow code

► False: depends only on quality of the transformations

► It's a heavy weight approach► False, it depends on the

development process: adopt shorter cycles

► False: ”Divide et impera” vertically (functional components), horizontally (tiers), cross cutting concerns

► The generated code is messy and hard to be read► Meaningless: there is no

need to look at the code

► No MDA projects are in productions► False: there are many, check

the OMG web page, ask here around

► No MDA development tools are available:► False: check OMG web page

or ask here around► MDA is only for embedded

systems:► False: check the OMG web

site for success stories► UML is very large:

► True: but there is no need to use all of it's semantics. There are other languages

Page 9: Agile Modelling Architecture

MDA/EA Forum 2009MDA/EA Forum 2009

Why this general scepticism?► It due to the mindset of IT software practitioners, it's a matter of:

► Different Viewpoint on the development► Different Habits► Late Maturity ► No Confidentiality► Not enough Experience

► Q: "If I do not see a code I feel uncomfortable"► A: “Have you ever seen the ASM generated by the C++

compiler? No, right? But you still feel comfortable, and you don't debate the quality of the generated code, how comes?

► There shall be no difference if the generated application has not introduced any bug and it's adequately fast

Page 10: Agile Modelling Architecture
Page 11: Agile Modelling Architecture
Page 12: Agile Modelling Architecture

MDA/EA Forum 2009MDA/EA Forum 2009

Agility►Adjective: “quick and well-coordinated in movement”

► Quick: be light, do not have unnecessary load► Well-coordinated: well connected and in-sync

►[..close collaboration between the programmer team and business experts; face-to-face communication (as more efficient than written documentation); frequent delivery of new deployable business value..]

►Quick, assumes the iteration process to be short and lite►Coordinated: assumes parts are well connected and in

sync►How to be agile depends on local capabilities and skills,

it's a relative term

Page 13: Agile Modelling Architecture

MDA/EA Forum 2009MDA/EA Forum 2009

Agility in Modelling►Focus on capturing and fulfilling the functional specifications

as a runnable application► In MDA, technicalities can be tuned afterwards

►Do not search for the optimal technical architecture right from the beginning, accept compromises "the optimum is the killer of good"

►Short deployment cycles► Feedbacks have be incorporated back into models quickly► Three weeks for an iteration► New requirement are welcome, but trace them

►Avoid round-trip code<->model, it jeopardizes the agility►Go for a consistent and integrated MDA tool, avoid spaghetti

frameworks

Page 14: Agile Modelling Architecture

MDA/EA Forum 2009MDA/EA Forum 2009

What to keep in mind► Model life cycle management

► Models has to drive the development► From requirement to execution in a traced continuum

► What can be done with code has to be, and CAN be done with models as well► Debugging► Testing► Validation► Execution► Versioning► Deployment

► Models are your assets► Take good care of them

► There is a price to pay...

Page 15: Agile Modelling Architecture
Page 16: Agile Modelling Architecture
Page 17: Agile Modelling Architecture
Page 18: Agile Modelling Architecture

MDA/EA Forum 2009MDA/EA Forum 2009

Hurdles►DO NOT UNDERSTIMATE THE IMPORTANCE OF A

SOUND FUNCTIONAL MODEL► If a model is a code ...► ...be careful in defining your functional reference

model, you could soon fall under a messy functional model: aka “Spaghetti Model”

►100% models interoperability across MDA tools is yet to be a "default"► An old story: as for C++ compilers

►Re-think the organization of the software re-factory:► People, Processes, Tools

►Bootstrapping the software factory...

Page 19: Agile Modelling Architecture
Page 20: Agile Modelling Architecture