- Understand and explain the various problems raised in the development of large-scale, complex software systems. Understand and explain the various qualities such systems should exhibit.
- Understand and explain the various types de product and process involved along the software engineering lifecycle.
- Assess the impact of the decisions made at the various steps of this lifecycle.
- Understand and apply typical approaches for engineering software requirements and for modeling, specifying, designing, validating, and documenting high-quality software.
Main themes
- The software lifecycle: products and processes.
- Introduction to requirements engineering: eliciting, modeling, specifying, analysing, and documenting software requirements.
- Introduction to architectural design: logical vs. physical architecture; hierarchical structuring, modularisation; styles and architectural patterns.
- Specifying modules as work units. Formal specification.
- Test case design for black-box, white-box, and integration testing.
- Documenting decisions at each development step.
Content and teaching methods
The course is strongly coupled with the development of a large-scale project, by teams, according to the techniques studied (see INGI2255 : Software Engineering Project).
It is organized intensively during the very first weeks of the quadrimester to allow the project to start promptly. Subsequent teaching sessions are organized episodically as the various development steps require them.
Quizzes are organized regularly to check whether each individual student in a team is working properly. Case study sessions are also scheduled to show how the techniques can be used in another, smaller-size project.
The course exercises (2 ECTS) are fully integrated in INGI2255 (Software Engineering Project, 5 ECTS). This introduction to software engineering thus corresponds to a global load of 10 ECTS, that is, third-time work throughout the whole quadrimester.
Other information (prerequisite, evaluation (assessment methods), course materials recommended readings, ...)
- Prerequisite:
(1) The student should have taken an introductory course in logic and in programming techniques, similar to:
INGI2101- Discrete Maths: Logical Foundations of Computing Science.
LINF2121 - Algorithmics and Data Structures.
(2) The student should also have successfully completed a programming-in-the-small project in the past.
- References:
(1) Course lecture notes.
(2) A. van Lamsweerde, Requirements Engineering, Wiley, 2009
(3) F. Brooks, The Mythical Man-Month, Addison-Wesley, 1995..
(4) S. Pfleeger, Software Engineering: Theory and Practice, 2nd Edition, Prentice-Hall, 2001.
- Evaluation :
Quizzes during the quadrimester and written exam at the end.
- Remark:
See also http://www.info.ucl.ac.be/Enseignement/Cours/INGI2255/