REQUIREMENTS ENGINEERING

Degree course: 
Corso di Second cycle degree in COMPUTER SCIENCE
Academic year when starting the degree: 
2018/2019
Year: 
2
Academic year in which the course will be held: 
2019/2020
Course type: 
Compulsory subjects, characteristic of the class
Language: 
English
Credits: 
6
Period: 
First Semester
Standard lectures hours: 
48
Detail of lecture’s hours: 
Lesson (48 hours)
Requirements: 

Basic logical capabilities are required. Basic knowledge of UML is beneficial.

Exams aim at verifying that students have successfully acquired the knowledge and abilities described in the "Objectives" section, by evaluating the level of knowledge and the ability to apply in practice the techniques mentioned in section "Contents".
Students can choose one of the following examination methods: (1) project or (2) written exam.
The project (1) involves the elicitation and specification of requirements, and can be carried out by a single student or by two students. The project involves 4 milestones: 1) the problem is informally described; 2) requirement are elicited, analysis of strategic goals, evaluation of alternatives, and choice of the solution to be proposed; 3) analysis of the tactical objectives for the chosen solution, models of entities, relations, use cases and behavior; 4) solution specification. The evaluation is based on the material released at milestones 2, 3 and 4. The final rank depends on the quality of the resulting requirements specifications with respect to completeness, consistency, readability, feasibility, satisfaction of users' needs.
The written exam (2) includes a set of exercises that test the ability of students to understand a simple though realistic problem and apply the techniques presented in the course to specified portions of the given problem. Students are given one hour to complete the written test.

Assessment: 
Voto Finale

The aim of the course is to provide students with the basic knowledge needed to perform requirements engineering, starting from requirements elicitation (also in non-conventional domains and with stakeholders from different domains), proceeding with modeling and analyzing different solutions, and arriving at the specification of the chosen solution. Of the different technique described in the literature, the course addresses the more frequently used in industrial as well as in research settings.
After successfully completing the course, the student will be able to
1. Understand what is meant by "requirements" and what are the software development activities related to requirements.
2. Understand the nature of the problem and its context, understand and apply requirements elicitation techniques.
3. Understand and apply requirements modeling languages and notations.
4. Understand and apply requirements specification techniques.
5. Understand requirements traceability. Apply traceability techniques.
In addition, students will become autonomous in recognizing problems, exploring contexts and in recognizing and describing requirements, choosing the proper notations and techniques. The student will also be given the instruments to autonomously learn new methods and techniques.
Finally, students will learn the terminology that is specific of requirements engineering, and develop the communication abilities that are of critical importance in requirement engineering.

Lessons will concern the following topics:
Introduction to requirements engineering and fundamental concepts (8 hours, objective 1)
What do we mean by “requirements”.
System classification.
Analysis of the software life cycle, with special emphasis on requirements-related activities.
Context analysis and requirements elicitation (14 hours, objective 2)
What is a “problem” and what are its dimensions. Modeling objectives and their relationships.
Elicitation techniques: pros and cons of each technique.
Problem sizing.
Feasibility analysis.
Requirements representation (14 hours, objective 3).
Requirements modeling.
Techniques to represent objectives.
Models to represent the context and constraints.
Notations: structured language, decision trees, decision tables, OCL.
Object-oriented modeling. OCL: expressions, invariants, pre- and post-conditions, types, semantics.
Modeling relationships: E/R models, comparison with class diagrams.
Modeling states: FSM and statecharts.
Modeling events: tabular models.
Modeling interactions with the system: use cases.
Specification (8 hours, objective 4).
Analysis and modeling of non functional requirements.
Analysis of tactical objectives.
Risk management.
Requirements specifications.
Requirements priority.
Traceability (4 hours, objective 5).
Revisions and inspections (of requirements and code).
Software evolution and traceability.
Traceability in the design phase.

See Section "Contents"

Reading the following books is recommended:
Software Requirements and Specifications: A Lexicon of Practice, Principles and Prejudices, Michael Jackson, ACM Press, 1995
Requirements Engineering: From System Goals to UML Models to Software Specifications, Axel van Lamsweerde (University Catholique de Louvain), 2009.
Lecture slides are made available on the university e-learning site in pdf format.

Convenzionale

The course includes frontal lessons (48 hours).
Frontal lessons are dedicated to illustrating the essence and principles of requirements engineering, of typical problems and the techniques mentioned in the "Contents" section.

Office hours: by appointment, to be requested via email from the domain studenti.uninsubria.it.

Borrowed from

click on the activity card to see more information, such as the teacher and descriptive texts.