100 likes | 111 Views
Explore the inadequacies of UML 1.x and the benefits of executable UML for precise modeling and testing. Understand the evolution towards xUML with clear semantics and action specifications to support effective model execution and translation into different languages. Learn about the development process for executable modeling and pattern-based design. Discover how executable UML improves modeling quality and provides measurable deliverables for iterative and incremental system development.
E N D
Executable UML – UML2 The Need for xUML Moh Ibrahim, Alex Fedorec & Keith Rennolls The University of Greenwich With Acknowledgement to Kennedy-Carter: http://www.kc.com
Action CreateAction Terminate Action ReturnAction CallAction Uninterpreted Action DestroyAction SendAction Why is the UML 1.x… not executable ? • It is ‘computationally’ incomplete • UML describes a system in, broadly, two ways: • by specifying the desired results (use cases, sequence diagrams) • by specifying the software that, when executed, will produce the desired results (classes, associations, operations, state machines) • The latter specification of behaviour is the basis for implementing the system, but is missing key ingredients: • the implementation of operations (methods) are specified only by a “language dependent” text string • the actions associated with state machines (and methods) are specified either by a text string, or by using the “action” part of the UML
Action Specifications in UML 1.x • Cannot be attached to methods and therefore • cannot be used to specify operations • Do not cover the full range of information required to model real behaviour • No conditional logic • Do not deal with internal data within an Action Sequence • Cannot describe reading and writing of attributes • Cannot describe manipulation and navigation of associations • Cannot describe parallel behaviour • Not related to the UML type model • Do not have fully defined semantics ..... were intended only as a place holder for future UML development
Transaction Completed/ if is_aborted then return Transaction in Progress Transaction Complete entry/ log transaction Why is the current UML not executable ? • It is big • UML was conceived as a Universal as well as Unified modelling language • UML covers many development paradigms • Synchronous and asynchronous behaviour • State dependent and stateless behaviour • Mealy state machines and Moore state machines • Flat state models and Harel state charts • Abstract analysis modelling and code specific design modelling • Language specific modelling and abstract modelling • Sometimes the breadth of coverage can lead to ambiguity... I have absolutely no idea because that combination of behaviour is undefined! • e.g. what happens if you execute a “return” in a transition action • stimulated by “call” (synchronous) event ?
Actions and the UML • the Action Specification Language, operates at the same level of abstraction as UML……but embodies the precision to allow models to be executed and consequently supports translation of the models into any language. • The OMG has recognised the need for a full action specification in the UML • In November 1998 the OMG issued a Request for Proposals on Precise Action Semantics for the UML
xUML UML V1.x Precisely Defined Action Semantics - Semantically Weak Elements + = What is xUML? • xUML is • an executable version of the UML, with… • clearly defined simple model structure • a precise semantics for actions, incorporated into the UML 2 standard • a compliant action specification language • an accompanying process • a proven development process, oriented towards… • executable modelling • large-scale reuse • pattern based design
Statements User Interface Patient Admin Resource Alloc 1:op selects admit in patient 1:dialogue ok hit 2:admit in patient 2: 3:assign bed 3:find a suitable bed 4:bed assigned 4:if bed available then 5:confirm admission 5: confirm admission 6:display dialogue 6: display “success” dialogue U log incident AdmitIn Patient 7: log admission details 8:reject admission 8:else reject admission 9:display dialogue 9: display “failure” dialogue Why an Executable UML ? • Measurable Deliverables • Models that execute tests correctly • Can be delivered in phases with progressive integration • Use case by use case • Class group by class group • Early Verification • Requirements can be validated before extensive system design and coding This supports iterative and incremental development An executable model can be developed and tested even if it supports only a single use case Groups of classes at the collaboration, subsystem, package or domain level can be modelled and executed
Runway Aircraft R9 0..1 0..1 is_ allocated_to deallocate() clearedRunway() # obtain an instance handle for # the runway we just landed on theRunway = this -> R9.”is_allocated_to” # remove the association unlink this R9 theRunway # tell the runway that aircraft has landed [] = deallocate[] on theRunway Why an Executable UML ? • Improves the quality of the modelling • Models can be judged not just on subjective criteria, but on whether they exhibit the desired behaviour and thus meet requirements Does this identify the correct runway to deallocate ? • Focused analyst objective • The aim is to build models that execute correctly • Avoids “analysis paralysis” • Reviews criteria are objective and therefore more useful
GenericContainer GenericClass 0..* 1 HashTable LinkedList BoundedArray <TypicalClass> Why an Executable UML ? • A solid specification • Supports multiple development teams • Well defined models mean well defined interfaces • Easier Transition to Design and Code • No ambiguity in the models - the models have a single clear interpretation • Design can be specified using abstract patterns ..... eliminates maintenance problems due to redundant analysis and design models • Supports extensive code generation if desired • Lack of ambiguity means automatic code generation will deliver functionally correct code
Why an Executable UML ? • and finally ..... It’s more fun ! • Analysts see the results of their efforts more rapidly and have more confidence that what they are doing is correct • Managers get more confidence that progress is being made Round-trip Software Engineering - Quality Assurance Solution / Implementation Problem / Requirement Can miss the solution to the problem?