Section: Scientific Foundations
Components and semantics
The primary foundations of the software component technology developed by Sardes stem from component-based software engineering  , and software architecture  . Both can be traced back to an early vision of systematically produced software  , and are primarily concerned with the construction of software systems by composition or assembly of software components, with well-defined interfaces and explicit dependencies. Nowadays, it is generally recognized that component-based software engineering and software architecture approaches are crucial to the development, deployment, management and maintenance of large, dependable software systems  . Several component models and associated architecture description languages have been devised over the past fifteen years (see e.g.  for an analysis of recent component models,  for a recent comparison of software component models based on a common design problem, and  ,  for surveys of architecture description languages).
To natively support configurability and adaptability in systems, Sardes ' component technology also draws from ideas in reflective languages  , and reflective middleware  ,  (a reflective system is one that maintains a manipulable causally connected representation of itself). Reflection can be used both to increase the separation of concerns in a system architecture, as pioneered by aspect-oriented programming  , and to provide systematic means for modifying a system implementation.
The semantical foundations of component-based and reflective systems are not firmly established, however. Despite much work on formal foundations for component-based systems (see e.g.  ,  for surveys of relevant approaches), several questions remain open. For instance, notions of program equivalence when dealing with dynamically configurable capabilities, are far from being understood. To study the formal foundations of Sardes ' component-based technology, we have adopted a kernel language approach, where we try to model relevant constructs and capabilities in a small language or process calculus, that is simple enough to formally analyze and reason about. This approach has been used successfully for the analysis of concurrency with the -calculus  , or the analysis of object-orientation  . The developments around the -calculus, including behavioral theory and coinductive proof techniques  , process calculi with localities  ,  ,  , and higher-order versions  ,  , provide the background for Sardes ' work on process calculi for component-based programming.