Software Architecture (2007/2008)

Course Not running, not visible

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

Learning outcomes

Module: Theory module 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: Laboratory module 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: Theory module 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: Laboratory module 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: Theory module 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: Laboratory module 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: Theory module 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: Laboratory module 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

The examination consists of a written test, for which the students obtain 8 credits, which will be added to the 2 credits the students obtain when they complete the projects of 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.

Reference books
Author Title Publisher Year ISBN Note
Ian Sommerville Software Engineering (Edizione 8) Addison Wesley 2006 9780321313 Versione italiana: Ingegneria del Software, 8 edizione, Pearson-Addison Wesley
Martin Fowler UML distilled (3rd ed.) (Edizione 3) Pearson Education 2003 Versione italiana: UML Distilled, Terza Edizione, Pearson Education Italia, 2004
E. Gamma, R. Helm, R. Johnson, J. Vlissides Design Patterns: elements of reusable Object-Oriented Software (Edizione 1) Addison-Wesley 1995 Versione italiana: Design Patterns, Addison-Wesley, 2002
E. Freeman, E. Freeman Head First - Design Patterns (Edizione 1) O'Reilly 2004
J.B. Warmer, A.G. Kleppe The Object Constraint Language, Second Edition (Edizione 2) Addison Wesley 2003 0321179366
J.M. Spivey The Z Notation: a reference manual (2nd ed.) (Edizione 2) Prentice Hall 2001 Available online at http://spivey.oriel.ox.ac.uk/mike/zrm/index.html