Joaquín Nicolás Ros

 Facultad de Informática. Universidad de Murcia
 Campus de Espinardo. 30071 - Espinardo - Murcia (Spain)
 Teléfono: +34 868 88 85 25. Fax: +34 868 88 41 51
 e-mail: jnr [at] um [.] es

 

Ofertas de proyectos fin de carrera y trabajos fin de grado
 

08BD - CONSTRUCCIÓN DE SOFTWARE

[Objetivos] [Teoría] [Prácticas] [Metodología] [Evaluación] [Prerrequisitos] [Bibliografía básica] [Tablón de anuncios]

 

TITULACIÓN

Ingeniero Técnico en Informática de Sistemas. Intensificación de Informática Gráfica y Multimedia.

CRÉDITOS

6 (3T+ 3P)  OPTATIVA

3er curso - SEGUNDO CUATRIMESTRE

TEORÍA

Ingeniero en Técnico en Informática de Sistemas es un plan a extinguir y esta asignatura ya no cuenta con clases teóricas ni prácticas.

 

PRÁCTICAS

 

TUTORÍAS

Presenciales: Jueves, de 11 a 14 h.

Despacho 2.35. Facultad de Informática

Tutoría electrónica

[ Volver a Página Principal ]

 


OBJETIVOS

Objetivos generales

Con “Construcción de Software” (CSW) se trata de introducir al alumno en la disciplina de la ingeniería del software en general, y más específicamente en el análisis y diseño de software orientado a objetos. En otras palabras, se trata de proporcionar al alumno un conjunto de técnicas, principios y heurísticas de ingeniería del software que le permitan abordar de forma sistemática el proceso de construcción de software, en particular desde el paradigma de desarrollo orientado a objetos.

Más concretamente, en esta asignatura se persiguen los siguientes objetivos específicos:

Los contenidos de la asignatura se introducirán de forma práctica, a través de ejemplos y de ejercicios realizados en el aula. Por tanto, en el aula se irán intercalando a lo largo del curso las clases de teoría propiamente dichas y las clases de problemas.

Justificación de los objetivos

Sobre la ingeniería del software

Durante los dos primeros cursos de la carrera el alumno ha cursado una serie de asignaturas en las que las prácticas se evaluaban mediante un proyecto de programación, en el cual el alumno se debía enfrentar a la resolución de un problema bien definido, que requería seleccionar unas estructuras de datos y organizar de forma adecuada un programa que resolvía el problema planteado. Pero evidentemente la complejidad de las aplicaciones que se desarrollan en la industria es mucho mayor. El software es el ente más complejo que ha creado el ser humano, y hoy día afecta prácticamente a sus actividades en todos los órdenes, siendo el soporte fundamental de la llamada Sociedad de la  información y de la Sociedad del conocimiento.

En los últimos años hemos asistido a un enorme crecimiento de la demanda de software, que se ha venido aplicando en la resolución de tareas cada vez más complejas y de mayor valor añadido. En estas circunstancias, una pregunta que nos podemos hacer es la siguiente: ¿la industria del software está preparada para desarrollar el software que se necesita en los próximos años, con los niveles de calidad que se requieren? Según muchas fuentes, desgraciadamente, la respuesta es no. El proceso de desarrollo de software dista de ser un proceso maduro, y actualmente existe un consenso cada vez mayor en la industria en que el desarrollo de un producto tan complejo como el software debe ser realizado mediante un auténtico proceso de ingeniería (la ingeniería del software), que permita predecir de forma efectiva los niveles de calidad del producto software realizado. El desarrollo de software “artesanal” ha demostrado repetidamente no funcionar en proyectos de todo tipo, especialmente medios y grandes. Los fracasos de proyectos de desarrollo de software lo atestiguan. Parece necesario, por tanto, acometer el desarrollo de software utilizando una visión de ingeniería.

A partir de lo dicho anteriormente pensamos que para un alumno que se dedique al desarrollo de software en su carrera profesional, conocer los conceptos básicos de la ingeniería del software es fundamental. El futuro profesional debería ser capaz de seleccionar las notaciones, técnicas, modelos y métodos de desarrollo de software que mejor se adaptaran a un contexto de desarrollo determinado.

 

Sobre UML

El lenguaje unificado de modelado, UML [Booch et al. 99], es una notación estándar para el modelado orientado a objetos, resultado de una propuesta de estandarización promovida por el consorcio OMG (Object Management Group) en 1996. UML se ha extendido de tal manera en la industria y en el mundo académico que actualmente se ha convertido en un estándar “de facto” en el modelado orientado a objetos. En esta asignatura realizaremos una descripción detallada del lenguaje UML, analizando conceptos tales como modelado con casos de uso, modelado estructural, modelado dinámico y colaboraciones. En nuestra opinión, un profesional que se dedique al desarrollo de software debe conocer UML.

 

Sobre el proceso de aplicación de UML

Como hemos dicho, UML es una notación, más bien un conjunto de técnicas para modelar sistemas intensivos en software desde el punto de vista orientado a objetos. Pero dado que UML no proporciona guías para su aplicación, la cuestión que aparece ahora es: ¿cómo aplicar el conjunto de técnicas –bastante complejo– que proporciona UML? Tras la presentación de UML, es necesario pues describir un proceso de aplicación de UML. Se presentará un proceso sencillo destinado a aplicaciones cuyo desarrollo no involucra equipos de programadores ni tiempos de desarrollo muy grandes. Se trata de un proceso iterativo, incremental y guiado por los casos de uso. Este proceso es resultado de añadir una etapa de modelado de negocio al proceso descrito en el libro “UML y Patrones” de Craig Larman [Larman 02].

 

Sobre los patrones de diseño

Por último, podemos afirmar que dentro de una formación básica en orientación a objetos es obligado incluir los patrones de diseño o soluciones a problemas recurrentes en el desarrollo de software OO. Los patrones han adquirido importancia en la comunidad software, siendo fundamentales para obtener una arquitectura software de calidad. En esta asignatura introduciremos el concepto de patrón, que es aplicable a todos los ámbitos de desarrollo y gestión del software, y presentaremos algunos de los patrones de diseño más conocidos.

Relaciones con otras asignaturas

En el ámbito de las asignaturas de la intensificación de Informática Gráfica y Multimedia, CSW juega un papel transversal a todas ellas: el desarrollo de un sistema multimedia se puede considerar como un caso particular de proyecto de desarrollo de software, que como hemos justificado anteriormente se debe abordar de forma disciplinada. CSW, en particular, complementaría la visión de la asignatura “Desarrollo de Aplicaciones Interactivas”, que presenta aspectos más cercanos a la implementación.

Es altamente recomendable que el alumno haya cursado la asignatura obligatoria del primer cuatrimestre Programación Orientada a Objetos” (POO), conociendo así los conceptos esenciales de la programación orientada a objetos: objeto, clase, herencia, polimorfismo y ligadura dinámica. Se puede considerar que CSW complementa POO subiendo el nivel de abstracción y estudiando el paradigma orientado a objetos desde el punto de vista del análisis y, en menor medida, del diseño.

Aquellos alumnos que deseen continuar sus estudios en segundo ciclo estudiarán al menos tres asignaturas relacionadas con ingeniería del software: “Ingeniería de Requisitos”, “Análisis y Diseño de Software” y “Gestión de Proyectos Informáticos”, todas ellas asignaturas troncales de cuarto curso. En “Análisis y Diseño de Software”, en particular, se reforzarán los contenidos de análisis y diseño orientados a objetos presentados en CSW, se profundizará mucho más en patrones de diseño, y se discutirá el problema de la persistencia en aplicaciones orientadas a objetos. En segundo ciclo, además, hay una intensificación dedicada exclusivamente a la ingeniería del software.


PROGRAMA DE TEORÍA

Estructura del temario y transparencias

Capítulo 1. El Lenguaje Unificado de Modelado, UML
  Introducción a UML, necesidad de modelado, casos de uso
  Modelado estructural
  Complemento al diagrama de clases: Figuras de (Larman 2005)
  Paquetes, vistas, interacción, actividades, estados, componentes, despliegue, OCL
  Complemento a los diagramas de interacción: Figuras de (Larman 2005)

Capítulo 2. Un proceso basado en UML

Capítulo 3. Patrones de diseño

Casos prácticos para clase

Caso de estudio A
    Enunciado del problema
    Modelo de casos de uso
    Modelo conceptual
    Clase del 3 de mayo de 2011
    Un ejemplo de resolución

 
Caso de estudio B
    Enunciado del problema
    Modelo de casos de uso
    Modelo conceptual 
    Un ejemplo de resolución

Estructura detallada del temario

Capítulo 1. El Lenguaje Unificado de Modelado, UML

1.      Presentación de UML

2.      Necesidad del modelado

3.      Modelado de casos de uso

4.       Modelado estructural

5.      Paquetes

6.      Vistas de UML

7.      Modelado dinámico

8.      Modelado de flujos de trabajo

9.      Modelado del estado

10.  Modelado de la implementación

11.  Colaboraciones

12.  OCL (Object Constraint Language)

Capítulo 2. Un proceso basado en UML

1.       Definición de proceso

2.      Un proceso sencillo basado en UML

3.      Modelo del negocio: los procesos del negocio

4.      Modelo de requisitos: modelo de casos de uso, modelo conceptual y contratos

5.      Modelo de análisis y patrones GRASP

6.      Modelo de diseño

7.      Implementación 

8.      Validación

9.      Una visión general del Proceso Unificado de Rational, RUP.

Capítulo 3. Patrones de diseño

1.      Concepto de patrón

2.      Clasificación de patrones: Creación, Estructurales y de Comportamiento

3.      Estudio de algunos de los principales patrones GoF

Temporalización del programa de teoría

El temario de teoría se imparte secuencialmente, con la siguiente distribución temporal:

Capítulo 1: 7 h.
Capítulo 2: 8 h.
Capítulo 3: 6 h.
Clases de problemas (durante los capítulos 1, 2 y 3): ejercicios de modelado y de patrones resueltos en aula: 9 h. 
Total: 30 horas.


PROGRAMA DE PRÁCTICAS

Las prácticas de la asignatura se organizarán en grupos de dos personas. Las notas son individuales.

Los enunciados de prácticas serán los mismos en las tres convocatorias del curso.

 

 Práctica 0: Un CASE para el desarrollo orientado a objetos con UML -pdf-

 
     Objetivo

·         Aprender a manejar las principales funciones de una de herramienta CASE de soporte a UML

Evaluación: esta práctica no producirá resultados que evaluar

 Práctica 1: Aplicación de un proceso basado en UML -caso de estudio-   -enunciado de la práctica-

      Objetivos  

·         Dominar el análisis de requisitos mediante casos de uso.

·         Dominar los conceptos fundamentales del análisis orientado a objetos.

·         Aplicar el proceso basado en UML visto en clase a la especificación de los requisitos de un caso práctico.

o        Modelado de casos de uso

o        Modelado conceptual

o        Modelado del análisis

o        Diagramas de secuencia del sistema (DSS)

o        Contratos y colaboraciones de las operaciones del sistema

o        Se abordarán cuestiones del diseño, como aplicar patrones de diseño y generar esqueletos de código con Rose

o        Si el tamaño del caso de estudio lo requiere, el profesor delimitará los casos de uso en los cuales se centrará el trabajo práctico.

Evaluación: corrección de las entregas parciales, de la documentación final y entrevista

Fecha de entrega final: ver Tablón de anuncios.

 Práctica 2: Trabajo teórico/práctico en ingeniería del software   -enunciado de la práctica-

     Objetivos  

·         Profundizar en algún aspecto interesante de la ingeniería del software, de forma complementaria al programa de teoría, realizando un trabajo de corte eminentemente teórico/práctico.

Evaluación: corrección del trabajo escrito y entrevista. La presentación del trabajo, la redacción, la adecuación de los contenidos y la concisión serán especialmente valoradas.

Fecha de entrega final: ver Tablón de anuncios.


METODOLOGÍA

La metodología docente que se seguirá durante el curso será la siguiente:

a) El temario de teoría se imparte a través de clases de teoría (metodología expositiva) complementadas con clases de problemas en el Bloque I del temario. En estas clases de problemas son los propios alumnos quienes resuelven ejercicios en la pizarra, de un boletín que se ha entregado al principio del tema.

En las clases de teoría se utilizarán transparencias. Las transparencias no son "los apuntes” de la asignatura. Al iniciar cada tema, el profesor indicará la bibliografía básica y complementaria del mismo.

b) El temario de prácticas se desarrollará de la siguiente manera:

b.1) Seminario de presentación de la herramienta CASE (Práctica 0)

b.2) Sesiones abiertas de dos horas semanales por grupo en el laboratorio, que los alumnos podrán utilizar para realizar las prácticas.

Las prácticas se organizan en grupos de dos personas. Se realizará una entrevista final a cada grupo, en la que se revisará cada práctica realizada. En la especificación de la práctica se establecerá el mecanismo de seguimiento de la misma por parte del profesor.


EVALUACIÓN

La nota final de la asignatura vendrá dada por la nota de prácticas.

La participación en clase, y especialmente en las clases de problemas, será bonificada en la nota final con hasta un punto extra.

Las prácticas se evalúan a través de la Práctica 1 (70% de la nota de prácticas) y de la Práctica 2 (30%):

·         La Práctica 1 se evalúa mediante la corrección de una serie de entregas, seguidas de sus correspondientes entrevistas, y la realización de una entrevista final.

·         La Práctica 2 se evalúa mediante la corrección del trabajo realizado y la realización de una entrevista final, que usualmente será la misma para las prácticas 1 y 2.


PRERREQUISITOS

·         Para cursar la asignatura no es un prerrequisito haber aprobado la asignatura de primer cuatrimestre Programación Orientada a Objetos”, pero sí que es muy recomendable estar familiarizado con los conceptos básicos de programación orientada a objetos: objeto, clase, método, mensaje, herencia, polimorfismo y ligadura dinámica.


BIBLIOGRAFÍA BÁSICA

[Booch et al. 06] Booch, G. et al. "El lenguaje unificado de modelado: guía de usuario", 2ªed., Addison-Wesley, 2006.

El texto base del capítulo 1, que sirve como una introducción clara a los conceptos fundamentales de UML. Este libro forma parte de una trilogía en la que se enmarcan también los textos de Rumbaug J. et al. “El lenguaje unificado de modelado. Manual de referencia”, que responde a cuestiones específicas sobre el lenguaje, y el de Jacobson I. et al. El proceso unificado de desarrollo de software”, que contiene una propuesta metodológica de soporte a UML.

 

[Larman 02] Larman, C. UML y Patrones: Una introducción al análisis y diseño orientado a  objetos y al proceso unificado, Segunda Edición, Prentice-Hall, 2002.

El texto base que seguimos en los capítulos 2 y 3. Se trata de uno de los libros más didácticos que se han escrito sobre el análisis y diseño orientado a objetos, un libro excelente que describe mediante un mismo caso de estudio el modelado con casos de uso, el modelado del análisis y el modelado del diseño (que el autor reúne en una misma etapa), patrones de diseño y diseño de la persistencia.

 

En la biblioteca se encuentran varios ejemplares de estos libros. ¡Recuerda que las transparencias no constituyen “los apuntes de la asignatura”!

 


TABLÓN DE ANUNCIOS

(18/9/2012)

En esta página web tenéis disponible el enunciado del caso de estudio de la Práctica 1, además de las transparencias, los dos casos de estudio que se han seguido en clase,  y el enunciado de la Práctica 0.

TRANSPARENCIAS DE TEORÍA: tenéis todas las transparencias de la asignatura, en la sección "Programa de Teoría". Os recomiendo vivamente que las complementéis con el libro de Larman, referenciado en la Bibliografía Básica.

PRÁCTICAS DEL CURSO 2012/2013

Las prácticas son las mismas que las del curso 2011/2012.

En cada convocatoria, las fechas tope de entrega serán las siguientes:

Convocatoria de enero: 22 de enero.

Convocatoria de mayo-junio: 11 de junio.

Convocatoria de septiembre: 6 de septiembre.

(Para sucesivos anuncios haremos uso del Tablón de Anuncios del Aula Virtual.)