Pasar al contenido principal

Introducción a la Ingeniería del Software

Créditos
6
Tipos
  • GIA: Optativa
  • GRAU: Obligatoria
Requisitos
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

Otros

Horas semanales

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

Competencias

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.
  • 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
    12h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    23h

    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
    10h
    Problemas
    10h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    33h

    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)
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    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)
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    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)
    Teoría
    0h
    Problemas
    0h
    Laboratorio
    0h
    Aprendizaje dirigido
    0h
    Aprendizaje autónomo
    0h

    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 tres actos evaluatorios: un examen en horario de clase (C1) y dos exámenes 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 = 40% FHC1 + 15% C2 + 40% FHC2 + 5% partticipación

    teniendo en cuenta que:
    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ásico

    Complementario

    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.