Introducción a la Ingeniería del Software

Usted está aquí

Créditos
6
Tipos
Obligatoria
Requisitos
  • Prerrequisito: BD
  • Precorrequisito: EDA
Departamento
ESSI
El objetivo principal de la asignatura es el de proporcionar una visión general de la ingeniería del software, haciendo especial énfasis en las etapas de especificación y de diseño. Se pretende que al terminar la asignatura el alumno sea capaz de especificar un sistema sencillo mediante la notación UML y de diseñarlo usando la misma notación y aplicando el patrón arquitectónico domain model y
alguno de los patrones de diseño más conocidos.

Profesorado

Responsable

  • Ernest Teniente Lopez ( )

Otros

  • Claudia Patricia Ayala Martinez ( )
  • Dolors Costal Costa ( )
  • Jordi Casanovas Muñoz ( )
  • José Francisco Crespo Sanjusto ( )
  • Manuel Rello Saltor ( )
  • Montserrat Estañol Lamarca ( )
  • Sergio Morales Garcia ( )
  • Xavier Oriol Hilari ( )

Horas semanales

Teoría
2
Problemas
2
Laboratorio
0
Aprendizaje dirigido
0
Aprendizaje autónomo
6

Competencias

Competencias Técnicas

Competencias técnicas comunes

  • CT2 - Utilizar de forma apropiada teorías, procedimientos y herramientas en el desarrollo profesional de la ingeniería informática en todos sus ámbitos (especificación, diseño, implementación, despliegue -implantación- y evaluación de productos) de manera que se demuestre la comprensión de los compromisos adoptados en las decisiones de diseño.
    • CT2.1 - Demostrar conocimiento y capacidad de aplicación de los principios, metodologías y ciclos de vida de ingeniería de software.
    • CT2.3 - Diseñar, desarrollar, seleccionar y evaluar aplicaciones, sistemas y servicios informáticos, y al mismo tiempo asegurar su fiabilidad, su seguridad y su calidad, conforme a principios éticos y a la legislación y la normativa vigente.
    • CT2.4 - Demostrar conocimiento y capacidad de aplicación de las herramientas necesarias para el almacenaje, el procesamiento y el acceso a los Sistemas de información, incluidos los basados en web.
  • CT3 - Demostrar conocimiento y comprensión del contexto organizativo, económico y legal en el que desarrolla su trabajo (Conocimiento adecuado del concepto de empresa, marco institucional y jurídico de la empresa, organización y gestión de empresas.)
    • CT3.3 - Saber encontrar e interpretar la información básica que permite evaluar el entorno económico de la organización.
  • CT5 - Analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, escogiendo el paradigma y los lenguajes de programación más adecuados.
    • CT5.5 - Usar las herramientas de un entorno de desarrollo de software para crear y desarrollar aplicaciones.
  • CT6 - Demostrar conocimiento y comprensión del funcionamiento interno de un computador y del funcionamiento de las comunicaciones entre ordenadores.
    • CT6.1 - Demostrar conocimiento y tener capacidad para administrar y mantener sistemas, servicios y aplicaciones informáticas.
  • CT7 - Evaluar y seleccionar plataformas de producción hardware y software para la ejecución de aplicaciones y de servicios informáticos.
    • CT7.1 - Demostrar conocimiento de las métricas de calidad y saber utilizarlas.
  • CT8 - Planificar, concebir, desplegar y dirigir proyectos, servicios y sistemas informáticos en todos los ámbitos, liderando su puesta en marcha, su mejora continua y valorando su impacto económico y social
    • CT8.1 - Identificar tecnologías actuales y emergentes y evaluar si son aplicables, y en qué medida, para satisfacer las necesidades de los usuarios.
    • CT8.2 - Asumir los roles y las funciones del jefe del proyecto y aplicar, en el ámbito de las organizaciones las técnicas de gestión y programación del tiempo, de los costes y de los aspectos financieros, de los recursos humanos y del riesgo.
    • CT8.3 - Demostrar conocimiento y saber aplicar las técnicas apropiadas para modelar y analizar los diferentes tipos de decisiones.
    • CT8.4 - Elaborar el pliego de condiciones técnicas de una instalación informática que cumpla los estándares y la normativa vigente.
    • CT8.5 - Gestionar y resolver los problemas y conflictos gracias a la capacidad de generar alternativas o escenarios de futuro convenientemente analizados, integrando los aspectos de incertidumbre y los múltiples objetivos a considerar.
    • CT8.6 - Demostrar comprensión de la importancia de la negociación, de los hábitos de trabajo efectivos, del liderazgo y de las habilidades de comunicación en todos los entornos de desarrollo de software.
    • CT8.7 - Controlar versiones y configuraciones del proyecto.

Competencias Transversales

Comunicación eficaz oral y escrita

  • G4 [Avaluable] - Comunicar de forma oral y escrita con otras personas conocimientos, procedimientos, resultados e ideas. Participar en debates sobre temas propios de la actividad del ingeniero técnico en informática.
    • G4.2 - Utilizar estrategias para preparar y llevar a cabo las presentaciones orales y redactar textos y documentos con un contenido coherente, una estructura y un estilo adecuados y un buen nivel ortográfico y gramatical. Hacer una presentación oral ante un auditorio restringido. Escoger adecuadamente los contenidos, el estilo, la temporización y el formato de la presentación. Capacidad de comunicación efectiva con el usuario en un lenguaje no técnico así como de comprender sus necesidades.

Objetivos

  1. Tener una visión general del proceso de la ingeniería del software
    Competencias relacionadas: CT2.1, CT6.1, CT8.2, CT3.3,
  2. Ser capaces de entender los requisitos de un sistema software y relacionarlos con partes de las especificaciones
    Competencias relacionadas: CT8.3, CT8.6, CT8.5, CT3.3,
  3. Ser capaces de escribir las especificaciones de un sistema software en UML
    Competencias relacionadas: CT8.1, CT8.3, G4.2, CT8.5, CT8.7, CT3.3, CT5.5, CT2.3,
  4. Conocer las propiedades deseables de las especificaciones de un sistema software
    Competencias relacionadas: CT7.1, CT8.4,
  5. Ser capaces de analizar la completitud y la consistencia de las especificaciones
    Competencias relacionadas: CT8.1, CT8.3, CT7.1, CT5.5, CT2.3,
  6. Conocer los principios generales de la arquitectura del software y del modelo de diseño orientado a objetos en UML
    Competencias relacionadas: CT8.1, CT8.5,
  7. Comprender la estructura lógica en capas de un sistema de información: capa de presentación, de dominio y de gestión de datos
    Competencias relacionadas: CT8.1, CT8.3, CT2.4,
  8. Saber transformar un modelo de especificación UML en uno de diseño
    Competencias relacionadas: G4.2, CT5.5, CT2.4,
  9. Conocer el concepto de patrón de diseño y dominar el uso de algunos de los patrones más conocidos
    Competencias relacionadas: CT2.1, CT8.1, CT8.3, G4.2, CT2.3,
  10. Conocer los conceptos básicos de la prueba del software
    Competencias relacionadas: CT2.1, CT8.3, CT7.1, CT8.4, CT5.5,

Contenidos

  1. Introducción a la ingeniería del software
  2. Requisitos de un sistema software y su especificación
  3. El Modelo de Casos de Uso en UML
  4. Especificación de sistemas software con UML
    - El esquema estructural de los datos
    - El esquema del comportamiento
    - Los diagramas de estado
  5. Introducción al diseño de software
  6. Diseño orientado a objetos con UML

Actividades

Actividad Acto evaluativo


Estudio de la introducción a la ingeniería del software


Objetivos: 1
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Estudio de los requisitos del software y de su relación con la especificación de sistemas software


Objetivos: 1 2
Contenidos:
Teoría
1h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Estudio del Modelo de Casos de Uso en UML


Objetivos: 2 3
Contenidos:
Teoría
1h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
4h

Estudio del esquema estructural de los datos en UML


Objetivos: 2 3 4 5
Contenidos:
Teoría
4h
Problemas
10h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
20h

Estudio del modelo del comportamiento en UML


Objetivos: 2 3 4 5
Contenidos:
Teoría
4h
Problemas
8h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
16h

Estudio de la introducción al diseño de software


Objetivos: 6 7
Contenidos:
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Estudio del diseño de software


Objetivos: 6 8 9
Contenidos:
Teoría
8h
Problemas
10h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
30h

Ejercicio del modelo estructural UML

Se evaluarán parte de los objetivos 3 a 5
Objetivos: 3 4 5
Semana: 4
Tipo: examen de teoría
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Control del modelo estructural en UML

Se evaluarán parte de los objetivos 1 a 5
Objetivos: 1 2 3 4 5
Semana: 6 (Fuera de horario lectivo)
Tipo: examen de teoría
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Control del modelo del comportamiento en UML

Se evaluarán parte de los objetivos 1 a 5
Objetivos: 2 3 4 5
Semana: 9 (Fuera de horario lectivo)
Tipo: examen de teoría
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Ejercicio de diseño de software

Se evaluarán parte de los objetivos 8 y 9
Objetivos: 8 9
Semana: 14
Tipo: examen de problemas
Teoría
0h
Problemas
2h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
3h

Control del diseño de software

Se evaluarán parte de los objetivos 6 a 10
Objetivos: 6 7 8 9 10
Semana: 15 (Fuera de horario lectivo)
Tipo: examen de teoría
Teoría
2h
Problemas
0h
Laboratorio
0h
Aprendizaje dirigido
0h
Aprendizaje autónomo
2h

Metodología docente

La docencia de la asignatura está estructurada en clases de teoría y clases de problemas.

En las clases de teoría los profesores presentan los contenidos esenciales de la asignatura. Normalmente los profesores usan transparencias, que los estudiantes pueden obtener, y deberían hacerlo, antes de las clases.

En las clases de problemas se practican los contenidos de la asignatura (los presentados en clase y los adquiridos autónomamente) mediante la realización de problemas. A veces se requiere que los problemas se hayan resuelto (o al menos intentado resolver) antes de la clase, y entonces la clase se destina a analizar y discutir colectivamente las mejores soluciones. Otras veces, el problema se plantea y se ha de resolver en la misma clase.

Método de evaluación

Durante el curso se harán cinco actos evaluatorios: tres controles en horario de clase (C1, C2 i C3) y dos pruebas fuera del horario de clase (FHC1 y FHC2). Para el cálculo de la nota final también se tendrà en cuenta la participación activa en clase. La distribución secuencial de estos actos evaluatorios y la su contribución a la nota final de la assignatura vienen definidos por la fórmula siguiente:

Nota Final = 10% C1 + 30% FHC1 + 15% C2 + 10% C3 + 30% FHC2 + 5% partticipación

teniendo en cuenta que:
El control C3 es opcional. Si un alumno no realiza el control C3, entonces automáticamente el peso de la prueba FHC2 pasa a ser del 40%.
La nota de participación se consigue entregando un mínimo del 75% de los ejercicios propuestos y participando activamente en clase.
Nota Final = NP si el alumno no se presenta a la FHC2 y su nota final acumulada es <4.



No hay examen final.

Además de la nota de la asignatura, habrá una nota a parte de la competencia genérica asignada a la asignatura, con valores A, B, C, D o NA donde:
o A indica que la competencia se ha superado con un nivel de excelencia
o B indica que la competencia se ha superado con el nivel deseado
o C indica que la competencia se ha superado con un nivel suficiente
o D indica que la competencia no se ha superado
o NA indica que la competencia no se ha evaluado

Bibliografía

Básica:

Complementaria:

Web links

Capacidades previas

Los alumnos deberían tener conocimientos suficientes de estructuras de datos y algoritmos y de programación cuando empiecen ingeniería del software.