Agile: desarrollo de software de sistemas embebidos
Responsable Tecnológico de Fagor Automation15/11/2006
Problemática de los sistemas embebidos
• Teléfonos móviles, cámaras fotográficas y de vídeo.
• Cajeros automáticos, terminales punto de venta, kioscos de Internet.
• Consolas de juegos, reproductores de MP3.
• Electrodomésticos y domótica (microondas, DVD, televisiones, lavadoras, aire acondicionado, termostatos, sistema de alarmas).
• Equipamiento médico (microscopios, equipos de resonancia magnética, robots quirúrgicos).
• Sistemas de control de vuelo, misiles.
• Calculadoras, PDAs, impresoras, modems, routers.
• Ordenador de a bordo en el automóvil, ABS, GPS.
• Sistemas de control de tráfico, de máquinas herramientas y robots o de células y plantas de fabricación.
El software de los sistemas embebidos es conocido habitualmente con el nombre de firmware y tiene las siguientes características que le diferencian de las aplicaciones normales:
• Interacciona directamente con los sistemas hardware.
• Normalmente tiene recursos limitados (poca memoria, potencia de CPU ajustada, etc.) por razones de costo, ya que muchos de ellos se fabrican en grandes cantidades y los ahorros son importantes.
• En algunos casos no hay ninguna interacción con el usuario, por lo que deben funcionar durante años sin errores y ser capaces de recuperarse por sí mismos en caso de que estos ocurran.
• En otros casos hay interacción con el usuario, que puede ir desde el uso de unas pocas teclas y un simple display hasta un completo interface de usuario basado en ventanas similares a las de un PC.
• En algunas aplicaciones los sistemas embebidos tienen que ser capaces de responder inmediatamente y cumplir requerimientos de tiempo real por razones de seguridad (mission critical systems). A menudo se requieren certificaciones de seguridad y conformidad con determinados estándares.
• Normalmente los sistemas embebidos necesitan ser desarrollados por equipos de diferentes especialidades (software, hardware, mecánica, telecomunicaciones, etc.).
Objetivos del proyecto
Un análisis del estado del desarrollo de software en el mundo muestra que la calidad y la productividad de la industria no han sido capaces de mantenerse al nivel de las necesidades de la sociedad, como se muestra en la figura 1.
La disciplina de la Ingeniería del Software ha estado intentando encontrar la solución de este problema desde los años 80, pero la situación no ha mejorado, conduciendo a una escasez de profesionales de la informática que sólo la desaceleración económica desde finales de 2001 ha sido capaz de disfrazar. El problema es estructural y se hará presente de nuevo cuando la economía se acabe de recuperar.
Algunos modelos de Desarrollo de Software como CMM", Spice, Personal Software Process (PSPSM) o ISO 9001:2000 están diseñados para solucionar estos problemas. Sin embargo, en un reciente estudio de más de 200 proyectos, Michael Mah (QSM Associates) hace notar que no pudieron encontrar ni la mitad de los planes originales contra los que medir los proyectos. Dado que cumplir el plan no es ya el objetivo principal, la satisfacción de los clientes (en la entrega, no al inicio del proyecto) se ha convertido en prioridad.
Las metodologías tradicionales asumen que si el programador se esforzara podría anticipar el conjunto completo de requisitos y reducir el coste eliminando cambios, lo que quizá sea razonable en entornos estables pero no es cierto en muchos proyectos en entornos más dinámicos. En el entorno de cambio rápido en el que se mueven los sistemas embebidos, el cambio no puede ser eliminado. Lo que se propone hacer es adaptar el sistema de tal manera que se reduzca el coste de los cambios pero manteniendo la calidad.
Como consecuencia de todo esto, recientemente han aparecido nuevas metodologías ligeras o ágiles con el objetivo de dar solución a estas necesidades. Entre ellas se pueden incluir eXtreme Programming (XP), Adaptive Software Development (ASD), Lean Development (LD), SCRUM o Crystal Methods (CM). Todas ellas tienen como objetivo la satisfacción del cliente, la adaptabilidad a los cambios, la entrega de productos rápidamente y dentro del presupuesto estipulado. Estas metodologías han demostrado sus beneficios en términos de time-to-market, adaptabilidad a la evolución de los requisitos, satisfacción del cliente y entrega de productos rápidamente y dentro del presupuesto estipulado en un cierto número de dominios. Son prometedoras, pero existe poca experiencia, hasta ahora, en el mundo de los sistemas embebidos.
El enfoque especializado que se desarrollará en este proyecto ayudará a los desarrolladores de sistemas embebidos a ser más eficientes en su trabajo. La obtención de grandes mejoras en el desarrollo de sistemas grandes, distribuidos y generalmente creados como líneas de producto, provocará un salto cualitativo en la capacidad de producción de software embebido y proporcionará a la industria europea una ventaja competitiva significativa en el mercado mundial.
Participantes:
• BarcoView Avionics (Bélgica)
• E2S (Bélgica)
• Engisud (Italia)
• Exoftware (Irlanda)
• European Software Institute (España)
• F-Secure (Finlandia)
• FAGOR Automation (España)
• FICOSA (España)
• Free University of Bolzano-Bozen (Italia)
• Hantro (Finlandia)
• Kapion (Eslovenia)
• K.U.Leuven (Bélgica)
• Medius (Eslovenia)
• Nemetschek (Bulgaria)
• Nokia (Finlandia)
• Océ (Francia)
• P4Q Electronics (España)
• Philips (Holanda)
• SQS (España)
• TCP Sistemas e Ingeniería (España)
• VTT Technical Research Centre (Finlandia)
Esfuerzo: 170 años-hombre
Fecha de comienzo: 1 de Abril de 2004
Duración: 33 meses
Líder: Pekka Abrahamsson, VTT (pekka.abrahamsson@vtt.fi)
Web: http://www.agile-itea.org
Los objetivos principales del proyecto son:
• Diseñar un marco de desarrollo de software ágil para el dominio de sistemas embebidos. Este marco incluye el propio proceso de desarrollo de software, los procesos de apoyo, la arquitectura del proceso y las herramientas para el desarrollo de software embebido.
• Mantener la conformidad con las normas existentes (ISO9000, CMMITM, DO178b). El tema es muy importante en el dominio de los sistemas embebidos.
• Desarrollar un modelo de implantación para permitir el empleo del marco de desarrollo Agile. El modelo de implantación incluye el proceso de implantación y las directrices de uso del marco de trabajo. Todo esto apoyado por un entorno de trabajo apropiado y experiencias industriales.
• Demostrar la viabilidad operativa del marco desarrollado, del modelo de implantación y de las herramientas en un número de proyectos pilotos de software embebido procedentes de diferentes sectores industriales.
• Demostrar la eficacia del enfoque AGILE mediante métricas para, por ejemplo, convencer a la Dirección, incluyendo un análisis coste-beneficio, un análisis de impacto, etc.
Descripción del trabajo a realizar
A continuación se elaborará el marco para el desarrollo ágil de software en el dominio de sistemas embebidos. Basándose en los requisitos recogidos, el marco Agile tendrá en cuenta el proceso de desarrollo ágil de software, los procesos de negocio, los procesos de apoyo y la arquitectura de los procesos. El marco se organizará por áreas tecnológicas y de gestión, incluyendo la subcontratación ágil y las líneas de producto software. Proporcionará los medios para identificar dónde y cómo se puede incrementar el nivel de agilidad en el desarrollo de software embebido.
Posteriormente se procederá a la implantación del marco Agile y a la recopilación de experiencias en las aplicaciones industriales. También se desarrollará un proceso de implantación y un método de recopilación de experiencias que facilite una recogida de datos significativos y que permita la comparación, análisis e interpretación de los resultados de los proyectos pilotos.
El marco Agile desarrollado, una vez personalizado con la ayuda de un entorno integrado de desarrollo, se aplicará en la industria para evaluar su efectividad y validez. Los resultados se analizarán y compararán entre sí.
Finalmente, durante el desarrollo del proyecto y especialmente en su etapa final, se realizarán actividades de difusión de los resultados y conclusiones del proyecto Agile. Estas actividades incluyen la publicación de resultados, organización de seminarios y workshops, desarrollo de una página Web del proyecto, de un boletín informativo y otro material publicitario.