The rCOS toolzbchen.github.io/Papers_files/rcostool2008.pdf · 2020. 9. 2. · The rCOS tool?...

10
The rCOS tool Zhenbang Chen 1,2 , Zhiming Liu 1 , and Volker Stolz 1 1 International Institute for Software Technology United Nations University, Macao SAR, China 2 National Laboratory for Parallel and Distributed Processing, China Abstract. The goal of the rCOS tool is to harness state of the art tech- niques from use case- and model driven-development of component-based systems on top of UML. It facilitates both the development process and the persistence of formal verification artefacts in the model: use cases are specified in multiple views, using Class, Sequence and State Diagrams to cap- ture their behaviour. Functionality is specified in rCOS pre-/post-conditions based on UTP. Provably correct refinement steps transform the Require- ments Model into a component-based Design Model. Consistency of the different views is ensured, for example by checking that the State Diagram accepts the protocol specified in the Sequence Diagram. For component composition, protocol compatibility is verified. To that end, either third party tools like the FDR2 model checker are invoked, or annota- tions to code skeletons for additional tools like the Java Modeling Language (JML) are generated. The tool is implemented on top of the Eclipse platform using a UML profile, ensuring compatibility with other UML-based software engineering tools. 1 Introduction The software development process is no longer an activity a single programmer can carry out from beginning to the end. For non-trivial systems, a Use Case-driven approach requires a variety of specification and implementation tasks: based on an informal requirements document, firstly a domain model of the system has to be developed. It is traditionally captured in a Class Diagram for object-oriented languages. Additionally, the behaviour in terms of possible interactions that the system offers to the environment is specified through diagrams like Sequence Diagrams. Internally, the behaviour may be specified in State Machine Diagrams, detailing how the system changes its state when its provided services (usually methods) are invoked. Only after the specification is complete, design of the actual methods is started. Here, ideally also a mathematical or at least platform-independent specification is created first, that is then refined into the platform-specific code. Preferably, some mechanisms like testing or even verification techniques ensure that the implemen- tation fulfills the specifications. A model driven development process [21] should make it easy to evolve and inte- grate changes into the system based on modification of the diagrams: a change in the specification should be propagated automatically downstream until code generation. Repeated testing and/or verification becomes necessary. On top of the object-oriented modeling, another layer of abstraction can be added: components are supposed to facilitate building an application out of prefab- ricated parts that can be used only knowing their specification [25]. Components This work is supported by the projects HighQSoftD and HTTS funded by Macao Science and Technology Development Fund; the 973 Project of China 2005CB321802; the 863 Project of China 2006AA01Z165; and the NSFC Projects 60673114, and 90612009. 15

Transcript of The rCOS toolzbchen.github.io/Papers_files/rcostool2008.pdf · 2020. 9. 2. · The rCOS tool?...

Page 1: The rCOS toolzbchen.github.io/Papers_files/rcostool2008.pdf · 2020. 9. 2. · The rCOS tool? Zhenbang Chen 1 ;2, Zhiming Liu 1, and Volker Stolz 1 1 International Institute for Software

The rCOS tool⋆

Zhenbang Chen1,2, Zhiming Liu1, and Volker Stolz1

1 International Institute for Software TechnologyUnited Nations University, Macao SAR, China

2 National Laboratory for Parallel and Distributed Processing, China

Abstract. The goal of the rCOS tool is to harness state of the art tech-niques from use case- and model driven-development of component-basedsystems on top of UML. It facilitates both the development process andthe persistence of formal verification artefacts in the model: use cases arespecified in multiple views, using Class, Sequence and State Diagrams to cap-ture their behaviour. Functionality is specified in rCOS pre-/post-conditionsbased on UTP. Provably correct refinement steps transform the Require-ments Model into a component-based Design Model.Consistency of the different views is ensured, for example by checking thatthe State Diagram accepts the protocol specified in the Sequence Diagram.For component composition, protocol compatibility is verified. To that end,either third party tools like the FDR2 model checker are invoked, or annota-tions to code skeletons for additional tools like the Java Modeling Language(JML) are generated. The tool is implemented on top of the Eclipse platformusing a UML profile, ensuring compatibility with other UML-based softwareengineering tools.

1 Introduction

The software development process is no longer an activity a single programmer cancarry out from beginning to the end. For non-trivial systems, a Use Case-drivenapproach requires a variety of specification and implementation tasks: based onan informal requirements document, firstly a domain model of the system has tobe developed. It is traditionally captured in a Class Diagram for object-orientedlanguages.

Additionally, the behaviour in terms of possible interactions that the systemoffers to the environment is specified through diagrams like Sequence Diagrams.Internally, the behaviour may be specified in State Machine Diagrams, detailinghow the system changes its state when its provided services (usually methods) areinvoked.

Only after the specification is complete, design of the actual methods is started.Here, ideally also a mathematical or at least platform-independent specification iscreated first, that is then refined into the platform-specific code. Preferably, somemechanisms like testing or even verification techniques ensure that the implemen-tation fulfills the specifications.

A model driven development process [21] should make it easy to evolve and inte-grate changes into the system based on modification of the diagrams: a change in thespecification should be propagated automatically downstream until code generation.Repeated testing and/or verification becomes necessary.

On top of the object-oriented modeling, another layer of abstraction can beadded: components are supposed to facilitate building an application out of prefab-ricated parts that can be used only knowing their specification [25]. Components

⋆ This work is supported by the projects HighQSoftD and HTTS funded by Macao Scienceand Technology Development Fund; the 973 Project of China 2005CB321802; the 863Project of China 2006AA01Z165; and the NSFC Projects 60673114, and 90612009.

15

Page 2: The rCOS toolzbchen.github.io/Papers_files/rcostool2008.pdf · 2020. 9. 2. · The rCOS tool? Zhenbang Chen 1 ;2, Zhiming Liu 1, and Volker Stolz 1 1 International Institute for Software

can be plugged together according to their interfaces. Existing components can berefactored by their designer into smaller components, just like classes.

As component interfaces can contain exceedingly complex contracts that de-scribe their behaviour and interactions, checking the validity of component com-position is by no means trivial. The most prominent example of this concept isprobably Meyer’s “Design-by-contract” [18], which started out specific to the Eiffelprogramming language, but is now also used in other languages such as Java. Whilethe necessity of contracts has been widely realised, there is no unified modeling andverification approach, yet.

The rCOS requirements- and design modeling tool aims to offer an integratedenvironment on top of the Eclipse platform [28] for model driven development ofcomponent-based systems from specification and refinement over to verification andcode generation. The theoretic foundation is the “Refinement of Component andObject Systems” (rCOS) that extends Hoare and He’s Unified Theories of Program-

ming [16, 12, 10].

Various UML [23] diagrams contain the specification of an rCOS requirements

model which is refined into a design model. Static and dynamic consistency of thosemodels is assured by formal methods. For the component model, component compo-sition with contracts based on the rCOS calculus can be verified. The main processof our tool is shown in Fig. 1.

Class Diagram

Sequence Diagram

State Machine

Consistency Check (FDR2)

Contract

rCOS Use Case

Component Diagram

Component Composition

Composition Verification

Code Generation

Refinement

Component

Pre/Post

Problem Description

defined by uses

Fig. 1. The main process of rCOS tool

In the rCOS development process [5], the “component” plays the center role.Different modeling elements of components (Interfaces, Ports, Delegation) can beused to specify use cases at the requirements modeling stage. After requirementsmodeling, the object-oriented design is to be done by applying refinement rules.The logical component-based architecture design is carried out after the object-oriented design stage. The designer composes or decomposes the components withrespect to the nature of the classes and objects in the previous design stage, andthe compatibility of the compositions must be verified. Finally, the code generationand detailed design generates platform dependent code skeletons and may requireimplementation of the significant algorithms in the specification. Our tool currentlysupports the requirement modeling stage, and we are working on the implementationof the refinement rules and verification backends.

16

Page 3: The rCOS toolzbchen.github.io/Papers_files/rcostool2008.pdf · 2020. 9. 2. · The rCOS tool? Zhenbang Chen 1 ;2, Zhiming Liu 1, and Volker Stolz 1 1 International Institute for Software

Related Work. Olderog et al. present CSP-OZ, a formal method combining CSPwith the specification Object-Z, with UML modeling and Java implementations [19].They use a UML profile to annotate the model with additional data. Model prop-erties can then be verified on the CSP, and their notion of contracts of orderingsbetween method invocations through JML and CSPjassda can be enforced on Javaprograms at runtime. Their tool Syspect is also built on the Eclipse Rich ClientPlatform.

The VDM (Vienna Development Method) tool chain [7] and its open-sourcespin-off “Overture” [29] combine object-oriented modeling with the analytic powerof formal methods. Modeling is supported in UML, and code generation is possibleto Java and C++.

TOPCASED [24] is an Eclipse-based open-source toolkit to develop differentmodels, e.g. in UML and make them accessible to analysis and verification by tools.It serves as a “Model Bus” between the different front- and backends for verificationand code generation.

Executable UML [17] introduces a UML profile that gives a suitable semanticsfor direct execution to a subset of UML. As such, it focuses on execution and notformal verification. Use cases and State Diagrams are used, procedures are specifiedin an action language.

Outline. The paper will be organized as follows: Section 2 explains RequirementsModeling in detail and the verification issues arising during the development process; in Section 3, the technical aspects and limitations of the tool are discussed; finally,the conclusion and the future work are given in Section 4.

2 Requirements Modeling

In the requirements modeling stage of Software Development [14], the problem do-main of the use case is analysed and the artefacts of this stage are created.

In the component-based model-driven development process, it lets developersdesign the system at a high level of abstraction from the beginning by using andcreating models or specifications of components. rCOS has a strong notion of compo-

nents that exceed what is usually offered in current programming languages like e.g.Java: a component is an aggregation of classes together with a contract attached toeach component interface, and the contract contains an rCOS protocol specification[1].

Firstly, each use case is taken as a component, and the functionalities of a usecase are modeled as methods in the provided interface of a component. The com-ponent aggregates the relevant classes and their associations taking part in the usecase, and a conceptual class diagram is derived from the problem description. Thismay require some interpretation of the description by a domain expert. We borrowthe term “conceptual” class diagram from Larman [14] to indicate that at this stage,we do not assign visibility to the attributes and assume that they are all public.Also, there are initially no methods except for the controller class implementing theprovided interface. The others will be introduced through refinement steps in laterstages.

Secondly, the sequence diagram illustrates the interaction of the user with thesystem, which will have to conform to the protocol in the component contract. Weallow only a limited use of the UML sequence diagram (collaboration) facility: thereis only one actor (the user) and one process (the system). Messages only flow fromthe user to the system and represent invocations of methods in the component inter-face. Any information that is required for input or output, e.g. presented to the useron a display is implicit and will be modeled in the next stage. We allow the usual

17

Page 4: The rCOS toolzbchen.github.io/Papers_files/rcostool2008.pdf · 2020. 9. 2. · The rCOS tool? Zhenbang Chen 1 ;2, Zhiming Liu 1, and Volker Stolz 1 1 International Institute for Software

control structures such as iteration and conditional branches in the sequence dia-gram. These have controlling expressions in the form of boolean queries or counters.The introduced methods must exist in the component interface and the conceptualclass diagram, and can be created on the fly when adding a new message (this is acommon feature of other graphical modeling tools such as MagicDraw [20] as well).

While the sequence diagram describes the possible interactions with the systemthe user can have, the state diagram describes how the system internally changesstate during execution. Edges in the UML state machine diagram are labelled withan expression of the form g & m(x1, . . . , xn), indicating that this edge may be trig-gered by an invocation of method m iff the guarding expression g is evaluated tobe true. The usual notions of well-formedness for those expressions, e.g. visibilityof attributes, are applied. We allow nondeterminism by having multiple outgoingedges from the same state, each labelled with the same method and potentiallyoverlapping guards for specification purposes, but point it out to the user as po-tentially undesired in the light of a future implementation of the protocol. Thereis a single initial state; we currently do not allow edges without a method. Missingguards are assumed to be true. State labels do not carry any semantics and arejust informative; they may be used e.g. to generate labels in subsequent stages.Choice nodes with a boolean expression allow if-then-else constructs, without suchan expression we treat all alternatives in a non-deterministic internal choice.

Lastly, the logic of actual actions to execute when a method is called is given inthe Functionality Specification. Each method in the control class has its pre-/post-conditions specified in rCOS with the appropriate static checking of syntax, types,etc. The guard of each method can be calculated from the guarding expressions inthe state diagram by the method in [2].

Naturally, there is a close relation between the trace languages induced by thesequence diagram and the state diagram. The state diagram must at least accept theruns of the sequence diagram. Conversely, the problem description should specifyif the state diagram is allowed to offer more behaviour than the sequence diagram.This may also be an issue if synthesis of multiple, related use cases into a single,more complex diagram is considered—at the moment, rCOS does not have thisprovision.

Refinement

A use case in the requirement model can be refined to incorporate sub-use cases.As the result of this, the corresponding component must also be refined to containsub-components. Invariants can be specified for the parent component to constrainits sub-components, e.g. for an office system that both front- and back-office areactually connected to the same database [5]. Fig. 2 is a screenshot of a refinedcomponent view.

Also, the Requirements Model will be refined to a Design Model in variousaspects: through the Expert Pattern [6], methods in the sequence diagram are dele-gated to other classes and their methods. Aggregating multiple classes into a singlerCOS component is also a refinement step.

To apply the Expert Pattern, a new message is derived from a selected messagein the sequence diagram. The new message is inserted immediately after the recep-tion of the selected message, going from the original receiver to the new receiver

(represented as a lifeline different from the original sender) in the diagram. Thenew receiver can either be backed by a (newly introduced) class, or it can refer toan already existing component with the corresponding method in its interface. Thenew message does not need to have the same name or the same arguments as theoriginal message.

18

Page 5: The rCOS toolzbchen.github.io/Papers_files/rcostool2008.pdf · 2020. 9. 2. · The rCOS tool? Zhenbang Chen 1 ;2, Zhiming Liu 1, and Volker Stolz 1 1 International Institute for Software

Fig. 2. Component view screenshot

The functionality specifications are refined to platform-independent code throughfurther transformation steps, except where an entire algorithm has to be developed.This makes use of patterns e.g. to resolve existential or universal quantification inan rCOS specification.

The overall result of this stage is a component model through stepwise refinementthat provably refines the initial Requirements Model. Many of the pre- and post-conditions can then almost trivially be refined into executable (platform-specific)code. Code generation can make use of platform-specific patterns e.g. for collectionclasses handling sets. For a concrete deployment of a system, code generation alsohas to choose either local or remote method invocation for communication.

Verification

The main advantage of the rCOS methodology is that we can automatically as-sure consistency of the multi-view specifications [15], for example by checking traceequivalence or deadlock freedom of the diagrams. We generate appropriate CSP [11]specifications (see [3]) for the FDR2 model checker [8]).

Another aspect of automated verification is component composition, that like-wise we handle through CSP specifications. We can check the provided and requiredcontracts by combining the components through CSP’s alphabetized parallel opera-tion and hiding, which again yields a new component with a new contract [9]. Againwe can check for trace equivalence or deadlock freedom of such a composition inFDR2.

In a related paper, the practicability of generating a PROMELA specificationfor the Spin model checker [32] from rCOS has been investigated. The semantics ofthe rCOS (PROMELA) specification is derived from executing the main method,which also initializes e.g. a concurrent system. The model is executed by the modelchecker for a bounded number of objects and invariants are checked. We intend tointegrate this with the presented tool.

Additionally, the preservation of any application property during modeling aftereach refinement step can be guaranteed by different methods. The correctness of the

19

Page 6: The rCOS toolzbchen.github.io/Papers_files/rcostool2008.pdf · 2020. 9. 2. · The rCOS tool? Zhenbang Chen 1 ;2, Zhiming Liu 1, and Volker Stolz 1 1 International Institute for Software

refinement during the object oriented design stage is guaranteed by the refinementrules that are already proved [10]. The correctness of platform-dependent code gen-eration can be verified by using the techniques of data refinement [13], and staticchecking and runtime verification can be used at the detailed design stage to assurethe correctness of implementation. We have tried JML by manual translation [6],and plan to integrate the JML tool suite with the current tool.

We can thus assure a provably correct model driven development and verificationprocess of a component-based system from design to code generation.

3 Technical Notes

We use UML and Model Driven Development and Architecture (MDD/MDA) tech-niques [21] ourselves to develop our tool. While our tool is not yet complete andmight not be amenable to solve a task which is not use case-driven (like our applica-tion itself), we also apply the discussed techniques to ensure correctness (or ratherincrease trust in a correct design) and validate our design against Software Engi-neering best-practices. In the following, we discuss some of the techniques employedand their limitations.

ComponentRealization

InterfaceRealization

ProcessComponentServiceComponent

ComponentModel

ContractInterface

ContractInterface

NamedElement

RCOSUseCase

UsecaseModel

Collaboration

StateMachine

Composition

Dependency

RCOSModel

Component

Component

ClassModel

Interaction

Delegation

Constraint

Constraint

Constraint Operation

Contract

Usage

Port

Class

ClassPort

0..*

0..*

0..*0..*

UsecaseModel

1

Type

1

0..*

Contract

1

0..*

0..1

0..*

Component1 0..*

ClassModel

1

0..1

0..1

supplier

1..*

client

1..*

0..*

0..*

Interface

0..1

1

ComponentModel

1

0..* 0..*

0..*

1

0..*

2

1

1

Fig. 3. Data model based on UML Profile

For the modelling part, we use UML 2 models and a UML profile to tie togetherthe necessary information, e.g. by assigning which diagrams belong to a use case.The diagrams are bundled in a Package and tagged with “boolean” stereotypes fromthe profile. UML 2 already specifies some stereotypes like those for pre- and post-conditions on methods or guards of state machine diagram transitions. Occasionally,new tags are introduced (see the relations of the top-level RCOSModel stereotype).The profile is documented in Fig. 3. This diagram mixes UML metamodel classes(Port, Component, . . . , dark) with the classes obtained by stereotype application(light). Apart from the collection of diagrams near the top of the diagram, the otherimportant area are the ContractInterfaces attached to components.

Documentation of the profile facilities also turns out to be problematic: due tothe reliance on UML packages to group elements, the Profile Diagram in Fig. 4

20

Page 7: The rCOS toolzbchen.github.io/Papers_files/rcostool2008.pdf · 2020. 9. 2. · The rCOS tool? Zhenbang Chen 1 ;2, Zhiming Liu 1, and Volker Stolz 1 1 International Institute for Software

itself does not contain enough information to serve as documentation. We invitethe reader to compare the actual UML profile in Fig. 4 with the handwritten andmore detailed illustration in Fig. 3—in the former, only the stereotype-informationis preserved, since all modelling elements already present in UML like Use Cases,Classes, etc. may not be repeatedly presented in the UML profile. As virtuallyevery element can go into a UML Package, for example the explicit link in thefirst diagram from a Component Model (a stereotype for a Package) to a ServiceComponent (subtype of Component) is not represented. It is very hard to discoverthe actual profile applications necessary from the rCOS profile when not using ourown graphical tool, which only allows the user to describe conforming models in thefirst place. Conversely, even in our tool we have to enforce more restricted diagramsto be able to assign a meaning in rCOS to them (e.g. not every UML componentdiagram with rCOS stereotypes is a well-formed rCOS component diagram).

Stereotypes are also using in a component diagram to assign rCOS contracts tointerface. Here, we encounter that it is occasionally hard to make rCOS and UMLconverge: ideally, we would like to attach an rCOS contract to the interface. In mostUML modeling tool, you would usually expect to see two components connecting toa single interface. However, due to the notion of a required and a provided interface(the required interface may be a subset of the provided interface), in the graphicalnotation two components cannot share the same UML interface in the diagram, andthus we need to introduce intermediate interfaces that the contracts can be attachedto. Otherwise, it would not be possible to find out which component provides whichcontract (see Fig. 2).

Although this is in itself not much of a problem, it may seem counter-intuitive tothe user. Another issue arises when we need to record data in the model that is notreadily captured in UML terms: if the user wants to associate a handwritten contractwith a component, e.g. given as a regular expression, it needs to be stored in atextual representation (as string) and parsed/serialized as necessary. We expect thisto become necessary more frequently as we introduce the more advanced featuresfrom rCOS like refinement/transformation rules.

This is similar to combining the Java programming language with UML: UMLcaptures the static structure (in the form of a class diagram) easily, but generallycannot give an executable specification of the method bodies.

<<stereotype>>

Delegation

[Dependency]

Interface : ContractInterface<<stereotype>>

ProcessComponent

[Component]

<<stereotype>>

ServiceComponent

[Component]

<<stereotype>>

ComponentModel

[Package]

<<stereotype>>

ContractInterface

[Interface]

<<stereotype>>

UsecaseModel

[Package]

<<stereotype>>

RCOSUseCase

[UseCase]

<<stereotype>>

RCOSModel

[Model]

<<stereotype>>

ClassModel

[Package]

<<stereotype>>

Contract

[Package]

<<stereotype>>

Composition

[Dependency]

ClassModel

1

UsecaseModel

1

ComponentModel

1

Component

1

Contract

1

Fig. 4. rCOS profile diagram

21

Page 8: The rCOS toolzbchen.github.io/Papers_files/rcostool2008.pdf · 2020. 9. 2. · The rCOS tool? Zhenbang Chen 1 ;2, Zhiming Liu 1, and Volker Stolz 1 1 International Institute for Software

Intermediate representations within our application are occasionally based onthe Eclipse Modeling Framework (EMF), allowing us to document or even imple-ment parts of the application in the Object Constraint Language (OCL) [30].

The graphical interface is built on top of TOPCASED [24] (see Related Work).We also try to maintain compatibility with the Eclipse UML 2 Modeling Tools andMagicDraw.

4 Summary and Outlook

We have presented an overview over the rCOS modelling tool for component-basedmodel driven development. Our tool harnesses the power of formal techniques toachieve a (potentially provably correct) use case-driven design process.

Based on UML and UML profiles, an rCOS requirements model is specifieddiagrammatically as a use case with State-, Sequence-, and Class Diagrams. Themodel also contains additional information such as rCOS contracts. Consistencyof the design and component composition is assured by third party tools like theFDR2 model checker. Code generation allows for an easy creation of model- andbehaviour skeletons. The generated code will be augmented by JML annotationsand runtime checks.

As we come to grips with the already existing techniques like OCL, we hopeto use them even in the generated code. In a second step, we hope to be ableto specify our own tool with the tool as a proof of concept—although we expectthat the crucial bits would be within the scope of significant algorithm design, i.e.maintaining and processing data structures. This usually requires high-level toolslike again OCL, but cannot be automated.

For an industrial-strength development process, based on the existing commer-cial model driven development tool MasterCraft [26] we discuss different roles andresponsibilities in the process. In practice, development tasks are already split be-tween managers, designers and programmers, and we propose to implement addi-tional roles taking care of verification and analysis [15].

rCOS specifies a large collection of refinement rules like the Expert Pattern orData Encapsulation that we previously applied manually in a case study [3, 4]. Weintend to implement these rules in the tool.

This is closely related to the field of Model Transformation: We intend to usethe relational model transformation language QVT (for “Query/View/Transforma-tion”, standardized by OMG [22, 27]) to implement the refinement rules [31].

An ongoing topic of research is how those rules affect properties like class in-variants, that might be specified for an rCOS program.

The usability of the tool in combination with the rCOS design methodology willbe validated with students in a summer school. UNU-IIST and the rCOS projecthope to increase the awareness for Formal Methods in teaching and practice throughdissemination of the tool. The tool is freely available as a bundle of Eclipse pluginsfrom http://rcos.iist.unu.edu.

References

1. X. Chen, J. He, Z. Liu, and N. Zhan. A model of component-based programming. InF. Arbab and M. Sirjani, editors, International Symposium on Fundamentals of Soft-ware Engineering (FSEN 2007), volume 4767 of Lecture Notes in Computer Science,pages 191–206. Springer, April 2007. UNU-IIST TR 350.

2. X. Chen, Z. Liu, and V. Mencl. Separation of concerns and consistent integration inrequirements modelling. In J. van Leeuwen, G. F. Italiano, W. van der Hoek, C. Meinel,H. Sack, and F. Plasil, editors, SOFSEM 2007: 33rd Conference on Current Trends in

22

Page 9: The rCOS toolzbchen.github.io/Papers_files/rcostool2008.pdf · 2020. 9. 2. · The rCOS tool? Zhenbang Chen 1 ;2, Zhiming Liu 1, and Volker Stolz 1 1 International Institute for Software

Theory and Practice of Computer Science, volume 4362 of Lecture Notes in ComputerScience, pages 819–831, Harrachov, Czech Republic, January 2007. Springer.

3. Z. Chen, A. H. Hannousse, V. H. Dang, I. Knoll, X. Li, Z. Liu, Y. Liu, Q. Nan, J. Okika,A. P. Ravn, V. Stolz, L. Yang, and N. Zhan. Modelling with relational calculus of objectand component systems – rCOS. Technical Report 382, UNU/IIST, P.O. Box 3058,Macao, 2007. To appear in the LNCS volume of The Common Component ModelingExample: Comparing Software Component Models.

4. Z. Chen, X. Li, Z. Liu, V. Stolz, and L. Yang. Harnessing rCOS for tool support -the CoCoME Experience. In C. B. Jones, Z. Liu, and J. Woodcock, editors, FormalMethods and Hybrid Real-Time Systems, volume 4700 of Lecture Notes in ComputerScience, pages 83–114. Springer, 2007. UNU-IIST TR 383.

5. Z. Chen, Z. Liu, A. P. Ravn, V. Stolz, and N. Zhan. Refinement and verification incomponent-based model driven design. Technical Report 388, UNU/IIST, P.O. Box3058, Macao, 2007. Submitted to Science of Computer Programming.

6. Z. Chen, Z. Liu, V. Stolz, L. Yang, and A. P. Ravn. A refinement driven component-based design. In 12th International Conference on Engineering of Complex ComputerSystems (ICECCS 2007), pages 277–289. IEEE Computer Society, July 2007.

7. J. Fitzgerald, P. G. Larsen, P. Mukherjee, N. Plat, and M. Verhoef. Validated Designsfor Object–oriented Systems. Springer, New York, 2005.

8. Formal Systems (Europe) Ltd. FDR2 User Manual, 2005.

9. J. He, X. Li, and Z. Liu. A theory of reactive components. Electr. Notes Theor.Comput. Sci., 160:173–195, 2006.

10. J. He, Z. Liu, and X. Li. rCOS: A refinement calculus of object systems. Theor.Comput. Sci., 365(1-2):109–142, 2006. UNU-IIST TR 322.

11. C. Hoare. Communicating Sequential Processes. Prentice-Hall, 1985.

12. C. Hoare and J. He. Unifying Theories of Programming. Prentice-Hall, 1998.

13. C. A. R. Hoare, J. He, and J. W. Sanders. Prespecification in data refinement. Inf.Process. Lett., 25(2):71–76, 1987.

14. C. Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysisand Design and the Unified Process. Prentice-Hall Intl., 3rd edition, 2005.

15. Z. Liu, V. Mencl, A. P. Ravn, and L. Yang. Harnessing theories for tool support.International Symposium on Leveraging Applications of Formal Methods, Verifica-tion and Validation (ISoLA06), Full version as UNU-IIST Technical Report 343,http://www.iist.unu.edu, August 2006.

16. Z. Liu, A. P. Ravn, and V. Stolz. the rCOS Method in a Nutshell. In VDM workshop,2008.

17. S. Mellor and M. Balcer. Executable UML: A foundation for model-driven architecture.Addison Wesley, 2002.

18. B. Meyer. Applying ”Design by Contract”. Computer, 25(10):40–51, 1992.

19. M. Moller, E.-R. Olderog, H. Rasch, and H. Wehrheim. Integrating a formal methodinto a software engineering process with UML and Java. Formal Aspects of Computing,2007.

20. NoMagic, Inc. Magicdraw. http://www.magicdraw.com.

21. Object Management Group. MDA Guide, 2003. http://www.omg.org/cgi-bin/doc?omg/03-06-01.

22. Object Management Group. MOF QVT final adopted specification, ptc/05-11-01.http://www.omg.org/docs/ptc/05-11-01.pdf, 2005.

23. Object Management Group. Unified Modeling Language: Superstructure, version 2.0,final adopted specification, 2005. http://www.omg.org/uml/, formal/05-07-04.

24. N. Pontisso and D. Chemouil. TOPCASED Combining Formal Methods with Model-Driven Engineering. In ASE ’06: Proceedings of the 21st IEEE/ACM InternationalConference on Automated Software Engineering, pages 359–360, Washington, DC,USA, 2006. IEEE Computer Society.

25. C. Szyperski. Component Software: Beyond Object-Oriented Programming. Addison-Wesley, 1997.

26. Tata Consultancy Services. Mastercraft. http://www.tata-mastercraft.com/.

27. Tata Consultancy Services. Modelmorf. http://www.tcs-trddc.com/ModelMorf/.

28. The Eclipse Foundation. Eclipse. http://www.eclipse.org/.

23

Page 10: The rCOS toolzbchen.github.io/Papers_files/rcostool2008.pdf · 2020. 9. 2. · The rCOS tool? Zhenbang Chen 1 ;2, Zhiming Liu 1, and Volker Stolz 1 1 International Institute for Software

29. The Overture Community. Open-source Tools for Formal Modelling.http://www.overturetool.org.

30. J. Warmer and A. Kleppe. The Object Constraint Language: precise modeling withUML. Addison-Wesley, 1999.

31. L. Yang, V. Mencl, V. Stolz, and Z. Liu. Automating correctness preserving model-to-model transformation in MDA. In Proc. of Asian Working Conference on VerifiedSoftware, UNU-IIST Technical Report 348, 2006. http://www.iist.unu.edu.

32. X. Yu, Z. Wang, G. Pu, D. Mao, and J. Liu. The verification of rCOS using Spin. InG. Pu and V. Stolz, editors, 1st Workshop on Harnessing Theories for Tool Supportin Software, 2007. To be published as ENTCS.

24