You are on page 1of 36

Grado en Ingeniería Informática

Grado en Ingeniería Informática

Tecnologías de Desarrollo de Software

Presentación de la asignatura

Departamento DIS
D t t DIS
Facultad de Informática
Contenidos
 El papel del software en la sociedad
 Formación en desarrollo de software
 Desarrollo de software en el Grado de la FIUM
 Planificación de la asignatura TDS
– Objetivos y competencias de la asignatura
– Programas de Teoría y Prácticas
– Cronograma
– Evaluación
– Profesorado
– C
Carga estimada
ti d para ell alumno
l
– Bibliografía
¿Por qué está sucediendo esto ahora (en 2011)?

"Seis
Seis décadas después de la revolución de los ordenadores
ordenadores,
cuadro décadas después de la invención de los microprocesadores,
y dos décadas después de la aparición del Internet moderno,
toda la tecnología requerida para transformar las industrias a través del software
funciona y puede ser ampliamente distribuida a escala global"
Empresas más
i
importantes
t t deld l mundo
d
Desarrollo de software

Pequeña escala Media escala Gran escala

 Una aplicación software realiza una funcionalidad que


permiten automatizar tareas en un determinado dominio o
área de trabajo.

 Su
S tamaño
t ñ y complejidad
l jid d es variable
i bl llo que d
determina
t i ell
tiempo necesario para su construcción dependiendo del
tamaño del equipo de programadores.
programadores
Desarrollo de software
 ¡¡¡ Construir una aplicación no es implementar un
algoritmo o un ejercicio de programación de los
realizados hasta ahora !!!

 Proceso complejo que comprende desde la captura de


los requisitos hasta el despliegue y mantenimiento de la
ap cac ó
aplicación.

 Ingeniería del software es la disciplina que se ocupa


del desarrollo de software aplicando principios, métodos
y técnicas propios de un proceso ingenieril.
TDS
PDS
GPDS

“Ir
Ir equipándose
equipándose” para aplicar
técnicas de ingeniería de
software en el desarrollo de
aplicaciones.
Dimensiones del Desarrollo de Software

TECNOLOGIA
Conceptos, Técnicas y Herramientas

PROCESO ORGANIZACION
- Conjunto de pasos a realizar y Organizar un equipo de programadores:
resultados
lt d obtenidos
bt id en cada d paso. G tió d
Gestión de un proyecto
t software.
ft
- Aplicación de métodos de desarrollo
Elementos básicos de una aplicación
de gestión (business application)

Código
Base de datos

Java, JavaScript, JSP, JPA, XML,… Relacionales, NoSQL, OO,..


Plataforma .Net (Microsoft)

¡Necesidad de conocer un montón de tecnologías!


Modelado UML,
Rational, MagicDraw
Rational MagicDraw,
Procesos Software,
Requisite Pro, ..
Requisitos

Testing,
T ti Control
C t ld de
JUnit, maven, ant,
versiones, Construcción
Subversion, Git, ..,...
de proyectos

OO, Funcional, Scripting Java, C#, Scala,..

A li
Aplicaciones
i di
distribuidas
t ib id Servlet, RMI, EJB,..

Frameworks apps Spring, Tapestry,..

Interfaces de usuario JSF, Android UI,


JFace ..
BB.DD. relacionales y SQL Hibernate,
SQL, Hibernate JPA
JPA, ..
Frameworks persistencia
XML, HTML, JSP,
Aplicaciones web p Ajax,
JavaScript, j ..
Conceptos / Plataformas /
Tecnologías Herramientas
Etapas de un proceso software
 Estudio de Viabilidad
 Análisis de Requisitos
 Análisis y Diseño
 Implementación
 Pruebas
 Despliegue
 Mantenimiento

Procesos actuales están basados en casos de uso, y


son iterativos e incrementales.
Organización
 Guías para la gestión y planificación del proyecto
 Guías de estimación de costes
 Guías para elaboración de los “entregables”
 Métricas
 Políticas y procesos para asegurar calidad del
software
 Ejemplos
Ej l elaborados
l b d d de aplicación
li ió y ejercicios
j i i
para el aprendizaje
 Etc.
Etc
Desarrollo de software en el Grado en
Ingeniería Informática de la FIUM
 En primer y segundo curso las asignaturas básicas de
p g
programación:
– Fundamentos de Programación (primer curso)
– Algoritmos y Estructura de Datos (segundo curso)
– Programación orientada a objetos (segundo curso)
– Programación concurrente (segundo curso)

 y también
– Fundamentos de Bases de datos (segundo curso)
Desarrollo de software en el Grado en
Ingeniería Informática de la FIUM
 En tercer curso las asignaturas básicas relacionadas con
el desarrollo de software

Tecnologías de Desarrollo de Software (TDS)

Procesos de desarrollo Gestión de pproyectos


y
de software (PDS) de desarrollo de software (GPDS)
Desarrollo de software en el Grado en
Ingeniería Informática de la FIUM
 E
En cuarto
t curso dos
d intensificaciones:
i t ifi i T
Tecnología
l í d dell
Software y Sistemas de Información.
Sistemas de Información Empresarial Obligatoria
Aplicaciones distribuidas Obligatoria
Interfaces de Usuario Obligatoria
Arquitectura del software Obligatoria
Sistemas de Información Industriales Obligatoria
Desarrollo de Aplicaciones Web Obligatoria
Gestión de la innovación tecnológica
Calidad del Software Obligatoria Obligatoria
en las organizaciones
Metodología de la Programación Paralela Obligatoria Desarrollo de Sistemas Inteligentes Optativa
Informática Gráfica Obligatoria
g Sistemas de Información Geográfica Optativa
Interfaces de usuario Optativa Administración de bases de datos Obligatoria
Sistemas multimedia Optativa Desarrollo de Sistemas de Información Obligatoria
Sistemas informáticos industriales Optativa Gest ó de la
Gestión a Segu
Seguridad
dad en
e Sistemas
S ste as
O t ti
Optativa
Programación basada en agentes Optativa de Información
Gobierno de los Sistemas de
Optativa
Información en las Organizaciones
Tecnología del Software
Sistemas de información
Asignatura TDS
 Objetivos principales
– El alumno adquirirá competencias en la práctica del desarrollo
de software destinadas a participar en la construcción de
aplicaciones con lenguajes orientados a objetos (OO).
– El alumno aprenderá conceptos, técnicas y herramientas que le
ayudarán a construir aplicaciones de un modo sistemático
sistemático.
– Las técnicas: “patrones de diseño”, “desarrollo basado en
componentes” , “desarrollo dirigido por pruebas”, y “evolución de
software
ft basada
b d en refactoring”,
f t i ” y “d “desarrollo
ll dde iinterfaces
t f d
de
usuario, GUI”.
– Las herramientas: IDE,, “gestión
g y construcción de proyectos”,
p y ,
“gestión de código fuente”, “modelado de software”, “creación de
GUIs”, “pruebas unitarias”.
Competencias TDS
 Patrones de diseño
– Valorar el papel de los patrones de diseño como forma de
reutilizar la experiencia en la resolución de problemas de diseño.
– Aprender los patrones de diseño básicos para construcción de
software OO: Creación, Estructurales y Comportamiento
– Adquirir destreza en la identificación de los patrones aplicables a
un determinado problema.
– Aplicar patrones en el diseño e implementación de una aplicación.
Competencias TDS

 Desarrollo de interfaces gráficas de usuario (GUI)


– Estudio de los elementos de una GUI: componentes, layouts y
manejadores de eventos.
eventos
– Estudio de la librería Swing
– Estudio del modelo de delegación de eventos de Java
– Uso de una herramienta de construcción de GUIs
(WindowBuilder Pro).
Competencias TDS

 Desarrollo de software basado en componentes


– Comprender el concepto de componente y su papel en el proceso
de desarrollo de software
software.
– Valorar el desarrollo basado en componentes como una técnica
de reutilización de software.
– Conocer un modelo de componentes (Java Beans).
– Ser capaces de aplicar el desarrollo basado en componentes para
la construcción de interfaces graficas de usuario
usuario.
– Desarrollar un componente y usarlo.
Competencias TDS

 Desarrollo dirigido por las pruebas


– Conocer los tipos de prueba del software:
o Unitaria,
Unitaria integración
integración, sistema y aceptación
aceptación.
– Conocer los aspectos específicos de las pruebas de software OO.
– Conocer el desarrollo dirigido
g p
por las p
pruebas.
– Ser capaz de implementar pruebas unitarias y de integración en
un proyecto de tamaño medio
– Herramienta Junit.
Junit
Competencias TDS

 Evolución del software con refactoring


– Comprender el concepto de refactoring como técnica de mejora
de la calidad del software
software.
– Conocer un conjunto de criterios básicos para identificar
defectos en el diseño del software.
– Aprender y aplicar algunos refactorings para software OO.
– Comprender la importancia de las pruebas en el proceso de
refactoring.
refactoring
– Herramienta: IDE Eclipse
Competencias TDS

 Herramientas para la gestión del desarrollo de software


– Valorar el papel de los sistemas de control de versiones de código
fuente en el desarrollo de software (Subversion)
(Subversion).
– Organizar un repositorio de código fuente y utilizarlo en un
proyecto de desarrollo de software en equipo.
– Conocer y utilizar herramientas de automatización de la
construcción de software (Maven).
Competencias TDS

 Introducción a la noción de arquitectura software


– Conocer patrón arquitectural “Layers” que organiza una
aplicación en varias capas
– Aplicación de la arquitectura MVC de tres capas Presentación,
Lógica de Negocio y Almacenamiento, y uso de un controlador
que separa la
l presentación
t ió d de llas clases
l d
dell negocio.
i
Planificación
 Teoría
Tema 1. Algunos
g p
principios
p básicos de diseño orientado a objetos
j ((4T+2E))
Tema 2. Patrones de diseño (14T+4E)
Tema 3. Desarrollo de software basado en componentes (2T)
Tema 4.
4 Desarrollo de software dirigido por las pruebas (2T)
Tema 5. Evolución de software con refactorings (en prácticas) (1T)
 Prácticas
Práctica 1. Modelado UML (diagramas de clases y de interacciones) (0 sesiones)
Práctica 2. Gestión de código fuente con Subversión (1 sesión)
Práctica 3. Desarrollo de interfaces de usuario con Swing (3 sesiones)
Práctica 4. Arquitectura de la aplicación y Persistencia (1 sesión)
Práctica 5.
5 Desarrollo con componentes JavaBeans (2 sesiones)
Práctica 6. Desarrollo de pruebas unitarias con Junit (1 sesión)
Práctica 7. Gestión y construcción de proyectos Java con Maven (1 sesión)
Práctica 8. Estudio y aplicación de refactorings. (1 sesión)
Semana Teoría Laboratorio

1 Presentación
Modelado UML (Tema 1)
2 Patrones GRASP (Tema 1) Subversion

3 Patrones GRASP (Tema 1) Swing


Ejercicios diagramas de clases
4 Ejercicios patrones Grasp Swing
Patrones de diseño (Tema 2)
5 Patrones de diseño (Tema 2) Swing
6 Desarrollo basado en componentes (Tema 3) Arquitectura y Servicio de
Persistencia
7 Desarrollo basado en pruebas (Tema 4) Componentes
8 Patrones de diseño (Tema 2) Componentes
9 P t
Patrones de
d diseño
di ñ (T
(Tema 2) J it
Junit
10 Patrones de diseño (Tema 2) Maven
11 Patrones de diseño (Tema 2) Refactoring
12 Patrones de diseño (Tema 2)
13 Patrones de diseño (Tema 2)
14 Patrones de diseño (Tema 2)
Ejercicios de patrones
15 Ejercicios de patrones
Evaluación

Teoría
 Examen con cuestiones teórico-prácticas del mismo tipo que las
propuestas en boletines de ejercicios y exámenes anteriores
anteriores.

Prácticas
 Proyecto de programación “AppMusic”, cuya especificación se
entregará en la segunda semana del curso .
 Los alumnos formarán grupos de dos (¡Obligatorio!)
 Se realizarán dos entrevistas (seguimiento de la práctica y evaluación
final) y dos entregas: entrega del modelo de clases (mediados
octubre) y la entrega final (después vacaciones Navidad)
Evaluación

 Para superar la asignatura los alumnos deberán haber aprobado


tanto el examen teórico como el proyecto.

 En la nota final el peso del examen de teoría será del 50% y el del
proyecto
y el 50%.

 Una vez aprobada una parte se mantiene la nota en el resto de


convocatorias del curso
curso.

 Se indicará la forma de evaluar cada aspecto de las prácticas en la


entrega de la especificación.
Carga de trabajo

– Clases de teoría: 30 horas


– Clases Prácticas: 14 horas
– Preparar examen: 50 horas
– Proyecto: 56 horas

Total: 150 horas (6 ECTS x 25 horas)


Tutorías

– (Grupo 1) José Ramón Hoyos (jose.hoyos@um.es ): electrónicas / M y X de


12:00 a 13:30

– (Grupo 2) Francisco Javier Bermudez (fjavier@um.es): electrónicas / M


12:00 a 13:30 y X 16:00 a 17:30

– (Grupos 3 y 9) ) Jesús García Molina (jmolina@um.es): electrónicas / L, X y


V de 10 a 12 (contactar por email)
Bibliografía
g básica

 Modelado UML y Patrones Grasp


 Craig Larman, UML y Patrones, 2ª edición, Prentice-Hall, 2002
 Patrones de diseño
 Erich Gamma et al., Patrones de Diseño, Addison-Wesley, 2002.
 Desarrollo dirigido por las pruebas
– Apuntes de la asignatura.
Bibliografía
g adicional
 Desarrollo basado en componentes
– Clemens Szyperski. Component Software: Beyond Object-Oriented
Programming (2ª Edition)". Addison-Wesley.2002
 Desarrollo
D ll dde iinterfaces
t f d
de usuario
i
– Cay Horstmann y Gary Cornell. “Core Java (Vol. 1). Fundamentos”.
Pearson, 2005.
 Evolución y Refactorings
– Martin Fowler et al., Refactoring. Improving the design of existing code,
Addi
Addison-Wesley,
W l 2000.
2000
 Patrones de diseño
– Mark Grand
Grand, Patterns in Java
Java, vol.
vol 11, John Wiley,
Wiley Segunda Edición
Edición, 2002
2002.
– Eric T. Freeman et al. “Head First Design Patterns”, O’Reilly, 2004.
 Desarrollo dirigido
g p
por las p
pruebas
– Kent Beck. Test-Driven Development. By example. Addison-Wesley. 2003

You might also like