Babes-Bolyai University of Cluj-Napoca
Faculty of Mathematics and Computer Science
Study Cycle: Master

SUBJECT

Code
Subject
MID1001 Component-Based Programming
Section
Semester
Hours: C+S+L
Category
Type
Component-Based Programming - in English
1
2+1+1
speciality
compulsory
Teaching Staff in Charge
Prof. PÂRV Bazil, Ph.D.,  bparvcs.ubbcluj.ro
Aims
At the completion of this course, the students will be able to:
a) have a systematic knowledge about fundamentals of component-based programming;
b) have a good understanding of the following terms: component, interface, polymorphism;
c) feel the similarities and differences between component-based programming and object-oriented programming in the frame of inheritance and composition issues;
d) understand the importance of component's scale, granularity, and architecture aspects;
Content
1. Software component definition
1.1. Basic terms: software component, object, module, interface, software reuse
1.2. Standardization issues
2. Components, interfaces, re-entrance
2.1. Different interface types for components
2.2. The constituents of a contract
2.3. The client-server relation in procedural-, object-, and component-based systems
2.4. Components and distributed systems
3. Polymorphism
3.1. The data type concept in a programming language context
3.2. Type extensibility and software component@s independent extensibility
3.3. Safety issues in component-based systems
3.4. Interface and contract evolution
4. Ways of implementing polymorphism
4.1. Kinds of inheritance
4.2. Using inheritance: advantages and pitfalls
4.3. Interface inheritance
4.4. Delegation, composition, inheritance, and polymorphism
5. Components: scale and granularity
5.1. How components affect the software development process
5.2. Components and the software development: old and new issues
5.3. Execution issues in component-based systems
5.4. Maintenance issues in component-based systems
6. Architecture issues in component-based systems
6.1. Ways of reusing components
6.2. Classifying components with respect to the way of reusing them
6.3. Design patterns
6.4. Frameworks
6.5. Software architecture in component-based systems
7. Programming styles in a component world.
7.1. Connexion-oriented programming
7.2. Events and messages
7.3. Dispatch interfaces and metaprogramming
7.4. Scripting
8. Wiring models for software components
8.1. Wiring models: general features
8.2. OMG CORBA, OMA
8.3. Sun Java: JavaBeans, Enterprise Java Beans
8.4. Microsoft: COM, ActiveX, COM+, .NET


Seminar activity
S1- The survey of information sources available on Internet and Intranet
S2 - Planning of the working papers
S3 - S14 - Presentation of the working papers, with the following topics
1. Software components and their economical impact. Component markets.
2. Alternative definitions of software components.
3. Ways of specifying interfaces
4. Callbacks and contracts
5. Communication between components
6. Types, subtypes, and type checking
7. Safety issues in a component-based system
8. Component extensibility issues
9. The fragile base class problem
10. Approaches to disciplined inheritance
11. Class and object composition
12. Components and software reuse
References
1. Michael Barnes, Component Road Map. A Hurwitz Group White Paper, 1997, http://hurwitz.harvard.net/component.html.
2. Component Technology Homepage, http://www.odateam.com.
3. Rich Levin, Components on the Track, 1998, http://techweb.cmp.com/iw/663/63iucmp.htm.
4. Bob Orfali, Dan Harkey, Jeri Edwards, The Essential Distributed Objects Survival Guide, Wiley, 1996.
5. Cuno Pfister, Component Software: A Case Study using BlackBox Components, http://www.oberon.ch/docu/case_study/index.html.
6. Keith Short, Component Based Development and Modeling, Sterling Software 1997, http://www.cool.sterling.com/whitepaper/coverpg.htm.
7. Clemens Szyperski, Component-Oriented Programming - A Refined Variation on Object-Oriented Programming, The Oberon Tribune No 1/2, December 1995.
8. Clemens Szyperski, Component Software. Beyond Object-Oriented Programming, Addison-Wesley 1998.
Assessment
The final mark will cover lab work (i.e. completing a project) and research work (preparing a research paper), as well as the written exam results. It is computed as follows, on a 10-point scale:
1pt by default
1pt seminar/lab attendance
2pts the project
2pts the paper
4pts the written exam.
Links: Syllabus for all subjects
Romanian version for this subject
Rtf format for this subject