- To understand and analyze the quality of a software system (and more specifically, its maintainability) ;
- To understand the nature of some of the problems encountered when maintaining complex software systems ;
- To suggest appropriate solutions to improve reusability and maintainability of a software system, measure its quality and support its evolution ;
- To program in Smalltalk, a pure object-oriented programming language.
Main themes
- "Best practices" of object-oriented programming ;
- Reuse techniques and application frameworks ;
- Software measures and metrics ;
- Version management : variants, revisions, configurations ;
- Software comprehension and reverse engineering ;
- Software reengineering and restructuring ;
- The use of variety of tools that support some of the above activities.
Content and teaching methods
The theoretical aspects that will be introduced in the theory sessions will be put in practice during "hands-on" practical sessions in one of the computer rooms. A single software application will be developed throughout the different practical sessions, and the techniques taught in the theory course will be tested on this application. The course evaluation will be an assignment where the students are asked to applied the learned techniques on a software application of their choice, more specifically to analyze the qualities of this application (and its maintainability in particular) and suggest possible improvements to that application.
Other information (prerequisite, evaluation (assessment methods), course materials recommended readings, ...)
Prerequisites
Although having followed the course "INGI2251 - Génie logiciel: méthodes de développement" can be beneficial for this course, it is not a prerequisite for following or succeeding this course.
Support
The theory course relies on several books, such as :
* N.E. Fenton and S.L. Pfleeger, " Software Metrics: A Rigorous and Practical Approach", 2nd edition, Thomson Computer Press, 1996.
* K.Beck, "Smalltalk Best Practice Patterns", Addison-Wesley, Prentice Hall, 1996
* M. Fowler, "Refactoring, Improving the Design of Existing Code", Addison-Wesley, 1999
The course slides as well as the practical session guides and other practical information related to the course will be accessible on iCampus http://www.icampus.ucl.ac.be/INGI2252/
This will also be the preferred means of communication between the teacher(s) and the students.
Evaluation
Each student will carry out a small project during the semester, and summarise the results of this project in a scientific report. The final mark of this course will be based on the results reported on, the quality of the report and (if necessary) an oral project defence organised during the exam session. This defence (where the report will be discussed with the student) will be the only oral evaluation for this course.
Conditions for participating in the exam (= project defense) in June or September: having submitted the project report within the deadline imposed by the teacher.
For the exam of September, the mark obtained in June will not be considered. However, the student will be asked to conduct a project (and write an associated report) of the same complexity and size as in June.