Software Engineering

Objectives

The course is mainly focused on software design. It presents the fundamental aspects of software modeling, analysis and design, with reference to modern object-oriented analysis and design techniques. The general contest is given by iterative, incremental, and agile development software processes. Moreover, different architectures/technologies underlying the systems to be implemented are analyzed. On successful completion of this module, the student should be able to independently design medium complexity software applications, as well as participate in the design of highly complex software applications.

Prerequisites

Knowledge about the principles of object-oriented programming constitutes a fundamental prerequisite of this course. It is recommended to attend the lectures of the Programming Web course offered in the bachelor degree in Information Engineering.

Contents

Life cycle and development process of a software system. Iterative and incremental development. Unified Process (UP). Requirements analysis. Use Cases. Object-oriented analysis (OOA). Domain model. System sequence diagrams. Contracts of system operations. Object-oriented design (OOD). Interaction diagrams. Class diagrams. Moving from object-oriented design to coding. Principles for object-oriented design: GRASP and SOLID. Design Patterns. Logical architecture. Architectural patterns. Unified Modeling Language (UML). CASE tools for modeling and round-trip engineering. Visual Paradigm for UML. Object persistence. ORM technologies. ORM in Java: Hibernate

Teaching methods

Lectures; Active learning discussion sessions about software projects; Projects; Small groups or teamwork; Prepare and give a presentation. Prepare written report

Assessment

Students must organize themselves in teams of 3 or 4 elements; each team has to build a software system. The project concerns the specification, analysis and design of the system. Students will have to use all the skills and knowledge acquired during the course. A project report must be presented and discussed by the team. The report is the main source for evaluating the results obtained. In particular, the final score is determined on the basis of the different parts of the exam: 75% project, 25% oral exam.

Textbooks

  • Applying UML and patterns – an introduction to object-oriented analysis and design and iterative development. Craig Larman, Third edition (2004) ISBN: 0131489062 Prentice Hall

  • Design Patterns: Elements of Reusable Object-Oriented Software. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Addison-Wesley Professional (2005)

Additional information

Additional material about the course can be found on the university e-learning platform: https://moodle.univaq.it/