"Babes-Bolyai" University of Cluj-Napoca
Faculty of Mathematics and Computer Science

Component-Based Programming
Code
Semes-
ter
Hours: C+S+L
Type
Section
MI365
1
2+2+0
compulsory
Programare bazata pe componente - în limba engleza
MI365
1
2+2+1
compulsory
Metode formale în programare - în limba engleza
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) know 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

Each week course is a two-hour lecture. The lectures take the form of Powerpoint presentations, available on the Win server. The students are invited to read the course material in advance.

Seminar activities
The first seminars are dedicated to surveying information sources available on Internet and Intranet, and planning of the papers and projects. Seminars 3 to 11 are dedicated to paper presentation, while project demos will be scheduled in the last three seminars
References
1. D'SOUZA, DESMOND FRANCIS - WILLS, ALAN CAMERON: Objects, Components, and Frameworks with UML : The Catalysis Approach, Addison-Wesley, 1999.
2. SZYPERSKI, CLEMENS: Component Software. Beyond Object-Oriented Programming, Addison-Wesley (1st ed. 1998, 2nd ed. 2002).
3. BlackBox Component Builder, [http://www.oberon.ch/BlackBox.html].
4. Component Technology Homepage, [http://www.fja-odateam.com/cop/].
5. Java Platform, Enterprise Edition, Sun Corp., 1999-2004. [http://java.sun.com/j2ee/].
6. Microsoft Component Object Model Technologies, [http://www.microsoft.com/com/ default.mspx].
7. OMG CORBA/IIOP Specifications, [http://www.omg.org/technology/documents/ corba_spec_catalog.htm].
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