Introducción al Modelado de Sistemas (300IGO001)

Información Básica

  • Créditos: 2
  • Horas de trabajo acompañado: 3 / semana (1 hora de clase, 2 de taller)
  • Horas de trabajo independiente: 3 / semana
  • Pre-requisitos: Ninguno
  • Tipo de curso: Núcleo de Formación Fundamental

Descripción del Curso

En este curso se estudian nociones básicas para: (i) diseñar de manera precisa el modelo de un sistema y (ii) razonar matemáticamente sobre su comportamiento. Utilizando un lenguaje de especificación – formal y ejecutable –, los estudiantes definen propiedades de las observaciones del sistema, junto con acciones que determinan cambios en ellas para diferentes contextos. Mediante el uso de software de animación y de ejecución de modelos, los estudiantes analizan el comportamiento del sistema y verifican que este respeta las propiedades esperadas.

Objetivos

Al finalizar el curso los participantes podrán:

  1. Reconocer los elementos de un sistema y sus interacciones.
    1. Separar los elementos estáticos y dinámicos que conforman un sistema.
    2. Identificar propiedades de los elementos de un sistema.
    3. Distinguir cómo varían los elementos dinámicos de un sistema.
    4. Identificar condiciones necesarias, sobre los elementos de un modelo, para su evolución.
  2. Modelar un sistema utilizando técnicas de abstracción y refinamiento.
    1. Diseñar una especificación usando números para representar los elementos de un sistema.
    2. Crear nuevos conjuntos para representar los elementos de un sistema y usarlos en el diseño de especificaciones.
    3. Organizar asociaciones entre elementos de conjuntos en relaciones y funciones matemáticas.
    4. Usar el lenguaje de las matemáticas para definir condiciones sobre los elementos de un sistema.
  3. Analizar el comportamiento de un sistema por medio de la simulación de su modelo.
    1. Relacionar el cambio de los elmentos de un modelo con respecto a la dinámica del sistema asociado.
    2. Comprender cómo se han introducido errores en un modelo e inferir cómo corregirlos.
    3. Comprender cuáles son las limitaciones de las simulaciones y entender por qué no es trivial garantizar la ausencia de erroes en un modelo.
  4. Establecer propiedades simples acerca del comportamiento de un sistema y verificarlas en el modelo construido.
    1. Demostrar algorítmicamente la preservación de invariantes de un modelo, limitada a un conjunto de estados iniciales.
    2. Probar algorítmicamente la ausencia de deadlocks, limitado a un conjunto de estados iniciales.

Se desarrollan competencias en

  1. event-B (intermedio)
  2. Rodin (intermedio)

Contenido

Capítulo 1: Introducción

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
1 1 0.5 Qué es un sistema. Ejemplos de sistemas físicos. La noción de “observación”. Ejemplos de observaciones. Especificación de observaciones Familiaridad [3,cap 1][1,cap 1] [2, cap 1] [6, Cap 1]
2 1 0.5 Componentes estático y dinámico de un sistema. Ejemplos simples del mundo cotidiano. Relación entre componentes estático y dinámico Familiaridad [1,cap 1][3, cap 2, 2.1] [6, Cap 1]
3,4 2 1 La noción de “invariante” de un sistema. Relación entre observaciones e invariante. Qué es el “comportamiento” de un sistema. Uso [1,cap 1][3, cap 2] [6, cap 1]
5,6 2 1 Diseñar un sistema: ejemplos Familiaridad [1,cap 2]

Total de Horas: 9.

Sesión Horas de trabajo independiente Temas Bibliografía
1-6 9 Tareas semanales, resolución de problemas en temas vistos [1,cap 1-2][2,cap 1][3,cap 1-2][6,cap 1]

Total de Horas: 9.

Capítulo 2: El lenguaje Event B

Sesión Horas teóricas Prácticas acompañadas Tópicos Profundidad Bibliografía
7 1 0.5 Qué es un modelo en Event B. Evaluación [1,cap 2] [3, cap 2]
8 1 0.5 Observaciones: la noción de “tipo”. Conjuntos y sus operaciones. Predicados simples Evaluación [1,cap 2] [2,part I.1, I.2] [6, Cap 1]
9 1 0.5 Modelar con conjuntos. Uso de las operaciones de conjuntos para establecer propiedades de las observaciones Evaluación [2,Part I.2]
10 1 0.5 La noción de “evento”. Guarda y acción de un evento. Observaciones antes y después de un evento Evaluación [1,cap 2][3, cap 2.2]
11 1 0.5 Ejemplos de sistemas simples en Event B Familiaridad [1,cap 2]

Total de Horas: 7.5.

Sesión Horas de trabajo independiente Temas Bibliografía
7-11 7.5 Tareas semanales, resolución de problemas en temas vistos [1,cap 2][2,part 1][3,cap 2][6,cap 1]

Total de Horas: 7.5.

Capítulo 3: Herramienta de modelado en Event-B: Rodin

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
12 1 0.5 Qué es y qué permite modelar Rodin. Cómo instalar. Los “Plugins” necesarios y las funcionalidades que proveen. Práctica guiada en el laboratorio. Familiaridad [6,cap 2] [4,cap 2.1-2.3]
13 1 0.5 Los editores en Rodin. Contexto y máquina. Su relación con componentes en Event-B. Partes constantes y variables de un modelo en Rodin. La relación “sees”. Escribir eventos en Rodin. Práctica guiada en el laboratorio. Uso [6,cap 2] [4,cap 2.4, 2.5] [3,part 2.2]
14,15 2 1 Ejemplos de modelos en Rodin. Qué es “animar” un modelo. Uso del chequeador de modelos ProB. Animación paso a paso. Verificar propiedades. Práctica guiada Familiaridad [6,cap 2] [4,cap 2.4]

Total de Horas: 6.

Sesión Horas de trabajo independiente Temas Bibliografía
12-15 6 Tareas semanales, resolución de problemas en temas vistos [3,part 2][4,cap 2][6,cap 2]

Total de Horas: 6.

Capítulo 4: Diseño de sistemas: predicados sobre colecciones y aritméticos

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
16 1 0.5 Los requerimientos de un sistema. Cómo especificarlos. Requerimientos en Rodin. Relacionar requerimientos y componentes del modelo. Ejemplos Familiaridad [5,cap 1]
17 1 0.5 Predicados sobre expresiones aritméticas. Modelo completo de sistemas con observaciones aritméticas. Ejemplos Uso [1,cap 2] [2,part I.1, I.2] [4,cap 2.5]
18 1 0.5 Conjuntos: especificar elementos y colecciones. Pertenencia e inclusión. Especificar agregación y eliminación de elementos en colecciones. Propiedades de operaciones sobre conjuntos. Predicados sobre conjuntos. Su uso en las guardas de los eventos. Ejemplos Evaluación [2,part I.1, I.2] [4,cap 2.5]
19 1 0.5 Conjuntos y predicados aritméticos en contextos y en máquinas. Axiomas e invariantes. Limitaciones de conjuntos simples en el diseño de sistemas. Ejemplos Evaluación [2,part I.2, I.3] [4,cap 2.5]

Total de Horas: 6.

Sesión Horas de trabajo independiente Temas Bibliografía
16-19 6 Tareas semanales, resolución de problemas en temas vistos [1,cap 2][2,part I][4,cap 2]

Total de Horas: 6.

Capítulo 5: Especificar datos estructurados

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
20 1 0.5 Tablas: especificación mediante relaciones. Operaciones básicas sobre relaciones en Event B. Sistemas que observan datos estructurados. Ejemplos. Uso [2,part I.2, I.3] [1,cap 9]
21 1 0.5 Tipos de relaciones. Su uso en la especificación. Notación en Event-B y en Rodin. Evaluación [4,cap 5-7]
22 1 0.5 Relaciones vs funciones. Notación y uso en especificaciones. Tipos de funciones y relación con estructuras de datos. Operaciones generales sobre funciones y relaciones. Uso [2,part I.2, I.3] [1,cap 9]
23 1 0.5 Uso de funciones en especificación de secuencias y arreglos. Relaciones y funciones en los contextos y máquinas. Modificación de relaciones en eventos. Ejemplos de diseño Evaluación [1,cap 1]
24 1 0.5 Animación de modelos con relaciones constantes. Inicialización de relaciones: consistencia con axiomas. Ejemplos. Evaluación [1,cap 2,3]

Total de Horas: 7.5.

Sesión Horas de trabajo independiente Temas Bibliografía
20-24 7.5 Tareas semanales, resolución de problemas en temas vistos [1,cap 1,2,3,9][2,part I][4,cap 2,5-7]

Total de Horas: 7.5.

Capítulo 6: Diseño jerárquico de modelos

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
25 1 0.5 Estructuración de Sistemas grandes. Relación “extends” entre contextos. Relación de refinamiento entre máquinas. Especificación en Event-B e implementación en Rodin. Uso [3,cap 2.3] [1, cap 5]
26 1 0.5 La noción de refinamiento de un modelo. Invariante del refinamiento y su relación con la abstracción. Eventos abstractos y eventos concretos. Evaluación [1,cap 5]
27 1 0.5 Concretar modelos mediante cadenas de refinamientos. Ilustración en Rodin. Evaluación [1,cap 2,3]
28 1 0.5 Acción de eventos e invariante del refinamiento. Desarrollo de los eventos a partir del invariante. Ejemplos Evaluación [1,cap 2,3]

Total de Horas: 6.

Sesión Horas de trabajo independiente Temas Bibliografía
25-28 6 Tareas semanales, resolución de problemas en temas vistos [1,cap 2,3,5]

Total de Horas: 6.

Capítulo 7: Diseño de un modelo completo

Sesión Horas teóricas Prácticas acompañadas Temas Profundidad Bibliografía
29-32 4 2 Diseño completo de un modelo jerárquico de tamaño mediano. Implantación en Rodin. Animación en ProB Evaluación [1,cap 5] [3,cap 2.3]

Total de Horas: 6.

Sesión Horas de trabajo independiente Temas Bibliografía
29-32 6 Tareas semanales, resolución de problemas en temas vistos [1,cap 5] [3,cap 2.3]

Total de Horas: 6.

Integración Curricular

Resultados de Programa (ABET)

(A) La habilidad para aplicar conocimientos de matemáticas, ciencias e ingeniería.

(B) La habilidad para analizar un problema e identificar los requerimientos necesarios para su definición y solución.

(C) La habilidad para diseñar, implementar y evaluar procesos y sistemas computacionales.

(D) La habilidad para funcionar en equipos de trabajo.

(E) El entendimiento de la responsabilidad profesional y ética.

(F) La habilidad para comunicarse efectivamente.

(G) La habilidad para analizar los impactos de la computación y la ingeniería en las personas, organizaciones y la sociedad.

(H) El reconocimiento de la necesidad de, y la habilidad para, continuar con el desarrollo profesional.

(I) La habilidad para usar las técnicas, destrezas y herramientas modernas para la práctica de la computación.

(J) La habilidad para aplicar los fundamentos y principios de las matemáticas y de la computación en el modelamiento y diseño de sistemas computacionales de manera que se demuestre comprensión de las ventajas y desventajas en las decisiones de diseño.

(K) La habilidad para aplicar los principios de diseño y desarrollo de software en la construcción de sistemas de diferente complejidad.

Relevancia del curso con los resultados de programa

Resultados de Programa
A B C D E F G H I J K
Relevancia 2 0 0 0 0 2 0 1 3 4 2

Escala: (1) baja relevancia - (5) alta relevancia.

Integración de objetivos, contenido y metodología del curso

El curso es presencial y con participación y trabajo en clase. Se asignarán trabajos, ejercicios y lecturas. Durante la sesión se expondrán los conceptos acompañados de ejemplos, se fomentará la participación de los estudiantes. Se realiza un taller semanal en el que se aplican los fundamentos teóricos.

Resultados del Programa Indicadores de Desempeño Objetivos/Contenido del Curso Actividades de aprendizaje Instrumentos de medición
(A) Aplicación de Conocimientos (A1) Identificar los fundamentos científicos y los principios de ingeniería que rigen un proceso o sistema. (Conocimiento) (A2) Resolver problemas relacionados con la disciplina y otras áreas por medio de la utilización de conocimientos, modelos y formalismos de las ciencias de la computación, las matemáticas y la ingeniería. (Aplicación) (A3) Analizar conjuntos de datos. (Análisis) Todos Exposiciones del profesor, talleres, solución de ejercicios y lecturas Exámenes, talleres, proyecto
(F) Comunicación efectiva (F1) Producir textos de manera efectiva teniendo en cuenta la estructura, coherencia, flujo, ortografía y correcto uso del lenguaje. (Aplicación). (F2) Comunicarse de manera efectiva de acuerdo al público objetivo haciendo uso correcto del lenguaje, estilo, tiempo y expresión corporal. (Aplicación). (F3) Utilizar recursos gráficos para comunicar y expresar una idea. (Aplicación). (F4) Defender ideas con precisión y claridad. (Evaluación). Todos Exposiciones del profesor, talleres, solución de ejercicios y lecturas Exámenes, talleres, proyecto
(H) Desarrollo profesional. (H1) Reconocer la importancia del conocimiento tanto en amplitud como en profundidad. (Compresión). Todos Exposiciones del profesor, talleres, solución de ejercicios y lecturas Exámenes, talleres, proyecto
(I) Uso de herramientas y técnicas (I1) Utilizar herramientas de desarrollo de software. (Aplicación). (I2) Utilizar herramientas de diseño, modelamiento y simulación. (Aplicación). (I3) Combinar herramientas de software y hardware para resolver un problema. (Síntesis). (I4) Demostrar flexibilidad para adaptarse a diferentes paradigmas y lenguajes de programación. (Valuación). Todos Exposiciones del profesor, talleres, solución de ejercicios y lecturas Exámenes, talleres, proyecto
(J) Modelamiento y diseño de sistemas computacionales (J1) Reconocer la importancia del modelamiento cuando se resuelve un problema. (Compresión). (J2) Relacionar conceptos y principios teóricos para la resolución efectiva de un problema. (Síntesis). (J4) Evaluar decisiones de diseño basándose en principios matemáticos y de computación. (Evaluación). Todos Exposiciones del profesor, talleres, tareas y proyectos Exámenes, Talleres, proyecto
(K) Desarrollo de software (K3) Establecer invariantes y propiedades de componentes de software. (Análisis). Todos Exposiciones del profesor, talleres, tareas y proyectos Exámenes, Talleres, proyecto

Contribución al Desarrollo de Competencias (CNA)

La tabla muestra que aspectos de las competencias de Comunicación Escrita, Lectura Crítica y Razonamiento Cuantitativo son evaluados a través de los factores ABET correspondientes. Por otra parte, la competencias de Inglés se favorece gracias a la metodología del curso y también, gracias al factor ABET correspondientes.

Resultados de Programa
A B C D E F G H I J K
Comunicación escrita E E U E E E
Lectura crítica E E U E
Inglés U U U U U U
Razonamiento cuantitativo E E U E E E

E- Se evalúa. U - Se usa

Contribución a los objetivos educacionales

La Carrera de Ingeniería de Sistemas y Computación plantea los siguientes objetivos educacionales, El estudiante graduado de la carrera será capaz de:

  1. Ejercitar la práctica de la Ingeniería de Sistemas y Computación profesionalmente.
  2. Diseñar y operar sistemas de computación que contribuyen a la solución de problemas relacionados a la disciplina, otra área de la ciencia y la ingeniería u otras disciplinas.
  3. Contribuir al bienestar de las comunidades desde posiciones prominentes en la industria, academia, sector público o como un emprendedor.
  4. Ser distinguido por su bases sólidas en computación, su sentido de ciudadanía responsable, su profesionalismo y liderazgo.
  5. Continuar su desarrollo profesional o involucrarse en estudios de posgrado.
Resultados de Programa
A B C D E F G H I J K
Objetivo 1 X X X X X
Objetivo 2 X X X X X X
Objetivo 3 X
Objetivo 4 X X X X X X
Objetivo 5 X X X X X X

Recomendaciones del Director del Programa

Reglas del curso

Calificación y Balance de Evaluación del Curso

Instrumento Porcentaje A B C D E F G H I J K
Parcial 1 25 % 15 % 15 % 5 % 20 % 30 % 15 %
Parcial 2 25 % 15 % 15 % 5 % 20 % 30 % 15 %
Proyecto 30 % 15 % 15 % 5 % 20 % 30 % 15 %
Talleres,tareas,quices,reportes 20 % 15 % 15 % 5 % 20 % 30 % 15 %

Uso de material en exámenes

Está permitido el uso de notas de clase, bibliografía y calculadoras. No está permitido el uso de computadores personales ni teléfonos celulares.

Asistencia

Es obligatoria.

Bibliografía

  1. Jean-Raymond Abrial. Modeling in Event-B: System and Software Engineering. Cambridge University Press. 2010.
  2. Jean-Raymond Abrial. The B-Book, Assigning Programs to Meanings. Cambridge University Press. 2005.
  3. Requirements Specification Tutorial. http://wiki.event-b.org/index.php/Requirements_Tutorial
  4. Camilo Rueda. Introducción al Modelado de Sistemas, 2016.
    1. Capítulo 1. Cap 1
    2. Capítulo 2. Cap 2
    3. Capítulo 3. Cap 3
    4. Capítulo 4.Cap 4
    5. Capítulo 5.Cap 5

Instalaciones

Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación.

Material de este semestre

 
materias/introduccionmodeladosistemas.txt · Última modificación: 2016/09/05 10:13 por camilo.rocha
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki