Descripción del proyecto
EN NUESTRA VIDA COTIDIANA INTERACTUAMOS CON MUCHOS DISPOSITIVOS QUE USAN SOFTWARE, ALGUNAS INTERACCIONES OCURREN A PROPOSITO (POR EJEMPLO, CUANDO SE USA UN TELEFONO) Y OTRAS INADVERTIDAMENTE (POR EJEMPLO, CUANDO UN PROCESADOR EN UN COCHE DECIDE LA MEJOR MEZCLA DE COMBUSTIBLE Y AIRE PARA UNA VELOCIDAD DADA), COMO CONSECUENCIA, VIVIMOS RODEADOS POR SOFTWARE QUE DECIDE POR NOSOTROS Y GESTIONA NUESTRO ENTORNO, LOS EFECTOS DE LOS FALLOS DE SOFTWARE PUEDEN VARIAR DESDE MOLESTOS (POR EJEMPLO, SI SE CUELGA UNA APLICACION EN EL TELEFONO) A PELIGROSOS (FORD Y TOYOTA HAN LLAMADO A REVISION MAS DE UN MILLON DE COCHES POR ERRORES DE SOFTWARE) Y A LETALES (POR EJEMPLO, VARIOS MOTORES EN UN AVION SE PUEDEN PARAR SIMULTANEAMENTE, COMO YA HA SUCEDIDO),TEORIA Y TECNICAS PARA DESARROLLAR SOFTWARE CORRECTO HAN SIDO ESTUDIADAS Y SE HAN LOGRADO AVANCES MUY IMPORTANTES, SIN EMBARGO, ALGUNOS REQUISITOS DEL SOFTWARE MODERNO Y DE LOS ENTORNOS EN LOS QUE SE IMPLANTA HACEN INVIABLE LA APLICACION DE METODOS EXISTENTES, TALES REQUISITOS INCLUYEN RESTRICCIONES EN EL USO DE ENERGIA (PARA DISPOSITIVOS EMPOTRADOS AUTONOMOS, COMO MARCAPASOS) QUE HACEN QUE SEA NECESARIO VERIFICAR EL CONSUMO DE RECURSOS; ENTORNOS OPERATIVOS MUY COMPLEJOS (UN COCHE MODERNO PUEDE TENER ALREDEDOR DE 100 PROCESADORES EN FUNCIONAMIENTO A LA VEZ, EJECUTANDO PROGRAMAS QUE SUMAN 100 MILLONES DE LINEAS DE CODIGO); Y ENORMES CANTIDADES DE DATOS PARA SER PROCESADOS (UN SOLO AVION BOEING 787 GENERA 40 TERABYTES DE DATOS POR HORA, MIENTRAS QUE EL INTERNET DE LAS COSAS YA HA GENERADO 113 ZETTABYTES DE DATOS EN 2013, LA MAYOR PARTE POR SERVICIOS EN LA NUBE, Y ESTA CANTIDAD SIGUE CRECIENDO CADA AÑO),ESTOS CAMBIOS EN EL SOFTWARE ACTUAL TAMBIEN REQUIEREN CAMBIOS EN LAS HERRAMIENTAS Y TEORIAS FUNDAMENTALES QUE SUBYACEN A LAS TECNICAS DE INGENIERIA DE SOFTWARE QUE HAN DE APLICARSE EN UN FUTURO PROXIMO, ESTA ES LA IDEA DE ESTA PROPUESTA, EN LA QUE SE PRETENDEN ABORDAR ALGUNOS DE LOS DESAFIOS MENCIONADOS EN TAREAS ORGANIZADAS EN TRES LINEAS PRINCIPALES: * COMPUTACION CONSCIENTE DE LOS RECURSOS: ES NECESARIO PODER DETERMINAR LIMITES SEGUROS (O AL MENOS APROXIMADOS) PARA EL CONSUMO DE RECURSOS EN UN HARDWARE DETERMINADO, Y OPTIMIZARLO TANTO COMO SEA POSIBLE, PARA ASEGURAR LA CORRECCION DE LOS DISPOSITIVOS INTEGRADOS EN TERMINOS MAS GENERALES QUE LA SIMPLE CORRECCION FUNCIONAL, * TECNICAS AVANZADAS PARA GARANTIZAR CORRECCION FUNCIONAL: SE CONSIDERA NO SOLO LA VERIFICACION DE SISTEMAS CON INFINITOS ESTADOS, SINO TAMBIEN LA DEPURACION, LA SINTESIS DE SOFTWARE CONCURRENTE, METODOS PROBABILISTICOS / HEURISTICOS, Y METODOS MAS AGILES, COMO TESTING Y VERIFICACION DINAMICA O EN TIEMPO DE EJECUCION, ESTOS SON NECESARIOS CUANDO, POR EJEMPLO, LOS LIMITES DE UN SISTEMA INFORMATICO NO SON BIEN CONOCIDOS A PRIORI, O LAS INTERACCIONES CON EL ENTORNO SOLO PUEDEN SER MODELADAS PROBABILISTICAMENTE, * NUEVAS TECNOLOGIAS DE LENGUAJES: LOS NUEVOS ENTORNOS, TAREAS Y MISIONES HACEN NECESARIO ADAPTAR LENGUAJES EXISTENTES O CREAR NUEVOS LENGUAJES, CONTRARIAMENTE A LA CREENCIA GENERALIZADA, NUEVOS LENGUAJES Y MODELOS DE PROGRAMACION SE CREAN CONSTANTEMENTE, NO SOLO EN EL AMBITO ACADEMICO SINO TAMBIEN EN LA INDUSTRIA, CON EL OBJETIVO DE APROVECHAR NUEVOS DISPOSITIVOS O DE REALIZAR TAREAS (BASADAS EN CONOCIMIENTO) QUE SERIAN DIFICILES DE ESCRIBIR (Y DE DEMOSTRAR CORRECTAS) EN LENGUAJES TRADICIONALES,ADEMAS DE LOS RESULTADOS TEORICOS, LAS TECNICAS ANTERIORES SE IMPLEMENTARAN EN PROTOTIPOS DE HERRAMIENTAS, SOFTWARE CONSCIENTE DE LOS RECURSOS\VERIFICACIÓN\TESTING\DEPURACIÓN\RESOLUCIÓN DE RESTRICCIONES\COMPILACIÓN\OPTIMIZACIÓN\SISTEMAS PROBABILÍSTICOS