SOFTWARE DESIGN

Course objectives

General outcomes: Knowledge of the Java programming language and the UML design language. In particular: objects, methods, classes, interfaces, inheritance, polymorphism, generics, packages, iterators and exceptions. Understanding of methodologic aspecs of the design of programming applications of medium to large size: modularity, robustness, reusability, maintainability, all achieved via abstractions, encapsulation, information hiding, generalization and specialization. Specific outcomes: Knowledge and understanding: Object-oriented programming and its design methodology for large-scale projects. The UML design language and the Java programming language. Applying knowledge and understanding: Being able to design and realize an application comprising several classes and associations, and performing a number of activities involving them. Making judgements: Being able to evaluate the quality of an application, discriminating the data modeling aspects from those related to processing modeling. Communication: The projects and lab activities empower the students with the ability to communicate and share the requirements of an application of medium complexity, its design choices and development methodologies. Lifelong learning skills: Besides the usual skills of learning from theoretical descriptions, the course stimulates the students at autonomously learning some of its topics; especially the lab activities encourages working in groups and applying the ideas and tecniques learned.

Channel 1
PAOLO LIBERATORE Lecturers' profile

Program - Frequency - Exams

Course program
Object-oriented programming. UML
Prerequisites
Computer programming.
Books
Handouts
Frequency
Three lectures per week.
Exam mode
Written test. Lab test.
Lesson mode
Lectures and lab
Channel 2
FRANCESCO LEOTTA Lecturers' profile

Program - Frequency - Exams

Course program
0. Software life cycle and quality properties The organizational context. Software life cycle: requirement elicitation, analysis, design & realization, test & maintenance. Software quality: external & internal qualities. Modularization. Modularization criteria. Object-orientation. 1. Introduction to Java Variable and object allocation, parameter passing, constructors. Packages, class hierarchies, inheritance, abstract classes, interfaces. Java default libraries, collection framework, iterators. IO. Graphical Interfaces (Java Swing). Socket. Concurrency in Java. Debugging and JUnit. Lambda expressions, thread pools and asynchronous execution. 2. The analysis phase Introduction to the analysis phase. The UML language for the analysis. Structural, behavioral and interaction diagrams: class diagrams, object diagrams, state and transition diagrams, activity diagrams. Specification. Analysis methodology. Quality check. 3. The design phase Goals and expected results. Algorithm specification. Responsibility on associations. Employment of data structures. By value and by reference realization schemas. Event management. Concurrency aspects. Design patterns. Application programming interfaces. 4. Implementation phase Java implementation of structural, behavioral and interaction diagrams. Implementation of UML classes. Implementation of UML associations. Exploiting inheritance. Event based and concurrent development to realize dynamic behavior.
Prerequisites
No specific previous knowledge is required
Books
Slides provided by teachers and exercises. Any Java Manual covering at least Java 8.
Frequency
No mandatory participation to lessons is required
Exam mode
The exam consists of two tests: (1) a practical text done in the laboratory, which is only qualifying for the second test; (2) a written test on all the aspects covered during the course, requiring to practically produce a part of a program.
Lesson mode
The course consists of both classroom and laboratory lessons. During the laboratory lessons, the student will practice with the concept learnt during the classroom lessons.
  • Lesson code1018706
  • Academic year2024/2025
  • CourseComputer and System Engineering
  • CurriculumAutomatica
  • Year2nd year
  • Semester1st semester
  • SSDING-INF/05
  • CFU9
  • Subject areaIngegneria informatica