Hide menu

TDDD05 Component-Based Software

Course information and literature

The course gives an introduction into theory, methods and systems for component-based design and development.


The Study Guide describes the goals for this course as

After this course, students should be able to
  1. describe technical platforms, conditions for and challenges with the development of larger, component-based software systems
  2. Describe component models and application platforms such as, for example, Enterprise Java Beans, OSGi, CORBA and Web Services
  3. Relate industrial and theoretical issues in the development of larger, component-based software systems to contemporary software development methods and techniques such as aspect-oriented programming and model-based development
  4. Analyze and critically evaluate a technical platform for component-based software development and relate its properties to Software Engineering research.
These goals are specific goals derived from the general goals stated in the Higher Education Ordinance Annex of Qualifications contains the following excerpts on the requirements of a student who receives the degree of Master of Science in Engineering:

[Students should be able to]:
  1. demonstrate knowledge of the disciplinary foundation of and proven experience in his or her chosen field of technology as well as insight into current research and development work, and
  2. demonstrate both broad knowledge of his or her chosen field of technology, including knowledge of mathematics and the natural sciences, as well as a considerable degree of specialised knowledge in certain areas of the field.
  3. demonstrate the capacity for teamwork and collaboration with various constellations, and
  4. demonstrate the ability to present his or her conclusions and the knowledge and arguments on which they are based in speech and writing to different audiences in both national and international contexts.
  5. demonstrate the ability to create, analyse and critically evaluate various technological solutions

Course description

The emphasis in this course is on reading and viewing material on component-based software techniques, provide summaries of reaserch papers read, learn about techniques for building component-based software and provide a tutorial for other students on a chosen topic. The justification for this organization of the course is that the topic of component-based design, and software architectures, is a topic that will require you to reason about larger systems and methods for building them, using knowledge from research papers rather than the limited hands-on experiences you would gain by performing lab work. It is assumed that you have some proficiency in reading scientific papers in the area of software engineering, and you will train that ability extensively in this course. It is imperative that you train yourselves in understanding contemporary research in software engineering in preparation for your thesis projects, and the area of component-based software development is a recent research area that lends itself particularly well to this type of course.

However, as a complement to reading research papers, and to provide an illustration of some of these concepts in component-based software development, the course features a series of lab assignments in Java Reflection, and a component framework.

See the lab page for more information and registration.

Assessment and grading

The first two (and partly the third) goals of the course will be assessed through a series of hand-in assignments and seminars (UPG2). Before each seminar, there will be assignments for you to provide summaries of research papers and as part of the seminars, you will present the contents of the research papers to the other students.

Goals 3 and 4 will be assessed through a series of lab assignments, where the last assignment will determine your grade in the course. You will have the chance to

Course organization

The course has an introductory lecture, but is apart from that organized around a set of seminars at which you will discuss suggested solutions to a number of questions on the topics of the course. For hands-on experience with some of the techniques relevant to building component-based software, the course also features a number of lab sessions. Apart from this, you are encouraged to ask for assistance if you require to help you preparing for the seminars. We will be able to arrange informal meetings or meetings in the whole class if you so wish.

Page responsible: Ola Leifler
Last updated: 2015-02-18