Model-driven Development with Executable UML Models Rafael Chaves rafael@alphasimple.com
Small scale vs. large scale Small Large team single developer large feature set small feature set long lived short lived
Small scale vs. large scale Small Large work properly understandable by others (once) throughout time extensible resilient to change work properly (continuously)
Enterprise software is very hard Problem domains are typically not very complex (information management + business rules) How come? Secondary concerns abound persistence, concurrency, (a)synchronism, distribution, transactions, security, caching, replication, logging, ...
Two dominant dimensions business domain concerns vs. technological or implementation concerns Completely different beasts (why treat them the same way?) change rate abstraction level tools skills reuse Current approaches won't cut it
Model Driven Development to the rescue
model: a simplified representation of something from a particular point of view and with a particular purpose
Models in software brainstorming communicating documenting understanding (rev. eng.) That is not what MDD is about
Models in MDD are the central artifacts in software (re: source vs. object code) are well-formed are precise* are complete* are executable (directly/code gen.)* are technology-independent*
MDA pattern source: MDA Guide (OMG)
Technology-agnostic models source: eclipse.org
Code generation source: openarchitectureware.org
Model interpretation
MDD with UML
Relevant UML features UML has always had support for modeling: structure: classes, attributes, operations and relationships (class diagrams) dynamics: state machines (state diagrams) Added in 1.5 (2003)/2.0 (2005): behavior: action semantics (no standard notation, typically textual) UML finally enabled for MDD
source: UML 1.5 spec (OMG)
Action Semantics: basic concepts actions input/output pins data flows activity nodes activities
Action Semantics: basic actions read/write variable activity node (block) call function create/destroy object conditional (if/switch) read self ("this") loop read/write attribute raise exception create/destroy link send signal call operation
newCustomer = new Customer(); source: UML 1.5 spec (OMG)
current_account.balance = new_balance; source: same
if (factor == 2) { ... } source: same
Diagrams vs. Text graphical representation not suitable for AS models != diagrams (no loss of abstraction) textual notations preferred (action languages) but... isn't UML required to be graphical? but... aren't we back to coding?
Model-driven Development with Executable UML Models Rafael Chaves rafael@alphasimple.com

MDD with Executable UML Models

  • 1.
    Model-driven Development with ExecutableUML Models Rafael Chaves rafael@alphasimple.com
  • 2.
    Small scale vs.large scale Small Large team single developer large feature set small feature set long lived short lived
  • 3.
    Small scale vs.large scale Small Large work properly understandable by others (once) throughout time extensible resilient to change work properly (continuously)
  • 4.
    Enterprise software isvery hard Problem domains are typically not very complex (information management + business rules) How come? Secondary concerns abound persistence, concurrency, (a)synchronism, distribution, transactions, security, caching, replication, logging, ...
  • 5.
    Two dominant dimensions business domain concerns vs. technological or implementation concerns Completely different beasts (why treat them the same way?) change rate abstraction level tools skills reuse Current approaches won't cut it
  • 6.
  • 7.
    model: a simplifiedrepresentation of something from a particular point of view and with a particular purpose
  • 8.
    Models in software brainstorming communicating documenting understanding (rev. eng.) That is not what MDD is about
  • 9.
    Models in MDD are the central artifacts in software (re: source vs. object code) are well-formed are precise* are complete* are executable (directly/code gen.)* are technology-independent*
  • 10.
    MDA pattern source: MDA Guide (OMG)
  • 11.
    Technology-agnostic models source: eclipse.org
  • 12.
    Code generation source: openarchitectureware.org
  • 13.
  • 14.
  • 15.
    Relevant UML features UMLhas always had support for modeling: structure: classes, attributes, operations and relationships (class diagrams) dynamics: state machines (state diagrams) Added in 1.5 (2003)/2.0 (2005): behavior: action semantics (no standard notation, typically textual) UML finally enabled for MDD
  • 16.
    source: UML 1.5spec (OMG)
  • 17.
    Action Semantics: basicconcepts actions input/output pins data flows activity nodes activities
  • 18.
    Action Semantics: basicactions read/write variable activity node (block) call function create/destroy object conditional (if/switch) read self ("this") loop read/write attribute raise exception create/destroy link send signal call operation
  • 19.
    newCustomer = newCustomer(); source: UML 1.5 spec (OMG)
  • 20.
  • 21.
    if (factor ==2) { ... } source: same
  • 22.
    Diagrams vs. Text graphical representation not suitable for AS models != diagrams (no loss of abstraction) textual notations preferred (action languages) but... isn't UML required to be graphical? but... aren't we back to coding?
  • 23.
    Model-driven Development with ExecutableUML Models Rafael Chaves rafael@alphasimple.com