Component Based Software Engineering
This course, led by Dr. Ioana Șora, delves into the fascinating realm of Component-Based Software Engineering (CBSE). It aims to uncover the "holy grail" of software design by emphasizing the advantages of using software components as reusable entities. Participants will learn to construct applications as assemblies of "software integrated circuits" while exploring crucial concepts such as abstraction, encapsulation, and dynamic composition. The course covers key principles, industry standards, and practical applications, complemented by various readings and lab assignments.
Component Based Software Engineering
E N D
Presentation Transcript
Master of Software Engineering + Master of Information Technology 2010/2011 Conf.dr.ing. Ioana Șora http://www.cs.utt.ro/~ioana/cbse Component Based Software Engineering
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 Application1 C1 C1 Application2 C1 Software “integrated circuits” are reusable entities It pays off to have as many applications that reuse an entity
Advantage 3: Maintenance & Evolution C1new C1 Application update Maintenance and upgrading can be done by replacing parts, maybe even at runtime
What are the “Entities” to compose ? 1960 1968: Douglas McIlroy: “Mass Produced Software Components” • Functions • Modules • Objects • Components • Services • … 1970 1980 1990 1998: Clemens Szyperski: “Component Software – Beyond Object Oriented Programming” 2000 2010
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/column5/ • Roger Sessions: “Fuzzy Boundaries – Objects, Components and Web Services”, in ACM Queue Magazine, 2005. http://queue.acm.org/detail.cfm?id=1039533 • Doug McIlroy, Mass Produced Software Components, 1969. http://cm.bell-labs.com/cm/cs/who/doug/components.txt
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 Environment: the hosting runtime environment for the Entity and the Client (Examples: Microsoft .NET, WebSphere EJB) From [ACM Queue]
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]
Reusable Entitiesmade more usable and more composable • Issues: • Interface description – what should contain a complete description ? • Composition – how are components glued together ? (do I have to write much glue code ?) • 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
Course Outline • Reuse • The broad reuse landscape • Components • Basic concepts in CBSE • Modelling components with UML 2.0 • Component Models and Technology • Short overview of industry standards • Architectural components • Case study: the Fractal component model • 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
Bibliography • No single textbook ! • Specific chapters from various books • Ian Sommerville, Software Engineering, 8th 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 • Active research field: The ACM CBSE conferences series: http://cbse-conferences.org/2012/ • Important: the course webpage: http://www.cs.utt.ro/~ioana/cbse • Slides • Bibliographic pointers per each topic • Lab assignements • Announcements