Chapter 19 Industrial Experience with Dassault Système Component Model Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 1 Overview Introduction The OM Component Model Discussion Lessons Learned Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 2 Introduction CATIA Dassault Systèmes main software product 5 millions lines of code 19 000 clients 180 000 work places 50000 C++ classes 8000 components Object Modeller: Own component model Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 3 Dassault Systèmes The DS objective was not primarily: To sell isolated OM components. To sell the OM component framework. To make their component model a standard. The primary objective was: To find a way to develop its software under the best conditions, and to provide to its customers with powerful adaptability facilities. Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 4 The OM Component Model The OM is quite similar to COM. Interfaces: a set of method signatures Component may support more than one interface. Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 5 External view of OM components Interfaces OM components Other software entities Dependencies (a) External view of an OM component (b) Heterogeneous application Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 6 Using OM Components to Build Applications In practice, there is no boundary between traditional development and component-based development. DS applications are hybrids. There is a Lack of support for explicit connections and assembly facilities. DS does not aim to sell components, but extensible applications. Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 7 Component implementation Interfaces Bases Extensions Component inheritance ? c c Component implementation ? Delegation Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 8 Implementations DS components are typically developed by different teams in different companies. Components are in fact a collection of elementary pieces of code, called implementations. Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 9 Extensions Has two kinds of implementations: Base implementations and extensions. A component is defined by a base implementation. An extension has two advantageous properties: It does not change the identity of the component being extended. It does not change the code of the component being extended Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 10 Component inheritance Single inheritance Inherits all its interfaces and all its implementations. Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 11 Conditional interfaces The interface will be returned to the client only if this expression evaluates to true. 2D or 3D Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 12 Discussion Has not develop a new language: The OM can be seen as a layer superimposed on the C++ language. Interfaces and implementations are represented as C++ classes. OM constructions are indeed represented as code patterns and macros in C++ source code. Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 13 Different Kinds of Architecture Frameworks Dependency OM elements Other entities (a) Physical architecture (b) OM components vs. frameworks Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 14 Framework Evolution A good component framework: Satisfies development / maintenance needs. Is easily mastered and understood by developers. It is incorrect to believe that if a concept is simple, its use will also be simple: “goto” and pointers AddRef and Release Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 15 Evolution An incremental process. Model evolved permanently while CATIA software was in development. Required different concepts and constructs to coexist, which created problems. A bug may be due to: Faulty implementation of the concept, Undefined semantic hole Inherent complexity. Specific training courses should be employed to ensure the correct use of the component model. Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 16 Industrial Perspective Should Connectors be regarded as first class citizens? Reexamination of the definitions of: Connectors Behavior Architecture Components Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 17 Summary The design of a powerful component model is shown to be a complex task. The model has improved progressively over the years. Very large systems must live with inconsistencies. Training is needed to prevent misuse. Tools for tracking invalid constructions. We have still to invent the CBSE environments of the future. Building Reliable Component-based Systems Chapter 19 - Industrial Experience with Dassault Système Component Model Page 18