Identifying Data 2019/20
Subject (*) Software Design Code 614G01015
Study programme
Grao en Enxeñaría Informática
Descriptors Cycle Period Year Type Credits
Graduate 1st four-month period
Second Obligatory 6
Language
Spanish
English
Teaching method Face-to-face
Prerequisites
Department Ciencias da Computación e Tecnoloxías da Información
Computación
Coordinador
Mosqueira Rey, Eduardo
E-mail
eduardo.mosqueira@udc.es
Lecturers
Alonso Ríos, David
Monroy Camafreita, Juan
Mosqueira Rey, Eduardo
Pérez Sánchez, Beatriz
Sanchez Maroño, Noelia
E-mail
david.alonso@udc.es
juan.monroy@udc.es
eduardo.mosqueira@udc.es
beatriz.perezs@udc.es
noelia.sanchez@udc.es
Web
General description O Deseño Software é unha fase chave dentro do ciclo de vida do software que establece a ligazón entre os requisitos dun sistema e a sua posterior implementación. O deseño máis habitual hoxe en día é o deseño baseado na orientación a obxectos, que consiste en desenvolver un programa en base a obxectos que intercambian mensaxes.

Esta materia introducirá ao alumnado nos elementos e propiedades básicas da orientación a obxectos usando unha linguaxe orientada a obxectos como Java. Aprenderase tamén a como reflectir os artefactos propios do deseño nunha linguaxe de modelado coma a Linguaxe Unificada de Modelado (UML).

Finalmente presentaranse aqueles principios básicos que representan un bo deseño e aprenderase a identificar aqueles problemas típicos de deseño e as súas solucións máis comúns representadas como patróns de deseño.

Study programme competencies
Code Study programme competences
A7 Capacidade para deseñar, desenvolver, seleccionar e avaliar aplicacións e sistemas informáticos que aseguren a súa fiabilidade, seguranza e calidade, conforme a principios éticos e á lexislación e normativa vixente.
A13 Coñecemento, deseño e utilización de forma eficiente dos tipos e estruturas de datos máis adecuados á resolución dun problema.
A14 Capacidade para analizar, deseñar, construír e manter aplicacións de forma robusta, segura e eficiente, elixindo o paradigma e as linguaxes de programación máis adecuados.
B1 Capacidade de resolución de problemas
B2 Traballo en equipo
B3 Capacidade de análise e síntese
B4 Capacidade para organizar e planificar
C3 Utilizar as ferramentas básicas das tecnoloxías da información e as comunicacións (TIC) necesarias para o exercicio da súa profesión e para a aprendizaxe ao longo da súa vida.
C6 Valorar criticamente o coñecemento, a tecnoloxía e a información dispoñible para resolver os problemas cos que deben enfrontarse.

Learning aims
Learning outcomes Study programme competences
Identify software design as one of the phases of software lifecycle A7
A13
A14
B3
B4
C3
Know the principles and basic properties of object orientation A7
A13
A14
B1
B2
B3
B4
C3
C6
Capture software design using the artifacts of a modeling language like UML A7
A13
A14
B1
B2
B3
B4
C3
C6
Know the basic principles that represent a good software design A7
A13
A14
B1
B2
B3
B4
C3
C6
Identify typical design problems and their most common solutions A7
A13
A14
B1
B2
B3
B4
C3
C6
Use a design as a guide for software implementation A7
A13
A14
B1
B2
B3
B4
C3
C6
Learn an object-oriented language and related aspects (IDE, tests, repositories, etc.) A13
B1
B2
B3
B4
C3
C6

Contents
Topic Sub-topic
1. Introduction • Software design
• Object-oriented analysis and design
2. Basic Elements of Object Orientation • Classes and objects
• Object identity
• Object state
• Object behavior
3. Basic Characteristics of Object Orientation • Abstraction and encapsulation
• Modularity
• Hierarchy
• Polimorphism
• Typing
• Dynamic binding
4. Unified Modeling Language (UML) • Introduction
• Basic elements of UML
• Static design: Class diagrams
• Dynamic design: Interaction diagrams
• Other diagrams
5. Design Principles • Quality in design
• SOLID principles
• Types of inheritance
6. Design Patterns • Introduction to design patterns
• Elementary patterns
• Designs adaptable to changes
• Loosely coupled designs
• Patterns and collections of objects
• Other patterns and principles
Practice • Introduction to Java and NetBeans
• Software tests
• Exceptions management
• Use of a source code repository

Planning
Methodologies / tests Competencies Ordinary class hours Student’s personal work hours Total hours
Guest lecture / keynote speech A7 A13 A14 B1 B3 C6 30 45 75
Laboratory practice A7 A13 A14 B1 B2 B3 B4 C3 C6 20 30 50
Seminar A7 A13 A14 B1 B2 B3 B4 C3 C6 10 10 20
Objective test A7 A13 A14 B1 B3 C6 3 0 3
 
Personalized attention 2 0 2
 
(*)The information in the planning table is for guidance only and does not take into account the heterogeneity of the students.

Methodologies
Methodologies Description
Guest lecture / keynote speech Lectures explaining theoretical concepts using different resources: blackboard, projection of digital slides, class notes in electronic format and other resources provided by the teachers in the Virtual Campus of the UDC.
Laboratory practice Laboratory activities based on the knowledge that students are acquiring in lectures. Students will develop this activities preferably in groups. We will use a modeling tool to build the design artifacts and an object-oriented language (Java) to implement that artifacts.
Seminar Seminars with activities related to knowledge acquired in lectures or laboratory activities
Objective test Written test in which the knowledge acquired by students is assessed. Each student must apply their knowledge both in theoretical and practical level.

Personalized attention
Methodologies
Laboratory practice
Seminar
Description
Personalized attention to students includes not only tutorials (either virtual or in-person) to discuss questions, but also the following actions:

- Monitoring the work of laboratory practices proposed by the teacher.
- Evaluation of the results obtained in practice and seminars.
- Personalized meetings to answer questions about the contents of the subject.


Assessment
Methodologies Competencies Description Qualification
Laboratory practice A7 A13 A14 B1 B2 B3 B4 C3 C6 Exercises based on Java programming, object-oriented design, testing design, the modeling language UML and the use of design principles and design patterns.

Plagiarized practices will be voided, both the original and the copy, and may result in a zero in the overall grade of the given assignment.
33
Seminar A7 A13 A14 B1 B2 B3 B4 C3 C6 Seminars are practical sessions led by the teacher in which useful aspects related to the assignments are discussed.

The seminars do not include the submission of assignments by the students, so it is not an evaluable activity.
0
Objective test A7 A13 A14 B1 B3 C6 Written test conducted at the end of the semester with theoretical and practical content.

It is mandatory to obtain a minimum grade of 4 in the objective test to pass the subject.
67
 
Assessment comments

Failure to reach the minimum score in the objective test in any of the opportunities will mean that you can not get more than a 4.5 in the final grade of the subject.

Aspects to be considered for the evaluation of second opportunity (July):

  • Laboratory practices grades are the ones obtained at the first opportunity (submission of laboratory practices in the second opportunity is not allowed).

Aspects to be considered in the case of part-time enrollment:

  • The obligation to attend activities that require to be in-person is eliminated.

Sources of information
Basic Gamma, E.; Helm, R.; Johnson, R. y Vlissides J. (1996). Design Patterns: Elements of Reusable Object-oriented Software.. Addison Wesley
Booch J.; Rumbaugh J. y Jacobson I. (2006). El Lenguaje Unificado de Modelado (2ª ed.) The Unified Modeling Language (2nd ed.). Addison Wesley
Sierra, K., Bates, B. (2005). Head First Java. O’Reilly
Schildt, H. (2018). Java 9. Anaya Multimedia
Martin, R.C. (2004). UML para programadores Java. UML for Java Programmers. Pearson

Complementary Martin, R.C. (2012). Código limpio : manual de estilo para el desarrollo ágil de software. Anaya Multimedia
Bloch, J. (2017). Effective Java (3rd ed.). Addison Wesley
Freeman, E., Freeman, E., Bates, B. (2004). Head First Design Patterns. O'Reilly
Grand M. (2002). Patterns in Java. John Wiley & Sons
Eckel, B. (2007). Piensa en Java (4ª ed.). Thinking in Java (4th ed.). Prentice-Hall
Rumbaugh, J.; Jacobson, I. y Booch, J. (2004). The Unified Modeling Language Reference Manual. Addison Wesley


Recommendations
Subjects that it is recommended to have taken before
Programming I/614G01001
Programming II/614G01006

Subjects that are recommended to be taken simultaneously
Programming Paradigms/614G01014

Subjects that continue the syllabus
Software Process/614G01019
Human Machine Interfaces/614G01022
Internet and Distributed Systems/614G01023

Other comments

It is assumed that students know how to program and understand data structures (Programming II subject) but have never used an object-oriented language. At the beginning of the subject, as the students are introduced to the concepts of object orientation, they will become familiar with the basics of Java programming language.



(*)The teaching guide is the document in which the URV publishes the information about all its courses. It is a public document and cannot be modified. Only in exceptional cases can it be revised by the competent agent or duly revised so that it is in line with current legislation.