Component Based Software Engineering Master of Software Engineering
Component Based Software Engineering Master of Software Engineering + Master of Information Technology 2010/2011 Conf. dr. ing. Ioana Șora http: //www. cs. utt. ro/~ioana/cbse
Introduction • What is this course about ? – A journey in searching for the “holy grail” of software “integrated circuits”
Introduction • What is this course about ? – A journey in searching for the “holy grail” of software “integrated circuits”
Advantage 1: Software construction Application Software construction vs. creation: application is developed as an assembly of “integrated circuits”
Advantage 2: Reuse Application 1 Application 2 Software “integrated circuits” are reusable entities It pays off to have as many applications that reuse an entity
Advantage 3: Maintenance & Evolution Application update Maintenance and upgrading can be done by replacing parts, maybe even at runtime
What are the “Entities” to compose ? • Functions • Modules • Objects • Components 1960 1970 1980 1990 2000 • Services • … 1968: Douglas Mc. Ilroy: “Mass Produced Software Components” 2010 1998: Clemens Szyperski: “Component Software – Beyond Object Oriented Programming”
Introductory Reading • Mahesh Dodani: “From Objects to Services: A Journey in Search of Component Reuse Nirvana”, in Journal of Object Technology, 2004. http: //www. jot. fm/issues/issue_2004_09/column 5/ • Roger Sessions: “Fuzzy Boundaries – Objects, Components and Web Services”, in ACM Queue Magazine, 2005. http: //queue. acm. org/detail. cfm? id=1039533
Fuzzy Boundaries: Objects, Components, Services Example: plain Java Class From [ACM Queue]
Fuzzy Boundaries: Objects, Components, Services Modern frameworks, compilers and IDE’s make it very easy to: Transform Dog Class into a Distributed Component or Transform Dog Class into a Web Service Problem: this power of transformation creates fuzzy boundaries between concepts From [ACM Queue]
Principles for reuse by composition • Key requirements for Black-Box reuse: – – Abstraction: an “Entity” is known by its “interface” Encapsulation: the “insides” of an “Entity” are not exposed to the outside
Commonalities of Reusable Entities • All are blobs of code that can do something • All have interfaces that describe what they can do. • All live in a process somewhere. • All live to do the bidding of a client. • All support the concept of a client making requests by “invoking a method. ” From [ACM Queue]
Reusable Entities by Location and Environment: the hosting runtime environment for the Entity and the Client (Examples: Microsoft. NET, Web. Sphere EJB) From [ACM Queue]
From [ACM Queue]
From [ACM Queue]
From [ACM Queue]
Reusable Entities made more usable and more composable • Possible additional features: • Interface description – what should contain a complete description ? • Discovery – where and how to find the component/service you need ? • Dynamic aspects – when to do discovery/selection/composition • Less stress on binary implementation – crossing platform/model boundaries
Objects-Components-Services Entities for Reuse and Composition • Abstraction • Encapsulation Objects • Location: same process • Inheritance • Polymorphism Components • Location: different processes, same environment • Usually some runtime infrastructure needed • No state • No shared variables • No implementation inheritance Services • Location: different environments • More emphasis on interface/contract/service agreement • Mechanisms for dynamic discovery • Dynamically composable
Course Outline • Reuse • • The broad reuse landscape Components • • • Basic concepts in CBSE Modelling components with UML 2. 0 Component Models and Technology • Case studies: Open. COM, Fractal component models • Overview of industry standards • Component contracts • Component specification techniques • Component integration vs Predictable composition • Services • • Key concepts in service oriented computing Web Services as an example in SOC Service composition Service choreography and orchestration
Bibliography • No single textbook ! • Specific chapters from various books – Ian Sommerville, Software Engineering, 8 th edition, chapters 18, 19, 31 – Ivica Crnkovic, Magnus Larsson. Building reliable component based software systems, Artech House, 2002. chapters 1, 2, 4, 9 • Articles and technical reports • Important: the course webpage: http: //www. cs. utt. ro/~ioana/cbse – – Slides Bibliographic pointers per each topic Lab assignements Announcements
- Slides: 20