PBr

Component models and architectures

lang:cz “Komponentové modely a architektury” version: 2019

This is a course for PhD students. The objectives are

  1. learn both the fundamentals and state of the art in software architectures, components, services
  2. have practical experience with modeling and using component models

Synopsis: The variants of meaning for the terms “component”, “connector”, “component model”, “service”. Their fundamental characteristics, and the practical consequences thereof. Descriptions of interfaces, the levels of contract they represent, related modeling concepts and formal notations. Modeling component applications, models and meta-models. Case studies and analysis of particular models and systems.

Requirements for passing the course

A) Reading

  1. papers: required, at least 3 of
    • Parnas, D. L. On the Criteria to be Used in Decomposing Systems into Modules. Communications of the ACM, 1972 (this is an old classic on basic modularity, still relevant today)
    • Brada, P. A Look at Current Component Models from the Black-box Perspective. Proceedings of 35th Euromicro Conference on Software Engineering and Advanced Applications, IEEE Computer Society, 2009
    • Bachmann, F., Bass, L., Buhman, C., Comella-Dorda, S., Long, F., Robert, J., Seacord, R. and Wallnau, K., 2000. Volume II: Technical concepts of component-based software engineering (pp. 26-29). Technical Report CMU/SEI-2000-TR-008, Carnegie Mellon Software Engineering Institute.
    • Beugnard, A.; Jézéquel, J.-M.; Plouzeau, N. & Watkins, D. Making Components Contract Aware. Computer, IEEE Computer Society Press, 1999, 32, 38-45
    • Brada, P.: Habilitation thesis (digest)
    • ... plus any other papers as agreed, based on student's concrete topics of research
  2. meta-analysis of components: required, at least one of
    • Brada, P., and Snajberk, J. ENT: A generic meta-model for the description of component-based applications. Electronic Notes in Theoretical Computer Science, 279(2), pp.59-73.
    • Medvidovic, N. & Taylor, R. N. A Classification and Comparison Framework for Software Architecture Description Languages. IEEE Transactions on Software Engineering, 2000, 26, 70-93
    • Lau, K.-K. & Wang, Z. Software Component Models. IEEE Transactions on Software Engineering, IEEE Computer Society, 2007, 33, 709-724
    • Ivica Crnković, Séverine Sentilles, Aneta Vulgarakis, Michel R.V. Chaudron, A Classification Framework for Software Component Models. IEEE Transactions on Software Engineering, 07 Sept. 2010. IEEE computer Society
  3. (for Czech students, optional) tutoriál o programování komponent na Wiki KIV
  4. technical articles, optional:
  5. books: optional, one of
    • Szyperski – chapters (1,3,) 4,5,6, (7.3-7.4), 8, (9), 11, 17, (19), 21.1+21.2
    • Crnkovic et al – chapters 1-4, 6, (8), 9, (10), (11, 13)

B) Analysis of one component or service framework

The framework to analyze is to be discussed. The analysis should answer the following questions:

  • how the foundational concepts are named, used (or not used), mapped in the framework
  • what is the meta-model of the framework’s component or service model
  • which research papers describe, analyze or evaluate the framework (via IEEE Digital Library, ACM DL, Springer and also Google Scholar).
  • show concrete examples of the concepts in the framework terms and specification/implementation technologies

The result of this analysis will be handed in as a UML model (in a common CASE tool) or as EMF model file.

C) Summary report and presentation

The findings as per A) and B) will be summarized in a 10-20 page report, an implementation project, and a 20-minute presentation for the research group.

Resulting knowledge and experience

You should know and be able to explain, to a considerable depth and augmented with concrete examples, the following terms:

  • component, connector, component model, component framework
  • interface, port, contract, assume-guarantee principle
  • principle of compositionality, relation to component specification

You should be able to

  • analyse a software architectural framework using disparate sources (specification, models, source code, ad-hoc tutorials, research papers)
  • create the model of the framework, mapping its terminology to the above terms, correctly capturing all framework’s aspects
  • explain -- in expert terms -- the similarities, and differences, of a chosen technology/framework to other ones

and give detailed, technically correct answers to the following examination topics:

  1. Component, Connector, Service as elements of software architecture, definitions and variants of meaning of the terms. Fundamental characteristics (properties) of these elements, their practical consequences.
  2. The notion of component model and framework, relation between component and model. Examples of technologies which realize component models or their concepts.
  3. Component and service interfaces, their different roles and kinds, the levels of contract they represent, related modeling concepts, descriptive and formal notations.
  4. Composition of components and services. Assume-guarantee principle, compositionality. Basic principles of checking contract compliance.
  5. Modeling software architectures and component applications, relation between models and meta-models. Architecture description languages, modeling notations.

Potentially relevant related sources

Software product lines

  • Clements, Paul, and Linda Northrop. Software product lines. Boston: Addison-Wesley, 2002.
  • Assunção et al. (2017). Reengineering legacy applications into software product lines: a systematic mapping. Empirical Software Engineering, 22(6), 2972–3016. https://doi.org/10.1007/S10664-017-9499-Z/FIGURES/11