Universidad de Deusto - Bilbao
Area of Study
Computer Info Systems, Information Technologies
Taught In English
Recommended U.S. Semester Credits3
Recommended U.S. Quarter Units6
Hours & Credits
One of the key roles of graduates in Computing is the design and implementation of software solutions. If we analyze the life cycle of a software system, the second fundamental step is the design of the product to be built. In this course, students acquire the skills necessary for the design of distributed object-oriented software solutions, using UML as modeling notation and applying well-known design patterns, as well as heuristics and best practices.
Therefore, this subject's contribution to the professional profile (from a competence perspective) is related to problem solving skills and system, component and application design, using a systemic approach (as well as creative and innovative), starting from existing requirements and taking into consideration different criteria for the evaluation of alternative solutions.
Basic skills about thinking in objects, skills about programming using Java and basic concepts about RDBS.
- Design and evaluate alternative solutions to a software problem, applying patterns and design best practices.
- Document software designs, correctly using suitable UML diagrams and notation.
- Implement a software design, based on patterns, using distributed technologies.
0. About Teamworking. Group Dynamics and Effective Teams. Roles in a Team. Conflict Management.
1. Architecture and UML Modeling. The Design stage in the Software Development Life Cycle. Concept of Architecture and Components. UML Component and Deployment diagrams notation.
2. Client-Server Applications. Characteristics. Distributed Objects: RMI. Persistence and Object-Relational Mappers: JDO.
3. Design Heuristics, Best Practices and UML Modeling. Design principles, Riel´s Heuristics, GRASP Patterns, Best Practices and Refactorings. UML Sequence Diagrams.
4. Design Patterns. Enterprise Application Patterns, GoF Patterns, MS and J2EE Patterns. Antipatterns.
The teaching-learning strategy will be implemented by means of the following methods and techniques:
- Lectures: Driven by the professor, who will introduce the contents listed in the subject syllabus in a detailed and structured way in the classroom. Lecture materials, to be used during the lessons, will be previously available for students to read them in advance (slides, scripts, web links, etc.), organized by units.
- Case Study: Development of case studies, in order to assess alternatives and discuss design options. The most suitable alternative will be selected, depending on the context of the problem. During the development of those case studies, the notation of UML Sequence, Component and Deployment diagrams will be introduced.
- Personal Experimentation. Students will be provided with small problem statements so they can practice their modeling skills. On the other hand, lab sessions will be conducted in order to run basic RMI and JDO working examples, as well as get first-hand experience about design pattern implementation examples.
- Teamwork: Given a requirement specification, students will be requested to design a software solution based in patterns. They will have to use the UML notation to communicate and document their design and they will have to implement it using distributed technologies, RMI in particular, and use JDO for persistence.
- Knowledge test: 40%
- Teamwork project: 50%
- Peer-to-Peer Assessment (teamwork): 10%
Courses and course hours of instruction are subject to change.
Eligibility for courses may be subject to a placement exam and/or pre-requisites.
Credits earned vary according to the policies of the students' home institutions. According to ISA policy and possible visa requirements, students must maintain full-time enrollment status, as determined by their home institutions, for the duration of the program.
Please note that some courses with locals have recommended prerequisite courses. It is the student's responsibility to consult any recommended prerequisites prior to enrolling in their course.