Book chapter

Tomáš Bureš, Martin Děcký, Petr Hnětynka, Jan Kofroň, Pavel Parízek, František Plášil, Tomáš Poch, Ondřej Šerý, Petr Tůma
The Common Component Modeling Example: Comparing Software Component Models

This chapter presents our solution to the CoCoME assignment that is based on the SOFA 2.0 (SOFtware Appliances) hierarchical component model. The solution involves (i) modeling architecture in SOFA meta-model, (ii) speci fication of component behavior via extended behavior protocols, (iii) checking behavior compliance of components, (iv) verification of correspondence be tween selected component Java code and behavior specification, (v) deploy ment to SOFA run-time envi ronment (using connectors that support RMI and JMS), and (vi) modeling of performance and resource usage via layered queue ing networks. We faced sev eral issues during implementation of the CoCoME assignment in SOFA 2.0. Most notably, the architecture was modified in order to improve clarity of the design – in particular, the hierarchical bus was re placed by two separate buses and the Inventory component was restructured. Extended behavior protocols for all the components are based on the provided plain-English use cases, the UML sequence diagrams, and the reference Java implementation (the assignment does not include a complete UML behavior specification e.g. via activity dia grams and state charts).

    title = {{CoCoME in SOFA}},
    author = {Bureš, Tomáš and Děcký, Martin and Hnětynka, Petr and Kofroň, Jan and Parízek, Pavel and Plášil, František and Poch, Tomáš and Šerý, Ondřej and Tůma, Petr},
    year = {2008},
    booktitle = {{The Common Component Modeling Example: Comparing Software Component Models}},
    editor = {Rausch, Andreas and Reussner, Ralf and Mirandola, Raffaela and Plášil, František},
    publisher = {Springer Berlin Heidelberg},
    series = {{Lecture Notes in Computer Science}},
    location = {Berlin, Heidelberg},
    doi = {10.1007/978-3-540-85289-6_15},
    isbn = {978-3-540-85289-6},
    pages = {388--417},
    url = {},