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/