Software Design

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

Students are required to have good knowledge about software programming.
Good knowledge of the written English language is recommended, so the students can take full advantage of the course material made available by the instructor or generally available online.

Final Examination: 
Orale

The extent to which students learn the subject is assessed via a written test (duration: 4 hours). As an alternative, students can take a mid-term and a final test during the course. By passing both, students will have passed the exam.

The goal of the written test (as well as the mid-term and final tests) is to assess the learning degree and the understanding of the elements related to software design from both a theoretical and an application points of view (on problems of limited complexity). Written tests (as well as the mid-term and final tests) consist of:
- exercises for the assessment of the students’ understanding and knowledge of UML and design patterns and of the students’ ability of developing software design;
- exercises for the assessment of the students’ ability to design and implement graphical interfaces;
- questions on the conceptual aspects.

Assessment: 
Voto Finale

The course presents the most important conceptual and application elements related to the design of software systems. The primary goal of the course is to provide students with the necessary knowledge for the development of software systems whose functionalities and qualities fully satisfy users’ needs. In addition, students acquire the skills needed to analyze existing software projects to evaluate them and, if needed, modify them. The design language used in the course is the Unified Modeling Language (UML), since it is the de facto standard language in practice. The conceptual part of the course is applied during the exercise classes, in which implementations are mostly carried out in the Java language.

At the end of this course, the students:
know the conceptual foundations of software design;
know the most important parts of UML;
are able to apply UML for the design of software systems;
apply UML and design patterns to design software systems;
are able to design and implement graphical interfaces in Java.

Thus, the students are able to identify the conceptual framework for the solution of a problem at different refinement levels and use the design language to adequately organize the solution. In addition, the students are able to evaluate the quality and adequacy of various alternative solutions, to be able to select the most appropriate one and modify existing solutions in such a way as to be able to reach the design goals effectively.

In addition, the students are able to use the correct terminology for the functional and quality characteristics of a software design. Thus, they can present the strengths of the design and receive and interpret possible modification proposals made by the other stakeholders of the software production process. Also, the students can easily join work teams, which are typically found in actual software development processes. Finally, the course has the goal of making the students aware of and used to the technical language of the discipline, especially with reference to the English terminology.

The various knowledge and abilities will be acquired along the entire course, in which the following topics will be taught.

Software development activities:
lessons 2 hours, exercises 0 hours.
Software qualities:
lessons 2 hours, exercises 0 hours.
The object-oriented approach to software development and design:
lessons 4 hours, exercises 2 hours.
Inheritance as a conceptual tool for software design:
lessons 2 hours, exercises 0 hours.
Principles and conceptual aspects of software design:
lessons 2 hours, exercises 0 hours.
Modules and their relationships:
lessons 4 hours, exercises 0 hours.
Graphical interfaces:
lessons 4 hours, exercises 6 hours.
Software design languages:
lessons 2 hours, exercises 0 hours.
Unified Modeling Language (UML): general concepts and structure:
lessons 2 hours, exercises 0 hours.
Use Case Diagram:
lessons 2 hours, exercises 2 hours.
Interaction Diagram:
lessons 2 hours, exercises 2 hours.
Class Diagram, Package Diagram e Object Diagram:
lessons 6 hours, exercises 4 hours.
Statecharts:
lessons 4 hours, exercises 2 hours.
Activity Diagram, Timing Diagram, Composite Structure Interaction Diagram:
lessons 2 hours, exercises 2 hours.
Case study:
lessons 4 hours, exercises 0 hours.
Design Patterns:
lessons 4 hours, exercises 4 hours.

The materials related to the topics of the course can be found on

- slides (in English and in Italian) on https://elearning.uninsubria.it/

- additional material on https://elearning.uninsubria.it/

- Luciano Baresi, Luigi Lavazza, Massimiliano Pianciamore Dall'idea al codice con UML 2. Guida all'utilizzo di UML attraverso esempi (con CD-ROM). Pearson Italia (ISBN 978-8871922393)

- Martin Fowler. UML distilled. Guida rapida al linguaggio di modellazione standard. Pearson Italia, 2010 (ISBN-10: 887192598X, ISBN-13: 978-8871925981)

Lectures (48 hours) and exercise classes (24 hours).

During the period in which the course is held, the students can meet with the instructor on class days. In the remainder of the year, the students need to contact the instructor to set up an appointment (sandro.morasca@uninsubria.it).

Professors