Software Architecture (2008/2009)

Course Not running, not visible

Teaching is organised as follows:
Unit Credits Academic sector Period Academic staff
Laboratorio modulo I 1 INF/01-INFORMATICS 1° Q Luca Vigano'
Teoria modulo I 4 INF/01-INFORMATICS 1° Q Luca Vigano'
Laboratorio modulo II 1 INF/01-INFORMATICS 2° Q Luca Vigano'
Teoria modulo II 4 INF/01-INFORMATICS 2° Q Luca Vigano'

Learning outcomes

Module: Laboratorio modulo I
-------
The course introduces the design and development of software systems. Via the development and implementation of prototypical concrete software projects, the students will learn a number of advanced techniques for the development of object-oriented software systems.


Module: Teoria modulo I
-------
The course introduces the basic scientific and professional notions of software engineering, addressing in particular the different phases (planning, design, validation and testing, and maintenance) of the software development process.


Module: Teoria modulo II
-------
The course introduces the basic scientific and professional notions of software architectures, providing in particular a comparative analysis of software architectures together with modeling and specification languages for such architectures.


Module: Laboratorio modulo II
-------
The course introduces the design and development of software systems. Via the development and implementation of prototypical concrete software projects, the students will learn a number of advanced techniques for the development of object-oriented software systems.

Syllabus

Module: Laboratorio modulo I
-------
The course covers the motivation and benefits of design patterns for object-oriented programming.
After an introduction to design patterns, the course will consider a number of example problems in order to provide a detailed analysis of the software development process and the application of design patterns (in particular, patterns such as Strategy, Observer, State, Adapter, and Abstract Factory). The examples will also provide a means to focus on the definition and use of the main principles of object-oriented programming.

The use of Java for the programming projects will allow students to gather the experience required to apply design patterns.


Module: Teoria modulo I
-------
- Introduction to software engineering:
-- Software: product and process.
-- Quality attributes.
-- Software life-cycles.
-- Phases and activities of the software development process.
-- Models of the software life-cycle.

- Planning of the development process:
-- Feasibility study.
-- Definition of requirements and constraints.
-- Risk management.
-- Production control.
-- Configuration management.
-- Versioning.
-- Project administration.

- Software development:
-- Requirements elicitation and analysis.
-- Rapid prototyping.
-- Specification and implementation.
-- Verification.
-- Scalability.
-- Component-based design.
-- Standards for implementation and documentation.

- The standard language UML 2 for software modeling (notation and main diagram types).
- Software verification, validation and testing:
-- Validation methods and strategies.
-- Testing methods and strategies (unit, integration, functional, and system testing).
-- Testing methods and strategies for object-oriented software.
-- Validation and testing metrics.

- Estimation:
-- Software metrics.
-- Cost models and estimation.
-- Resource estimation and allocation in software projects.
-- Quality design.
-- Standards ISO 9001, 9000-3, 9126.


Module: Teoria modulo II
-------
- Analysis and specification of software architectures:
-- Introduction to software architectures.
-- Taxonomy of the most common software architectures.
-- Software architecture configuration management.
-- Modeling, analysis and specification of object-oriented software architectures.
-- Comparative analysis of software architectures by means of case studies.

- Modeling languages for software architectures and specification of requirements and constraints on object-oriented architecture models:
-- The standard language UML 2 (notation and use of the main diagram types).
-- The standard language OCL 2 (notation and use of the main constructs).
-- The standard language Z (notation and use of the main constructs).

- Software architecture verification, validation and testing:
-- Rapid prototyping of software architecture specifications and automated validation of architecture prototypes.
-- Testing methods and strategies for software architectures: unit, integration, and system testing.
-- Testing methods and strategies for object-oriented software architectures.


Module: Laboratorio modulo II
-------
The course introduces the principal methodologies and technologies for software development, and covers different programs for computer-aided software engineering (CASE), which may be used for the development of the prototypical software projects considered in the course.
In particular, the students experience the use of UML for the planning and development of small software components, as well as the use of tools for version management.

Through the completion of a number of projects, the students will learn how to work effectively as part of small development team and how to document the software design by creating specific UML diagrams.

Assessment methods and criteria

Module: Laboratorio modulo I
-------
The examination consists of the completion of a number of projects, which the students can carry out in small groups (of 3 o 4 students).

With the successful completion of these projects, the students obtain 1 credit, which will be added to the 4 credits of the first module of the Software Architecture Course.


Module: Teoria modulo I
-------
The examination consists of a written test, for which the students obtain 4 credits, which will be added to the 1 credit the students obtain when they complete the laboratory course "Laboratorio di architetture software".
The written test must be taken without the help of notes, books, or other documentation. The teacher may decide to replace the written test with an oral examination, especially whenever it is not possible to make sure that the students cannot access this documentation.

The students of the Degree in Computer Science ("Corso di Laurea in Informatica") obtain the credits formally only after having successfully completed the exams of the two course modules. In this way, they obtain 8 credits, which will be added to the 2 credits for the laboratory course.


Module: Teoria modulo II
-------
The examination consists of a written test, for which the students obtain 4 credits, which will be added to the 1 credit the students obtain when they complete the laboratory course "Laboratorio di architetture software".
The written test must be taken without the help of notes, books, or other documentation. The teacher may decide to replace the written test with an oral examination, especially whenever it is not possible to make sure that the students cannot access this documentation.

The students of the Degree in Computer Science ("Corso di Laurea in Informatica") obtain the credits formally only after having successfully completed the exams of the two course modules. In this way, they obtain 8 credits, which will be added to the 2 credits for the laboratory course.


Module: Laboratorio modulo II
-------
The examination consists of the completion of a number of projects, which the students can carry out in small groups (of 3 o 4 students).

With the successful completion of these projects, the students obtain 1 credit, which will be added to the 4 credits of the second module of the Software Architecture Course.

Studying