Lightweight Static Verification
 of [UML] Executable Models
          Elena Planas
              SET Seminar
          TU/Eindhoven - 03/10/2012
Introducing me

PhD student *
   at Technical University of Catalonia (Spain)
  * under the supervision of Dr. Jordi Cabot and Dra. Cristina Gómez


Currently working
   at Open University of Catalonia (Spain)


Visiting researcher
   at TU/e (during 3 months)


Topics of interest:
      –    Software development paradigms: MDD, MDA
      –    Conceptual modelling
      –    UML, OCL, …
      –    Quality of software models
      –    V&V
Context

          MD*

          MDE

          MDD


          MDA
Motivation
                 Boehm’s curve




• Most errors in software
  development are introdu-
  ced during the first steps.

• The later an error is
  removed, the more
  expensive the fix is.
Motivation
                 Boehm’s curve



                                     MDD

                                  In MDD, the
                                 quality of the
                                 models directly
                                 impact on the
• Most errors in software         quality of the
  development are introdu-         final system
  ced during the first steps.     derived from
                                       them
• The later an error is
  removed, the more
  expensive the fix is.
Motivation
                 Boehm’s curve



                                     MDD

                                  In MDD, the      Need for useful
                                 quality of the    methods and
                                 models directly   tools to check
                                 impact on the
• Most errors in software                          the correctness
                                  quality of the
  development are introdu-         final system    of models
  ced during the first steps.     derived from
                                       them
• The later an error is
  removed, the more
  expensive the fix is.
Our goal is…


To develop a set of lightweight static
verification methods for checking several
correctness properties of [UML]
executable models
Our goal is…


To develop a set of lightweight static
verification methods for checking several
correctness properties of [UML]
executable models
Verification methods classification
Regarding the
mode how the
analysis is done




                   -                  +
                                      Regarding the level
                                      of formalization
                                      they use
Verification methods classification
Regarding the
mode how the
analysis is done

        Dynamic
        methods



          Static
        methods


                   -                  +
                                      Regarding the level
                                      of formalization
                                      they use
Verification methods classification
Regarding the
mode how the
analysis is done

        Dynamic
        methods



          Static
        methods


                   -   Non-formal   Lightweight   Formal
                                                            +
                        methods       methods     methods   Regarding the level
                                                            of formalization
                                                            they use
Verification methods classification
Regarding the
mode how the
analysis is done

        Dynamic                                                    Model
        methods                       Testing                     Checking




          Static        Inspections                  Our
                                                 verification      Abstract
        methods                                                 Interpretation
                         Reviews                  methods

                   -   Non-formal               Lightweight       Formal
                                                                                 +
                        methods                   methods         methods        Regarding the level
                                                                                 of formalization
                                                                                 they use
Verification methods classification
 Regarding the
 mode how the
 analysis is done

         Dynamic                                                    Model
         methods                       Testing                     Checking




           Static        Inspections                  Our
                                                  verification      Abstract
         methods                                                 Interpretation
                          Reviews                  methods

                    -   Non-formal               Lightweight       Formal
                                                                                  +
                         methods                   methods         methods        Regarding the level
                                                                                  of formalization
                                                                                  they use
 Static analysis  no execution of the model
 Do not need to translate the model into a mathematical formalization
 They provide quick and useful feedback
 They can be integrated in the development process
 They are only able to perform a partial analysis
Our goal is…


To develop a set of lightweight static
verification methods for checking several
correctness properties of [UML]
executable models
An executable model is a model with a behavioral
specification sufficiently detailed so it can be systematically
implemented/executed in the production environment.
An executable model is a model with a behavioral
specification sufficiently detailed so it can be systematically
implemented/executed in the production environment.

Use of executable models
in MDD                        Software engineers iteratively
                              execute, test and update the
                                         models


                                                                       The models are V&V in
                                                                       a development/test
    Software engineers                                                 environment
    create fully executable
    models
                                                                       The models are deployed
                                                Code generation        in a production
                                                Model interpretation   environment
An executable model is a model with a behavioral
specification sufficiently detailed so it can be systematically
implemented/executed in the production environment.

Use of executable models
in MDD                        Software engineers iteratively
                              execute, test and update the
                                         models


                                                                       The models are V&V in
                                                                       a development/test
    Software engineers                                                 environment
    create fully executable
    models
                                                                       The models are deployed
                                                Code generation        in a production
                                                Model interpretation   environment


 (1)  level of abstraction   productivity
 (2) platform independent models   costs
 (3) early verification   quality
An executable models is a be specified ina behavioral
                               may model with several
specification detailed enough so that it can be systematically
   languages
An executable models is a be specified ina behavioral
                               may model with several
specification detailed enough so that it can be systematically
   languages

                       Structural Model       Detailed Behavioral Model
       UML            UML Class Diagram +      UML Behavioral Diagram
  executable model    integrity constraints         precisely defined
An executable models is a be specified ina behavioral
                               may model with several
specification detailed enough so that it can be systematically
   languages

                       Structural Model       Detailed Behavioral Model
       UML            UML Class Diagram +      UML Behavioral Diagram
  executable model    integrity constraints         precisely defined
An executable models is a be specified ina behavioral
                               may model with several
specification detailed enough so that it can be systematically
   languages

                                        Structural Model                Detailed Behavioral Model
          UML                          UML Class Diagram +               UML Behavioral Diagram
  executable model                     integrity constraints                  precisely defined




  RestaurantBranch                         Menu                                      Course
  address: String       *   Offers   * name: String     * IsComposedOf 3..* description: String
  phone: String[0..2]                  price: Real                          category: CourseCategory

                                              {incomplete}
                                                                                  <<enumeration>>
                                                                                   CourseCategory
                                       SpecialMenu
                                                                                Starter
                                       discount: Real                           MainCourse
                                                                                Dessert


  context SpecialMenu inv validDiscount: self.discount >=10
  context SpecialMenu inv atMost3SpecialMenus: SpecialMenu.allInstances()->size()<=3
An executable models is a be specified ina behavioral
                               may model with several
specification detailed enough so that it can be systematically
   languages

                       Structural Model       Detailed Behavioral Model
       UML            UML Class Diagram +      UML Behavioral Diagram
  executable model    integrity constraints         precisely defined
An executable models is a be specified ina behavioral
                               may model with several
specification detailed enough so that it can be systematically
   languages

                       Structural Model              Detailed Behavioral Model
       UML            UML Class Diagram +             UML Behavioral Diagram
  executable model    integrity constraints                precisely defined


                                              Using Alf action language (OMG).
                                                 Alf is a clear, precise yet abstract
                                              textual language to specify executable
                                                  models in the context of UML
An executable models is a be specified ina behavioral
                               may model with several
specification detailed enough so that it can be systematically
   languages

                                       Structural Model                  Detailed Behavioral Model
        UML                          UML Class Diagram +                  UML Behavioral Diagram
  executable model                   integrity constraints                     precisely defined


                                                                  Using Alf action language (OMG).
                                                                     Alf is a clear, precise yet abstract
                                                                  textual language to specify executable
                                                                      models in the context of UML

   activity addMenu (in _name: String, in _price: Real, in _courses:Course[3..*]) {
     if (!Menu.allInstances()->exists(m|m.name=_name) ) {
       Menu m = new Menu();
       m.name = _name;
       m.price = _price;
       for ( i in 1.._courses->size() ) {
         IsComposedOf.createlink(m=>menu,course=>_courses[i]);
       }
     }
   }
An executable models is a be specified ina behavioral
                               may model with several
specification detailed enough so that it can be systematically
   languages

                                       Structural Model                  Detailed Behavioral Model
        UML                          UML Class Diagram +                  UML Behavioral Diagram
  executable model                   integrity constraints                     precisely defined


                                                                  Using Alf action language (OMG).
                                                                     Alf is a clear, precise yet abstract
                                                                  textual language to specify executable
                                                                      models in the context of UML

   activity addMenu (in _name: String, in _price: Real, in _courses:Course[3..*]) {
     if (!Menu.allInstances()->exists(m|m.name=_name) ) {
       Menu m = new Menu();
       m.name = _name;
       m.price = _price;
       for ( i in 1.._courses->size() ) {
         IsComposedOf.createlink(m=>menu,course=>_courses[i]);
       }
     }
   }
Our goal is…


To develop a set of lightweight static
verification methods for checking several
correctness properties of [UML]
executable models
Property #1. Non-Redundancy
Property #1. Non-Redundancy



An action in operation is redundant if its effect
on the system state is subsumed by the effect of
later actions in the same operation.
Property #1. Non-Redundancy



An action in operation is redundant if its effect
on the system state is subsumed by the effect of
later actions in the same operation.

                Course
       description: String
       category: CourseCategory



       activity removeCourse () {
         self.description = null;
         self.category = null;
         self.destroy();
       }
Property #1. Non-Redundancy



An action in operation is redundant if its effect
on the system state is subsumed by the effect of
later actions in the same operation.

                Course
       description: String
       category: CourseCategory



       activity removeCourse () {
         self.description = null;
         self.category = null;
         self.destroy();
       }
Property #1. Non-Redundancy



An action in operation is redundant if its effect
on the system state is subsumed by the effect of
later actions in the same operation.

                Course
       description: String
       category: CourseCategory          Feedback: There is no no
                                      need of clearing the values of
                                        the attributes of an object
                                       that is going to be removed.
       activity removeCourse () {
         self.description = null;
         self.category = null;
         self.destroy();
       }
Property #1. Non-Redundancy



An action in operation is redundant if its effect
on the system state is subsumed by the effect of
later actions in the same operation.

                    Course
       description: String
       category: CourseCategory



       activity removeCourse () {


           self.destroy();
       }
Property #2. Executability
Property #2. Executability



The executability of an operation is its ability to
be executed without breaking the integrity constraints
defined in the structural model.
Two levels of correctness:
An operation is weakly executable        An operation is strongly executable
when there is a chance that a user may   when it is always successfully executed.
successfully execute the operation.
Property #2. Executability



The executability of an operation is its ability to
be executed without breaking the integrity constraints
defined in the structural model.
Two levels of correctness:
An operation is weakly executable                     An operation is strongly executable
when there is a chance that a user may                when it is always successfully executed.
successfully execute the operation.

    Menu              context SpecialMenu inv validDiscount: self.discount >=10
                      context SpecialMenu inv atMost3SpecialMenus: SpecialMenu.allInstances()->size()<=3
name: String
price: Real

       {incomplete}
                       activity classifyAsSpecialmenu (in _discount:Real) {
                         if ( _discount>=10 ) {
 SpecialMenu               classify self to SpecialMenu;
                           self.discount = _discount;
discount: Real           }
                       }
Property #2. Executability



The executability of an operation is its ability to
be executed without breaking the integrity constraints
defined in the structural model.
Two levels of correctness:
An operation is weakly executable                     An operation is strongly executable
when there is a chance that a user may                when it is always successfully executed.
successfully execute the operation.

    Menu              context SpecialMenu inv validDiscount: self.discount >=10
                      context SpecialMenu inv atMost3SpecialMenus: SpecialMenu.allInstances()->size()<=3
name: String
price: Real

       {incomplete}
                       activity classifyAsSpecialmenu (in _discount:Real) {
                         if ( _discount>=10 ) {
 SpecialMenu               classify self to SpecialMenu;
                           self.discount = _discount;
discount: Real           }
                       }
Property #2. Executability



The executability of an operation is its ability to
be executed without breaking the integrity constraints
defined in the structural model.
Two levels of correctness:
An operation is weakly executable                     An operation is strongly executable
when there is a chance that a user may                when it is always successfully executed.
successfully execute the operation.

    Menu              context SpecialMenu inv validDiscount: self.discount >=10
                      context SpecialMenu inv atMost3SpecialMenus: SpecialMenu.allInstances()->size()<=3
name: String
price: Real

       {incomplete}
                       activity classifyAsSpecialmenu (in _discount:Real) {
                         if ( _discount>=10 ) {
 SpecialMenu               classify self to SpecialMenu;
                           self.discount = _discount;
discount: Real           }
                       }
Property #2. Executability



The executability of an operation is its ability to
be executed without breaking the integrity constraints
defined in the structural model.
Two levels of correctness:
An operation is weakly executable                     An operation is strongly executable
when there is a chance that a user may                when it is always successfully executed.
successfully execute the operation.

    Menu              context SpecialMenu inv validDiscount: self.discount >=10
                      context SpecialMenu inv atMost3SpecialMenus: SpecialMenu.allInstances()->size()<=3
name: String
price: Real

                                                                                 Feedback: You must
       {incomplete}
                       activity classifyAsSpecialmenu (in _discount:Real) {     ensure there are less
                         if ( _discount>=10 ) {                                 than 3 special menus
 SpecialMenu               classify self to SpecialMenu;
                                                                                    in the system.
                           self.discount = _discount;
discount: Real           }
                       }
Property #2. Executability



The executability of an operation is its ability to
be executed without breaking the integrity constraints
defined in the structural model.
Two levels of correctness:
An operation is weakly executable                      An operation is strongly executable
when there is a chance that a user may                 when it is always successfully executed.
successfully execute the operation.

    Menu              context SpecialMenu inv validDiscount: self.discount >=10
                      context SpecialMenu inv atMost3SpecialMenus: SpecialMenu.allInstances()->size()<=3
name: String
price: Real

       {incomplete}
                       activity classifyAsSpecialmenu (in _discount:Real) {
                         if ( _discount>=10 and SpecialMenu.allInstances()->size()<3 ) {
 SpecialMenu               classify self to SpecialMenu;
                           self.discount = _discount;
discount: Real           }
                       }
Property #3. Completeness
Property #3. Completeness



A set of operations is complete if all possible changes
(inserts/updates/deletes…) on all parts of the system state can
be performed through the execution of those operations.
Property #3. Completeness



A set of operations is complete if all possible changes
(inserts/updates/deletes…) on all parts of the system state can
be performed through the execution of those operations.

   Menu                                     Course             activity addCourse (in _description:
name:         * IsComposedOf 3..*                              String, in _category: CourseCategory) {
                                    description: String          Course c = new Course();
String
                                    category: CourseCategory
price: Real                                                      c.description = _description;
                                                                 c.category = _category;
                                                               }
                                       <<enumeration>>
                                        CourseCategory
SpecialMenu
                                       Starter                 activity deleteMenu() {
discount:                              MainCourse
Real                                   Dessert
                                                                 self.destroy();
                                                               }
Property #3. Completeness



A set of operations is complete if all possible changes
(inserts/updates/deletes…) on all parts of the system state can
be performed through the execution of those operations.

   Menu                                     Course             activity addCourse (in _description:
name:         * IsComposedOf 3..*                              String, in _category: CourseCategory) {
                                    description: String          Course c = new Course();
String
                                    category: CourseCategory
price: Real                                                      c.description = _description;
                                                                 c.category = _category;
                                                               }
                                       <<enumeration>>
                                        CourseCategory
SpecialMenu
                                       Starter                 activity deleteMenu() {
discount:                              MainCourse
Real                                   Dessert
                                                                 self.destroy();
                                                               }


                                                                                Feedback: Actions to
                                                                                destroy courses or to
                                                                                create menus are not
                                                                                      specified.
Property #3. Completeness



A set of operations is complete if all possible changes
(inserts/updates/deletes…) on all parts of the system state can
be performed through the execution of those operations.

   Menu                                     Course             activity addCourse (in _description: String,
name:         * IsComposedOf 3..*                              in _category: CourseCategory) {
                                    description: String          Course c = new Course();
String
                                    category: CourseCategory
price: Real                                                      c.description = _description;
                                                                 c.category = _category;
                                                               }
                                       <<enumeration>>
                                        CourseCategory
SpecialMenu
                                       Starter                 activity deleteMenu() {
discount:                              MainCourse
Real                                   Dessert
                                                                 self.destroy();
                                                               }


               activity addMenu () {                           activity deleteCourse() {
                 Menu m = new Menu();                            self.destroy();
                 …                                             }
               }
Summary

                         Lightweight static
                         methods to verify
                        several correctness
          EXECUTABLE         properties
            MODEL
                               Non-
                            redundancy


             FEEDBACK       Executability



                           Completeness
Summary

  UML Executable Models
                                                  Lightweight static
  M2M transformations (ATL, GTR)
                                                  methods to verify
                                                 several correctness
                                   EXECUTABLE         properties
                                     MODEL
                                                        Non-
                                                     redundancy


                                      FEEDBACK       Executability



                                                    Completeness
Summary

  UML Executable Models
                                                  Lightweight static
  M2M transformations (ATL, GTR)
                                                  methods to verify
                                                 several correctness
                                   EXECUTABLE         properties
                                     MODEL
                                                        Non-
                                                     redundancy


                                      FEEDBACK       Executability



          The feedback (which is                    Completeness
           expressed in the same
        language the model) points
         out how the error may be
                 resolved.
Summary
                                                                Limitations: partial
                                                                models, partial analysis…



  UML Executable Models
                                                  Lightweight static
  M2M transformations (ATL, GTR)
                                                  methods to verify
                                                 several correctness
                                   EXECUTABLE         properties
                                     MODEL
                                                        Non-
                                                     redundancy


                                      FEEDBACK       Executability



          The feedback (which is                    Completeness
           expressed in the same
        language the model) points
         out how the error may be
                 resolved.
Summary
                                                                Limitations: partial
                                                                models, partial analysis…



  UML Executable Models
                                                  Lightweight static
  M2M transformations (ATL, GTR)
                                                  methods to verify
                                                 several correctness
                                   EXECUTABLE         properties
                                     MODEL
                                                        Non-
                                                     redundancy


                                      FEEDBACK       Executability



          The feedback (which is                    Completeness
           expressed in the same
        language the model) points
         out how the error may be
                 resolved.


                                                        …more work has to be done!
Method
DSLs



   Other
 behavioral                   UML
specifications             executable
                             models

                           ATL M2M
                        Transformations

                             GT Rules




                                   Method
Consistency
                 DSLs
                                                              Safety

   Other                                                         Deadlock-free
 behavioral                   UML
specifications             executable
                             models          Non-
                                          redundancy                   Livelock-free
                           ATL M2M
                        Transformations     Executability

                                            Completeness
                             GT Rules




                                   Method
Consistency
                 DSLs
                                                                    Safety

   Other                                                               Deadlock-free
 behavioral                   UML
specifications             executable
                             models                Non-
                                                redundancy                   Livelock-free
                           ATL M2M
                        Transformations           Executability

                                                  Completeness
                             GT Rules

                                       Lightweight
                                     static methods



                           Model                  Event-B
                          Checking


                                            Constraint
                                           Programming



                                     Method
Consistency
                 DSLs
                                                                    Safety

   Other                                                               Deadlock-free
 behavioral                   UML
specifications             executable
                             models                Non-
                                                redundancy                   Livelock-free
                           ATL M2M
                        Transformations           Executability

                                                  Completeness
                             GT Rules

                                       Lightweight
                                     static methods



                           Model                  Event-B
                          Checking


                                            Constraint
                                           Programming



                                     Method
Thanks for your attention!
                   Elena Planas

More Related Content

PDF
Higher Order Testing
PPTX
Software Testing
PPTX
Practical Testing Definition for Mobile Devices
PPTX
Object Oriented Testing(OOT) presentation slides
PDF
Requirements validation techniques (rv ts) practiced in industry studies of...
PPTX
Software testing
PPSX
Role of BA in Testing
Higher Order Testing
Software Testing
Practical Testing Definition for Mobile Devices
Object Oriented Testing(OOT) presentation slides
Requirements validation techniques (rv ts) practiced in industry studies of...
Software testing
Role of BA in Testing

What's hot (13)

PPTX
Testing Throughout the Software Life Cycle - Section 2
PPT
Requirements analysis lecture
PDF
@#$@#$@#$"""@#$@#$"""
PPT
Testing
PDF
Glossary of Testing Terms and Concepts
PPTX
Fundamentals of Testing Section 1/6
PPTX
Software Testing and Quality Assurance unit1
PPT
Test Techniques
PPTX
software Processes
PDF
Testing Throughout the Software Life Cycle (2013)
PDF
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
DOC
Testing terms & definitions
Testing Throughout the Software Life Cycle - Section 2
Requirements analysis lecture
@#$@#$@#$"""@#$@#$"""
Testing
Glossary of Testing Terms and Concepts
Fundamentals of Testing Section 1/6
Software Testing and Quality Assurance unit1
Test Techniques
software Processes
Testing Throughout the Software Life Cycle (2013)
IJCER (www.ijceronline.com) International Journal of computational Engineerin...
Testing terms & definitions
Ad

Similar to Lightweight Static Verification of [UML] Executable Models (An overview) (20)

PDF
Test Process Maturity Measurement and Related Measurements
PPTX
verification and validation
PPT
Softwaretesting
PPTX
Lecture 08 (SQE, Testing, PM, RM, ME).pptx
PDF
Verification Learning & Development Plan
PPTX
Timing Tool Test Effectiveness for WCET Analysis Tools
PPTX
Static analysis and reliability testing (CS 5032 2012)
PPTX
Software Risk and Quality management.pptx
PDF
Process improvement & service oriented software engineering
PDF
Killing the Myth: Agile & CMMI
PPTX
Product metrics
PPTX
CS5032 L11 validation and reliability testing 2013
PPT
22317-DIPLOMA_SEM4_software_engg-chap-06.ppt
PDF
QualityAssurance.pdf
PPT
Software process improvement.ppt
PPT
Software_Verification_and_Validation.ppt
PPTX
SoftwareTesting Processes and Methodologies.pptx
PPT
Software testing for beginners
Test Process Maturity Measurement and Related Measurements
verification and validation
Softwaretesting
Lecture 08 (SQE, Testing, PM, RM, ME).pptx
Verification Learning & Development Plan
Timing Tool Test Effectiveness for WCET Analysis Tools
Static analysis and reliability testing (CS 5032 2012)
Software Risk and Quality management.pptx
Process improvement & service oriented software engineering
Killing the Myth: Agile & CMMI
Product metrics
CS5032 L11 validation and reliability testing 2013
22317-DIPLOMA_SEM4_software_engg-chap-06.ppt
QualityAssurance.pdf
Software process improvement.ppt
Software_Verification_and_Validation.ppt
SoftwareTesting Processes and Methodologies.pptx
Software testing for beginners
Ad

More from Elena Planas (7)

PPTX
Model-Driven Analytics for Open Data APIs
PPTX
PhD Thesis defense: Lightweight and Static verification of UML Executable Models
PPS
Lightweight Verification of Executable Models
PPS
Two Basic Correctness Properties for ATL Transformations: Executability and C...
PPS
Executability Analysis of Graph Transformation Rules (VL/HCC 2011)
PPS
A Framework for Verifying UML Behavioral Models (CAiSE Doctoral Consortium 2009)
PPS
Verifying Action Semantics Specifications in UML Behavioral Models (CAiSE 2009)
Model-Driven Analytics for Open Data APIs
PhD Thesis defense: Lightweight and Static verification of UML Executable Models
Lightweight Verification of Executable Models
Two Basic Correctness Properties for ATL Transformations: Executability and C...
Executability Analysis of Graph Transformation Rules (VL/HCC 2011)
A Framework for Verifying UML Behavioral Models (CAiSE Doctoral Consortium 2009)
Verifying Action Semantics Specifications in UML Behavioral Models (CAiSE 2009)

Recently uploaded (20)

PDF
A contest of sentiment analysis: k-nearest neighbor versus neural network
PDF
Enhancing emotion recognition model for a student engagement use case through...
PPTX
The various Industrial Revolutions .pptx
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
Developing a website for English-speaking practice to English as a foreign la...
PDF
STKI Israel Market Study 2025 version august
PDF
1 - Historical Antecedents, Social Consideration.pdf
PPTX
Custom Battery Pack Design Considerations for Performance and Safety
PDF
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
PDF
CloudStack 4.21: First Look Webinar slides
PDF
UiPath Agentic Automation session 1: RPA to Agents
PDF
sbt 2.0: go big (Scala Days 2025 edition)
PDF
Flame analysis and combustion estimation using large language and vision assi...
PDF
Consumable AI The What, Why & How for Small Teams.pdf
PDF
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
PDF
The influence of sentiment analysis in enhancing early warning system model f...
DOCX
search engine optimization ppt fir known well about this
PDF
OpenACC and Open Hackathons Monthly Highlights July 2025
A contest of sentiment analysis: k-nearest neighbor versus neural network
Enhancing emotion recognition model for a student engagement use case through...
The various Industrial Revolutions .pptx
A comparative study of natural language inference in Swahili using monolingua...
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
Zenith AI: Advanced Artificial Intelligence
Developing a website for English-speaking practice to English as a foreign la...
STKI Israel Market Study 2025 version august
1 - Historical Antecedents, Social Consideration.pdf
Custom Battery Pack Design Considerations for Performance and Safety
A Late Bloomer's Guide to GenAI: Ethics, Bias, and Effective Prompting - Boha...
CloudStack 4.21: First Look Webinar slides
UiPath Agentic Automation session 1: RPA to Agents
sbt 2.0: go big (Scala Days 2025 edition)
Flame analysis and combustion estimation using large language and vision assi...
Consumable AI The What, Why & How for Small Teams.pdf
Produktkatalog für HOBO Datenlogger, Wetterstationen, Sensoren, Software und ...
The influence of sentiment analysis in enhancing early warning system model f...
search engine optimization ppt fir known well about this
OpenACC and Open Hackathons Monthly Highlights July 2025

Lightweight Static Verification of [UML] Executable Models (An overview)

  • 1. Lightweight Static Verification of [UML] Executable Models Elena Planas SET Seminar TU/Eindhoven - 03/10/2012
  • 2. Introducing me PhD student * at Technical University of Catalonia (Spain) * under the supervision of Dr. Jordi Cabot and Dra. Cristina Gómez Currently working at Open University of Catalonia (Spain) Visiting researcher at TU/e (during 3 months) Topics of interest: – Software development paradigms: MDD, MDA – Conceptual modelling – UML, OCL, … – Quality of software models – V&V
  • 3. Context MD* MDE MDD MDA
  • 4. Motivation Boehm’s curve • Most errors in software development are introdu- ced during the first steps. • The later an error is removed, the more expensive the fix is.
  • 5. Motivation Boehm’s curve MDD In MDD, the quality of the models directly impact on the • Most errors in software quality of the development are introdu- final system ced during the first steps. derived from them • The later an error is removed, the more expensive the fix is.
  • 6. Motivation Boehm’s curve MDD In MDD, the Need for useful quality of the methods and models directly tools to check impact on the • Most errors in software the correctness quality of the development are introdu- final system of models ced during the first steps. derived from them • The later an error is removed, the more expensive the fix is.
  • 7. Our goal is… To develop a set of lightweight static verification methods for checking several correctness properties of [UML] executable models
  • 8. Our goal is… To develop a set of lightweight static verification methods for checking several correctness properties of [UML] executable models
  • 9. Verification methods classification Regarding the mode how the analysis is done - + Regarding the level of formalization they use
  • 10. Verification methods classification Regarding the mode how the analysis is done Dynamic methods Static methods - + Regarding the level of formalization they use
  • 11. Verification methods classification Regarding the mode how the analysis is done Dynamic methods Static methods - Non-formal Lightweight Formal + methods methods methods Regarding the level of formalization they use
  • 12. Verification methods classification Regarding the mode how the analysis is done Dynamic Model methods Testing Checking Static Inspections Our verification Abstract methods Interpretation Reviews methods - Non-formal Lightweight Formal + methods methods methods Regarding the level of formalization they use
  • 13. Verification methods classification Regarding the mode how the analysis is done Dynamic Model methods Testing Checking Static Inspections Our verification Abstract methods Interpretation Reviews methods - Non-formal Lightweight Formal + methods methods methods Regarding the level of formalization they use  Static analysis  no execution of the model  Do not need to translate the model into a mathematical formalization  They provide quick and useful feedback  They can be integrated in the development process  They are only able to perform a partial analysis
  • 14. Our goal is… To develop a set of lightweight static verification methods for checking several correctness properties of [UML] executable models
  • 15. An executable model is a model with a behavioral specification sufficiently detailed so it can be systematically implemented/executed in the production environment.
  • 16. An executable model is a model with a behavioral specification sufficiently detailed so it can be systematically implemented/executed in the production environment. Use of executable models in MDD Software engineers iteratively execute, test and update the models The models are V&V in a development/test Software engineers environment create fully executable models The models are deployed Code generation in a production Model interpretation environment
  • 17. An executable model is a model with a behavioral specification sufficiently detailed so it can be systematically implemented/executed in the production environment. Use of executable models in MDD Software engineers iteratively execute, test and update the models The models are V&V in a development/test Software engineers environment create fully executable models The models are deployed Code generation in a production Model interpretation environment (1)  level of abstraction   productivity (2) platform independent models   costs (3) early verification   quality
  • 18. An executable models is a be specified ina behavioral may model with several specification detailed enough so that it can be systematically languages
  • 19. An executable models is a be specified ina behavioral may model with several specification detailed enough so that it can be systematically languages Structural Model Detailed Behavioral Model UML UML Class Diagram + UML Behavioral Diagram executable model integrity constraints precisely defined
  • 20. An executable models is a be specified ina behavioral may model with several specification detailed enough so that it can be systematically languages Structural Model Detailed Behavioral Model UML UML Class Diagram + UML Behavioral Diagram executable model integrity constraints precisely defined
  • 21. An executable models is a be specified ina behavioral may model with several specification detailed enough so that it can be systematically languages Structural Model Detailed Behavioral Model UML UML Class Diagram + UML Behavioral Diagram executable model integrity constraints precisely defined RestaurantBranch Menu Course address: String * Offers * name: String * IsComposedOf 3..* description: String phone: String[0..2] price: Real category: CourseCategory {incomplete} <<enumeration>> CourseCategory SpecialMenu Starter discount: Real MainCourse Dessert context SpecialMenu inv validDiscount: self.discount >=10 context SpecialMenu inv atMost3SpecialMenus: SpecialMenu.allInstances()->size()<=3
  • 22. An executable models is a be specified ina behavioral may model with several specification detailed enough so that it can be systematically languages Structural Model Detailed Behavioral Model UML UML Class Diagram + UML Behavioral Diagram executable model integrity constraints precisely defined
  • 23. An executable models is a be specified ina behavioral may model with several specification detailed enough so that it can be systematically languages Structural Model Detailed Behavioral Model UML UML Class Diagram + UML Behavioral Diagram executable model integrity constraints precisely defined Using Alf action language (OMG). Alf is a clear, precise yet abstract textual language to specify executable models in the context of UML
  • 24. An executable models is a be specified ina behavioral may model with several specification detailed enough so that it can be systematically languages Structural Model Detailed Behavioral Model UML UML Class Diagram + UML Behavioral Diagram executable model integrity constraints precisely defined Using Alf action language (OMG). Alf is a clear, precise yet abstract textual language to specify executable models in the context of UML activity addMenu (in _name: String, in _price: Real, in _courses:Course[3..*]) { if (!Menu.allInstances()->exists(m|m.name=_name) ) { Menu m = new Menu(); m.name = _name; m.price = _price; for ( i in 1.._courses->size() ) { IsComposedOf.createlink(m=>menu,course=>_courses[i]); } } }
  • 25. An executable models is a be specified ina behavioral may model with several specification detailed enough so that it can be systematically languages Structural Model Detailed Behavioral Model UML UML Class Diagram + UML Behavioral Diagram executable model integrity constraints precisely defined Using Alf action language (OMG). Alf is a clear, precise yet abstract textual language to specify executable models in the context of UML activity addMenu (in _name: String, in _price: Real, in _courses:Course[3..*]) { if (!Menu.allInstances()->exists(m|m.name=_name) ) { Menu m = new Menu(); m.name = _name; m.price = _price; for ( i in 1.._courses->size() ) { IsComposedOf.createlink(m=>menu,course=>_courses[i]); } } }
  • 26. Our goal is… To develop a set of lightweight static verification methods for checking several correctness properties of [UML] executable models
  • 28. Property #1. Non-Redundancy An action in operation is redundant if its effect on the system state is subsumed by the effect of later actions in the same operation.
  • 29. Property #1. Non-Redundancy An action in operation is redundant if its effect on the system state is subsumed by the effect of later actions in the same operation. Course description: String category: CourseCategory activity removeCourse () { self.description = null; self.category = null; self.destroy(); }
  • 30. Property #1. Non-Redundancy An action in operation is redundant if its effect on the system state is subsumed by the effect of later actions in the same operation. Course description: String category: CourseCategory activity removeCourse () { self.description = null; self.category = null; self.destroy(); }
  • 31. Property #1. Non-Redundancy An action in operation is redundant if its effect on the system state is subsumed by the effect of later actions in the same operation. Course description: String category: CourseCategory Feedback: There is no no need of clearing the values of the attributes of an object that is going to be removed. activity removeCourse () { self.description = null; self.category = null; self.destroy(); }
  • 32. Property #1. Non-Redundancy An action in operation is redundant if its effect on the system state is subsumed by the effect of later actions in the same operation. Course description: String category: CourseCategory activity removeCourse () { self.destroy(); }
  • 34. Property #2. Executability The executability of an operation is its ability to be executed without breaking the integrity constraints defined in the structural model. Two levels of correctness: An operation is weakly executable An operation is strongly executable when there is a chance that a user may when it is always successfully executed. successfully execute the operation.
  • 35. Property #2. Executability The executability of an operation is its ability to be executed without breaking the integrity constraints defined in the structural model. Two levels of correctness: An operation is weakly executable An operation is strongly executable when there is a chance that a user may when it is always successfully executed. successfully execute the operation. Menu context SpecialMenu inv validDiscount: self.discount >=10 context SpecialMenu inv atMost3SpecialMenus: SpecialMenu.allInstances()->size()<=3 name: String price: Real {incomplete} activity classifyAsSpecialmenu (in _discount:Real) { if ( _discount>=10 ) { SpecialMenu classify self to SpecialMenu; self.discount = _discount; discount: Real } }
  • 36. Property #2. Executability The executability of an operation is its ability to be executed without breaking the integrity constraints defined in the structural model. Two levels of correctness: An operation is weakly executable An operation is strongly executable when there is a chance that a user may when it is always successfully executed. successfully execute the operation. Menu context SpecialMenu inv validDiscount: self.discount >=10 context SpecialMenu inv atMost3SpecialMenus: SpecialMenu.allInstances()->size()<=3 name: String price: Real {incomplete} activity classifyAsSpecialmenu (in _discount:Real) { if ( _discount>=10 ) { SpecialMenu classify self to SpecialMenu; self.discount = _discount; discount: Real } }
  • 37. Property #2. Executability The executability of an operation is its ability to be executed without breaking the integrity constraints defined in the structural model. Two levels of correctness: An operation is weakly executable An operation is strongly executable when there is a chance that a user may when it is always successfully executed. successfully execute the operation. Menu context SpecialMenu inv validDiscount: self.discount >=10 context SpecialMenu inv atMost3SpecialMenus: SpecialMenu.allInstances()->size()<=3 name: String price: Real {incomplete} activity classifyAsSpecialmenu (in _discount:Real) { if ( _discount>=10 ) { SpecialMenu classify self to SpecialMenu; self.discount = _discount; discount: Real } }
  • 38. Property #2. Executability The executability of an operation is its ability to be executed without breaking the integrity constraints defined in the structural model. Two levels of correctness: An operation is weakly executable An operation is strongly executable when there is a chance that a user may when it is always successfully executed. successfully execute the operation. Menu context SpecialMenu inv validDiscount: self.discount >=10 context SpecialMenu inv atMost3SpecialMenus: SpecialMenu.allInstances()->size()<=3 name: String price: Real Feedback: You must {incomplete} activity classifyAsSpecialmenu (in _discount:Real) { ensure there are less if ( _discount>=10 ) { than 3 special menus SpecialMenu classify self to SpecialMenu; in the system. self.discount = _discount; discount: Real } }
  • 39. Property #2. Executability The executability of an operation is its ability to be executed without breaking the integrity constraints defined in the structural model. Two levels of correctness: An operation is weakly executable An operation is strongly executable when there is a chance that a user may when it is always successfully executed. successfully execute the operation. Menu context SpecialMenu inv validDiscount: self.discount >=10 context SpecialMenu inv atMost3SpecialMenus: SpecialMenu.allInstances()->size()<=3 name: String price: Real {incomplete} activity classifyAsSpecialmenu (in _discount:Real) { if ( _discount>=10 and SpecialMenu.allInstances()->size()<3 ) { SpecialMenu classify self to SpecialMenu; self.discount = _discount; discount: Real } }
  • 41. Property #3. Completeness A set of operations is complete if all possible changes (inserts/updates/deletes…) on all parts of the system state can be performed through the execution of those operations.
  • 42. Property #3. Completeness A set of operations is complete if all possible changes (inserts/updates/deletes…) on all parts of the system state can be performed through the execution of those operations. Menu Course activity addCourse (in _description: name: * IsComposedOf 3..* String, in _category: CourseCategory) { description: String Course c = new Course(); String category: CourseCategory price: Real c.description = _description; c.category = _category; } <<enumeration>> CourseCategory SpecialMenu Starter activity deleteMenu() { discount: MainCourse Real Dessert self.destroy(); }
  • 43. Property #3. Completeness A set of operations is complete if all possible changes (inserts/updates/deletes…) on all parts of the system state can be performed through the execution of those operations. Menu Course activity addCourse (in _description: name: * IsComposedOf 3..* String, in _category: CourseCategory) { description: String Course c = new Course(); String category: CourseCategory price: Real c.description = _description; c.category = _category; } <<enumeration>> CourseCategory SpecialMenu Starter activity deleteMenu() { discount: MainCourse Real Dessert self.destroy(); } Feedback: Actions to destroy courses or to create menus are not specified.
  • 44. Property #3. Completeness A set of operations is complete if all possible changes (inserts/updates/deletes…) on all parts of the system state can be performed through the execution of those operations. Menu Course activity addCourse (in _description: String, name: * IsComposedOf 3..* in _category: CourseCategory) { description: String Course c = new Course(); String category: CourseCategory price: Real c.description = _description; c.category = _category; } <<enumeration>> CourseCategory SpecialMenu Starter activity deleteMenu() { discount: MainCourse Real Dessert self.destroy(); } activity addMenu () { activity deleteCourse() { Menu m = new Menu(); self.destroy(); … } }
  • 45. Summary Lightweight static methods to verify several correctness EXECUTABLE properties MODEL Non- redundancy FEEDBACK Executability Completeness
  • 46. Summary UML Executable Models Lightweight static M2M transformations (ATL, GTR) methods to verify several correctness EXECUTABLE properties MODEL Non- redundancy FEEDBACK Executability Completeness
  • 47. Summary UML Executable Models Lightweight static M2M transformations (ATL, GTR) methods to verify several correctness EXECUTABLE properties MODEL Non- redundancy FEEDBACK Executability The feedback (which is Completeness expressed in the same language the model) points out how the error may be resolved.
  • 48. Summary Limitations: partial models, partial analysis… UML Executable Models Lightweight static M2M transformations (ATL, GTR) methods to verify several correctness EXECUTABLE properties MODEL Non- redundancy FEEDBACK Executability The feedback (which is Completeness expressed in the same language the model) points out how the error may be resolved.
  • 49. Summary Limitations: partial models, partial analysis… UML Executable Models Lightweight static M2M transformations (ATL, GTR) methods to verify several correctness EXECUTABLE properties MODEL Non- redundancy FEEDBACK Executability The feedback (which is Completeness expressed in the same language the model) points out how the error may be resolved. …more work has to be done!
  • 51. DSLs Other behavioral UML specifications executable models ATL M2M Transformations GT Rules Method
  • 52. Consistency DSLs Safety Other Deadlock-free behavioral UML specifications executable models Non- redundancy Livelock-free ATL M2M Transformations Executability Completeness GT Rules Method
  • 53. Consistency DSLs Safety Other Deadlock-free behavioral UML specifications executable models Non- redundancy Livelock-free ATL M2M Transformations Executability Completeness GT Rules Lightweight static methods Model Event-B Checking Constraint Programming Method
  • 54. Consistency DSLs Safety Other Deadlock-free behavioral UML specifications executable models Non- redundancy Livelock-free ATL M2M Transformations Executability Completeness GT Rules Lightweight static methods Model Event-B Checking Constraint Programming Method
  • 55. Thanks for your attention! Elena Planas