A continuación detallamos algunas áreas de aplicación que son de especial interés para el Instituto IMDEA Software, hacia las cuales enfocaremos nuestra investigación:
Los sistemas empotrados constituyen una de las áreas de aplicación en donde la corrección es lo más importante. Un sistema empotrado es un artefacto que incorpora una computadora, que interacciona con un entorno físico, y cuyo correcto funcionamiento no depende de las acciones de un humano. En concreto, se utilizan sistemas empotrados en aplicaciones críticas, como sistemas de control en automóviles y aviones, o en sistemas de operación remota como satélites, etc. Los sistemas empotrados también son omnipresentes en otras áreas de gran impacto económico, como la telefonía móvil o la electrónica de consumo. Algunas características de los sistemas empotrados es que tienen que reaccionar en un tiempo adecuado y con un uso de recursos apropiado. Debido a que el software es el factor limitante (tanto en calidad como en tiempo de desarrollo y en coste), el uso de técnicas rigurosas de desarrollo de software puede contribuir en gran medida a la calidad de los sistemas empotrados, así como al tiempo de comercialización (time to market) de nuevos dispositivos o familias de dispositivos.
Algunas de las actividades de investigación en este campo están relacionadas con los objetivos de la "Strategic Research Agenda" de la "European Technology Platform on Embedded Computing Systems", ARTEMIS.
El Software está haciendose omnipresente en áreas tales como la de los transportes (aeronáutica, automoción), la sanidad, o el control (de plantas nucleares, de sistemas de señalización ferroviarios, o de sistemas de detección de conflictos), en donde un fallo o mal funcionamiento puede ser extremadamente perjudicial, sobre todo en daños humanos. Estos sistemas críticos deben cumplir requisitos extremos: los sistemas deben funcionar durante periodos de tiempo extremadamente largos, tolerando errores humanos, o fallos de hardware o de software, y proporcionando a la vez un nivel aceptable de servicios en todo momento.
Por ello, urge desarrollar métodos y herramientas de ayuda al desarrollo de dicho software fiable y su evaluación cuantitativa respecto a los requisitos mencionados. Para conseguirlo, es fundamental desarrollar lenguajes de programación y arquitecturas software que faciliten el desarrollo de aplicaciones tolerantes a fallos, flexibles y adaptables. En particular, uno de los retos consiste en conseguir la escalabilidad de los métodos existentes para que sean efectivos en el ámbito de los sistemas distribuidos y de redes.
Las infraestructuras de computación están evolucionando hacia redes altamente distribuidas capaces de proporcionale a los usuarios un acceso uniforme y global a los servicios. Al mismo tiempo, la comercialización de servicios se ha convertido en el negocio de más crecimiento en la industria de las tecnologías de la información. Las Arquiterturas Orientadas a Servicios, SOAs (siglas del inglés Service Oriented Architectures) pretenden proporcionar el soporte necesario a nivel de software para conseguir que la programación, el despliegue y el mantenimiento de servicios en redes altamente distribuidas sean efectivos. Las SOAs surgen de diferentes áreas de la informática, entre las que se encuentran la ingeniería del software, los sistemas concurrentes y distribuidos, el código móvil, y la programación modular y basada en componentes. Aunque dichas áreas están bien establecidas independientemente, existen interesantes retos para combinar las metodologías procedentes de cada área y conseguir enfoques que den soporte a la construcción y despliege de servicios electrónicos.
La mayor parte de las actividades de investigación requeridas por las SOAs y planificadas en el Instituto Instituto IMDEA Software están altamente relacionadas con los objetivos de la "Strategic Research Agenda" de la "European Technology Platform on Software and Services" (NESSI).
Dado que nuestra sociedad es cada vez más dependiente de la tecnología de la información, existe una necesidad urgente sin precedentes por desarrollar nuevos mecanismos de seguridad para proteger infraestructuras, datos y aplicaciones. Algunos factores concomitantes también agravan los problemas de seguridad de la información.
Para afrontar este reto hacen falta técnicas rigurosas y escalables que puedan integrarse en los procesos de desarrollo de software predominantes para garantizar la seguridad de las aplicaciones. Dado que ocurren muchos ataques a nivel de aplicación, es particularmente importante conseguir la seguridad a nivel de los lenguajes de programación, adoptando métodos desarrollados en investigación sobre lenguajes de programación (diseño, análisis y verificación), y desarrollando soluciones de seguridad a un nivel de abstracción acorde con el lenguaje de programación.