Software Design
- Overview
- Assessment methods
- Learning objectives
- Contents
- Bibliography
- Teaching methods
- Contacts/Info
Students are required to have good knowledge about software programming.
Good knowledge of written English is recommended, so the students can take full advantage of the course material made available by the instructor or generally available online.
The extent to which students learn the subject is assessed via a written test. As an alternative, students can take a mid-term and a final test during the course. By passing both, students will have passed the exam.
The goal of the written test (as well as the mid-term and final tests) is to assess the learning degree and the understanding of the elements related to software design from both a theoretical and an application points of view (on problems of limited complexity). Written tests (as well as the mid-term and final tests) consist of:
- exercises for the assessment of the students’ understanding and knowledge of UML and design patterns and of the students’ ability of developing software design;
- exercises for the assessment of the students’ ability to design and implement graphical interfaces;
- questions on the conceptual aspects.
The course presents the most important conceptual and application elements related to the design of software systems. The primary goal of the course is to provide students with the necessary knowledge for the development of software systems whose functionalities and qualities fully satisfy users’ needs. In addition, students acquire the skills needed to analyze existing software projects to evaluate them and, if needed, modify them. Students also learn how to reuse existing design solutions, represented via design patterns. The design language used in the course is the Unified Modeling Language (UML), since it is the de facto standard software design language in practice. The conceptual part of the course is applied during the exercise classes, in which implementations are mostly carried out in the Java language. In addition, graphical interfaces are introduced as examples of event-based systems.
At the end of this course, the students:
• know the conceptual foundations of software design;
• know the most important parts of UML;
• are able to apply UML for the design of software systems;
• apply UML and design patterns to design software systems;
• are able to design and implement graphical interfaces in Java.
Thus, the students are able to identify the conceptual framework for the solution of a problem at different refinement levels and use the design language to adequately organize the solution. In addition, the students are able to evaluate the quality and adequacy of various alternative solutions, to be able to select the most appropriate one and modify existing solutions in such a way as to be able to reach the design goals effectively.
In addition, the students are able to use the correct terminology for the functional and quality characteristics of a software design. Thus, they can present the strengths of the design and receive and interpret possible modification proposals made by the other stakeholders of the software production process. Also, the students can easily join work teams, which are typically found in actual software development processes. Finally, the course has the goal of making the students aware of and used to the technical language of the discipline, especially with reference to the English terminology.
Fundamental concepts of software design (18 lecture hours and 2 exercise hours).
Software development activities. Software qualities. The object-oriented approach to software development and design. Inheritance as a conceptual tool for software design. Principles and conceptual aspects of software design. Modules and their relationships. Modularization and structuring of processing responsibilities.
Software design languages.
UML as software design language (22 lecture hours and 12 exercise hours).
Unified Modeling Language (UML): general concepts and structure. Use Case Diagram. Interaction Diagram. Class Diagram, Package Diagram e Object Diagram. Statecharts. Activity Diagram, Timing Diagram, Composite Structure Interaction Diagram.
Case study.
Graphical interfaces (4 lecture hours and 6 exercise hours).
Graphical interfaces.
Design patterns (4 lecture hours and 4 exercise hours).
Design Patterns.
The slides used during classes can be found on the University’s e-learning web site, where the students can find further materials and links to relevant websites.
Lectures (48 hours) and exercise classes (24 hours).
During the period in which the course is held, the students can meet with the instructor on class days. In the remainder of the year, the students need to contact the instructor to set up an appointment (sandro.morasca@uninsubria.it).