SOFTWARE DESIGN AND WEB PROGRAMMING A - L
Module ELEMENTI DI INGEGNERIA DEL SOFTWARE

Academic Year 2025/2026 - Teacher: Orazio TOMARCHIO

Expected Learning Outcomes

The module covers the main principles, methods and tools of Software Engineering, a discipline dedicated to the study of methodologies, techniques and tools used in development of large scale software systems.

In particular, the module describes the various models of the software development process and presents the problems related to the various stages of the software life cycle, focusing into the analysis and specification of requirements, the definition of system architecture, design and testing. Some of the most common design patterns and their role in software design and development are also described. Considerable space is given to the UML language, the reference standard for the visual modelling of software systems.

The learning objectives of the module, as defined by the Dublin descriptors, are:

Knowledge and understanding

  • To understand the principles, methodologies and the main tools in the software development process, with particular focus on the requirements analysis and specification, the definition of system architecture, the design and testing.
  • To understand the most common design patterns and understanding their role in software design and development.
  • To understand the UML standard notation to model software systems.

Applying knowledge and understanding

  • To be able to design a large software system, planning the various activities of the software life cycle and producing documents in accordance with industry standards.
  • To be able to model different views of a software system using the standard UML notation.
  • To be able to recognize when and which design patterns to apply when designing a software system

Making judgements

  • Students will be able to evaluate the different design choices during the development of an IT system, identifying the most suitable solutions satisfying the requirements and the interests expressed by the stakeholders

Communication skills

  • Students will be able to interact and communicate within a software development team by using common notations and languages used to model a software system

Learning skills

  • Students will be able to learn and apply new software development models based on the fundamental phases analyzed during the course

Course Structure

The main teaching methods are as follows: 

  • Lectures, to provide theoretical and methodological knowledge of the subject;
  • Exercises, proposed and solved by the teacher, to provide “problem solving” skills, to apply design methodology, and to learn the usage of CASE tools.

Further, the teacher assigns homeworks to students' groups to be solved independently and to be discussed in the classroom.

Should teaching be carried out in mixed mode or remotely, it may be necessary to introduce changes with respect to previous statements, in line with the programme planned and outlined in the syllabus.

Required Prerequisites

  • Fundamentals of programming
  • Object oriented programming

Attendance of Lessons

Strongly recommended. Attending and actively participating in the classroom activities will contribute positively towards the overall assessment of the exam.

Detailed Course Content

  1. Introduction to Software Engineering (4h theory)
    • Origins and motivations of Software Engineering. Basic definitions: software products, general characteristics of software products. Software modelling with UML.
  2. Software life cycle. (4h theory)
    • Software development processes: waterfall model, iterative models, agile models.
  3. Requirements analysis and specification (2h theory + 4h exercises)
    • The concept of requirements. Functional and non-functional requirements. Requirements definition, analysis and specification. Modelling requirements with use cases. 
  4. Software Analysis and Design (8h theory + 14h exercises)
    • Object-oriented analysis. Domain model. Domain modelling with class diagrams. System sequence diagrams. Operation contracts.
    • Introduction to software architectures. Models for structuring software systems (architectural patterns).
    • Object-oriented software design. Class diagrams. Interaction diagrams. GRASP patterns for software design. Quality parameters of a software project.
    • Additional UML diagrams: state diagrams, activity diagrams, component diagrams and deployment diagrams.
  5. Design patterns (5h theory + 5h exercises)
    • The role of design patterns in software design and development. GoF patterns: creational, structural, behavioural.
  6. Software testing (3h theory + 3h exercises)
    • Quality control for software products: verification and validation. Software testing: objectives and general concepts. Types of testing: unit testing, integration testing, system testing. Testing strategies: black box testing (functional) and white box testing (structural). Unit testing tool: jUnit.
  7. Software project management (2h theory + 4h exercises)
    • Software configuration management. Versioning. Versioning tools: SVN and Git. Build, release and branch management.
    • Tools for building a software project: Maven
    • Continuous integration and DevOps

Textbook Information

  • [LAR]
    • Craig Larman

      Applicare UML e i pattern – Analisi e progettazione orientata agli oggetti
      Pearson Education Italia

  • [FOW]
    • M. Fowler
      UML Distilled
      Pearson Education Italia
  • [GAM]
    • Gamma, E., Helm, R., Johnson, R. e Vlissides, J.
      Design Patterns: elementi per il riuso di software a oggetti
      Addison Wesley

  • Notes and handouts provided by the lecturer on certain topics (published on the course's MS Teams channel: code 4agcmdz)

Learning Assessment

Learning Assessment Procedures

The examination consists of:

  • Written test consisting of:
    • Analysis/Design and software modelling exercises
    • Open-ended theoretical questions
  • Optional oral test

  • Participation in design exercises during the course and submission of the relevant homework assignments will result in up to a maximum of 2 additional points on the final mark.

Examples of frequently asked questions and / or exercises

Typical exercises will be published on the course's MS Teams channel.