> Home

> Lectures

> Projects

1. Introduction in Software Engineering

This introductory lecture contains general information about basic concepts with which I will operate in the rest of the course: software, software engineering, software process, software process model. I define here the structure of the course, prerequisites and the grading policy.

Slides

2. Software processes

Common activities of software processes are defined. A few general models of software processes are explained and CASE tools are introduced.

Slides

3. Requirements

Software requirements define the services that must be delivered and the basic operational constraints that the software must obey. As an activity of the software processe, the requirements engineering ends with a document that defines a contract and may have legal significance.

Slides

4. Requirements engineering

Elicitation of requirements is a complex task; methods exist for doing it systematically and efficiently. I will describe the most important topics in requirements gathering, analysis, management.

Slides

Remark: The deadline for your first delivery,

   The Requirements Document

has been set: April 27.

5. System models

System models are graphical representations of the business process, of the problem to be solved and of the system to be implemented. I will introduce some of the most generic types of models: behavioural models, object models and data models.

Slides

6. Software architecture

During the phase of architectural design, the main sub-systems of the software being developed are identified and the control and communication among them are established.

Slides

7. Application architectures

I introduce here models for some specific classes of applications: data-processing, transaction-processing, event-processing and language-processing applications.

Slides

8. Design approaches

Topics from object-oriented design are covered in this lecture. I introduce terms necessary for understanding the principles of objectual approaches to design: object, class, interfaces, concurrency, communication, threads and processes.

Slides

Remark: The deadline for your second delivery,

   A set of system models

has been set: May 25.

9. Design: Decomposition and Decoupling

A program is a collection of parts. I discuss some concepts necessary for identifying these parts - decomposition - and for reducing dependencies among them - decoupling.

Slides

10. Design patterns

Some of the most commonly used patterns in object-oriented design are presented. Besides the general patterns provided by object-oriented programming and design (inheritance, encapsulation), I introduce a few creational, structural and behavioural patterns.

Slides

11. Design document. Coding

In the first part of the lecture, a general template of the design document will be presented. In the second part, some topics on coding conventions will be discussed.

Slides

Remark: The deadline for your third delivery

   A prototype of your application (source code) and the class documentation

has been set: June 22.

12. Validation and Verification

The quality of software must be built from the start. Testing can help to assess it and can increase the quality of the final product. I will talk about some approaches for software verification and validation.

Slides

13. Deployment and maintenance

The work on software does not end when the product is "ready". It must be installed on customer’s hardware, configured and maintained. Faults, weaknesses, adaptations and requests for new features must be solved as soon as the user reports them.

Slides

Remark: The deadline for your fourth delivery

   The official release

has been set: July 20.