Model Driven Architecture in the Enterprise

Document Sample
Model Driven Architecture in the Enterprise Powered By Docstoc
					Model Driven Architecture in the Enterprise

•   Project Goal
•   Brief MDA Overview and Refresher
•   Evaluation Criteria
•   Evaluation of MDA Supported Tools
    –   Borland Together Architect 2006 for Eclipse
    –   Logix Rhapsody Developer Edition
    –   OptimalJ Developer Edition by IntelliJ 4.0.00
    –   MagicDraw UML 10.0
• Modeling Tools Supporting MDA
• Project Current Status
Model Driven Architecture in
      the Enterprise


  Amit, Keyur, Sabhay and Saleh
Project Goals
•   MDA Conception and Background

•   Develop Criteria for MDA-Tools Evaluation

•   Evaluation of Tools and Techniques
    –   Try selected MDA-tools


•   Final Report with conclusions and future
    outlook
MDA Benefits
• Productivity:
   – Work is done mainly at the PIM level
   – PIM-to-code transformation is automated
   – Caveat: need to define transformations, but they can be reused
     (hopefully)
• Portability:
   – PIMs are implementation-independent
   – Incorporate new technologies by defining new (reusable)
     transformations
• Interoperability:
   – MDA tools should generate bridges
• Maintenance/Documentation:
   – Changes to the PIM can be filtered down to PSM/code by re-
     applying transformations
MDA Development Lifecycle
• MDA lifecycle similar to
  traditional lifecycle, but:                  requirements
    – Emphasis on creation of formal                          Mostly text
      models (i.e., models that can  MDA
      be understood by computer)     Process
                                                 analysis
• 2 types of models:
                                                                 PIM
    – Platform-independent model
    – Platform-specific model                    design
• 3 types of transformations:                                   PSM
    – PIM-to-PIM
    – PIM-to-PSM                                 coding
    – PSM-to-code
                                                                Code
• Importance of transformation
  automation                                     testing

                                                                Code
                                               deployment
Criteria Explanation
  MDA01 -Support for PIM

  a. Support of at least one PIM (Generic UML and
     domain-tagged UML profiles can be considered
     PIM)
  b. Support Multiple Viewpoint PIM
  c. PIM extensibility (custom Metamodels)
  d. PIM Metamodel editing facility
Criteria Explanation Cont’d
 MDA02 -Support of PSM

 a. Support at least one PSM (platform in the
    sense of middleware)
 b. Platform-tagged UML profiles count as
    PSM
 (PIM to PSM is a critical requirement of
    MDA)
Criteria Explanation Cont’d
 MDA03 -Can Target Multiple PSM

 a. Target more than one PSM, e.g. J2EE and
     .NET
 b. PSM extensibility
 c. PSM Metamodel editing facility
Criteria Explanation Cont’d
 MDA04 -Model Integration

 a. Multiple diagrams of the same type
 b. Multiple diagram types
 c. Multiple viewpoints feed the same
    transformation
Criteria Explanation Cont’d
 MDA05 -System Evolution

 a. Source code management
 b. Forward propagation of changes
 c. Efficient-forward propagation of changes
    (updates only)
Criteria Explanation Cont’d
 MDA06 -Model Interoperability

 a. Import models from other legacy tools
 b. Import XMI
 c. Export XMI
Criteria Explanation Cont’d
 MDA07 -Mappings are modeled

 a. Legacy-customizable Model-to-Code
    mappings
 b. Quasi-standard QVT Model-to-Code
    mappings
Criteria Explanation Cont’d
 MDA08 -Support for Managing Model
  Complexity

 a. Locating modeling elements in models
 b. Zooming in and out
Criteria Explanation Cont’d
 MDA09 –Correctness

 a. Modeling tool checks static models based
    on the corresponding metamodels
 b. Allow more rules to be defined and
    checked
Criteria Explanation Cont’d
 MDA10 –Expressivity

 a. language "can" express any instance of the
    domain it is modeling
 b. support expressive higher levels of
    abstraction (PIM)
Criteria Explanation Cont’d
 MDA11 -Patterns and Genericity

 a. Use of ready-made patterns in code
    generation
 b. Use of ready-made patterns in
    transformations
 c. User-defined patterns
Criteria Explanation Cont’d
 MDA12 -Support for Refactoring

 a. Generate Model given Code
 b. Propagate code changes to model
    (roundtrip)
Criteria Explanation Cont’d
 MDA13 -Intra-Model Mappings

 a. Built-in Model-to-Model Mappings
    (transformations)
 b. Immediate propagation of changes between
    models related by transformations
 c. Legacy-customizable transformations
 d. QVT Model-to-Model mappings
Criteria Explanation Cont’d
 MDA14 -Traceability

 a. PSM elements reference PIM elements
    where they originate
 b. Reverse propagation of changes in PSM
Criteria Explanation Cont’d
 MDA15 -Life Cycle

 a. Analysis,
 b. Design,
 c. Implementation,
 d. Testing
Criteria Explanation Cont’d
 MDA16 -Standardization

 a. UML
 b. MOF
 c. XMI
 d. QVT
Together Architect 2006 for Eclipse
•   Borland Together Architect 2006 for
    Eclipse is a comprehensive modeling
    solution for software architects.

•   Uses an Eclipse environment with built
    modeling support by Together
    Architect.

•   Enables architects to design, develop,
    and communicate enterprise application
    architectures.

•   Designers can create UML and business
    process models.
    Together Architect 2006 for Eclipse

•   Support for Model Driven Architecture
    (MDA)

     –   Meta-models:

           •   Tool has a large library of meta-model
               definitions for technology mapping

           •   These meta-models can be viewed in
               meta-model browser view.

           •   There is no support for editing existing
               meta-model or creating own meta-
               model

           •   Meta-models are used for transforming
               models into models and code.

                                                          Metamodel browser screenshot
    Together Architect 2006 for Eclipse
•   Support for Model Driven Architecture
    (MDA)

     –   Model to Model Transformations:

           •   Open new MDA transformation project

           •   Uses OMG’s Query View
               Transformation (QVT) in model-to
               model transformations

           •   Specify input and output meta-models
               to import in QVT script

           •   Transforms and instance of one
               Together or EMF model to an instance
               of another Together or EMF model

           •   QVT Editor and Eclipse QVT Debugger
               enable code sensitive editing and step
               by step trace of the execution.          Example of the QVT transformation script file
    Together Architect 2006 for Eclipse

•   Support for Model Driven Architecture
    (MDA)

     –   Model to Text (Code) Transformations:

           •   Open new MDA transformation project

           •   Uses Eclipse Modeling Framework

           •   Specify input meta-model to be
               imported in the transformation code

           •   The model to text transformation code
               is written in JAVA
                                                        Example of transformation code in JAVA
           •   Transforms an instance of one Together
               or EMF model into an arbitrary text
               output
    Together Architect 2006 for Eclipse

•   Support for Model Driven Architecture (MDA)

     – Profiles:

          • Profiles are used to manage a collection of tagged values and stereotypes.

          • Together allows you to design your own profiles with the help of Profile Definition
            Project.

          • Create profile plug-ins and share them with your team members.

          • Steps:
               – Create Profile
               – Deploy Profile
               – Apply Profile
Together Architect 2006 for Eclipse
•   Tool Evaluation:
    Support for PIMs (3)    Tool allows Business Process Models (BPM) to be created
                            at a very abstract level without the details of
                            implementation

    Support for PSMs (2)    Tools support creation of J2EE specific projects



    Can Target Multiple     Together Architect supports mainly J2EE
    PSMs (1)


    Model Integration (3)   Able to use multiple diagrams such as class, use case,
                            sequence, state, etc. to create a single application
Together Architect 2006 for Eclipse
•   Tool Evaluation:
      System Evolution (1)   When changes in the input model are made, the
                             transformed model or code is not update in real time. The
                             transformation has to be redone in order for the changes to
                             be reflected in the output model or code.
      Model                  Together Architect 2006 is able to export models as a
      Interoperability (4)   standard XMI 2.0 documentation for inter-tool operability


      Mappings are           Tool provides QVT language support for model to model
      modeled (4)            mappings and transformation code editor and debugger for
                             JAVA transformation code mapping for model to code
                             transformations.
      Support for            Component diagrams are used to model higher level or
      Managing Model         more complex structures, usually consisting of one or more
      Complexity (2)         classes, and providing a well defined interface.
Together Architect 2006 for Eclipse
•   Tool Evaluation:
       Correctness (4)            Together provides a wide variety of audits, ranging from
                                  design issues to naming conventions. You can select the
                                  specific rules to which your source code should conform to.

       Expressivity (3)           Supports high level of abstraction in PIMs

       Patterns and Genericity    Pattern instances appear as a result of recognition of the
       (4)                        existing model or creating new instances (along with model
                                  elements playing pattern roles) in the model. Pattern instances
                                  contain information about the pattern name and the role of
                                  each participant.
       Support for Re-factoring   The goal of refactoring support is to allow for improving your
       (4)                        code without changing its behavior. When you refactor your
                                  code, your goal is to make a system-wide coding change
                                  without affecting the semantic behavior of the system. The
                                  Eclipse Java Development Tooling automatically manages
                                  refactorings for you. The workbench optionally allows you to
                                  preview all the impending results of a refactoring action
                                  before you finally choose to carry it out.
Together Architect 2006 for Eclipse
•   Tool Evaluation:
      Intra-Model           Does not support built in model to model mappings.
      Mappings (0)          Mapping has to be developed by programmers using QVT
                            language
      Traceability (2)      A model-to-model transformation produces an instance of
                            an auxiliary trace file with detailed information about
                            every transformation step performed. The trace file can be
                            opened using the designated Traces view.
      Lifecycle (4)         Tool plays a role in the complete life cycle of a system,
                            which includes design, implementation, debugging and
                            testing, and finally deployment. QVT and Model to Text
                            transformations are deployed as standard Java Eclipse
                            plug-ins using Export Plug-ins and Fragments Wizard
      Standardization (4)   Together Architect 2006 uses standard UML notation and
                            can import or export models as XMI documents
I-Logix Rhapsody
             Mia-Metamodel                   Rhapsody: PIModeling
               Generation                    (UML profiles, etc)



                   Metamodels
                   & Profiles           Rule
                                        Composer
      Mia-                  Mia-
 Transformation           Generation
 Model-to-Model
 Mappings               Model-to-Code
                        Mappings                  Code Generation


     Not used by
     Rhapsody!                              C++        Java     Ada
I-Logix Rhapsody
• Ignores PSM: from PIM directly to Code
• Uses Mia-Software Generation Tool
     • Customizable code generation rules
     • Code generation
• Other Mia-Software Tools (not used!)
  – Mia-Metamodel Generation
     • Metamodel definition
  – Mia-Software Transformation
     • Model-to-Model transformation
     • Customizable transformation rules
Criteria Explanation                      [1]

MDA01 -Support for PIM                 Rhapsody Score=3
                                    • Full support of PIM
a. Support of at least one PIM
    (Generic UML and domain-        • Has a set of ready-to-
    tagged UML profiles can be        use metamodels
    considered PIM)
b. Support Multiple Viewpoint       • Extensible to other
    PIM                               metamodels (using
c. PIM extensibility (custom          Mia-Metamodel
    Metamodels)
d. PIM Metamodel editing facility
                                      Generation)
Criteria Explanation Cont’d
MDA02 -Support of PSM             Rhapsody Score=1
                               • No support of
a. Support at least one PSM      middleware
   (platform in the sense of
   middleware)                 • PIM-to-Code direct
b. Platform-tagged UML           generation
   profiles count as PSM
(PIM to PSM is a critical
   requirement of MDA)
Criteria Explanation Cont’d
MDA03 -Can Target            Rhapsody Score (2)
  Multiple PSM
                           • Generates C, C++,
                             Java and Ada code
a. Target more than one
     PSM,                  • It allows definition of
     e.g. J2EE and .NET      Code Generation
b. PSM extensibility         Rules
c. PSM Metamodel editing
     facility
Criteria Explanation Cont’d
MDA04 -Model Integration        Rhapsody Score = 2
                              • Integrated
a. Multiple diagrams of the     relationships across
   same type
                                diagrams
b. Multiple diagram types
                              • UML Diagrams
c. Multiple viewpoints feed
   the same transformation      integration
Criteria Explanation Cont’d
MDA05 -System Evolution       Rhapsody Score=4
                            • Method code is
a. Source code management     managed by tool
b. Forward propagation of
                            • Generate updates only
   changes
c. Efficient-forward
   propagation of changes
   (updates only)
Criteria Explanation Cont’d
MDA06 -Model                    Rhapsody Score=4
 Interoperability
                              • Rose Import
a. Import models from other
                              • XMI import/export
    legacy tools
b. Import XMI
c. Export XMI
Criteria Explanation Cont’d
MDA07 -Mappings are             Rhapsody Score = 3
 modeled
                            •   Code generation
                                mappings.
a. Legacy-customizable
   Model-to-Code mappings   •   Extensible by user
b. Quasi-standard QVT       •   QVT-specified
   Model-to-Code mappings   •   Limited to the
                                supported languages
                                (C, C++, Ada, Java)
Criteria Explanation Cont’d
MDA08 -Support for        Rhapsody Score = 3
 Managing Model
 Complexity
                        • Zooming in and out
                          Object Sturctures
a. Locating modeling
   elements in models
b. Zooming in and out
Criteria Explanation Cont’d
MDA09 –Correctness                 Rhapsody Score(2)
                                • Checks UML static
a. Modeling tool checks           rules
   static models based on the
   corresponding
   metamodels
b. Allow more rules to be
   defined and checked
Criteria Explanation Cont’d
MDA10 –Expressivity              Rhapsody Score (4)
                               • UML expressivity
a. language "can" express
    any instance of the domain
                               • User-defined profiles
    it is modeling               increase expressivity
b. support expressive higher
   levels of abstraction (PIM)
Criteria Explanation Cont’d
MDA11 -Patterns and                Rhapsody Score (0)
 Genericity
                                 • Apparently no support
a. Use of ready-made
   patterns in code
   generation
b. Use of ready-made
   patterns in transformations
c. User-defined patterns
Criteria Explanation Cont’d
MDA12 -Support for               Rhapsody Score (4)
 Refactoring
                               • Supports roundtrip
                                 engineering
a. Generate Model given
   Code
b. Propagate code changes to
   model (roundtrip)
Criteria Explanation Cont’d
MDA13 -Intra-Model Mappings             Rhapsody Score=1
a. Built-in Model-to-Model           • Apparently no intra-
    Mappings (transformations)         model mappings
b. Immediate propagation of
    changes between models related
                                     • The underlying MDA
    by transformations                 tool (Mia-
c. Legacy-customizable                 Transformation) fully
    transformations                    supports this feature
d. QVT Model-to-Model mappings
                                       with QVT Model to
                                       (4)
Criteria Explanation Cont’d
MDA14 -Traceability             Rhapsody Score=4
                             • Allows tracing of code
a. PSM elements reference      generation mappings
   PIM elements where they
   originate
b. Reverse propagation of
   changes in PSM
Criteria Explanation Cont’d
MDA15 -Life Cycle      Rhapsody Score (4)
                     • Entire Cycle,
a. Analysis,
                     • Includes simulation of
b. Design,
                       complex state
c. Implementation,
                       machines
d. Testing
Criteria Explanation Cont’d
MDA16 -Standardization     Rhapsody Score (3)
                         • All supported
a. UML
                         • QVT is supported by
b. MOF
                           the underlying tool,
c. XMI
                           but not used in
d. QVT
                           Rhapsody
OptimalJ by Compuware

             •   Used OptimalJ Developer Edition by
                 IntelliJ 4.0.00 for evaluation

             •   Developers can perform system design,
                 coding, debugging, project organization,
                 testing and deployment.

             •   OptimalJ is a MDA-support tool by
                 Compuware that supports both model-to-
                 model and model-to-code transformation.
OptimalJ




                 The OptimalJ Framework

 • Patterns in OptimalJ are based on the proprietary Template
 Pattern Language (TPL)
Domain Model (PIM)
 -Displayed in form of UML Diagrams and
 XMI models


 Domain model is subdivided into:


 • Class Model –Graphical rep. of classes
 in the system and relationships between
 them


 •Service Model – used to specify the
 system behavior in an implementation
 independent way using concepts like
 Domain Views, Domain Service Attributes
 and Domain Service Operations
Application Model (PSM)

          [1] Presentation (Web) model - contains the
         information required to generate a web front-end for
         the application.


         [2] Business Logic (EJB) model – The Enterprise
         Java Bean partial is a middleware layer that deals
         with, for example, transactions, security, persistency
         and scalability.


         [3] Database (DBMS) model –The Database model
         supports DBMS elements like schemas, tables and
         keys.
Database Model (DBMS) Screenshot
Code Model
             •Generates all the relevant
             Java, XML files and other
             necessary for a J2EE
             application.


             •OptimalJ divides the files
             into free and guarded blocks.


             •Can be customized and
             automated Changes
OptimalJ’s Cycle
Application Server Example
    • Applications can be deployed from OptimalJ itself
 OptimalJ evaluation
Support for       Strong support with domain model which contains class
PIMs              models (static structure & service models). It restricts
                  reserved names.
Support for       Strong support with application model, abstraction over
PSMs              J2EE implementation and explicitly divided into web
                  sub-models, bean and database
Can target    OptimalJ largely targets J2EE as a Platform specific
Multiple PSMs domain
Model             OptimalJ supports for model integration e.g. the class
Integration       and service part of the domain model in the
                  transformation into the application model.
  OptimalJ evaluation cont’d

System Evolution Strong support as changes in the domain or app. models
                    can be filtered down to lower levels.

Interoperability    OptimalJ uses UML 2.0 notations and can import can
                    import and export XMI models

Mapping are         There are mappings and mapping are in form of models.
modeled             So users have limited access to models

Support for         OptimalJ using a fixed point of abstraction can represent
managing model      most parts of both the domain and application models
                    diagrammatically.
complexity
OptimalJ evaluation cont’d
Correctness    It enforces well-formed rules on both the app. and
               domain models. Prevent errors by disallowing
               reserved words.

Expressivity   Both domain and application models provide the
               expected levels of expressivity at their levels of
               abstractions

Patterns and   Here when converting application model into code,
Genericity     OptimalJ generates a number of patterns in the
               resulting code.

Support for    The code model is divided into ‘free’ and ‘guarded’
Re-factoring   blocks. By this method, changes inherit.
OptimalJ evaluation cont’d
Intra-model       Full support, changes in the database tier are
Mapping           automatically reflected in the EJB tier. Also domain
                  service model is created from domain class model.

Traceability      Limited support for tracing. The execution of
                  mappings from domain to application model creates
                  reference from the latter to the former
Life-Cycle        OptimalJ covers virtually all the aspects of the system
                  life cycle including design, coding, debugging, project
                  organization, testing and deployment.
Standardization   It uses standard UML 2.0 notations and can
                  import/export XMI. It stores all the models in a MOF
                  repository.
        MagicDraw UML 10.0
•   A handy UML editor. A customizable
    GUI which helps us model ideas in UML
    as quickly and straightforwardly as
    possible. The entire UML 2.0 notation
    and semantics and meta-model are
    supported.

•   Object Oriented model analysis tool.
    MagicDraw can generate package
    dependency diagram, recover and display
    inheritance tree, or track any other kind of
    relation such as dependency, association,
    realization.
    Features of MagicDraw
    Support for MDA:

•    Accelerates your 'travel time' between
     modeling domains: Model
     transformations can be quickly
     transformed back and forth from one
     modeling domain to another. MagicDraw
     UML allows model transformations both
     ways: from Platform Independent Model
     (PIM) to Platform Specific Model (PSM)
     and from PSM to PIM. We can produce
     many specific models, such as XML
     Schema, DDL, or our customized specific
     model from a generic one.

•    UML to Generic DDL
•    DDL to UML
•    UML to Oracle DDL
•    UML to XML
    MagicDraw UML 10.0
     Support for MDA:

•   A powerful code engineering tool. Construct
    UML model, generate source code from it,
    write more code by hand, then reverse the code,
    make some changes , and merge your model
    with the code again. No details are lost, no
    matter which way (backward or forward) you go.
    Support for Java, C#, C++, CORBA IDL,
    DDL.

•   Supports Business Process Modeling: Business
    Model can be taken as a basis and further
    elaborated, thus enabling the to the point
    development and implementation of business
    process.
MagicDraw UML 10.0
•   MagicDraw provides a means for
    architectural view modeling: to define
    system and software architecture in all
    4+1 views, and at different abstraction
    levels.


•   MagicDraw provides full support for
    UML 2.0 metamodel, including class,
    use case, communication, sequence,
    state, activity, implementation,
    package, component, composite
    structure, and deployment diagrams.
MagicDraw UML 10.0
•   Integrated with the following MDA
    Engines

    –   ArcStyler
    –   AndroMDA
    –   JeeWitz
    –   B+m Generator
    –   E2E Bridge

•   Supports integrated development
    environment by meshing MagicDraw
    with Eclipse, IBM's WebSphere
    Application Developer and Rational
    Application Developer, Borland’s
    JBuilder, IntelliJ IDEA, NetBeans,
    Sun’s Java Studio, BEA WebLogic
    Workshop.
    MagicDraw UML 10.0
•   How well does it conform to the guidelines?

       Support for PIMs:(3)                       a. Supports one PIM (Generic UML)


       Support for PSMs:(3)                       a. Supports at least one PSM (platform in the
                                                  sense of middleware)
                                                  b. Platform-tagged UML profiles count as PSM
                                                  (PIM to PSM is a critical requirement of MDA)



       Can target multiple PSMs:(4)               a. Target more than one PSM, e.g. J2EE and
                                                  .NET
                                                  b. PSM extensibility
                                                  c. PSM Metamodel editing facility
       Model Integration:(4)                      b. Multiple diagram types
                                                  c. Multiple viewpoints feed the same
                                                  transformation
    MagicDraw UML 10.0
•   How well does it conform to the guidelines?

      System Evolution:(2)            b. Forward propagation of changes




      Interoperability:(3)                 b. Import XMI
                                           c. Export XMI



      Mappings are modeled:(2)             a. Legacy-customizable Model-to-Code mappings


      Support managing model          a. Locating modeling elements in models
      complexity:(4)                       b. Zooming in and out
                                           c. Organizing generated code and document
    MagicDraw UML 10.0
•   How well does it conform to the guidelines?

        Correctness:(2)       a. Modeling tool checks static models based on the
                              corresponding metamodels



        Expressivity:(4)      b. support expressive higher levels of abstraction (PIM)




        Patterns and          b. Use of ready-made patterns in transformations
        Genericity:(3)             c. User-defined patterns



        Support for                 b. Propagate code changes to model (roundtrip)
        Refactoring:(3)
    MagicDraw UML 10.0
•   How well does it conform to the guidelines?

        Intra-model mappings:(3)        a. Built-in Model-to-Model Mappings (transformations)




        Traceability:(2)                a. PSM elements reference PIM elements where they
                                        originate



        Lifecycle :(3)                  a. Analysis,
                                             b. Design,
                                             c. Implementation

        Standardization:(3)                   a. UML
                                              b. MOF
Comparison Chart
• Chart comparing all
  the tools
                                                    MDA Tool Comparison Chart

        5
        4                                                                                                                 Together
Scale




        3                                                                                                                 OptimalJ
        2                                                                                                                 Rhapsody
        1                                                                                                                 MagicDraw
        0
              1

                    2

                            3

                                  4

                                          5

                                                6

                                                        7

                                                              8

                                                                      9

                                                                            0

                                                                                    1

                                                                                          2

                                                                                                  3

                                                                                                        4

                                                                                                                5

                                                                                                                      6
            A0

                  A0

                          A0

                                A0

                                        A0

                                              A0

                                                      A0

                                                            A0

                                                                    A0

                                                                          A1

                                                                                  A1

                                                                                        A1

                                                                                                A1

                                                                                                      A1

                                                                                                              A1

                                                                                                                    A1
        D

                  D

                        D

                                D

                                      D

                                              D

                                                    D

                                                            D

                                                                  D

                                                                          D

                                                                                D

                                                                                        D

                                                                                              D

                                                                                                      D

                                                                                                            D

                                                                                                                    D
        M

              M

                      M

                            M

                                    M

                                          M

                                                  M

                                                        M

                                                                M

                                                                      M

                                                                              M

                                                                                    M

                                                                                            M

                                                                                                  M

                                                                                                          M

                                                                                                                M
                                                            MDA Guidelines
Results
  • Results based on comparison chart

  •   MagicDraw   48
  •   Rhapsody    47
  •   OptimalJ    47
  •   Together    45
Future Outlook
• Through our research, we discovered that all of the MDA
  tools investigated are not full compliant to MDA
  specification. Each of them is missing one or more of the
  MDA features and need improvements

• Comparison of Query View Transformation (QVT) with
  transformation languages and templates of current existing
  MDA tools in the market.

• Evaluation or comparison of MDA tools based on some
  specific domain telemedicine, healthcare, aviation etc
Questions?

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:32
posted:4/25/2012
language:English
pages:73