Luigi Libero Lucio Starace, Ph.D.

Assistant Professor @ Università degli Studi di Napoli Federico II, Italy.

Software Engineering (Module B)

Software Engineering is a 10 ECTS course in the B.Sc. in Computer Science program. The course aims to provide students with an in-depth overview of the fundamental concepts of Software Engineering. The specific learning objectives include:

  • Understanding software engineering, software engineering processes, and their related phases, activities, and deliverables (programming in the large).
  • Deepening the definition, properties, and analysis of models, including formal, semi-formal, and informal models used in software processes. Understanding the importance of these models for the planning, development, and maintenance of software systems, as well as for communication among the different stakeholders involved in Software Engineering processes.
  • Acquiring basic techniques and methodologies for designing and implementing readable and maintainable software.
  • Understanding the fundamental principles of human-computer interaction, including concepts of usability and accessibility. Knowing how to apply these concepts in user interface design through critical analysis of project requirements. Being able to integrate human-computer interaction principles into software processes. Acquiring basic knowledge of state-of-the-art techniques and methodologies for evaluating the usability of user interfaces.

The Software Engineering course is organized in two modules, each worth 5 ECTS. The course contents of Module B include:

  • Requirements Engineering

    • Functional, Non-Functional, and Domain Requirements.
    • The Requirement Elicitation process.
    • Interviews, Scenarios, Stories, Use Cases.
    • Personas.
    • Requirement Specification.
    • Mockups, Prototypes, Wireframing.
    • Templates for Fully Dressed Use Cases.
    • Domain Models in Requirements Engineering (context, interaction, structural, and behavioral models).
    • The Entity-Boundary-Control Heuristic. Domain modeling for management applications. The importance of decoupling * logic, presentation, and data.
  • Human-Computer Interaction

    • Interaction design and its processes.
    • Modes and models of interaction.
    • Usability and Accessibility.
    • Affordances.
    • Cognition, interaction, and emotional aspects.
    • Functionality and functional hierarchies.
    • Principles and guidelines for user interface design.
    • Error handling.
    • Contextualizing human-computer interaction principles within software processes.
  • Verification and Evaluation

    • Techniques and heuristics for usability and accessibility evaluation.
    • User Acceptance Tests.