Source: http://docplayer.es/1566776-Bibiana-maria-gonzalez-alvarez-jorge-andres-quintero-cardenas.html
Timestamp: 2017-01-20 09:57:37+00:00

Document:
⭐BIBIANA MARÍA GONZÁLEZ ALVAREZ JORGE ANDRÉS QUINTERO CÁRDENAS
Download "BIBIANA MARÍA GONZÁLEZ ALVAREZ JORGE ANDRÉS QUINTERO CÁRDENAS"
1 ANÁLISIS, DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA INFORMÁTICO PARA EL APOYO AL PROCESO DE ASIGNACIÓN DE LA CARGA ACADÉMICA USANDO PROGRAMACIÓN CON RESTRICCIONES BIBIANA MARÍA GONZÁLEZ ALVAREZ JORGE ANDRÉS QUINTERO CÁRDENAS UNIVERSIDAD TECNÓLOGICA DE PEREIRA FACULTAD DE INGENIERÍAS ELÉCTRICA, ELECTRÓNICA, FÍSICA Y CIENCIAS DE LA COMPUTACIÓN INGENIERÍA DE SISTEMAS Y COMPUTACIÓN PEREIRA 20102 ANÁLISIS, DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA INFORMÁTICO PARA EL APOYO AL PROCESO DE ASIGNACIÓN DE LA CARGA ACADÉMICA USANDO PROGRAMACIÓN CON RESTRICCIONES BIBIANA MARÍA GONZÁLEZ ALVAREZ JORGE ANDRÉS QUINTERO CÁRDENAS Proyecto presentado como requisito para optar por el título de Ingeniero(a) de Sistemas y Computación Asesor del Proyecto Ing. Guillermo Roberto Solarte Martínez UNIVERSIDAD TECNÓLOGICA DE PEREIRA FACULTAD DE INGENIERÍAS ELÉCTRICA, ELECTRÓNICA, FÍSICA Y CIENCIAS DE LA COMPUTACIÓN INGENIERÍA DE SISTEMAS Y COMPUTACIÓN PEREIRA 20103 Nota de aceptación: Firma del presidente del jurado Firma del jurado Firma del jurado Pereira, Junio de4 DEDICATORIA A mi mamá por el apoyo y motivación brindados a lo largo de mi carrera universitaria y durante la realización de este proyecto. Bibiana María González Alvarez A mi madre, por no desfallecer, por su apoyo total e incondicional, por no perder la ilusión de ver este proceso culminado. Jorge Andrés Quintero Cárdenas 45 AGRADECIMIENTOS Queremos dar un reconocimiento a todos los profesores que hicieron parte de este proceso de formación como ingenieros de sistemas y computación, queremos darles las gracias por intentar trasmitirnos parte de sus conocimientos, por compartir con nosotros sus experiencias y por realizar la labor de educadores, la cual tiene un impacto social tan importante, a todos y cada uno los recordaremos como excelentes profesionales, esperamos demostrar en nuestra vida laboral la calidad de nuestra formación y dejar en alto el nombre de nuestra universidad. Igualmente y en especial, a nuestro guía y tutor, el ingeniero Guillermo Roberto Solarte, quien nos acompañó durante el desarrollo de todas las etapas de este proyecto. A la ingeniera Luz Stella Valencia, quien fue la persona que nos sugirió la idea del proyecto. Cuando el estudiante se enfrenta a la realización de la tesis de grado la primera dificultad que encuentra es no saber que hacer. Al ingeniero Gilberto Vargas, queremos también hacerle un reconocimiento; en su labor de docente es impecable y muy profesional, además de poseer un conocimiento extenso en ingeniería de sistemas, pero no solo se destaca en su labor académica, también lo hace en su labor directiva, mostrando interés por las dificultades del estudiante. A la ingeniera Ana Maria López Echeverri, quien nos llevó de la mano en la última etapa de desarrollo, ayudándonos a optimizar y aterrizar la aplicación en cuanto a la realidad del proceso. A todos y cada uno, muchas gracias. 56 CONTENIDO Página INTRODUCCIÓN TÍTULO DEL PROYECTO PLANTEAMIENTO DEL PROBLEMA IMPORTANCIA DE LA INVESTIGACIÓN JUSTIFICACIÓN OBJETIVOS Objetivo general Objetivos específicos MARCO REFERENCIAL ANTECEDENTES EN LA SOLUCIÓN DEL PROBLEMA ACTUALIDAD DE LA PROGRAMACIÓN CON RESTRICCIONES REFERENTES DEL MARCO TEÓRICO Programación lógica Programación con restricciones Ejemplo de un problema que se puede formular como un CSP (Constraint Satisfaction Problem) Resolución de un CSP 42 67 Modelado de un CSP Conceptos CSP Notación CSP Restricciones Consistencia de un CSP Algoritmos de búsqueda El árbol de búsqueda Backtracking cronológico (BT) Algoritmos Look-back Backjumping (BJ) Conflict-directed backjumping (CBJ) Learning Algoritmos Look-ahead Forward Checking (FC) INTRODUCCION A UML Diagrama de Casos de Uso Diagramas de Interacción Diagrama de Secuencia Diagrama de Colaboración Diagrama de Actividades Diagrama de Estados Diccionario de Datos Requerimientos del Usuario 56 78 Requerimientos Funcionales Requerimientos No Funcionales Diagrama de Interacción con el Usuario Diagrama de Componentes Diagrama de Despliegue Diagrama de Clases Modelo Entidad-Relación ANÁLISIS DEL SISTEMA TRABAJO DE CAMPO Entrevista Requerimientos del sistema Modelado del dominio MODELO MATEMÁTICO Restricciones Profesores catedráticos Profesores de contrato Horas reglamentarias Sobrecarga METODOLOGÍA DE DESARROLLO MODELO DE CASOS DE USO Diagramas y Descripción de Casos de Uso MODELO DINÁMICO 104 89 Diagramas de Secuencia Diagramas de Colaboración MODELO DE ESTADOS Diagrama de Estados MODELO FUNCIONAL Diagrama de Actividades MODELO FINAL DE OBJETOS Diagrama de Clases DICCIONARIO DE DATOS Diccionario de clases Diccionario de atributos clase Diccionario de métodos clase REQUERIMIENTOS NO FUNCIONALES DISEÑO DEL SISTEMA ARQUITECTURA DEL SISTEMA IDENTIFICACIÓN DE SUBSISTEMAS Diagrama de Subsistemas Descripción de cada Subsistema DESCRIPCIÓN DE SUBSISTEMAS DE APLICACIÓN Modelo general de las aplicaciones Diagramas de Secuencia de Ventanas Modelo Dinámico de la aplicación 184 910 Diagramas de Interacción con el usuario Modelo de componentes Diagrama de Componentes Modelo de Distribución Diagrama de Despliegue DISEÑO DE INTERFACES Diagrama de Interacción con el usuario de los componentes a nivel de objetos Diseño estético DISEÑO DE LA BASE DE DATOS Modelo Entidad-Relación Scripts Descripción de las tablas CONCLUSIONES RECOMENDACIONES FUTURAS LÍNEAS DE INVESTIGACIÓN 243 BIBLIOGRAFÍA11 ÍNDICE DE FIGURAS Pág. Figura 1. Mapa dividido en cuatro regiones (Ejemplo de problema CSP) 41 Figura 2. Grafo de restricciones 42 Figura 3. Esquema de sumado 43 Figura 4. Árbol de búsqueda 47 Figura 5. Representación Actor 50 Figura 6. Representación Caso de Uso 50 Figura 7. Inclusión 51 Figura 8. Extensión 51 Figura 9. Generalización 51 Figura 10. Diagrama de Secuencia 52 Figura 11. Ejemplo Diagrama de Colaboración 53 Figura 12. Ejemplo Diagrama de Actividad 54 Figura 13. Ejemplo Diagrama de Estados 55 Figura 14. Diagrama de Interacción con el Usuario 56 Figura 15. Ejemplo Diagrama de Componentes 57 Figura 16. Ejemplo Diagrama de Despliegue 57 Figura 17. Representación Clase 58 Figura 18. Herencia 60 Figura 19. Agregación 60 1112 Figura 20. Asociación 60 Figura 21. Dependencia o instanciación 61 Figura 22. Ejemplo Dependencia o instanciación 61 Figura 23. Ejemplo Modelo Entidad-Relación 63 Figura 24. Esquema propuesto de secuencia de horas 72 Figura 25. Diagrama de Caso de Uso Administrar Profesores 77 Figura 26. Diagrama de Caso de Uso Administrar Materias 85 Figura 27. Diagrama de Caso de Uso Administrar Usuarios 90 Figura 28. Diagrama de Caso de Uso Administrar Carga 96 Figura 29. Diagrama de Secuencia Administrar Profesores Escenario Adicionar 104 Figura 30. Diagrama de Secuencia Administrar Profesores Escenario Modificar 105 Figura 31. Diagrama de Secuencia Administrar Profesores Escenario Consultar 106 Figura 32. Diagrama de Secuencia Administrar Profesores Escenario Eliminar 107 Figura 33. Diagrama de Secuencia Administrar Profesores Escenario Establecer Horario 108 Figura 34. Diagrama de Secuencia Administrar Profesores Escenario Adicionar Materia 109 Figura 35. Diagrama de Secuencia Administrar Profesores Escenario Eliminar Materia 110 Figura 36. Diagrama de Secuencia Administrar Materias Escenario Adicionar 111 Figura 37. Diagrama de Secuencia Administrar Materias Escenario Modificar13 Figura 38. Diagrama de Secuencia Administrar Materias Escenario Consultar 113 Figura 39. Diagrama de Secuencia Administrar Materias Escenario Eliminar 114 Figura 40. Diagrama de Secuencia Administrar Usuarios Escenario Adicionar 115 Figura 41. Diagrama de Secuencia Administrar Usuarios Escenario Modificar 116 Figura 42. Diagrama de Secuencia Administrar Usuarios Escenario Consultar 117 Figura 43. Diagrama de Secuencia Administrar Usuarios Escenario Eliminar 118 Figura 44. Diagrama de Secuencia Administrar Usuarios Escenario Restablecer Clave 119 Figura 45. Diagrama de Secuencia Administrar Carga Escenario Adicionar Grupo 120 Figura 46. Diagrama de Secuencia Administrar Carga Escenario Consultar 121 Figura 47. Diagrama de Secuencia Administrar Carga Escenario Eliminar Grupo 122 Figura 48. Diagrama de Secuencia Administrar Carga Escenario Asignar Carga 123 Figura 49. Diagrama de Secuencia Administrar Carga Escenario Reiniciar Carga 124 Figura 50. Diagrama de Secuencia Administrar Carga Escenario Asignar Grupo 125 Figura 51. Diagrama de Secuencia Administrar Carga Escenario Liberar Grupo 126 Figura 52. Diagrama de Colaboración Administrar Profesores Escenario Adicionar14 Figura 53. Diagrama de Colaboración Administrar Profesores Escenario Modificar 128 Figura 54. Diagrama de Colaboración Administrar Profesores Escenario Consultar 129 Figura 55. Diagrama de Colaboración Administrar Profesores Escenario Eliminar 130 Figura 56. Diagrama de Colaboración Administrar Profesores Escenario Establecer Horario 131 Figura 57. Diagrama de Colaboración Administrar Profesores Escenario Adicionar Materia 132 Figura 58. Diagrama de Colaboración Administrar Profesores Escenario Eliminar Materia 133 Figura 59. Diagrama de Colaboración Administrar Materias Escenario Adicionar 134 Figura 60. Diagrama de Colaboración Administrar Materias Escenario Modificar 135 Figura 61. Diagrama de Colaboración Administrar Materias Escenario Consultar 136 Figura 62. Diagrama de Colaboración Administrar Materias Escenario Eliminar 137 Figura 63. Diagrama de Colaboración Administrar Usuarios Escenario Adicionar 138 Figura 64. Diagrama de Colaboración Administrar Usuarios Escenario Modificar 139 Figura 65. Diagrama de Colaboración Administrar Usuarios Escenario Consultar 140 Figura 66. Diagrama de Colaboración Administrar Usuarios Escenario Eliminar 141 Figura 67. Diagrama de Colaboración Administrar Usuarios Escenario Restablecer Clave15 Figura 68. Diagrama de Colaboración Administrar Carga Escenario Adicionar Grupo 143 Figura 69. Diagrama de Colaboración Administrar Carga Escenario Consultar 144 Figura 70. Diagrama de Colaboración Administrar Carga Escenario Eliminar Grupo 145 Figura 71. Diagrama de Colaboración Administrar Carga Escenario Asignar Carga 146 Figura 72. Diagrama de Colaboración Administrar Carga Escenario Reiniciar Carga 147 Figura 73. Diagrama de Colaboración Administrar Carga Escenario Asignar Grupo 148 Figura 74. Diagrama de Colaboración Administrar Carga Escenario Liberar Grupo 149 Figura 75. Diagrama de Estados Caso de Uso Administrar Profesores 150 Figura 76. Diagrama de Estados Caso de Uso Administrar Materias 151 Figura 77. Diagrama de Estados Caso de Uso Administrar Usuarios 152 Figura 78. Diagrama de Estados Caso de Uso Administrar Carga 153 Figura 79. Diagrama de Actividades Administrar Profesores 154 Figura 80. Diagrama de Actividades Administrar Materias 155 Figura 81. Diagrama de Actividades Administrar Usuarios 156 Figura 82. Diagrama de Actividades Administrar Carga 157 Figura 83. Diagrama de Clases 158 Figura 84. Arquitectura Web-enable 177 Figura 85. Diagrama de Subsistemas 178 Figura 86. Diagrama de Secuencia de Ventanas Administrar Profesores16 Figura 87. Diagrama de Secuencia de Ventanas Administrar Materias 181 Figura 88. Diagrama de Secuencia de Ventanas Administrar Usuarios 182 Figura 89. Diagrama de Secuencia de Ventanas Administrar Carga 183 Figura 90. Diagrama de Interacción con el Usuario Administrar Profesores 184 Figura 91. Diagrama de Interacción con el Usuario Administrar Materias 185 Figura 92. Diagrama de Interacción con el Usuario Administrar Usuarios 186 Figura 93. Diagrama de Interacción con el Usuario Administrar Carga 187 Figura 94. Diagrama de Componentes 188 Figura 95. Diagrama de Despliegue 189 Figura 96. Diagrama de Interacción con el usuario de los componentes a nivel de Objetos Administrar Profesores 190 Figura 97. Diagrama de Interacción con el usuario de los componentes a nivel de Objetos Administrar Materias 191 Figura 98. Diagrama de Interacción con el usuario de los componentes a nivel de Objetos Administrar Usuarios 192 Figura 99. Diagrama de Interacción con el usuario de los componentes a nivel de Objetos Administrar Carga 193 Figura 100. Ventana Inicio de Sesión 194 Figura 101. Ventana Menú Principal 195 Figura 102. Ventana Menú Principal Administrar Profesores 196 Figura 103. Ventana Menú Principal Administrar Materias 197 Figura 104. Ventana Menú Principal Administrar Usuario 198 Figura 105. Ventana Menú Principal Administrar Carga 199 Figura 106. Ventana Adicionar Profesor 200 Figura 107. Ventana Modificar Profesor - Seleccionar Profesor17 Figura 108. Ventana Modificar Profesor 202 Figura 109. Ventana Consultas Profesor - Seleccionar Consulta y Vista 203 Figura 110. Ventana Eliminar Profesor 204 Figura 111. Ventana Horario Profesor - Seleccionar Profesor 205 Figura 112. Ventana Horario Profesor - Horario 206 Figura 113. Ventana Adicionar Materia a Perfil - Seleccionar Profesor 207 Figura 114. Ventana Adicionar Materia a Perfil - Seleccionar Materia 208 Figura 115. Ventana Eliminar Materia a Perfil - Seleccionar Profesor 209 Figura 116. Ventana Eliminar Materia a Perfil - Seleccionar Materia 210 Figura 117. Ventana Adicionar Materia 211 Figura 118. Ventana Modificar Materia - Seleccionar Materia 212 Figura 119. Ventana Modificar Materia 213 Figura 120. Ventana Consultas Materia - Seleccionar Consulta y Vista 214 Figura 121. Ventana Eliminar Materia 215 Figura 122. Ventana Adicionar Administrador 216 Figura 123. Ventana Modificar Usuario - Seleccionar Usuario 217 Figura 124. Ventana Modificar Usuario 218 Figura 125. Ventana Consultas Usuario - Seleccionar Consulta y Vista 219 Figura 126. Ventana Eliminar Usuario 220 Figura 127. Ventana Restablecer Clave - Seleccionar Usuario 221 Figura 128. Ventana Adicionar Grupo 222 Figura 129. Ventana Consultas Carga - Seleccionar Consulta y Vista 223 Figura 130. Ventana Eliminar Grupo Seleccionar Materia18 Figura 131. Ventana Eliminar Grupo Seleccionar Grupo 225 Figura 132. Ventana Asignación de Carga Seleccionar jornada y categoría 226 Figura 133. Ventana Asignación de Carga Lista de Profesores 227 Figura 134. Ventana Asignación de Carga Resultados 228 Figura 135. Ventana Reiniciar Carga 229 Figura 136. Ventana Reiniciar Carga Seleccionar tipo 230 Figura 137. Ventana Asignar Grupo 231 Figura 138. Ventana Liberar Grupo 232 Figura 139. Modelo Entidad-Relación19 ÍNDICE DE TABLAS Pág. Tabla 1. Componentes del modelo send+more=money 43 Tabla 2. Requerimientos del sistema 66 Tabla 3. Espacio de tiempo de clases establecido por la universidad 72 Tabla 4. Eventos Caso de Uso Administrar Profesores Escenario Adicionar 78 Tabla 5. Eventos Caso de Uso Administrar Profesores Escenario Modificar 79 Tabla 6. Eventos Caso de Uso Administrar Profesores Escenario Consultar 80 Tabla 7. Eventos Caso de Uso Administrar Profesores Escenario Eliminar 81 Tabla 8. Eventos Caso de Uso Administrar Profesores Escenario Establecer Horario 82 Tabla 9. Eventos Caso de Uso Administrar Profesores Escenario Adicionar Materia 83 Tabla 10. Eventos Caso de Uso Administrar Profesores Escenario Adicionar Materia 84 Tabla 11. Eventos Caso de Uso Administrar Materias Escenario Adicionar 86 Tabla 12. Eventos Caso de Uso Administrar Materias Escenario Modificar 87 Tabla 13. Eventos Caso de Uso Administrar Materias Escenario Consultar 88 Tabla 14. Eventos Caso de Uso Administrar Materias Escenario Eliminar 89 Tabla 15. Eventos Caso de Uso Administrar Usuarios Escenario Adicionar 91 Tabla 16. Eventos Caso de Uso Administrar Usuarios Escenario Modificar 92 Tabla 17. Eventos Caso de Uso Administrar Usuarios Escenario Consultar 93 Tabla 18. Eventos Caso de Uso Administrar Usuarios Escenario Eliminar 94 1920 Tabla 19. Eventos Caso de Uso Administrar Usuarios Escenario Restablecer Clave 95 Tabla 20. Eventos Caso de Uso Administrar Carga Escenario Adicionar Grupo 97 Tabla 21. Eventos Caso de Uso Administrar Carga Escenario Consultar 98 Tabla 22. Eventos Caso de Uso Administrar Carga Escenario Eliminar Grupo 99 Tabla 23. Eventos Caso de Uso Administrar Carga Escenario Asignar Carga 100 Tabla 24. Eventos Caso de Uso Administrar Carga Escenario Reiniciar Carga 101 Tabla 25. Eventos Caso de Uso Administrar Carga Escenario Asignar Grupo 102 Tabla 26. Eventos Caso de Uso Administrar Carga Escenario Liberar Grupo 103 Tabla 27. Diccionario de Clases 159 Tabla 28. Diccionario de atributos de la clase DB 160 Tabla 29. Diccionario de atributos de la clase Profesor 161 Tabla 30. Diccionario de atributos de la clase Materia 161 Tabla 31. Diccionario de atributos de la clase Usuario 162 Tabla 32. Diccionario de atributos de la clase Perfil 162 Tabla 33. Diccionario de métodos de clase BD 163 Tabla 34. Diccionario de métodos de clase profesor 164 Tabla 35. Diccionario de métodos de clase materia 164 Tabla 36. Diccionario de métodos de clase usuario 165 Tabla 37. Diccionario de métodos de clase perfil 166 Tabla 38. Diccionario de métodos de clase carga 166 Tabla 39. Diccionario de métodos de clase controlador 167 Tabla 40. Diccionario de métodos de clase interfaz21 Tabla 41. Descripción de la tabla usuario 236 Tabla 42. Descripción de la tabla materia 236 Tabla 43. Descripción de la tabla perfil 237 Tabla 44. Descripción de la tabla profesor 238 Tabla 45. Descripción de la tabla horario_profesor 238 Tabla 46. Descripción de la tabla horario_materia22 GLOSARIO Algoritmo 1 Conjunto de instrucciones o de pasos a seguir para la resolución de un problema específico. Análisis 2 Fase del ciclo de desarrollo de sistemas que consta de dos tareas: llevar a cabo una investigación preliminar y realizar un análisis detallado. En esta etapa los analistas se encargan de analizar los requerimientos del sistema (a veces se incluye en esta etapa la recolección de requerimientos también). Esta etapa centra su atención en la interacción de los usuarios con el sistema. Aplicación 3 Software que utiliza un computador para llevar a cabo tareas; también se le conoce como programa. Base de datos 4 Conjunto de datos relacionados que se almacenan de forma que se pueda acceder a ellos de manera sencilla, con la posibilidad de relacionarlos, ordenarlos en base a diferentes criterios, etc. Las bases de datos son uno de los grupos de aplicaciones de productividad personal más extendidos. Diseño 5 El proceso de Diseño es un conjunto de pasos repetitivos que permiten al diseñador describir todos los aspectos del Sistema a construir. A lo largo del 1 Thomson Course Technology Computer and Internet Technology Definitions in spanish. Cánada. Shana Rosental. [Libro en línea]. Disponible desde Internet en: <http://books.google.com/books?id=dof9lijnktwc&pg=pa86&dq=diccionarios+de+tecnolog%c3% ADa+e+inform%C3%A1tica&lr=&hl=es&cd=9#v=onepage&q&f=false> 2 Ibid. 3 Ibid. 4 Mataix Lorda M. Mataix Hidalgo M Diccionario de Electrónica, Informática y Energía Nuclear. España. Ediciones Díaz de Santos S.A. [Libro en línea]. Disponible desde Internet en: < formatica+internet+sistemas&hl=es&cd=10#v=onepage&q&f=false> 5 Pressman, Roger S. Ingeniería del Software: Un enfoque práctico. Quinta edición. España. Mc Graw Hill. [Libro en línea]. Disponible desde Internet en: <http://omarenm.wordpress.com/2008/03/03/ingenieria-del-software-roger-s-pressman/> 2223 diseño se evalúa la calidad del desarrollo del proyecto con un conjunto de revisiones técnicas tales como implementar todos los requisitos explícitos contenidos en el modelo de análisis y acumular todos los requisitos implícitos que desea el cliente. El Diseño debe proporcionar una completa idea de lo que es el Software, enfocando los dominios de datos, funcional y comportamiento desde el punto de vista de la Implementación. Dominio 6 Es el conjunto de valores que puede tomar la variable independiente x. Explosión combinatoria 7 La explosión combinatoria se encuentra en situaciones donde las elecciones están compuestas secuencialmente, es decir, dado un conjunto de elementos se pueden obtener diferentes arreglos ordenados de estos, permitiendo una vasta cantidad de posibilidades. Situaciones de este tipo ocurren en problemas de inversión financiera, manejo de inventarios, diseño de circuitos integrados, manejo de recursos hidráulicos, mantenimiento de sistemas, etc. Instanciación 8 Proceso de creación de un objeto a partir de una clase. Inteligencia artificial 9 Es una de las áreas de las ciencias computacionales encargadas de la creación de hardware y software que tenga comportamientos inteligentes 6 Ibid. 7 Gutiérrez M. De los Cobos S. Pérez B Búsqueda Tabú: Un Procedimiento Heurístico para Solucionar Problemas de Optimización Combinatoria. México. [Revista en línea]. Disponible desde Internet en: <http://www.azc.uam.mx/publicaciones/enlinea2/num1/1-3.htm> 8 Larman C UML y patrones: introducción al análisis y diseño orientado a objetos. Prentice Hall. [Libro en línea]. Disponible desde Internet en: < Patrones-by-Craig-Larman> 9 Ralph m. Stair y george e. Reynolds, Principios de Sistemas de Información. Inteligencia Artificial y Sistemas expertos, Editorial Thomson 2324 Interfaz 10 Engloba la forma en la que el operador interactúa con el ordenador, los mensajes que éste recibe en pantalla, las respuestas del ordenador a la utilización de periféricos de entrada de datos, etc. Modelo matemático 11 Se define como una descripción desde el punto de vista de las matemáticas de un hecho o fenómeno del mundo real, desde el tamaño de la población, hasta fenómenos físicos como la velocidad, aceleración o densidad. El objetivo del modelo matemático es entender ampliamente el fenómeno y tal vez predecir su comportamiento en el futuro. Optimización combinatorial 12 Buscar la mejor opción entre un conjunto de un número finito de elementos que pueden ser generados mediante reglas que definen el problema a tratar. Paradigma 13 Un paradigma es una técnica, un modelo o un conjunto de herramientas para representar la solución de problemas específicos Programación lógica 14 Los programas se ejecutan verificando la presencia de una cierta condición habilitadora y, cuando se satisface, ejecutan una acción apropiada. También se le conoce como lenguaje con base a reglas STEWART, James Cálculo, Trascendentes Tempranas". 4 ed. Tr. de Andrés Sestier. México, Ed. Thomson 12 Gutiérrez M. De los Cobos S. Pérez B Búsqueda Tabú: Un Procedimiento Heurístico para Solucionar Problemas de Optimización Combinatoria. México. [Revista en línea]. Disponible desde Internet en: <http://www.azc.uam.mx/publicaciones/enlinea2/num1/1-3.htm> Louden K Programación Lógica. Teoría y Práctica, P. Julián, M. Alpuente, Pearson Prentice may. [Libro en línea]. Disponible desde Internet en: <http://books.google.com/books?id=mnrvc_gvkbmc&pg=pa493&dq=programaci%c3%b3n+l%c 3%B3gica.+Teor%C3%ADa+y+Pr%C3%A1ctica,&hl=es&cd=2#v=onepage&q&f=false> 2425 Prolog 15 (Programming In Logic). Es un lenguaje de programación que tiene su aplicación práctica en el desarrollo de software destinado a Sistemas Expertos. Subsistema 16 Un subsistema no es ni una función ni un objeto, sino un paquete de clases, asociaciones, operaciones, sucesos y restricciones interrelacionados, y que tienen una interfaz razonablemente bien definida y pequeña con los demás subsistemas. Normalmente, un subsistema se identifica por los servicios que proporciona. Un servicio es un grupo de funciones relacionadas que comparten algún propósito común, tal como el procesamiento de entrada-salida, dibujar imágenes o efectuar cálculos aritméticos. Un subsistema define una forma coherente de examinar un aspecto del problema. Tupla 17 Una tupla, en matemáticas, es una secuencia ordenada de objetos, esto es, una lista con un número limitado de objetos (una secuencia infinita se denomina en matemática como una familia). Las tuplas se emplean para describir objetos matemáticos que tienen estructura, es decir que son capaces de ser descompuestos en un cierto número de componentes. Variable 18 Estructura de programación que contiene datos. Puede contener números o caracteres alfanuméricos y el programador le asigna un nombre único. Mantiene los datos hasta que un nuevo valor se le asigna o hasta que el programa termine. Una variable es un identificador que se utiliza para representar un dato individual; es decir, una cantidad numérica o caractér de forma parecida a la constante pero en este caso, su valor es variable, asignado en alguna parte del programa Pressman, Roger S. Ingeniería del Software: Un enfoque práctico. Quinta edición. España. Mc Graw Hill. [Libro en línea]. Disponible desde Internet en: <http://omarenm.wordpress.com/2008/03/03/ingenieria-del-software-roger-s-pressman/> 17 STEWART, James Cálculo, Trascendentes Tempranas". 4 ed. Tr. de Andrés Sestier. México, Ed. Thomson26 RESUMEN Este proyecto nació de identificar una necesidad en el proceso de asignación de la carga académica en el Programa de Ingeniería de Sistemas y Computación de la Universidad Tecnológica de Pereira. El propósito era diseñar e implementar una aplicación que permitiera optimizar dicho proceso logrando así el mejor aprovechamiento de los recursos con los que se cuenta actualmente. Para darle solución al problema se planteó un modelo matemático para ser aplicado usando la técnica de programación con restricciones la cual se ajusta muy bien a la resolución de este tipo de problemas. 2627 INTRODUCCIÓN Actualmente toda empresa, compañía, o entidad de cualquier tipo que maneje cierta cantidad de información o que requiera la gestión de determinados procesos para su desenvolvimiento en la respectiva área, debe contar con herramientas tecnológicas para estar a la vanguardia. Es por eso que la mayoría de estas organizaciones ha ido incursionando en el mundo de la tecnología, que si bien puede llegar a ser complejo, el hecho de estar inmersos en él, se convierte casi que en una necesidad, si no se quiere llegar a estar obsoletos en el mercado correspondiente; además que facilita muchas de las tareas inherentes a los diferentes procesos que se realizan. La constante evolución de la tecnología, hace que cada día se desarrollen nuevas aplicaciones y se diseñen innovadores dispositivos dependiendo de las necesidades de quienes los requieran. El programa de Ingeniería de Sistemas y Computación de la Universidad Tecnológica de Pereira gestiona de forma manual la distribución de la carga académica de los profesores adscritos al programa, es decir, todo lo relacionado con la creación de los grupos de todas las asignaturas y la respectiva asignación de los docentes a dichos grupos. Debido a esto, se plantea una solución mediante el análisis, diseño e implementación de un software que le permita a los directivos del programa mejorar la gestión del proceso, ahorrando tiempo y sacándole mejor provecho a las herramientas con que se cuenta y a los recursos que se tienen destinados para tal fin. Para ello, se formularon una serie de preguntas a la Ingeniera Ana María López Echeverri Coordinadora del Programa de Ingeniería de Sistemas y Computación quien es la persona encargada de todo el proceso de asignación de la carga académica, con el fin de recolectar las inquietudes y sugerencias al respecto y poder implementar así un software acorde a sus necesidades, ya que ella será el usuario principal de éste. 2728 1. TÍTULO DEL PROYECTO Análisis, diseño e implementación de un sistema informático para el apoyo al proceso de asignación de la carga académica usando programación con restricciones. 2829 2. PLANTEAMIENTO DEL PROBLEMA Días previos al inicio de cada semestre académico, las directivas del programa involucradas directamente en el proceso de creación de cursos (grupos) y asignación de horarios a profesores y estudiantes, se ven enfrentadas a diversos inconvenientes que retrasan o hacen más complicado dicho proceso. Por ejemplo, deben tener en cuenta el número mínimo de estudiantes necesario para que un grupo pueda ser creado y no generar cruces de horarios en ningún momento. No solo las directivas se van afectadas a la hora de la matrícula, también los alumnos debido a los retrasos en la generación de la nueva configuración de horarios. La creación de grupos nuevos implica la asignación de un profesor, lo que conllevaría tal vez una reacomodación total o parcial de los horarios ya establecidos. Entonces se podría decir que comienza de nuevo el trabajo de las directivas encargadas de la asignación de la carga académica. Se deben empezar a considerar las solicitudes de los estudiantes con el fin de facilitarles y/o proporcionales su normal proceso académico, es decir, darles las garantías para que puedan desarrollar su plan de estudio. Las variables que se deben considerar a la hora de generar los respectivos horarios son: con respecto a los docentes, se debe tener en cuenta el estado en el que éstos se encuentran con la universidad dependiendo del tipo de contratación, de los horarios de disponibilidad (Horario de Contrato menos Horario de Clases para profesores que no estén contratados por horas) y de la capacidad que tengan para dictar una determinada asignatura, es decir, su perfil; con respecto a las asignaturas, se debe guardar relación para fijar las de un mismo semestre, ya que para programar un grupo se debe cumplir no solo que un profesor la pueda dictar sino que a esa hora no haya otro grupo programado de igual semestre. Este sería un caso crítico en el que cada materia cuenta con un solo grupo, para los casos en los que se cuente con más grupos hay mayor libertad para la asignación. 2930 3. IMPORTANCIA DE LA INVESTIGACIÓN La implementación de este software la consideramos pertinente por los aportes que brinda a la solución práctica de tipo social, económico y educativo de la Universidad. Esta herramienta es muy útil para dicha institución porque le permite optimizar el proceso de la distribución de la carga y de esta manera mejorar el aprovechamiento de los recursos relacionados como lo son docentes, asignaturas, entre otros. En el aspecto social es importante porque permite realizar una mejor asignación de cursos (horas de clase, asignaturas, ) teniendo en cuenta las necesidades de los alumnos y de los docentes, lo que implicaría mejores condiciones laborales y académicas; en el ámbito económico porque permite realizar una mejor distribución de los recursos humanos y físicos de la Universidad y en el aspecto educativo porque se pueden ofrecer mejores condiciones de estudio, es decir, poder aceptar un mayor número de estudiantes sin afectar la calidad de la educación, ya que habría una mejor distribución de las horas de clase y de los salones permitiendo a los alumnos organizar su respectivo horario de acuerdo a sus necesidades académicas. 3031 4. JUSTIFICACIÓN Desde hace muchos años, las distintas organizaciones y/o empresas, en búsqueda de ser competitivas y debido a la continua evolución de la Informática y todo lo relacionado con la tecnología, han ido incursionando en este mundo. La manera como se maneja la información ha ido cambiando y casi ha obligado a los Directivos de toda institución a automatizar los procesos y a optimizar la forma en que se manipula la información. Tal es el caso de la Universidad que hace unos pocos años modificó el sistema de matrículas de los estudiantes cada semestre, facilitando ese proceso. Pero como se mencionaba anteriormente, es casi una necesidad el hecho de actualizarse constantemente para suprimir técnicas y procesos obsoletos que pueden llegar a retrasar determinadas actividades en una organización particular impidiendo así que puedan ser competitivas frente a otras. Para las Directivas de la Universidad y específicamente para las del Programa de Ingeniería de Sistemas y Computación, el proceso de asignación de la carga académica se ha convertido en una tarea complicada debido a los diversos cambios que se ven obligados a realizar para poder llevar a cabo con éxito dicho proceso y teniendo en cuenta que se realiza manualmente. De ahí surge entonces la necesidad de implementar un sistema informático que a través de reportes sirva como herramienta de apoyo a los Directivos del programa para que puedan desempeñar con éxito esta ardua tarea. El problema de la asignación de la carga académica no solo le compete al Programa de Ingeniería de Sistemas y Computación sino que abarca todos los programas de la Universidad Tecnológica de Pereira, y más aún a los programas nuevos que sufren más cambios en su recurso profesoral, viéndose esto directamente reflejado en un mayor trabajo por parte de los responsables de este proceso en cada facultad. El alcance de este proyecto está limitado al programa de Ingeniería de Sistemas y Computación, pero puede extenderse en cualquier momento a otras facultades ajustándolo a sus requerimientos. Muchos de los proyectos que se han realizado en tesis anteriores no han tenido mucha aplicación o ni siquiera han llegado a usarse alguna vez, este en cambio será aplicado dentro de la universidad en una tarea que es vital al inicio del semestre. 3132 5. OBJETIVOS 5.1. General Analizar, diseñar e implementar un sistema informático para el apoyo al proceso de asignación de la carga académica usando programación con restricciones Específicos Construir un software para la gestión del proceso de asignación de la carga académica del programa de Ingeniería de Sistemas y Computación, que disminuya su complejidad y proporcione información clara a los profesores acerca de la programación de sus clases. Recopilar y consignar una base teórica coherente y suficiente que soporte la técnica empleada, teniendo en cuenta el pasado y el presente de la misma. Realizar una inspección del proceso manual que permita formar una idea clara de los requerimientos del software y con base en ello, realizar los diagramas respectivos que ilustren la aplicación desde el punto de vista funcional. Definir la arquitectura del software y diseñar las interfaces que permitan la interacción del usuario con la aplicación de una manera lo más intuitiva posible. Combinar los datos mediante técnicas de programación con restricciones y generar una o varias soluciones o alternativas que ayuden al directivo a escoger el horario que mejor se acomode a los requerimientos. Puede darse el caso que no sea posible generar una solución por la calidad que tienen los recursos de ser limitados, es decir, en algún momento el sistema puede ver agotada la disponibilidad profesoral. 3233 6. MARCO REFERENCIAL 6.1. ANTECEDENTES EN LA SOLUCIÓN DEL PROBLEMA En este capítulo se mencionarán soluciones o aplicaciones previas, enfocadas a la resolución de problemas similares al abordado en este proyecto, las cuales nos sirvieron como base para implementar y mejorar las funcionalidades del software adaptándolo a las necesidades del programa de Ingeniería de Sistemas y Computación de la Universidad. Para eso se consultó información acerca de otros programas relacionados con la creación de horarios de los cuales mencionaremos algunos. Para ampliar la información sobre alguno de ellos, se puede visitar la página asociada. asc Time Tables 19 Este programa fue implementado por la empresa desarrolladora asc Applied Software Consultants para crear horarios de primaria y secundaria. Es uno de los generadores de horarios más completos y eficientes que existen, razón por la cual ha sido comprado por escuelas de 114 países y además ha ganado premios como medallas de oro en exposiciones internacionales. Está disponible en varios idiomas. Comentarios. Este programa tiene funcionalidades muy útiles para la generación óptima de los diferentes horarios de clase dependiendo de las exigencias dadas por el usuario. Se tienen en cuenta factores importantes para evitar asignaciones erróneas o incompatibilidades en lo que a profesores, horas y salones se refiere. Uno de estos errores puede ser el cruce de horarios, situación que precisamente también se pretende evitar con la implementación del programa. Aunque es un software de buena calidad enfocado para colegios su aplicación para otro tipo de instituciones educativas como universidades es limitada o no aplicaría dependiendo de las condiciones. 19 asc Applied Software Consultants asc Time Tables. Disponible desde Internet en: 3334 GHC Generador de Horarios 20 Este programa fue implementado por la empresa informática Peñalara Software; es la principal herramienta de España de generación de horarios académicos para centro de enseñanza. Posee 1500 clientes activos en España, Portugal, Marruecos y Latinoamérica. Comentarios. La verificación del horario antes de ser generado para evitar errores o incompatibilidades es una buena herramienta para la optimización de la tarea de creación del horario. En nuestro caso, antes de generar los reportes respectivos se podrán hacer verificaciones sobre las condiciones y restricciones dadas inicialmente. Por otro lado, la versión gratuita de este programa está limitada a solo 10 profesores lo que casi obliga al pago para poder acceder al programa sin limitación alguna. gp-untis - Horario Software para colegios 21 Es un programa implementado por el grupo Gruber & Petters de Austria, desarrolladores de software para gestión de información horaria. Posee más de usuarios en más de 80 países y todo tipo de centros de enseñanza; ha sido traducido a más de 20 idiomas. Comentarios. Aunque tiene funcionalidades útiles para la creación de los horarios como la impresión del horario en forma de lista que es más adecuado que la vista en cuadrícula horaria porque se destaca claramente la sucesión de horas y además la adaptación de módulos al paquete estándar según las necesidades adicionales, el acceso o inserción de dichos módulos tiene un costo y la versión demo con la que se pueden utilizar todas las funciones impide guardar los datos introducidos y el número de grupos es limitado. Sin embargo, se puede decir que en general es un programa que brinda soluciones óptimas a los usuarios dependiendo de sus necesidades. 20 Peñalara Software GHC Generador de Horarios. Disponible en Internet desde: URL: 21 grupo Gruber & Petters de Austria gp-untis - Horario Software para colegios. Disponible en Internet desde: 3435 DocCF Software de Gestión Escolar 22 Este es un programa implementado por el Grupo CF Developer, empresa de servicios informáticos para España y Latinoamérica, que ayuda a optimizar algunas tareas realizadas por los directivos de una institución educativa. El programa tiene varias funcionalidades (todo en una sola aplicación) agrupadas en Módulos que cabe mencionar, aunque solo se comentará sobre la Asignación y control de horarios. Disponible en español. Comentarios. Este programa, además de la gestión de horarios para instituciones educativas realiza otro tipo de gestiones como económica, de biblioteca, entre otras. Tiene un costo de 250 dólares para la versión básica y 500 dólares para la versión completa. Este tipo de software con interfaces elaboradas y herramientas de programación nuevas, requiere que la máquina en donde vaya a ser instalado, cumpla con una serie de requerimientos como los son las librerías de ejecución de java o.net si es el caso, nuestra aplicación solo necesita que la maquina tenga un navegador estándar como lo es el Mozilla Firefox o Internet Explorer y presenta total compatibilidad con ambos, no se necesita ningún plugin adicional. OPTIHPER Asignación Optimizada de Horarios al Personal 23 Es un programa desarrollado en la Universidad Politécnica de Valencia España que gestiona la asignación objetiva y equilibrada de recursos humanos como horarios y tareas al personal de una empresa, basándose en condiciones y/o restricciones dadas. Está dirigido a empresas de distribución comercial, grandes superficies, de transporte (aéreo, terrestre y marítimo), hospitales y centros docentes. Comentarios. Este programa se asemeja más a un software de propósito general, en la materia claro está, por esta razón se tendría que invertir un esfuerzo adicional acondicionándolo al propósito que compete, la distribución de la carga académica en una universidad, en este caso la UTP. Esta aplicación es un producto del grupo de investigación IA-GPS de la universidad politécnica de valencia, no tienen representación en Colombia. 22 Grupo CF Developer DocCF Software de Gestión Escolar. Disponible en Internet desde: 23 Barber Federico Universidad Politécnica de Valencia OPTIHPER Asignación Optimizada de Horarios al Personal. Disponible en Internet desde: 3536 Cabe aclarar que todos estos programas mencionados tienen funcionalidades que no se adaptan o no están enfocados a suplir completamente las necesidades que tiene el programa de Ingeniería de Sistemas y Computación de la Universidad en términos de la distribución de la carga académica. Es por eso, que se quiso implementar este sistema informático utilizando metodologías y conceptos que permitieran brindar una solución óptima al problema a abordar. En el siguiente capítulo se podrá encontrar información referente a la tecnología empleada, los conceptos fundamentales y la terminología pertinente para la implementación concreta de la solución. 3637 6.2. ACTUALIDAD DE LA PROGRAMACIÓN CON RESTRICCIONES En esta sección se podrá obtener de forma clara el concepto, las aplicaciones e información en general relacionada con el paradigma de programación con restricciones, el cual permitió resolver el problema planteado inicialmente. Aunque la programación con restricciones no es muy reciente, es una tecnología que no se ha dejado de usar ni se considera obsoleta, por el contrario, está suscitando un interés creciente en la comunidad investigadora por varios motivos: La teoría que sustenta la programación con restricciones es una teoría muy sólida, lo que hace este paradigma mucho más robusto. Su campo de investigación es muy heterogéneo, abarca desde tópicos puramente teóricos en la lógica matemática hasta aplicaciones totalmente prácticas en la industria. Como consecuencia de ello, el paradigma esta atrayendo un amplio interés comercial pues es muy apropiado para el modelado de una extensa gama de problemas de optimización y, en particular, esos problemas que involucran restricciones heterogéneas y búsqueda combinatoria. Hoy en día es protagonista en la resolución de problemas bastante complejos. La compañía NICTA, Centro de Excelencia en Tecnologías de Información y Comunicación (TIC) de Australia, es la organización más grande de este país dedicada a la investigación de las TIC s; de entre sus proyectos se destacan la Plataforma de programación con Restricciones llamada G12, un software para resolver problemas industriales de optimización combinatorial de gran escala. En el proyecto se sustenta que la revolución en el procesamiento de la información, ha permitido que empresas de todos los tamaños puedan tener a la mano la información actualizada de todas sus actividades y recursos, la Plataforma de Programación con Restricciones permitirá convertir esta información en beneficios inmediatos mediante el acompañamiento en la toma de decisiones y la asignación de recursos de una forma optimizada. El proyecto de investigación se divide en cuatro líneas encaminadas a construir versiones mejoradas, las líneas son: lenguajes de modelado, capacidades de solución (tecnología de búsqueda y solución), control del lenguaje de modelado y ambiente de solución de problemas. 24 Existen algunas organizaciones como la ACP (Association for Constraint Programming) que coordinan y promocionan la aplicación de la programación con 24 NICTA (Australia's ICT Research Centre of Excellence). 2008; 8 de marzo de Constraint Programming Platform. [web en línea] Disponible desde Internet en: <http://www.nicta.com.au/research/projects/constraint_programming_platform> 3738 restricciones en diferentes áreas del mundo científico, impulsan la enseñanza en instituciones académicas y su adopción en el mundo industrial. 25 En particular, la ACP organiza la conferencia anual internacional de principios y práctica de la programación con restricciones. En las últimas dos versiones de la conferencia una realizada en Sydney, Australia 26 y la otra en Lisboa, Portugal 27, se trataron temas relacionados con la optimización del método mismo, es decir, mejoras en el modelado, conteo de soluciones y algoritmos, cuantificación de variables con dominios inciertos, preferencia de restricciones para evitar sistemas sobre-restringidos y detección de simetría en espacios de búsqueda evitando también búsquedas redundantes. La otra parte de la conferencia estuvo dedicada a aplicaciones como la planeación y la secuenciación de eventos en muchas áreas, oleoductos de gran tamaño, sistemas ferroviarios, sistemas altamente configurables, etc. En la Universidad Cornell de Estados Unidos existe un instituto llamado Instituto para la sostenibilidad computacional (Institute for Computational Sustainability) el cual tuvo participación en la ultima conferencia realizada por la ACP anteriormente mencionada. En dicha conferencia, el instituto realizó el primer taller sobre razonamiento con restricciones y optimización para la sostenibilidad computacional, en donde argumentaron la posibilidad de aplicar la ciencia computacional, la ciencia de la información, investigación de operaciones, la matemática aplicada y la estadística para el balanceo de las necesidades ambientales, económicas y sociales para un desarrollo sostenible. De esta manera podemos ver la heterogeneidad de los campos de investigación de la programación con restricciones. Siguiendo con los conceptos fundamentales, a continuación se podrá encontrar de forma concreta acerca de la Programación Lógica y la Programación con Restricciones. 25 ACP (Association for Constraint Programming) [web en línea] Disponible desde Internet en <http://4c.ucc.ie/a4cp/> 26 The 14th International Conference on Principles and Practice of Constraint Programming Sydney, Australia. [web en línea] Disponible desde Internet en <http://ww2.cs.mu.oz.au/cp2008/> 27 The 15th International Conference on Principles and Practice of Constraint Programming Lisbon, Portugal. [web en línea] Disponible desde Internet en <http://centria.di.fct.unl.pt/conferences/cp2009/> 3839 6.3. REFERENTES DEL MARCO TEÓRICO Programación lógica. La programación lógica tiene sus raíces en la automatización de la demostración de teoremas basado en el método de resolución del matemático, científico y profesor de la universidad de Siracusa de Estados Unidos, Alan Robinson, quien en su obra principal introduce el principio de resolución, la noción y el algoritmo de unificación. Usando su resolución, se pueden probar teoremas dados como fórmulas de lógica de primer orden, con el fin de obtener un si o no como respuesta a una pregunta, aunque bajo este modelo, no era posible realizar cálculos con una respuesta de este tipo. La solución a este inconveniente fue sugerida por el estadounidense, lógico y científico de la computación, Robert Kowalski quien propuso una versión modificada de la resolución, que consistía en un subconjunto de la lógica de primer orden que permitía generar substituciones que en últimas satisfacían la fórmula original. Esta substitución puede ser interpretada como el resultado del cálculo. Este acercamiento después se llamó Programación Lógica. Al mismo tiempo, el francés, científico de la computación y profesor de la universidad de Montreal, Alain Colmerauer y sus compañeros, trabajaban en un lenguaje de programación para el procesamiento del lenguaje natural basados en la demostración del teorema automatizado, lo que los llevó a la creación del Prolog. Prolog puede ser visto como la realización práctica de la idea de programación lógica. Este comenzó como un lenguaje de programación para crear aplicaciones de procesamiento del lenguaje natural, pero gracias a las contribuciones de varios investigadores fue transformado en un lenguaje de propósito general. Colmerauer, en su experimentación con Prolog, solucionó algunas de sus más importantes limitantes, por ejemplo, podía resolver ecuaciones entre términos, pero no entre cadenas. Usando la terminología actual, Prolog solo soporta un solucionador de restricciones. Esto lo llevo a diseñar los sucesores de Prolog, Prolog II, Prolog III y Prolog IV. Cada uno implementa nuevas características con respecto a su antecesor y representa un avance en la programación lógica hacia la programación con restricciones. En particular, en Prolog III, se pueden plantear restricciones sobre listas, valores booleanos y reales. Prolog III puede verse como la primera realización de la programación lógica con restricciones. Prolog, al ser una lenguaje de Programación con restricciones, es una muy buena opción para adoptarlo en la aplicación, ya que el proceso de adición de grupos cuando se distribuye la carga académica, consiste básicamente en encontrar una 3940 combinación que satisfaga los limites que imponen los recursos finitos de la universidad, estos limites se traducen en restricciones y finalmente se llevan a Prolog Programación con restricciones. El concepto formal de restricción fue usado originalmente en física y optimización combinacional. La primera vez que fue adoptado en la ciencia computacional fue hecho por el estadounidense, científico de la computación y pionero del Internet, Ivan Sutherland, quien lo usó para describir su sistema de dibujo interactivo Sketchpad. En los setentas, fueron propuestos varios lenguajes experimentales que usaban la noción de restricción y confiaban en el concepto de solución de restricciones. También en los setentas, se formuló el concepto de problema de satisfacción de restricciones en el campo de la inteligencia artificial y se usó para describir problemas de visión por computador. Después, se identificó que el concepto de propagación de restricciones era una vía crucial para copiar en la explosión combinatoria cuando se resolvían problemas de satisfacción de restricciones usando búsqueda de arriba hacia abajo. Búsqueda de arriba hacia abajo (Top-down search) es un nombre genérico para una serie de búsquedas en las cuales se pretende construir una solución tratando de extender una solución parcial mediante la adición de restricciones. En el caso más simple, cada restricción asigna un nuevo valor a otra variable. El ejemplo más común de este tipo de búsqueda es el backtraking o vuelta atrás, el cual se remonta al siglo diecinueve. Después llego una mejora al backtracking, que se llamó búsqueda de ramificación y poda (Branch and bound search), la cual fue usada por primera vez en optimización combinacional. En los ochentas salieron los primeros lenguajes de programación con restricciones, los más significativos fueron los basados en el paradigma de programación lógica. La razón principal del éxito del acercamiento a la programación con restricciones es que los predicados de las restricciones y de la programación lógica son ambos relaciones matemáticas y las variables son vistas como desconocidas en términos de álgebra, lo que contrasta con los lenguajes imperativos, en los cuales estas son entes cambiantes, pero en cada momento son entidades conocidas como en el cálculo. El paradigma resultante es llamado programación lógica con restricciones, y Prolog III como se dijo anteriormente, es un ejemplo de lenguaje de programación que aplica este paradigma Apt, Krzysztof R. Wallace, M. Diciembre 2006; Constraint Logic Programming Using Eclipse. Nueva York. Cambridge University Press. [libro en línea] Disponible desde Internet en: 29 Apt, Krzysztof R. Wallace, M. Diciembre 2006; Constraint Logic Programming Using Eclipse. Nueva York. Cambridge University Press. [libro en línea] Disponible desde Internet en: 4041 La programación con restricciones hoy en día se utiliza para resolver problemas de muchas áreas tales como inteligencia artificial, investigación operativa, bases de datos, sistemas expertos, entre otros. Un ejemplo de aplicación muy típico en la programación con restricciones es el scheduling o planificación de tiempos, materia que enmarca este proyecto. En muchas situaciones encontradas a diario y en las cuales se tenga que tomar una decisión, se estará sujeto a restricciones que limitan a la hora de hacer una elección. En los últimos años, la programación con restricciones ha ganado importancia gracias a su potencial para resolver grandes problemas reales, por tal motivo, esta tecnología fue reconocida por la ACM (Association for Computer Machinery) como una de las direcciones estratégicas en la investigación en informática, sin embargo, este tipo de programación, no es muy conocida y comprendida. La programación con restricciones es básicamente un sistema en donde se intenta resolver un problema basados en sus restricciones, esta se divide en dos ramas: la satisfacción de restricciones y la resolución de restricciones, la diferencia principal es que la primera trabaja con dominios finitos mientras que la segunda con dominios infinitos o más complejos Ejemplo de un problema que se puede formular como un CSP (Constraint Satisfaction Problem) Figura 1. Mapa dividido en cuatro regiones Fuente: Revista Iberoamericana de Inteligencia Artificial Nº Un CSP clásico es el problema de la coloración de un mapa. Se tiene un mapa dividido en varias regiones y se tiene un conjunto de colores, el problema consiste en colorearlas de tal forma que las regiones adyacentes tengan diferente color. 30 Barber, F. Salido, M; Julio de Revista Iberoamericana de Inteligencia Artificial. 20 ed. Introduction to constraint programming. Malaga, España. Lawrence Mandow. [Revista en línea] Disponible desde Internet en: <http://erevista2.aepia.org/index.php/ia/article/view/827/819> [con acceso el ]. 4142 Figura 2. Grafo de restricciones Fuente: Revista Iberoamericana de Inteligencia Artificial Nº Las regiones, que han sido llamadas w, x, y, z, son las variables del problema, las cuales pueden tomar los valores r, v, a, y se ha definido una restricción por cada par de regiones adyacentes, en la figura se puede ver el grafo que ilustra la situación Resolución de un CSP. La resolución de un CSP se divide en dos etapas: Modelado. Consiste en llevar el problema a términos de los componentes de un CSP, variables, valores posibles o dominios y restricciones. Procesamiento. Para procesar los elementos formulados en el modelado existen dos técnicas: Técnica de consistencia. Basada en eliminar valores inconsistentes de los dominios de las variables. Algoritmos de búsqueda. Se trata de buscar en el espacio de soluciones de una forma sistemática hasta encontrar una solución o probar que no existe Modelado de un CSP. De la manera como se modele el problema va a depender mucho la complejidad para resolverlo; como se dijo antes, el modelado consiste en expresar el problema en términos de variables, dominios y restricciones. 31 Ibid. 4243 Ejemplo. El conocido problema send+more=money que consiste en encontrar valores para cada letra de tal forma que se cumpla la operación indicada, los elementos serían: Variables = {s, e, n, d, m, o, r, y} Dominio = {0,..,9} Restricciones: 10 3 (s+m)+10 2 (e+o)+10(n+r)+d+e = 10 4 m+10 3 o+10 2 n+10e+y Todas diferentes(s, e, n, d, m, o, r, y) Figura 3. Esquema de sumado Fuente: Constraint Logic Programming using Eclipse. Este modelo no es muy eficiente ya que todas las variables hacen parte de la primera restricción, lo que hace obligatorio instanciar o dar valor a todas las variables antes de cada comprobación, por lo tanto no se puede recortar el espacio de búsqueda, retardando la solución. Una forma de optimizar el modelo es generar ecuaciones más pequeñas a partir de las operaciones intermedias que se realizan antes de llegar al resultado final, para esto se requieren las variables c1, c2, c3, que son las variables de acarreo. Analizando el problema, m debe tomar el valor 1 y el dominio de s es {1,..,9}, el modelo queda planteado de la siguiente manera: 32 Tabla 1. Componentes del modelo send+more=money Variables Dominio Restricciones c1, c2, c3 {0,1} e + d = y + 10c1 M {1} c1 + n + r = e + 10c2 S {1,..,9} c2 + e + o = n + 10c3 e, n, d, o, r, y {0,..,9} c3 + s + m = 10m + o Todas diferentes (s, e, n, d, m, o, r, y) 32 Apt, Krzysztof R. Wallace, M. Diciembre 2006; Constraint Logic Programming Using Eclipse. Nueva York. Cambridge University Press. [libro en línea] Disponible desde Internet en: 4344 Conceptos CSP. Un CSP (Constraint Satisfaction Problem) es un problema de satisfacción de restricciones definido por la terna (X, D, C). X: conjunto de n variables {x 1,,x n } D=<D 1,, Dn> vector de dominios, donde D i corresponde a X i. C: conjunto finito de restricciones, cada restricción C n está definida sobre un conjunto de variables {x 1,,x n }, el cual limita los valores que las variables pueden tomar. Asignación (instanciación). Es un par variable-valor (x,a) en donde el valor a es asignado a la variable x. La asignación de un conjunto de variables se puede denotar por una tupla de la forma ((x 1,a1),,(x i,a i )), la cual es localmente consistente si satisface todas las restricciones que intervienen. Por simplicidad ((x 1,a 1 ),,(x i,a i )) se define como (a 1,,a i ). Solución. Se tendrá cuando se encuentre una tupla consistente que contenga todas las variables, es decir, de la forma (a 1, a 2,, a n ). En la búsqueda se puede encontrar una solución cualquiera, todas las soluciones o una óptima partiendo de alguna función objetivo Notación CSP. La notación que se usará en este capítulo para la descripción de los problemas de satisfacción de restricciones será la siguiente: General: n: numero de variables del CSP. La longitud del dominio de una variables x i se denota por d i = D i. c: número de restricciones. Aridad: la aridad de una restricción es la cantidad de variables que intervienen en ella, el máximo valor es k. Variables. Para las variables usaremos las últimas letras del alfabeto, x, y, z; denotaremos el conjunto de todas las variables así: X i,..,j. Dominios/Valores. El dominio de una variable x i se denota por D i. Usaremos las primeras letras del alfabeto para indicar valores individuales de algún dominio, a, b, c Rossi F. Van Beek P. Walsh T. Agosto 2006; Handbook of Constraint Programming. Holanda. Elsevier. [libro en línea] Disponible desde Internet en: 4445 Restricciones. Las restricciones son por lo general formulas matemáticas, en ellas intervienen un número k de variables, {x 1,..,x k }, se denotan por C 1..k. Una restricción binaria es una restricción en donde intervienen dos variables, x i y x j, sería entonces la restricción C ij. En ocasiones no es necesario hacer referencia a las variables de la restricción, en este caso simplemente seria C. Por último, para hacer referencia específicamente a las variables que intervienen en una restricción C i..k se usa la notación x 1 5x + 23x2 12x3 1 x + 1+ x2 x3 x4 0 X C i.. k La restricción es una restricción unaria, es decir, solo posee una variable, en este caso x, la restricción es una restricción ternaria. Supóngase que tenemos una restricción C i..k, una tupla p de C i..k es un elemento del producto cartesiano D i.. D k, si p satisface a C i..k, p es una tupla permitida o válida y se dice que es soporte para cada uno de sus valores. Al proceso de verificar si una tupla es válida se le llama comprobación de la consistencia. Considérese la restricción con dominios {1,2}, el conjunto de tuplas válidas sería {(1,1,1,1), (1,1,1,2), (1,1,2,1), (1,1,2,2), (2,1,2,2), (1,2,2,2), (1,2,1,2), (1,2,2,1), (2,1,1,2), (2,1,2,1), (2,2,2,2)}, y el conjunto de tuplas no válidas o no permitidas sería {(1,2,1,1), (2,1,1,1), (2,2,1,1), (2,2,1,2), (2,2,2,1)}; al nombrar todas las tuplas válidas y no válidas de una restricción se está haciendo una representación por extensión de ella Consistencia de un CSP. Para encontrar la solución de un CSP, se usan algoritmos de búsqueda basados en backtracking, sin embargo, suele presentarse lo que se conoce con el nombre de explosión combinatoria, es decir, un espacio de búsqueda muy grande, por lo tanto se considera que el backtracking por sí solo no es un método muy eficiente. Cuando en la búsqueda se encuentra un valor o un conjunto de valores que no satisfacen alguna propiedad de consistencia, es decir, valores inválidos, se presenta una inconsistencia local, éstas inconsistencias son relativas porque pueden ser inconsistentes con respecto a unas condiciones pero consistentes respecto a otras, en general, se usa el término consistencia global para referirnos a una solución en la que se eliminan los valores que no cumplen todas las condiciones. Aparte de las restricciones explícitas de un CSP, existen restricciones implícitas que ayudan a acotar los espacios de búsqueda, si el algoritmo es capaz de encontrar éstas restricciones, ahorrará esfuerzo. 34 Apt, Krzysztof. 2003; Principles of Constraint Programming. Nueva York. Cambridge University Press. [libro en línea] Disponible desde Internet en: 35 Apt, Krzysztof. 2003; Principles of Constraint Programming. Nueva York. Cambridge University Press. [libro en línea] Disponible desde Internet en: 4546 Ejemplo: Variables: x, y, z. Dominios: {0,1}, {2,3}, {1,2}, respectivamente. Restricciones: y<z, x y. Si se hace la búsqueda por medio de backtracking, las variables se instanciarán en el orden x,y,z, y se probarán las 2 3 combinaciones posibles, todo esto para finalmente descubrir que no hay solución. Si se observa la primera restricción, no hay valores que la satisfagan, si el algoritmo tuviera la capacidad de identificar esta inconsistencia local, ahorraría esfuerzo de búsqueda Algoritmos de búsqueda. La base de los algoritmos de búsqueda para resolución de CSP s es el backtracking el cual se comporta similar al recorrido de un árbol con el objetivo de encontrar una o varias soluciones que se construyen por etapas hasta llegar a una solución completa; si en alguna etapa se detecta que no se puede llegar a una solución completa, se devuelve, elimina los elementos añadidos en cada etapa y continua el recorrido por los nodos no explorados. Existen algoritmos completos, que garantizan encontrar una solución si esta existe, y algoritmos incompletos, que aunque son menos costosos y más eficientes, no garantizan encontrar una solución, éstos últimos incluyen algoritmos genéticos, búsqueda tabú, etc. Algunos de los algoritmos de búsqueda completa que se han desarrollado para CSP s binarios son: backtracking cronológico, backjumping, conflict-directed backtracking, backtracking dinámico, forward checking, minimal forward checking, algoritmos híbridos como forward checking con conflict-directed backtracking y manteniendo arco-consistencia, algunos se han extendido a CSP s no binarios El árbol de búsqueda. Para asignar a las variables las múltiples combinaciones que genera el espacio de búsqueda, los algoritmos se apoyan en un árbol llamado árbol de búsqueda en donde se hace una exploración primero en profundidad. Suponiendo que el orden en el que se instancian las variables no cambia durante el proceso, un nodo en un nivel k del árbol, representa un estado 36 Barber, F. Salido, M; Julio de Revista Iberoamericana de Inteligencia Artificial. 20 ed. Introduction to constraint programming. Malaga, España. Lawrence Mandow. [Revista en línea] Disponible desde Internet en: <http://erevista2.aepia.org/index.php/ia/article/view/827/819> [con acceso el ]. 37 Manyá, F. Gomes, C; Revista Iberoamericana de Inteligencia Artificial. 19 ed. Solution Techniques for Constraint Satisfaction Problems. Malaga, España. Lawrence Mandow. [Revista en línea] Disponible desde Internet en: <http://erevista.aepia.org/index.php/ia/article/view/362/348> 4647 en donde se han asignado valores a las variables x 1,..,x k, por consiguiente las variables x k+1,..,x n aun no tienen valor. La raíz del árbol se toma como el nivel 0, allí no hay ningún valor asignado. Figura 4. Árbol de búsqueda Fuente: Revista Iberoamericana de Inteligencia Artificial Nº Cada nodo del árbol tiene una tupla asociada formada por las variables que hasta ese punto se han instanciado, en el nivel 1 se le ha asignado valor a x 1, en el nivel 2 se le ha asignado valor a x 1 y x 2, así sucesivamente hasta el nivel n, en donde los nodos tienen asociadas tuplas que contienen todas las n variables del problema instanciadas. Si una n-tupla es consistente se afirma que es solución del problema, si la asignación parcial en un nodo intermedio es consistente, se dice que el nodo es consistente. Los nodos cercanos a la raíz son nodos superficiales y los nodos cercanos a las hojas son nodos profundos. En la figura 4 se muestra como se van asignando valores en cada nodo a medida que se recorre el árbol en profundidad, vemos que la raíz representa la tupla (-,-,-) y que en cada nodo siguiente, se agrega un valor a la tupla que proviene de la variable que determinada el nivel. Al recorrer el árbol en profundidad, se llama variable actual a la que se instancia en el nodo en donde se encuentre, las variables pasadas son las que ya se instanciaron, es decir, las que corresponden a niveles menos profundos y variables futuras son las variables restantes que se encuentran en niveles mas profundos Backtracking cronológico (BT). Asumiendo que el orden de las variables y sus valores no cambia, este algoritmo trabaja de la siguiente manera. El algoritmo toma la siguiente variable, le asigna un valor dentro de su dominio y prueba las restricciones de la variable actual y las restricciones de las variables 38 Barber, F. Salido, M; Julio de Revista Iberoamericana de Inteligencia Artificial. 20 ed. Introduction to constraint programming. Malaga, España. Lawrence Mandow. [Revista en línea] Disponible desde Internet en: <http://erevista2.aepia.org/index.php/ia/article/view/827/819> [con acceso el ]. 4748 pasadas, si se han satisfecho las restricciones, toma la siguiente variable y repite el proceso; si por el contrario la asignación actual presenta una inconsistencia, se deshace la asignación y se toma otro valor, si no se logra encontrar un valor consistente entre todos los valores posibles, se llega a un estado sin salida (deadend), en este caso el algoritmo se devuelve a la variable inmediatamente anterior y le asigna un nuevo valor. Cuando todas las variables tienen un valor, se dice que se ha llegado a una solución, o cuando se han probado todas las combinaciones sin éxito, se dice que no existe solución. Cabe anotar que solo pueden ser probadas las restricciones en donde no intervengan variables futuras, éstas tendrán que esperar a que el algoritmo llegue a esas variables. Este algoritmo es muy simple, ineficiente y poco inteligente, por lo que ignora las restricciones con variables futuras y por ser incapaz de recordar procesos previos, puede repetir la misma acción varias veces 39. Véanse ahora los algoritmos lookback y look-ahead que ofrecen mejoras al BT Algoritmos Look-back. Realizan un análisis de la información del problema para mejorar su eficiencia en las situaciones sin salida, al igual que el BT, guardan la característica de comprobación hacia atrás. Algunos algoritmos de este tipo son los siguientes 40 : Backjumping (BJ). Este algoritmo tiene la capacidad de retroceder a cualquier variable pasada que esté causando conflicto con algún valor de la variable actual debido a una restricción que relacione ambas variables, de esta manera se haría un cambio en el valor de dicha variable pasada buscando habilitar valores para la variable actual Conflict-directed backjumping (CBJ). Presenta una mejora al mecanismo usado en BJ; llamemos x i a la variable actual y x j a una variable pasada cualquiera, la clave del método consiste en guardar información de los conflictos que tiene una variable x i con alguna variable x j, cada vez que se detecta 39 Manyá, F. Gomes, C; Revista Iberoamericana de Inteligencia Artificial. 19 ed. Solution Techniques for Constraint Satisfaction Problems. Malaga, España. Lawrence Mandow. [Revista en línea] Disponible desde Internet en: <http://erevista.aepia.org/index.php/ia/article/view/362/348> 40 Barber, F. Salido, M; Julio de Revista Iberoamericana de Inteligencia Artificial. 20 ed. Introduction to constraint programming. Malaga, España. Lawrence Mandow. [Revista en línea] Disponible desde Internet en: <http://erevista2.aepia.org/index.php/ia/article/view/827/819> [con acceso el ]. 41 Manyá, F. Gomes, C; Revista Iberoamericana de Inteligencia Artificial. 19 ed. Solution Techniques for Constraint Satisfaction Problems. Malaga, España. Lawrence Mandow. [Revista en línea] Disponible desde Internet en: <http://erevista.aepia.org/index.php/ia/article/view/362/348> 4849 una inconsistencia entre una variable x i y una variable pasada x j, x j se añada al conjunto conflicto de x i. Cuando se presenta una situación sin salida, el algoritmo busca en el conjunto, el conflicto de la variable actual y salta al elemento más cercano a ella. Este método requiere tener una estructura de datos más elaborada para guardar los datos de los conflictos Learning. Cuando se alcanza una situación sin salida en x i, se sabe que la combinación variable-valor representada por la tupla ((x 1,a 1 ),..,(x i-1,a i-1 )) causa una inconsistencia y por lo tanto no está permitida, este método almacena este hecho en forma de restricciones implícitas y las usa para podar el espacio de búsqueda. De esta manera el algoritmo aprende qué combinaciones no están permitidas para x 1,..,x i Algoritmos Look-ahead. Como ya vimos, los algoritmos de look-back solo hacen comprobación de consistencia hacia atrás, ignorando las variables futuras. Los algoritmos look-ahead, comprueban hacia atrás y también hacia delante Forward Checking (FC). Este es el caso más común de look-ahead; FC prueba hacia adelante el valor de x i y el valor de las variables futuras que están relacionadas con esta, si se encuentra un valor inconsistente en ellas, es eliminado temporalmente de su dominio, si en alguna etapa un dominio se queda vacío, se prueba con otro valor de la variable actual x i, en el momento que se agoten los valores de la variable actual, se realizará backtracking cronológico. 45 Todos estos conceptos y algoritmos forman un conjunto de herramientas que facilitaron la implementación del sistema informático, brindando así la solución esperada para el problema inicial. Ahora para hablar de otros conceptos y/o terminología pertinente, se encontrará en el siguiente capítulo la información general referente a la metodología UML, mediante la cual se pudo modelar la aplicación a través de diagramas que muestran su funcionalidad. 42 Manyá, F. Gomes, C; Revista Iberoamericana de Inteligencia Artificial. 19 ed. Solution Techniques for Constraint Satisfaction Problems. Malaga, España. Lawrence Mandow. [Revista en línea] Disponible desde Internet en: <http://erevista.aepia.org/index.php/ia/article/view/362/348> 43 Barber, F. Salido, M; Julio de Revista Iberoamericana de Inteligencia Artificial. 20 ed. Introduction to constraint programming. Malaga, España. Lawrence Mandow. [Revista en línea] Disponible desde Internet en: <http://erevista2.aepia.org/index.php/ia/article/view/827/819> [con acceso el ]. 44 Apt, Krzysztof. 2003; Principles of Constraint Programming. Nueva York. Cambridge University Press. [libro en línea] Disponible desde Internet en: 45 Ibid. 4950 6.4. INTRODUCCIÓN A UML El Lenguaje de Modelamiento Unificado (UML - Unified Modeling Language) es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que comprende el desarrollo de software. UML entrega una forma de modelar cosas conceptuales como lo son procesos de negocio y funciones de sistema, además de cosas concretas como lo son escribir clases en un lenguaje determinado, esquemas de base de datos y componentes de software reusables Diagrama de casos de uso. El diagrama de casos de uso representa la forma en como un Cliente (Actor) opera con el sistema en desarrollo, además de la forma, tipo y orden en como los elementos interactúan (operaciones o casos de uso). Un diagrama de casos de uso consta de los siguientes elementos: Actor. Una definición previa, es que un Actor es un rol que un usuario juega con respecto al sistema. Es importante destacar el uso de la palabra rol, pues con esto se especifica que un Actor no necesariamente representa a una persona en particular, sino más bien la labor que realiza frente al sistema. Figura 5. Representación de Actor Caso de Uso. Es una operación/tarea específica que se realiza tras una orden de algún agente externo, sea desde una petición de un actor o bien desde la invocación desde otro caso de uso. Figura 6. Representación Caso de Uso 5051 Relaciones. Las tres relaciones principales entre los casos de uso son soportadas por el estándar UML, el cual describe notación gráfica para esas relaciones. Inclusión (include o use). Es una forma de interacción, un caso de uso dado puede "incluir" otro. El primer caso de uso a menudo depende del resultado del caso de uso incluido. Esto es útil para extraer comportamientos verdaderamente comunes desde múltiples casos de uso a una descripción individual, desde el caso de uso que lo incluye hasta el caso de uso incluido, con la etiqueta "«include»". Figura 7. Inclusión Extensión (extend). Es otra forma de interacción, un caso de uso dado, (la extensión) puede extender a otro. Esta relación indica que el comportamiento del caso de uso extensión puede ser insertado en el caso de uso extendido bajo ciertas condiciones. La notación, es una flecha de punta abierta con línea discontinua, desde el caso de uso extensión al caso de uso extendido, con la etiqueta «extend». Figura 8. Extensión Generalización: En la tercera forma de relaciones entre casos de uso, existe una relación generalización/especialización. Un caso de uso dado puede estar en una forma especializada de un caso de uso existente. La notación es una línea sólida terminada en un triángulo dibujado desde el caso de uso especializado al caso de uso general. Figura 9. Generalización 5152 Diagramas de Interacción. Los diagramas de interacción son modelos que describen la manera en que colaboran grupos de objetos para cierto comportamiento. Habitualmente, un diagrama de interacción capta el comportamiento de un solo caso de uso. El diagrama muestra cierto número de objetos y los mensajes que se pasan entre estos objetos dentro del caso de uso. Hay dos tipos de diagramas de interacción: diagramas de secuencia y diagramas de colaboración Diagramas de Secuencia. Un diagrama de Secuencia muestra una interacción ordenada según la secuencia temporal de eventos. En particular, muestra los objetos participantes en la interacción y los mensajes que intercambian ordenados según su secuencia en el tiempo. El eje vertical representa el tiempo, y en el eje horizontal se colocan los objetos y actores participantes en la interacción, sin un orden prefijado. Cada objeto o actor tiene una línea vertical, y los mensajes se representan mediante flechas entre los distintos objetos. El tiempo fluye de arriba abajo. Se pueden colocar etiquetas (como restricciones de tiempo, descripciones de acciones, etc.) bien en el margen izquierdo o bien junto a las transiciones o activaciones a las que se refieren. Figura 10. Diagrama de secuencia Fuente: Libro Learning UML Hamilton Kim, Miles Rusell. Abril Learning UML 2.0. Ed. O Reilly. Sebastopol. [Libro en línea] Disponible desde Internet en: <http://www.amazon.com/learning-uml-2-0-russ- Miles/dp/ > 5253 Diagrama de Colaboración. Un Diagrama de Colaboración muestra una interacción organizada basándose en los objetos que toman parte en la interacción y los enlaces entre los mismos (en cuanto a la interacción se refiere). A diferencia de los Diagramas de Secuencia, los Diagramas de Colaboración muestran las relaciones entre los roles de los objetos. La secuencia de los mensajes y los flujos de ejecución concurrentes deben determinarse explícitamente mediante números de secuencia. Figura 11. Ejemplo Diagrama de Colaboración Fuente: Libro Learning UML Diagrama de Actividad. Un diagrama de Actividad demuestra la serie de actividades que deben ser realizadas en un caso de uso, así como las distintas rutas que pueden irse desencadenando en él. Composición Inicio. El inicio de un diagrama de actividad es representado por un círculo de color negro sólido. Actividad. Una actividad representa la acción que será realizada por el sistema la cual es representada dentro de un ovalo. Transición. Una transición ocurre cuando se lleva acabo el cambio de una actividad a otra, la transición es representada simplemente por una línea con una flecha en su terminación para indicar dirección. 47 Ibid. 5354 Ramificación (Branch). Una ramificación ocurre cuando existe la posibilidad que ocurra más de una transición (resultado) al terminar determinada actividad. Este elemento es representado a través de un rombo. Unión (Merge). Una unión ocurre al fusionar dos o más transiciones en una sola transición o actividad. Este elemento también es representado a través de un rombo. Fin. El fin de un diagrama de actividad es representado por un círculo, con otro círculo concéntrico de color negro sólido. Canales (Swimlanes). En determinadas ocasiones ocurre que un diagrama de actividad se expanda a lo largo de más de un entidad o actor, cuando esto ocurre el diagrama de actividad es particionada en canales (swimlanes), donde cada canal representa la entidad o actor que esta llevando acabo la actividad. Figura 12. Ejemplo Diagrama de Actividad Fuente: Libro Learning UML Diagrama de Estados. Un Diagrama de Estados muestra la secuencia de estados por los que pasa bien un caso de uso, bien un objeto a lo largo de su vida, o bien todo el sistema. En él se indican qué eventos hacen que se pase de un estado a otro y cuáles son las respuestas y acciones que genera. En cuanto a la representación, un diagrama de estados es un grafo cuyos nodos son estados y cuyos arcos dirigidos son transiciones etiquetadas con los nombres de los eventos. Representación: Estado. Se representa como una caja redondeada con el nombre del estado en su interior. La caja de un estado puede tener 1 o 2 compartimentos. En el 48 Ibid. 5455 primer compartimento aparece el nombre del estado. El segundo compartimento es opcional, y en él pueden aparecer acciones de entrada, de salida y acciones internas. Transición. Se representa como una flecha desde el estado origen al estado destino. Acción de entrada. Aparece en la forma entrada/acción_asociada donde acción_asociada es el nombre de la acción que se realiza al entrar en ese estado. Cada vez que se entra al estado por medio de una transición la acción de entrada se ejecuta. Acción de salida. Aparece en la forma salida/acción_asociada. Cada vez que se sale del estado por una transición de salida la acción de salida se ejecuta. Acción interna. Es una acción que se ejecuta cuando se recibe un determinado evento en ese estado, pero que no causa una transición a otro estado. Se indica en la forma nombre_de_evento/acción_asociada. Figura 13. Ejemplo Diagrama de Estados Fuente: Libro Learning UML Un diagrama de estados puede representar ciclos continuos o bien una vida finita, en la que hay un estado inicial de creación y un estado final de destrucción (finalización del caso de uso o destrucción del objeto). El estado inicial se muestra como un círculo sólido y el estado final como un círculo sólido rodeado de otro círculo. En realidad, los estados inicial y final son pseudoestados, pues un objeto no puede estar en esos estados, pero nos sirven para saber cuáles son las transiciones iniciales y finales. 49 Ibid. 5556 Diccionario de Datos. El diccionario de datos es un listado organizado de todos elementos que forman parte del flujo de datos de todo el sistema en el que se guardan los detalles y descripción de todos estos elementos. Identifica los procesos donde se emplean los datos y los sitios donde se necesita el acceso inmediato a la información, se desarrolla durante el análisis de flujo de datos y ayuda a los analistas que participan en la determinación de los requerimientos del sistema; su contenido también se emplea durante el diseño Requerimientos del usuario. Deben describir los requerimientos funcionales y no funcionales, que sean comprensibles para los usuarios sin conocimiento técnico detallado Requerimientos funcionales. Describen las funciones que el sistema va a hacer. Estos requerimientos dependen del tipo de software que se desarrolla, de los posibles usuarios del software y del enfoque en la organización al redactar los requerimientos; los requerimientos funcionales del sistema describen con detalle la función de éste, sus entradas y salidas, excepciones, etc Requerimientos no funcionales. Son aquellos requerimientos que no se refieren directamente a las propiedades emergentes, como son la fiabilidad, el tiempo de respuesta del sistema y la capacidad de almacenamiento: de forma alternativa define las restricciones del sistema de los dispositivos de entrada y salida Diagrama de interacción con el usuario. Su objetivo es modelar los eventos (parte cambiante con el tiempo) que el usuario puede generarle a la ventana o módulo y los mensajes que éste módulo le envía a las clases núcleo. Figura 14. Diagrama de Interacción con el Usuario Fuente: Libro Learning UML Ibid. 5657 Diagrama de Componentes. Los diagramas de componentes describen los elementos físicos del Sistema y sus relaciones. Muestran las opciones de realización incluyendo código fuente, binario y ejecutable. Los componentes representan todos los tipos de elementos software que entran en la fabricación de aplicaciones informáticas. Pueden ser simples archivos, paquetes, bibliotecas cargadas dinámicamente, etc. Los elementos que lo componen son: componentes, interfaces y relaciones de dependencia, generalización, asociación, realización. Figura 15. Ejemplo Diagrama de Componentes Fuente: Libro Learning UML Diagrama de Despliegue. Un diagrama de despliegue muestra las relaciones físicas entre los componentes hardware y software en el sistema final, es decir, la configuración de los elementos de procesamiento en tiempo de ejecución y los componentes software (procesos y objetos que se ejecutan en ellos). Estarán formados por instancias de los componentes software que representan manifestaciones del código en tiempo de ejecución. Figura 16. Ejemplo Diagrama de Despliegue Fuente: Libro Learning UML Hamilton Kim, Miles Rusell. Abril Learning UML 2.0. Ed. O Reilly. Sebastopol. [Libro en línea] Disponible desde Internet en: <http://www.amazon.com/learning-uml-2-0-russ- Miles/dp/ > 5758 Diagrama de Clases. Un diagrama de clases sirve para visualizar las relaciones entre las clases que involucran el sistema, las cuales pueden ser asociativas, de herencia, de uso y de contenimiento. Un diagrama de clases esta compuesto por los siguientes elementos: Clase. Atributos, métodos y visibilidad. Relaciones. Herencia, Composición, Agregación, Asociación y Uso. Elementos Clase. Es la unidad básica que encapsula toda la información de un Objeto (un objeto es una instancia de una clase). A través de ella podemos modelar el entorno en estudio (una Casa, un Auto, una Cuenta Corriente, etc.). En UML, una clase es representada por un rectángulo que posee tres divisiones: superior intermedio Figura 17. Representación Clase En donde: inferior Fuente: Libro Ingeniería del Software II. 53 Superior. Contiene el nombre de la Clase. Intermedio. Contiene los atributos (o variables de instancia) que caracterizan a la Clase (pueden ser private, protected o public). 52 Hamilton Kim, Miles Rusell. Abril Learning UML 2.0. Ed. O Reilly. Sebastopol. [Libro en línea] Dsiponible desde Internet en: <http://www.amazon.com/learning-uml-2-0-russ- Miles/dp/ > 53 Pressman, Roger S. Ingeniería del Software: Un enfoque práctico. Quinta edición. España. Mc Graw Hill. 58 Mostrar más
Análisis del Sistema de Información ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 2 ACTIVIDAD ASI 1: DEFINICIÓN DEL SISTEMA... 6 Tarea ASI 1.1: Determinación del Alcance del Sistema... 6 Tarea ASI 1.2: Identificación Más detalles Análisis de Requerimientos para la Gestión de Desempeño Escolar a través de Plataforma Virtual
Análisis de Requerimientos para la Gestión de Desempeño Escolar a través de Plataforma Virtual Alumnos: Año Académico: 2012 Profesor Guía: Contraparte: EMIR JOSÉ JADUE GARCÍA DANIEL ANDRÉS SILVA GONZÁLEZ Más detalles Ingeniería de Software I
Ingeniería de Software I Agenda Objetivo. Unidades de aprendizaje. Formas de evaluación. Bibliografía. 2 Datos del profesor Correo electrónico: egonzalez@upemor.edu.mx Asesorías Jueves de 11:00 a 13:00 Más detalles 1.- DATOS DE LA ASIGNATURA. Nombre de la asignatura: Fundamentos de Ingeniería de Software. Ingeniería en Sistemas Computacionales.
1. DESCRIPCIÓN DE LA ASIGNATURA Grado: Ingeniería Informática en Sistemas de Información Doble Grado: Asignatura: Ingeniería del Software 1 Módulo: M3: Ingeniería del Software, Sistemas de Información Más detalles PLAN DE ESTUDIOS Y CONTENIDOS MÍNIMOS
CARRERAS DE DOS AÑOS TECNICATURA EN PROGRAMACIÓN DE COMPUTADORAS PLAN DE ESTUDIOS Y CONTENIDOS MÍNIMOS Resolución UB 004/14 ANEXO Tabla general de asignaturas del Plan de Estudios y Obligaciones Académicas Más detalles Licenciatura en Sistemas de Información
Plan de Estudio Carrera Licenciatura en Sistemas de Información Universidad Nacional del Nordeste UNNE Octubre 2009 I. Denominación Denominación de la carrera: Licenciatura en Sistemas de Información Denominación Más detalles Escuela de Ingeniería en Informática Empresarial SYLLABUS
Nombre módulo PROGRAMACIÓN Nº créditos 12 ECTS ( 324 horas totales, 216 horas presenciales, 108 horas de trabajo autónomo) Nivel Requisitos Contribución de este módulo a la formación. Subcompetencias del Más detalles 1.- DATOS DE LA ASIGNATURA. Nombre de la asignatura: Investigación de Operaciones. Carrera: Ingeniería en Sistemas Computacionales
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Clave de la asignatura: (Créditos) SATCA 1 Investigación de Operaciones SCC-1013 2-2 - 4 Ingeniería en Sistemas Computacionales 2.- PRESENTACIÓN Más detalles Competencias generales vinculadas a los distintos módulos Módulo de Formación Básica
Competencias generales vinculadas a los distintos módulos Módulo de Formación Básica C1. Capacidad para la resolución de los problemas matemáticos que puedan plantearse en la ingeniería. Aptitud para aplicar Más detalles Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado
Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado 1. Introducción Unified Modeling Languaje Fuente: Booch- Jacobson-Rumbauch y diversos sitios Internet, entre otros: Más detalles GUÍA DOCENTE. Curso 2014-2015. Ingeniería Informática en Sistemas de Información Doble Grado: M6: Tecnología Específica de Sistemas de Información
1. DESCRIPCIÓN DE LA ASIGNATURA Grado: Ingeniería Informática en Sistemas de Información Doble Grado: Asignatura: Ingeniería de Proyectos Módulo: M6: Tecnología Específica de Sistemas de Información Departamento: Más detalles PLANEACIÓN DE SISTEMAS INFORMÁTICOS ING. KARINA RAMÍREZ DURÁN
PLANEACIÓN DE SISTEMAS INFORMÁTICOS ING. KARINA RAMÍREZ DURÁN Principios y criterios para la evaluación del ciclo de vida de desarrollo de sistemas Se pueden enunciar algunos principios para desarrollar Más detalles Denominación de la materia. créditos ECTS = 36 carácter = OBLIGATORIA SISTEMAS OPERATIVOS, SISTEMAS DISTRIBUIDOS Y REDES
Denominación de la materia SISTEMAS OPERATIVOS, SISTEMAS DISTRIBUIDOS Y REDES créditos ECTS = 36 carácter = OBLIGATORIA Ubicación dentro del plan de estudios y duración La materia está formada por 6 asignaturas Más detalles Datos de la materia. Clave de la materia: Liga al programa de la asignatura: Competencias a desarrollar:
Instituto Tecnológico y Estudios Superiores Monterrey Campus Estado México Escuela Diseño, Ingeniería y Arquitectura Departamento Tecnologías Información y Computación Datos la materia Nombre la materia: Más detalles Denominación de la materia. N créditos ECTS = 36 carácter = OBLIGATORIO SISTEMAS DE SOFTWARE. Ubicación dentro del plan de estudios y duración
Denominación de la materia SISTEMAS DE SOFTWARE N créditos ECTS = 36 carácter = OBLIGATORIO Ubicación dentro del plan de estudios y duración La materia Sistemas de Software está formada por 6 asignaturas Más detalles PERFIL DEL INGENIERO DE SISTEMAS FUSM
PERFIL DEL INGENIERO DE SISTEMAS FUSM PERFIL DEL INGENIERO DE SISTEMAS DE LA FUSM El perfil del Ingeniero de Sistemas presencial de la Fundación Universitaria San Martín, Bogotá, está en capacidad de modelar Más detalles ORGANIZACIÓN DE LOS SERVICIOS INFORMÁTICOS
1 ORGANIZACIÓN DE LOS SERVICIOS INFORMÁTICOS INTRODUCCIÓN La realización de trabajos utilizando los medios informáticos de una empresa requiere una cierta organización y destreza relativa tanto a los equipos, Más detalles Carrera: SCD-1011 SATCA 1 2-3-5
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Ingeniería de Software Carrera: Ingeniería en Sistemas Computacionales Clave de la asignatura: SATCA 1 SCD-1011 2-3-5 2.- PRESENTACIÓN Caracterización Más detalles ACUERDO DE ACREDITACIÓN Nº 252 CARRERA DE INGENIERÍA CIVIL EN COMPUTACIÓN E INFORMÁTICA, ACTUAL INGENIERÍA CIVIL INFORMÁTICA UNIVERSIDAD ANDRÉS BELLO
ACUERDO DE ACREDITACIÓN Nº 252 CARRERA DE INGENIERÍA CIVIL EN COMPUTACIÓN E INFORMÁTICA, ACTUAL INGENIERÍA CIVIL INFORMÁTICA UNIVERSIDAD ANDRÉS BELLO SANTIAGO Y VIÑA DEL MAR OCTUBRE 2014 ACUERDO DE ACREDITACIÓN Más detalles AEF-1031 3-2 - 5. La unidad tres, revisa el modelo relacional, como uno de los más utilizados en el modelado de base de datos.
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Clave de la asignatura: SATCA 1 Fundamentos de Bases de Datos Ingeniería Informática, Ingeniería en Sistemas Computacionales e Ingeniería en Más detalles Carrera : Ingeniería Civil SATCA 1 0-4-4
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura : Software en Ingeniería Civil Carrera : Ingeniería Civil Clave de la asignatura : ICA-1031 SATCA 1 0-4-4 2.- PRESENTACIÓN Caracterización de la asignatura. Más detalles GUÍA DOCENTE. Curso 2014-2015 1. DESCRIPCIÓN DE LA ASIGNATURA. Ingeniería Informática en Sistemas de Información Doble Grado: Módulo: Módulo 6
1. DESCRIPCIÓN DE LA ASIGNATURA Grado: Ingeniería Informática en Sistemas de Información Doble Grado: Asignatura: Ingeniería del Sotware II Módulo: Módulo 6 Departamento: Deporte e Informática Año académico: Más detalles 1.- DATOS DE LA ASIGNATURA. Ingeniería Forestal. Clave de la asignatura: SATCA: 2-3-5 2.- PRESENTACIÓN. Caracterización de la asignatura.
1.- DATOS DE LA ASIGNATURA. Nombre de la asignatura: Carrera: Clave de la asignatura: Investigación de Operaciones. Ingeniería Forestal. FOD-1023 SATCA: 2-3-5 2.- PRESENTACIÓN. Caracterización de la asignatura. Más detalles Analizar, desarrollar y programar modelos matemáticos, estadísticos y de simulación.
PERFIL PROFESIONAL Analizar, desarrollar y programar modelos matemáticos, estadísticos y de simulación. Reconocer y guiarse por los aspectos sociales, profesionales y éticos en su entorno. Dirigir y coordinar Más detalles Enseñando y Aprendiendo Programación Orientada a Objetos en los primeros cursos de Programación: la experiencia en la Universidad ORT Uruguay
Enseñando y Aprendiendo Programación Orientada a Objetos en los primeros cursos de Programación: la experiencia en la Universidad ORT Uruguay Resumen Ing. Inés Kereki 1 Universidad ORT Uruguay e-mail: Más detalles CAPÍTULO 1 INTRODUCCIÓN, HIPÓTESIS Y OBJETIVOS
CAPÍTULO 1 INTRODUCCIÓN, HIPÓTESIS Y OBJETIVOS 1 INTRODUCCIÓN 1.1 Justificación Esta investigación está motivada por el interés en lograr una mejor comprensión del papel que desempeña la creatividad dentro Más detalles 1.- DATOS DE LA ASIGNATURA
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura : Taller de Ingeniería de Software Ingeniería en Tecnologías de la Carrera : Información y Comunicaciones Clave de la asignatura : TIC-1028 SATCA 1 2-2-4 Más detalles LINEAMIENTOS GENERALES PARA LA IMPLEMENTACIÓN DE PROCESOS ELECTRÓNICOS
LINEAMIENTOS GENERALES PARA LA IMPLEMENTACIÓN DE PROCESOS LINEAMIENTOS GENERALES PARA LA IMPLEMENTACIÓN DE PROCESOS Ministerio de Tecnologías de la Información y las Comunicaciones Programa de Gobierno Más detalles Bases de Datos. Carrera: LOH-0902 SATCA 1 1-3-4
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Clave de la asignatura: SATCA 1 Bases de Datos Ingeniería en Logística LOH-0902 1-3-4 2.- PRESENTACIÓN Caracterización de la asignatura. Fundamentación. Más detalles Guía Docente ESCUELA POLITÉCNICA SUPERIOR
Guía Docente PROGRAMACIÓN I PRIMER CURSO PRIMER SEMESTRE GRADO EN INGENIERÍA DE SISTEMAS DE INFORMACIÓN MODALIDAD: PRESENCIAL CURSO 2015-2016 ESCUELA POLITÉCNICA SUPERIOR 1. IDENTIFICACIÓN DE LA ASIGNATURA Más detalles Programa de estudios por competencias Algoritmia. Programa elaborado por: María Obdulia González Fernández, Jesús Salas Ramírez
Programa de estudios por competencias Algoritmia 1. Identificación del curso Programa educativo: Ing. En Computación Unidad de aprendizaje: Algoritmia Departamento de adscripción: Ciencias Biológicas Academia: Más detalles CAPÍTULO V PROPUESTA DE LA SOLUCIÓN
CAPÍTULO V PROPUESTA DE LA SOLUCIÓN 5.1 Introducción En los últimos tres años la entidad financiera ha venido sufriendo cambios que le han permitido crecer y pasar de ser una Sociedad Financiera a un Banco Más detalles COMPETENCIAS GRADO EN INGENIERÍA TELEMÁTICA
COMPETENCIAS GRADO EN INGENIERÍA TELEMÁTICA COMPETENCIAS BÁSICAS Según lo establecido en el R.D. 1393/2007 de 29 de octubre, se garantizaran, como mínimo las siguientes competencias básicas, en el caso Más detalles PRODUCCIÓN CÓDIGO: CCA20064 CARRERA:
1. DATOS INFORMATIVOS: MATERIA PRODUCCIÓN CÓDIGO: CCA20064 CARRERA: CONTABILIDAD Y AUDITORÍA NIVEL: 6 PARALELO: No. DE CREDITOS 4 CRÉDITOS DE TEORÍA: 4 SEMESTRE: II SEMESTRE 2008-2009 CREDITOS DE PRACTICA: Más detalles INGENIERIA EN INGENIERÍA EN SISTEMAS COMPUTACIONALES CLAVE MATERIA OBJETIVO
INGENIERIA EN INGENIERÍA EN SISTEMAS COMPUTACIONALES CLAVE MATERIA OBJETIVO SCE - 0418 SCM - 0414 SCC-0428 ACM - 0403 SCB - 0421 SCV - 0407 ACU-0402 Introducción a la ingeniería en sistemas computacionales Más detalles DESARROLLO DE SOFTWARE CON CALIDAD PARA UNA EMPRESA
DESARROLLO DE SOFTWARE CON CALIDAD PARA UNA EMPRESA Resumen AUTORIA CARLOS CABALLERO GONZÁLEZ TEMATICA INFORMÁTICA ETAPA ESO-BACHILLERATO-CFGM(ESI,ASI,DSI) Se describe la revolución que supuso la incursión Más detalles Temas de la Ingeniería de Software vinculados a la Administración de Empresas.
Temas de la Ingeniería de Software vinculados a la Administración de Empresas. Lic. Yudid Fernández Pérez yudidf@uci.cu Resumen: Producto de la rápida evolución del entorno macro y macroeconómico surgen Más detalles Denominación de la materia. N créditos ECTS = 36 carácter = MIXTA INGENIERIA DE COMPUTADORAS
Denominación de la materia INGENIERIA DE COMPUTADORAS N créditos ECTS = 36 carácter = MIXTA Ubicación dentro del plan de estudios y duración La materia Ingeniería de Computadoras está formada por 6 asignaturas Más detalles PROCESO DE INNOVACIÓN EN LA ENSEÑANZA DE LA GESTIÓN DE EQUIPOS INDUSTRIALES EN INGENIERÍA
PON-C-22 PROCESO DE INNOVACIÓN EN LA ENSEÑANZA DE LA GESTIÓN DE EQUIPOS INDUSTRIALES EN INGENIERÍA A. García Sánchez (1), M. Ortega Mier (2), E. Ponce Cueto (3) Dpto. de Ingeniería de Organización, Administración Más detalles Resumen. 1. Introducción. 2. Objetivos
Propuesta para la Asignatura Sistemas Industriales en las Titulaciones de Informática F.A. Pujol, F.J. Ferrández, J.L. Sánchez, J. M. García Chamizo Dept. de Tecnología Informática y Computación Universidad Más detalles CAPITULO III ANÁLISIS
69 CAPITULO III ANÁLISIS 3. 1. METODOLOGIA PARA EL DESARROLLO DEL PORTAL Para el desarrollo de este software se utilizará el paradigma más conocido en ingeniería de software: Paradigma lineal o secuencial, Más detalles UNIVERSIDAD LIBRE PROGRAMAS ANALÍTICOS PROGRAMA ACADÉMICO: ING. SISTEMAS. 1.- INFORMACION DEL DOCENTE Carlos Alberto Ocampo Sepúlveda
PROGRAMAS ANALÍTICOS SECCIONAL: PEREIRA FACULTAD: INGENIERIAS PROGRAMA ACADÉMICO: ING. SISTEMAS JORNADA: DIURNA 1.- INFORMACION DEL DOCENTE Carlos Alberto Ocampo Sepúlveda E-mail institucional: caos@unilibrepereira.edu.co Más detalles INGENIERIA EN INFORMATICA
INGENIERÍA EN INFORMÁTICA 2014 Año de Homenaje al Almirante Guillermo Brown en el Bicentenario del Combate Naval de Montevideo Plan de Estudios INGENIERIA EN INFORMATICA Carrera: INGENIERÍA EN INFORMÁTICA Más detalles INTEGRACION DE BASES DE DATOS EN LA WEB
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Clave de la asignatura: INTEGRACION DE BASES DE DATOS EN LA WEB Ingeniería en Tecnologías de la Información y Comunicaciones DSD-1202 SATCA1 Más detalles Nombre de la asignatura: Inteligencia Artificial. Créditos: 2-2 - 4. Aportación al perfil
Nombre de la asignatura: Inteligencia Artificial Créditos: 2-2 - 4 Aportación al perfil Diseñar e implementar interfaces hombre- máquina y máquinamáquina para la automatización de sistemas. Identificar Más detalles TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN ÁREA SISTEMAS INFORMÁTICOS.
TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN ÁREA SISTEMAS INFORMÁTICOS. HOJA DE ASIGNATURA CON DESGLOSE DE UNIDADES TEMÁTICAS 1. Nombre de la asignatura Base de datos Más detalles SATCA 1 3-2-5. Las principales aportaciones que esta asignatura brinda al perfil profesional son:
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura : Análisis y Modelado de Sistemas de Información Carrera : Ingeniería Informática Clave de la asignatura : IFF-1005 SATCA 1 3-2-5 2.- PRESENTACIÓN Caracterización Más detalles CAPÍTULO V PROPUESTA DE UN MODELO DE CAPACITACIÓN Y DESARROLLO AL PERSONAL DOCENTE DE LA UNIVERSIDAD DE ORIENTE EN LA CIUDAD DE SAN MIGUEL
CAPÍTULO V PROPUESTA DE UN MODELO DE CAPACITACIÓN Y DESARROLLO AL PERSONAL DOCENTE DE LA UNIVERSIDAD DE ORIENTE EN LA CIUDAD DE SAN MIGUEL UNIVERSIDAD DE ORIENTE AGOSTO DE 2002 SEPTIEMBRE, 2002 85 PRESENTACIÓN Más detalles P1 Elaboración de un plan de proyecto utilizando MS Project G3
UNIVERSIDAD DE CASTILLA-LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA P1 Elaboración de un plan de proyecto utilizando MS Project G3 José Luís Espinosa Aranda Noelia Vállez Enano Manuel Ramón Guerrero Álvarez Más detalles Modelos de desarrollo de software. septiembre de 2007 1
Modelos de desarrollo de software septiembre de 2007 1 Referencias básicas Ingeniería de software. Un enfoque práctico. Pressman, R. Quinta edición. Mc. Graw Hill 2002 Ingeniería de software. Sommerville, Más detalles Carrera: SCD-1027 SATCA 1 2-3-5
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Tópicos Avanzados de Programación Ingeniería en Sistemas Computacionales Clave de la asignatura: SATCA 1 SCD-1027 2-3-5 2.- PRESENTACIÓN Caracterización Más detalles CAPITULO VI: ADMINISTRACIÓN DEL PROYECTO. 6.1. Estructura Detallada del Trabajo (EDT)
CAPITULO VI: ADMINISTRACIÓN DEL PROYECTO 6.1. Estructura Detallada del Trabajo (EDT) Un EDT es la agrupación orientada a entregables de los elementos del proyecto que organiza y define el total de los Más detalles Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente
Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente En este capítulo definimos los requisitos del modelo para un sistema centrado en la mejora de la calidad del código fuente. Más detalles DEPARTAMENTO DE INGENIERÍA EN SISTEMAS Y COMPUTACIÓN OPCIÓN I
1INSTITUTO TECNOLÓGICO DE CIUDAD MADERO DEPARTAMENTO DE INGENIERÍA EN SISTEMAS Y COMPUTACIÓN OPCIÓN I TESIS: Desarrollo de Algoritmos de Retroceso Aplicados a la solución del Problema del Diseño de la Más detalles Objetivos Generales. Objetivos específicos. Que el estudiante:
ASIGNATURA: MÉTODOS NUMPERICOS I (ANÁLISIS Y PROCESAMIENTO DE LOS DATOS EXPERIMENTALES CON INTRODUCCIÓN A LA COMPUTACIÓN) Objetivos Generales Comprender y manejar los conceptos relacionados con el manejo, Más detalles Estructura de datos. Carrera: SCC - 0408 4-2-10. Participantes
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Clave de la asignatura: Horas teoría-horas práctica-créditos Estructura de datos Ingeniería en Sistemas Computacionales SCC - 0408 4-2-10 2.- Más detalles UNIVERSIDAD FRANCISCO GAVIDIA
UNIVERSIDAD FRANCISCO GAVIDIA FACULTAD DE INGENIERIA Y ARQUITECTURA TRABAJO DE GRADUACION: DISEÑO DE UN SISTEMA DE INFORMACIÓN MECANIZADO PARA LA PLANIFICACIÓN DEL TRABAJO DOCENTE DE LOS DECANATOS DE LA Más detalles Inicio de MO Inicio de MD Inicio de MF. Documento de Análisis. Base de datos de las especificaciones OMT. MO, MD, MF Detallados. Librería de Clases
3.2 TÉCNICA DE MODELADO DE OBJETOS (OMT) (JAMES RUMBAUGH). 3.2.1 Introducción. En este documento se trata tanto el OMT-1 como el OMT-2, el primero contenido en el Libro Modelado y Diseño Orientado (Metodología Más detalles TECNICO SUPERIOR UNIVERSITARIO EN MECATRÓNICA
TECNICO SUPERIOR UNIVERSITARIO EN MECATRÓNICA HOJA DE ASIGNATURA CON DESGLOSE DE UNIDADES TEMÁTICAS 1. Nombre de la asignatura Sistemas digitales 2. Competencias Desarrollar y conservar sistemas automatizados Más detalles ORIENTACIONES GENERALES PARA EL DISEÑO Y DESARROLLO DE UN PROYECTO DE INVESTIGACIÓN
ORIENTACIONES GENERALES PARA EL DISEÑO Y DESARROLLO DE UN PROYECTO DE INVESTIGACIÓN Qué es un proyecto de investigación? Un proyecto de investigación consiste en el estudio de un tema en profundidad y Más detalles LA INVESTIGACIÓN OPERATIVA EN LAS LICENCIATURAS DE ECONOMÍA Y DE ADMINISTRACIÓN Y DIRECCIÓN DE EMPRESAS
LA INVESTIGACIÓN OPERATIVA EN LAS LICENCIATURAS DE ECONOMÍA Y DE ADMINISTRACIÓN Y DIRECCIÓN DE EMPRESAS Ibar Alonso, Raquel Dpto. Métodos Cuantitativos para la Economía Facultad de Ciencias Económicas Más detalles Programación orientada a
Metodología de Ingeniería del Software para el desarrollo y mantenimiento de sistemas de información del Gobierno de Extremadura Página 1 de 23 Índice del Documento 1.- Introducción... Página 4 2.- Propuesta Más detalles SISTEMA DE ESTUDIOS A DISTANCIA: UN ENFOQUE SISTEMICO Maria del Pilar López Universidad del Zulia, Venezuela. mplopez@luz.edu.ve
SISTEMA DE ESTUDIOS A DISTANCIA: UN ENFOQUE SISTEMICO Maria del Pilar López Universidad del Zulia, Venezuela. mplopez@luz.edu.ve 1. RESUMEN El Sistema de Estudios a Distancia de la Universidad del Zulia Más detalles SISTEMA DE GESTION DE LA CALIDAD
Edición No. : 03 Pág. 1 de 5 I. DATOS INFORMATIVOS MATERIA: PRODUCCION CODIGO MATERIA: CCA20064 AREA: PRODUCTIVIDAD CREDITOS: 4 NUMERO HRS. SEM.: 64 NIVEL: SEXTO PRE-REQUISITOS: PRESUPUESTOS, CONTABILIDAD Más detalles ÍNDICE. Introducción... 4. Agradecimientos... 5. Objetivos... 5. a. Objetivo General... 5. b. Objetivos Específicos... 5
ÍNDICE Introducción... 4 Agradecimientos... 5 Objetivos... 5 a. Objetivo General... 5 b. Objetivos Específicos... 5 Capítulo I: Desarrollo de Sistema de Información Usando Metodología Rumbaugh (OMT)... Más detalles Plan de curso Sílabo INFORMATICA Y CONVERGENCIA TECNOLOGICA 2 32 64. Del nivel Asignaturas pre-requisitos Código. Ninguna
Plan de curso Sílabo Asignatura Nro. Créditos Código Horas de trabajo directo con el docente Horas de trabajo autónomo del estudiante INFORMATICA Y CONVERGENCIA TECNOLOGICA 2 32 64 Del nivel Asignaturas Más detalles SITIO WEB SERVICIOS DE INGENIERIA RD SAS MAURICIO ANDRES ZULUAGA TORO PABLO ARTURO GARCIA POSADA
SITIO WEB SERVICIOS DE INGENIERIA RD SAS MAURICIO ANDRES ZULUAGA TORO PABLO ARTURO GARCIA POSADA UNIVERSIDAD CATOLICA DE MANIZALES MANIZALES / CALDAS 2015 SITIO WEB SERVICIOS DE INGENIERIA RD SAS ESTUDIANTES: Más detalles Ingeniería Electrónica SDJ 1202
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Clave de la asignatura: (Créditos) SATCA 1 Procesamiento Digital de Señales (DSP). Ingeniería Electrónica SDJ 1202 4 2 6 2.- PRESENTACIÓN Caracterización Más detalles TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN AREA SISTEMAS INFORMATICOS
TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN AREA SISTEMAS INFORMATICOS HOJA DE ASIGNATURA CON DESGLOSE DE UNIDADES TEMÁTICAS 1. Nombre de la asignatura Desarrollo de Más detalles A.N.E.P. Consejo de Educación Técnico Profesional. Educación Media Tecnológica. Orientación: INFORMÁTICA ASIGNATURA SISTEMAS DE BASES DE DATOS I
Consejo de Educación Técnico Profesional Educación Media Tecnológica Orientación: INFORMÁTICA ASIGNATURA SISTEMAS DE BASES DE DATOS I Segundo año (3 horas semanales) Plan 2004 Índice Tema Pág Índice... Más detalles Ingeniería de software
Ingeniería de software MSC-0102 Nombre de la asignatura: Ingeniería de Software Línea de trabajo: Asignatura básica Tiempo de dedicación del estudiante a las actividades de: DOC TIS TPS Horas totales Créditos Más detalles TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN AREA SISTEMAS INFORMATICOS
TÉCNICO SUPERIOR UNIVERSITARIO EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN AREA SISTEMAS INFORMATICOS HOJA DE ASIGNATURA CON DESGLOSE DE UNIDADES TEMÁTICAS Pág. 1 de 25 1. Nombre de la asignatura Desarrollo Más detalles Pontificia Universidad Católica del Ecuador
1. DATOS INFORMATIVOS: MATERIA O MÓDULO: Introducción a la Computación CÓDIGO: 1710 CARRERA: NIVEL: Ingeniería de Sistemas Preparatorio No. CRÉDITOS: 4 CRÉDITOS TEORÍA: 4 CRÉDITOS PRÁCTICA: 0 SEMESTRE Más detalles La obra se proporciona bajo los términos de esta licencia pública de Sisoft de México
Licencia La obra se proporciona bajo los términos de esta licencia pública de Sisoft de México S. A de C.V., Está protegida por derechos de autor y / u otras leyes aplicables. Cualquier uso diferente a Más detalles Desarrollo profesional para docentes universitarios en la era tecnológica. Propuesta de Taller de Formación en el uso de las TIC.
Desarrollo profesional para docentes universitarios en la era tecnológica. Propuesta de Taller de Formación en el uso de las TIC. Autora: Gisselle Gómez Avalos Resumen El presente trabajo tiene como objetivo Más detalles Carrera: Clave de la asignatura: INB-0407 4-0 - 8. Participantes Representante de las academias de ingeniería industrial de Institutos Tecnológicos.
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Clave de la asignatura: Horas teoría-horas práctica-créditos Administración de Operaciones II Ingeniería Industrial INB-0407 4-0 - 8 2.- HISTORIA Más detalles En verde están algunas propuestas que entendemos que faltan y que ayudarían a mejorar las fichas sustancialmente.
NOTAS ACLARATORIAS: Esta ficha de grado es la resultante de las dos reuniones celebradas (9 enero 2009 y 23 de febrero de 2009) por la subcomisión creada desde el MICIIN para debatir las fichas de Grado Más detalles Modelos de Proceso Tradicionales
Modelos de Proceso Tradicionales Capitulo 2,QJHQLHUtDGHO6RIWZDUH (VSHFLDOL]DFLyQHQ*HUHQFLDGH6LVWHPDVGH,QIRUPDFLyQ 8QLYHUVLGDG6DQWLDJRGH&DOL Profesor: MSc. MIGUEL ANGEL NIÑO ZAMBRANO Programación: Tiempo Más detalles UNIVERSIDAD ALBERT EINSTEIN FACULTAD DE INGENIERIA
UNIVERSIDAD ALBERT EINSTEIN FACULTAD DE INGENIERIA Estudio de las herramientas TOAD y DBArtisan para la administración e integración de bases de datos relacionales. PREVIA OPCION AL TÍTULO DE: INGENIERO Más detalles UNIDAD DE DESARROLLO Y PERFECCIONAMIENTO DOCENTE
UNIDAD DE DESARROLLO Y PERFECCIONAMIENTO DOCENTE VICERRECTORÍA DE ASUNTOS ACADEMICOS DIPLOMA EN DOCENCIA UNIVERSITARIA CON USO DE TIC S Este Diploma en la actualidad se propone en base a requerimientos Más detalles Carrera: SCD-1008 SATCA 1 2-3-5
1.- DATOS DE LA ASIGNATURA Nombre de la asignatura: Carrera: Fundamentos de programación Sistemas Computacionales Clave de la asignatura: SATCA 1 SCD-1008 2-3-5 2.- PRESENTACIÓN Caracterización de la asignatura. Más detalles - Capacidad para dirigir las actividades objeto de los proyectos del ámbito de la informática de acuerdo con los conocimientos adquiridos.
Competencias generales - Capacidad para concebir, redactar, organizar, planificar, desarrollar y firmar proyectos en el ámbito de la ingeniería en informática que tengan por objeto, de acuerdo con los Más detalles SISTEMATIZACIÓN DE LA GENERACIÓN DE PRESUPUESTOS PARA PROYECTOS DE OBRA: DOCUMENTO DE VISIÓN SISTEMA DE ADMINISTRACIÓN DE MATERIALES DE TUBERÍA
SISTEMATIZACIÓN DE LA GENERACIÓN DE PRESUPUESTOS PARA PROYECTOS DE OBRA: SISTEMA DE ADMINISTRACIÓN DE MATERIALES DE TUBERÍA PARA INARGOS LTDA. DOCUMENTO DE VISIÓN VERSIÓN 1.3 BOGOTÁ, COLOMBIA, ENERO 2012 Más detalles TECNÓLOGO EN INFORMÁTICA PLAN DE ESTUDIOS
Administración Nacional de Universidad de la República Educación Pública Facultad de Ingenieria CF Res..0.07 Consejo Directivo Central Consejo Directivo Central Res..05.07 Res. 17.0.07 TECNÓLOGO EN INFORMÁTICA Más detalles 2.1 Ingeniería de Software
Capítulo 2 Marco Teórico Se pretende desarrollar un software que pueda ser aplicado como una herramienta útil para la administración de una empresa. Es necesario tener en cuenta que, en todo desarrollo Más detalles CAPÍTULO 1 Introducción
CAPÍTULO 1 Introducción 1.1 Sistemas basados en conocimiento (Knowledge Based Systems) Los sistemas basados en conocimiento (Knowledge Based Systems. KBS) son aplicaciones que generan soluciones o respuestas Más detalles CARTA DESCRIPTIVA Código: FO-MI-108 Versión: 3 Fecha: 25-10-2013
CARTA DESCRIPTIVA Código: FO-MI-108 Versión: 3 Fecha: 25-10-2013 1. PRESENTACIÓN FACULTAD: Ingenierías PROGRAMA: Ingeniería de sistemas NOMBRE DEL CURSO: Ingeniería de Software PLAN DE ESTUDIOS: IS01 CRÉDITOS Más detalles DEPARTAMENTO: Ingeniería e Investigaciones Tecnológicas 1114. ASIGNATURA: BASE DE DATOS Año 2011
DEPARTAMENTO: Ingeniería e Investigaciones Tecnológicas Código Asignatura 1114 ASIGNATURA: BASE DE DATOS Año 2011 FUNDAMENTACIÓN Base de datos contribuye a la formación del Ingeniero en Informática por Más detalles MINISTERIO DE EDUCACIÓN DIRECCIÓN DE EDUCACIÓN TÉCNICA Y PROFESIONAL PROGRAMA DE LA ASIGNATURA BASE DE DATOS ESPECIALIDAD INFORMÁTICA.
MINISTERIO DE EDUCACIÓN DIRECCIÓN DE EDUCACIÓN TÉCNICA Y PROFESIONAL PROGRAMA DE LA ASIGNATURA BASE DE DATOS ESPECIALIDAD INFORMÁTICA. AUTORES: MSC. MIREYA LÓPEZ DELGADO LIC. ESPINOSA. CUIDAD HABANA PROGRAMA Más detalles Plan docente. Laboratorio de Diseño Digital (16311/17186)
Plan docente Asignatura: Laboratorio de Diseño Digital (16311/17186) Profesores: Andoni Arruti Illarramendi Carlos Amuchástegui Uriarte Izaskun Etxeberria Uztarroz Amaya Ibarra Lasa 1 INDICE 1/ DATOS MATERIA. Más detalles SUMILLAS DE ASIGNATURAS DE ESPECIALIDAD INFORMÁTICA I
SUMILLAS DE ASIGNATURAS DE ESPECIALIDAD INFORMÁTICA (Reestructurado a partir del 2006) PRIMER CICLO INFORMÁTICA I Esta asignatura tiene por objeto en conocer los elementos básicos de la informática. Unidades Más detalles TECNOLOGÍA DE LA INFORMACIÓN PARA EL APRENDIZAJE DE LA ADMINISTRACIÓN DE PROYECTOS
TECNOLOGÍA DE LA INFORMACIÓN PARA EL APRENDIZAJE DE LA ADMINISTRACIÓN DE PROYECTOS Domingo Vega T. Facultad de Ingeniería, Departamento de Ingeniería Industrial, Universidad de La Serena dvega@userena.cl Más detalles UNIVERSIDAD LIBRE PROGRAMAS ANALÍTICOS. PROGRAMA ACADÉMICO: Ingeniería de Sistemas JORNADA: Diurno
PROGRAMAS ANALÍTICOS SECCIONAL: Pereira FACULTAD: Ingenierías PROGRAMA ACADÉMICO: Ingeniería de Sistemas JORNADA: Diurno 1.- INFORMACION DEL DOCENTE: Carlos Alberto Ocampo Sepúlveda E-mail institucional: Más detalles Documento de Competencias. Facultad de Informática, UPV/EHU. 1 Estructura general del Grado TE1 TE2 TE3 TE4 TE5 TE6 TE7 TE8
Documento de Competencias Grado en INGENIERÍA INFORMÁTICA Facultad de Informática, UPV/EHU 1 Estructura general del Grado 1.1 Fundamentos de Tecnología de los Principios de Diseño de Sistemas Digitales Más detalles 2017 © DocPlayer.es Política de privacidad | Condiciones del servicio | Feedback

References: Resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 Resolución 
 resolución 
 resolución 
 Resolución 
 resolución