INTERDISCIPLINARY LABORATORY B
No prerequisites, but for a profitable development the knowledge imparted in the lessons of "Software Design", "Databases" and "Concurrent and Distributed Programming" are necessary.
The final exam consists in extending the software application developed in Laboratory A with the elements characterizing Laboratory B. Only those who have received an "Approved" rating on Laboratory A will be eligible for Laboratory B. The final exam will also include the discussion of the realized project with the members of the group. The purpose of the design and development activity is to verify the ability to understand the proposed problems and, in light of the knowledge acquired, to collaborate as a group in the analysis of requirements, design and development of the application in such a way as to satisfy the requirements. The purpose of the discussion is to verify the validity of the design and implementation choices made and the ability of individual members of a group to communicate and argue these choices. The actual mastery of the techniques used is verified through a series of questions. During the discussion, a demo of the implementation of the application will also be shown. The evaluation will take into account the adherence of the realized system to the proposed requirements, the analysis and design documents produced both for the realization of the software and for the database, the algorithmic and design choices at the basis of the development, and the quality of the produced source code and its documentation. The final grade is given in thirtieths.
The objective of the INTERDISCIPLINARY LABORATORY A and B is the development and implementation of skills and knowledge regarding the creation of software applications, acquired during the first and second year of the course. Specifically, LABORATORY A will be delivered during the first year of the course, while LABORATORY B will be delivered during the second year of the course, in order to incrementally acquire all the tools and methodologies necessary for the development of a real software application.
LABORATORY B: The main objective of the second part of this course (Year II) is the integration of the skills acquired in the first part of the course (Laboratroy A), with the development of skills regarding the application of the object-oriented development process to design and implement software applications that interface with a relational database starting from the requirements of such applications. This objective requires the application of knowledge acquired by the student in the "Software Design", "Databases", and "Concurrent and Distributed Programming" courses. At the end of the second part of the teaching, the student will have expanded his knowledge and skills (going to add functionality to the software application developed in the first part of the course) with the design and software development of a distributed architecture, interfaced to a relational data management system.
At the end of the course the student will have therefore experienced and will be able to manage the entire process of object-oriented development, and in particular:
1. will have a general knowledge of the activities and artifacts produced during the development process
2. will be able to elicit and analyze the functional and non-functional requirements of the system
3. will be able, starting from the analyzed requirements, to design the application
4. will be able to design and implement the database, and the queries for data selection and manipulation
5. will be able to implement the designed application in Java, managing the communication aspects in a distributed environment, the concurrent access to shared resources, and the interfacing with the database.
During Lab B, the extension of the functionalities of the software application developed during the first year of the course (Lab A) will be discussed, with the elements proper to Interdisciplinary Lab B (design, management of communication aspects in a distributed environment, concurrent access to shared resources, and interfacing with databases). Students will develop these functional extensions independently (individually or in teams).
The slides of the lessons in PDF format and any other material necessary for the development of the project are available on the e-learning platform of the University. The recommended (but not mandatory) textbook is: B. Bruegge & A. H. Dutoit, Object-Oriented Software Engineering Using UML, Patterns, and Java. Third Edition, Prentice Hall. Students also may refer to the texts and materials in the "Software Design", "Databases", and "Concurrent and Distributed Programming" courses.
The course is divided into lectures (8 hours), and design and software development activities carried out by the student as autonomous work. The lessons are dedicated to the presentation of the activities and methodologies that characterize the object-oriented development process and to the presentation of approaches to document the artifacts produced during this process. One lecture (2 hours) is devoted to the presentation of the specifications of new additional software features to be developed as an exam project.