Safety y Requisitos No Funcionales Resumen de Trabajo Tutelado , Curso 2005-2006 Doctorando: Oscar Díez González Tutor: Andrés Silva Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática 1. Indice 1. 2. 3. 4. Indice ........................................................................................................................................................ 2 Introducción.............................................................................................................................................. 2 Safety ........................................................................................................................................................ 3 Requisitos no funcionales ......................................................................................................................... 3 4.1. Safety y Requisitos no funcionales.................................................................................................. 3 5. Modelos de RNF (NFR) ........................................................................................................................... 3 5.1. NFR Framework de Chung ............................................................................................................. 3 5.1.1. Catálogos de Conocimiento ..................................................................................................... 4 5.2. NFR con UML................................................................................................................................. 4 5.2.1. Integración con Requisitos Funcionales................................................................................... 5 6. Propuestas de la Industria ......................................................................................................................... 6 6.1. Transporte........................................................................................................................................ 6 6.1.1. EN 50128:1997 Railway Applications: Software para el control y sistemas de protección de Trenes 6 6.1.2. Directriz para el desarrollo en Software de vehículos (MISRA), 1994 ................................... 7 6.2. Aeroespacial .................................................................................................................................... 7 6.2.1. RTCA/DO-178B ...................................................................................................................... 7 6.2.2. ECSS. Agencia Espacial Europea ............................................................................................ 8 6.2.3. NASA-STD-8719.13A y NASA GB-1740.13-96.................................................................... 9 6.3. Defensa............................................................................................................................................ 9 6.3.1. MIL-STD-882D: US DoDefense ............................................................................................. 9 6.3.2. DEF STAN 00-55: UK Ministry of Defence ......................................................................... 10 6.4. Nuclear .......................................................................................................................................... 11 6.4.1. IEC 60880: Software para ordenadores en plantas nucleares ................................................ 11 7. Estándares ............................................................................................................................................... 11 7.1. IEC61508-3 International Electrotechnical Comisión .................................................................. 11 7.2. SEMSPLC, IEE Guía Técnica 8.................................................................................................... 12 8. Conclusión .............................................................................................................................................. 13 9. Anexo A. Estandares de Software Safety ............................................................................................... 14 10. Anexo B. Tabla comparativa de Estandares ......................................................................................... 15 11. Bibliografía........................................................................................................................................... 16 2. Introducción Los sistemas y subsistemas basados en software cada vez son mas utilizados en todo tipo de productos y sistemas (automóviles, trenes, sistemas quirúrgicos, control aéreo, plantas nucleares), muchos de los cuales son críticos para la seguridad de las personas que los utilizan. Dado el mayor uso y la mayor complejidad de estos sistemas, el riesgo de producirse un error o accidente debido al uso de software es cada vez mayor. Como se vera mas adelante una parte importante a la hora de asegurar el buen funcionamiento de estos sistemas y de evitar accidentes es cerciorarse que los requisitos del sistema, y en particular los requisitos no funcionales que afectan al “safety” en el sistema se recojan y se plasmen el los requisitos del sistema y se incorporen al diseño. En este trabajo se presentaran algunas de las opciones que existen para recoger y representar estos requisitos (Safety y requisitos no funcionales), así como los usados por las distintas industrias junto con los actuales estándares utilizados y se intentara comparar estas opciones para presentar los posibles vacíos que existen actualmente. Oscar Diez 2/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática 3. Safety Se va utilizar el término ingles ‘safety’ por que no encuentro una palabra exacta que pueda utilizar en castellano. La traducción más común seria seguridad, pero eso nos lleva a equivocarnos con la palabra ‘security’, también traducida como seguridad pero con un significado distinto. Por este motivo voy a mantener el termino ‘safety’ a lo largo del presente documento. Como define Modugno [5], un sistema seguro “safe”, es el que esta libre de accidentes o perdidas inaceptables. Cuando hablamos de ‘safety’ en un sistema, normalmente no se habla de un sistema 100% seguro, sino como Levenson [15] y Littlewood [16] dicen, el objetivo es tener un sistema lo suficientemente seguro sin por ello gastar mas recursos o menos recursos de los necesarios para su desarrollo. Un ejemplo es el agua, cuando se dice que es seguro beber agua no implica que el agua esta completamente limpia de microbios y otros contaminantes, sino que estos son mas bajos que el nivel considerado seguro para ser agua potable. Es por ello, que estos niveles de seguridad deben ser establecidos para cada producto, diseño, y el uso que se haga de el. 4. Requisitos no funcionales Es muy difícil establecer una separación entre requisitos funcionales y no funcionales, ya que la decisión de si es uno u otro puede venir por el nivel de detalle del documento de requisitos. Además, los requisitos no funcionales son difíciles de expresar, y mucho más de ser recogidos en un documento de requisitos utilizando las mismas técnicas que para los requisitos funcionales[14]. Hay que tener en cuenta, que normalmente, los errores debidos a requisitos no funcionales son los mas difíciles y caros de resolver. Los requisitos no funcionales deben establecer restricciones en el producto que esta siendo desarrollado, en el proceso de desarrollo y en restricciones especificas que el producto pueda tener. Una buena definición de requisito no funcional es la dada por Thayer [4]: es un requisito software que describe no lo que el software hará, sino como lo hará, como por ejemplo, requisitos de rendimiento. Los requisitos no funcionales son difíciles de verificar/testear, y por ello son evaluados subjetivamente. 4.1. Safety y Requisitos no funcionales Actualmente no existe un consenso sobre el significado de ‘safety requirement’. Algunas veces hace referencia todos los requisitos (ya sean funcionales o no funcionales) de los sistemas relacionados con ‘safety’. Otras veces se refiere al subconjunto de requisitos que están directamente relacionados con asegurar un correcto y seguro funcionamiento del sistema o requisitos en sistemas de protección que están diseñados para proteger contra accidentes. [1] 5. Modelos de RNF (NFR) 5.1. NFR Framework de Chung El framework de NFR creado por Chung [2] es uno de los trabajos mas completos en lo referente a requisitos no funcionales (NFR) y en el propone una estructura que usa los requisitos no funcionales para dirigir el proceso de diseño. Uno de los conceptos principales son los ‘softgoal’ que representa un objetivo que no tiene definidas claramente los criterios para definir si es satisfecho o no (suelen ser subjetivos). El modelo ofrece una estructura para representar y guardar los procesos de diseño y razonamiento en gráficos, llamados ‘softgoal interdependency graphs (SIGs)’. El modelo también ofrece la catalogación de conocimiento sobre los RNF y diseño, incluyendo conocimiento sobre técnicas de desarrollo. [2] Estos gráficos (SIG) recogen las consideraciones del desarrollador sobre los softgoals, y muestra la interdependencia entre estos softgoals. Para ello muestra los softgoals como nubes representando los requisitos principales en la parte superior del grafico, mostrando con líneas los enlaces de interdependencia, y utilizando etiquetas para representar el grado en el que el softgoal es conseguido. Oscar Diez 3/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática Usabilidad [Funcion Usuario] Que de el servicio [Sistema de Precio] Componentes Del cliente ++ Componentes del servidor Utiliza mucho tiempo y es dificil de distribuir e instalar (fat client) Instalacion Soporte Tecnico -- -- ++ ++ Aplicacion de Cliente a medida Sistema Visualizacion Generico universal Navegador Web Fig.1 . Ejemplo de SIG [12] 5.1.1. Catálogos de Conocimiento Los desarrolladores pueden utilizar este marco como una base de conocimiento de previos proyectos organizados en tres tipos de catálogos, uno de conocimiento sobre determinados tipos de RFN, junto con sus conceptos y terminología. Otro tipo de catalogo usado para organizar las técnicas de desarrollo que ayudan a cumplir los requisitos, y el tercero muestra las interdependencias implícitas entre los distintos ‘softgoals’. El conocimiento es recogido en estos catálogos puede venir de distintas fuentes, como libros, su propia experiencia, o especialistas en la industria para conocimiento especifico en un determinado dominio. En concreto, el catalogo sobre los determinados tipos de RNF será el que se use para ir recogiendo estos requisitos en una jerarquía. Para recoger los RNF se construye un SIG (Softgoal interdependency graph) en el que se plasman los principales requisitos no funcionales que el sistema a desarrollar debe cumplir. Estos requisitos son NFR softgoals, que deberán ser priorizados, clarificados, elaborados, y descompuestos en ‘softgoals’ mas específicos mas adelante. Al final de todo este proceso se deben obtener soluciones que pueden ser aplicadas al sistema a desarrollar, presentando posibles alternativas, y escogiendo las que mas se adecuen al sistema a desarrollar. Tambien se puede relacionar gráficamente en el mismo SIG la interdependencia con los requisitos funcionales, aunque como se comenta mas adelante, este proceso no se trata con el suficiente detalle. 5.2. NFR con UML Aunque el anterior modelo es uno de los trabajos más completos en lo referente a requisitos no funcionales, no se trata en detalle la integración de estos RNF con los requisitos funcionales. Es por ello que existen varias propuestas para poder llenar ese vacío. La que se presenta aquí es la que se realiza utilizando UML y sus respectivas representaciones para incorporar los RNF e integrarlos con los funcionales [6]. En este caso se considera que el proceso de desarrollo esta compuesto de dos ciclos independientes, uno que se encarga de los aspectos funcionales y otro de los aspectos no funcionales, y se establecen puntos de convergencia en estos dos ciclos. Mediante estos puntos de convergencia se podrán se pueden añadir a la Oscar Diez 4/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática vista funcional todas las acciones y datos que serán necesarios para satisfacer la vista no funcional. Para ello se utilizaran diagramas de clase de clases UML para expresar los RNF. En este modelo se utiliza un LEL (Lenguage Extended Lexicon) en el cual se registra todo el vocabulario del dominio del Sistema, de forma que se pueda entender el lenguaje del problema sin preocuparse demasiado en entender el problema. Y recogerá información relacionada con requisitos funcionales y no funcionales, así como sus interdependencias. Pero para la representación de los RNF se usa la misma notación y los mismos diagramas SIG que Chung propone, representado los softgoals/subsoftgoals en un estructura de árbol jerárquica, y de igual forma que en modelo de Chung, se priorizan, se descomponen y al final se “operazionalizan”, lo que quiere decir, que se obtienen requisitos funcionales para satisfacer los no funcionales. Estas “operazionalizaciones” pueden ser dinámicas (que se refieren a conceptos abstractos y requieren mas análisis) y las estáticas (que implican la necesidad de utilizar algún dato en el diseño para guardar información que es necesaria para satisfacer el RNF). En la figura 2 se puede ver un ejemplo de grafico de RNF [6] en el que se detalla la seguridad en un sistema de luces de una habitación. S S Safety [Habitacion] Safety [Habitacion. Luz de ambiente. Luz ambiente actual >= Iluminacion safe ] S Safety [Habitacion. Luz de ambiente. Iluminacion safe = 14 lux ] S Safety [Habitacion. Mal Funcionamiento] S Safety S [Habitacion. Mal Funcionamiento de OLS ] S S Safety [Habitacion. Mal Funcionamiento de OLS Todos CLG encendidos] Safety [Habitacion. Mal Funcionamiento Usuario Es informado] Safety [Habitacion. Mal Funcionamiento Detector de movimiento] S Safety [Habitacion. Mal Funcionamiento FM Es informado] S Safety [Habitacion. Mal Funcionamiento Detector de movimiento Poner habitacion como ocupada] Fig.2 Ejemplo de un grafico de RNF. [6] Para construir el modelo de RNF se buscara en el LEL por información que expresen la necesidad de RNF. Y por cada RNF se debe crear un grafico que exprese todas las “operalizaciones” necesarias para satisfacer ese RNF, así como las interdepencias entre estos RNFs, como por ejemplo, un RNF que hace referencia a seguridad puede tener un impacto negativo en otro RNF que hace referencia a usabilidad. 5.2.1. Integración con Requisitos Funcionales Para hacer la integración se utilizara el Lexicon LEL como punto común entre los gráficos de RNFs y los diagramas de clases. Para ello, toda raíz del grafico de RNF debe referir a un símbolo del LEL y toda clase del diagrama de clases tiene que ser nombrada utilizando un símbolo del LEL. De esta forma no solo se facilita la integración sino que también se validan ambos modelos. El modelo de integración se centra en la búsqueda de un símbolo que aparezca en los dos modelos y en evaluar el impacto de añadir las operalizaciones de RNF al diagrama de clases. El proceso seria seleccionar una clase del diagrama de clases, y buscar en los diagramas de RNF por la ocurrencia de esta clase. Para cada grafico en donde encontramos el nombre de la clase que buscamos, debemos identificar las operalizaciones dinámicas y estáticas. Y debemos comprobar si las operaciones, en el Oscar Diez 5/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática caso de operalizaciones dinámicas, y los atributos, en el caso de operalizaciones estáticas, que pertenecen a la clase cumplen con las necesidades expresadas en el grafico de RNF. Y si no lo cumplen, debemos añadir atributos y operaciones para que lo cumplan. En algunos casos, se puede llegar a la inclusión de nuevas clases para satisfacer los RNFs. Una vez incorporadas las nuevas clases/operaciones/atributos, se procera según la metodología UML para el resto del proceso. 6. Propuestas de la Industria Una vez presentado los anteriores modelos para recoger los RNF e incorporarlos en el sistema, se presentaran desde el punto de vista de la recogida de requisitos en primer lugar las propuestas que la industria utiliza en cada una de sus principales ramas así como los estándares que existen al respecto. 6.1. Transporte El software juega un papel fundamental en la mayoría de los sistemas de transporte de tierra actualmente, tanto en trenes como en automóviles. Estos sistemas tienen características propias que los diferencian del resto de sistemas y por eso existen estándares específicos para estos sistemas. El “Safety” es estos sistemas esta muy determinado por las condiciones de la carretera o via, las condiciones medioambientales, nivel de destreza y conocimiento de los operadores y personal de mantenimiento y el diseño del vehiculo en lo referente a seguridad y fiabilidad. Los estandares son: 6.1.1. EN 50128:1997 Railway Applications: Software para el control y sistemas de protección de Trenes Este estándar fue preparado por el subcomité 9XA del comité técnico 9X de CENELEC (Normas Europeas), y es parte de un grupo de estándares sobre seguridad “safety” y fiabilidad en sistemas de ferrocarril. Entre otras muchos puntos el estándar cubre los procedimientos y requisitos técnicos para el desarrollo de sistemas electrónicos programables usados en sistemas de control y protección de ferrocarril. El estándar se organiza sobre el concepto de Niveles de Integridad de Software (Software Integrity level SIL), que indica el nivel de riesgo asociado con el uso de un sistema software, definiendo cinco niveles (0 no relacionado con la seguridad, 1 bajo, 2 medio, 3 alto, y 4 muy alto). Hay que diferenciar el concepto de SIL del de riesgo, ya que el riesgo esta asociado a un hazard determinado, y el SIL en cambio se asocia con la integridad de una guncion o sistema. De acuerdo con el estándar, cuanto más alto es el SIL, menos probable es que un fallo peligroso de un sistema software sea causado por una especificación software o un fallo en el diseño. El SIL para un sistema, subsistema, o componente particular debe ser descrito durante la especificación de requisitos del software. El estándar no especifica una metodología de desarrollo de software particular, pero si identifica varias fases de desarrollo, siendo la primera la especificación de requisitos. El estándar asume que el ciclo de desarrollo del software comienza tras haber asignado al software los requisitos funcionales y los no funcionales como safety, fiabilidad, rendimiento y seguridad. En lo referente a la especificación de requisitos, el estándar EN 50128 hace referencia a ISO/IEC 9126 para identificar las categorías de requisitos que son aplicables a sistema de protección y control de trenes como safety. El estándar dice que estos requisitos deben ser completos, consistentes, precisos, no ambiguos, entendibles y verificables. Además se debe especificar el SIL para todos los componentes del software estén o no relacionados con la seguridad “safety”, y dependiendo del nivel de SIL se usaran unas técnicas u otras durante la fase de recogida de requisitos (Metodologías estructuradas SIL 1-4, y métodos formales para 3-4). Al final se obtiene la especificación de requisitos software y la matriz de trazabilidad de requisitos (RTM) que será actualizada a lo largo del ciclo de vida para demostrar que todos los requisitos se pueden cumplir. Oscar Diez 6/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática Este estándar de la industria hace referencia a la recogida de los requisitos de safety y a las distintas metodologías que se pueden utilizar dependiendo del tipo de requisitos y el riesgo que estos tengan, pero deja la decisión de metodología al desarrollador y hay que tener en cuenta que estas técnicas son las mismas que se usan para los requisitos funcionales. 6.1.2. Directriz para el desarrollo en Software de vehículos (MISRA), 1994 La Asociación de la fiabilidad de industria del motor (Motor Industry Reliability Association – MISRA) fue creada basada en una iniciativa del Reino Unido para abordar los problemas de fiabilidad y seguridad (safety) presentados en la industria automovilística, ya que cada vez mas esta industria depende mas del software en la construcción de los vehículos. La directriz enlaza las actividades de software al ciclo de vida de desarrollo del vehiculo de una forma integral. Se identifican siete actividades software clave (Planificación del proyecto, integridad, especificación de requisitos, diseño, programación, pruebas, soporte del producto). En lo que se refiere a la especificación de requisitos, indica que la especificación de requisitos software debe de ser derivada y debe de ser consistente con la especificación del vehiculo. Se propone dividir los requisitos en tres categorías, requisitos funcionales, requisitos de seguridad (safety), y requisitos no funcionales. Los requisitos de safety a su vez son subdivididos en requisitos funcionales de safety y requisitos de integridad de safety utilizando la siguiente jerarquía: Requisitos funcionales Requisitos de Safety Req. Funcionales de safety Req. De Integridad de safety Control de error Evitar faltas/errores Requisitos no funcionales Los requisitos de Safety deben identificar las técnicas de diseño necesarias para conseguir el control de errores y prevenir fallos. Siendo muy importante establecer limites en el sistema. Se puede ver que estas directrices adoptadas por la industria del automóvil tiene en cuenta los requisitos de seguridad como requisitos distintos de los funcionales, e incluso define distintas categorías de requisitos de seguridad para tratarlos de distintas formas, además incluye un apartado para los RNF, distintos de los requisitos de seguridad, lo que refuerza aun mas la idea de la importancia de los requisitos de safety en el software. 6.2. Aeroespacial El software es cada vez mas usado en todas las vertientes de la industria aeroespacial, ya sea comercial, aeroespacial, militar,… Las medidas de seguridad aquí suelen estar reguladas por autoridades publicas, y normalmente los aviones/naves son sistemas críticos en lo referente a safety/seguridad. 6.2.1. RTCA/DO-178B Este estándar es el principal a la hora de obtener la certificación para software usado en aviación comercial en la Unión Europea y en los Estados Unidos, lo que implica que sea ampliamente utilizado. El estándar esta construido sobre dos conceptos principales, la categorización de condiciones de fallo (catastrófico, peligroso/muy alto, alto, bajo, y sin efecto), y la definición de niveles de software o la Oscar Diez 7/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática contribución del software a condiciones de potenciales fallos, y el nivel es asignado por componente software o función. El estándar se basa en seis procesos software, en lugar de utilizar un ciclo de vida de desarrollo como el resto. Estos procesos son la planificación del ciclo de vida de software, desarrollo, verificación, gestión de la configuración del software, comprobación de la calidad del software, y certificación. Como se puede ver no existe una fase especifica para recoger requisitos, y lo introduce como un subproceso del proceso de desarrollo del software. [13] Dentro de este subproceso de requisitos, los requisitos de fiabilidad y safety se obtienen de la especificación de requisitos del sistema, además de incluir otros del análisis de riesgos del sistema. Una vez recogidos los requisitos estos son categorizados como requisitos funcionales, rendimiento, safety, fiabilidad o seguridad (security). Los requisitos son analizados para verificar que son correctos, completos, no ambiguos, consistentes, verificables y que no contienen condiciones no definidas. Al final de este subproceso se obtendrá una especificación de requisitos que servirá de entrada para el siguiente subproceso, el de arquitectura, en el cual diferentes arquitecturas son examinadas para determinar si satisfacen los requisitos, en especial los de safety. En este estándar se hace una distinción de los requisitos funcionales y los no funcionales, identificando dentro de los RNF los de safety como unos de los más importantes. Sin embargo el proceso de recogida de requisitos esta considerado como un subproceso del diseño y no como un proceso en si mismo, no dándole la importancia que le dan el resto de los estándares a esta fase. Tampoco hace referencia a técnicas/herramientas para la incorporación de estos requisitos no funciones o de safety al sistema.[7] 6.2.2. ECSS. Agencia Espacial Europea La administración para la cooperación Europea para la estandarización del espacio (ECSS) presento en 1996 unos estándares para los sistemas y productos utilizados en el espacio. Estos estándares son el resultado de la cooperación entre la agencia espacial europea, las agencias espaciales nacionales y las asociaciones industriales europeas para desarrollar unos estándares comunes. Estos estándares están organizados en tres niveles, cada uno de los niveles con más detalle y más específico que el anterior. El nivel 1 (ECSS-Q-00A) es el documento de control, el nivel 2 (ECSS-Q-20A, ECSS-Q30A, ECSS-Q-40A, ECSS-Q-80A) implementa los objetivos del nivel 1 dentro de las disciplinas de ingeniería, como safety. Y el nivel 3 (ECSS-Q-80-2, ECSS-Q-80-3, ECSS-Q-80-4) incluye los aspectos de implementación del nivel 2 y son definidos según sean necesarios. Estos estándares definen el marco de referencia de gestión de calidad que debe ser usado en un proyecto, tanto por proveedores como por los que adquieren el software, como los procesos y las actividades del ciclo de vida asociadas deben ser definidas, y las características de calidad requeridas por el producto. El estándar define seis fases del ciclo de vida, 0: Análisis de la misión e identificación de necesidades, A: para análisis de viabilidad, B: para la definición preliminar, C/D: definición detallada y producción, E: operacional, F: Retirada del producto. El ciclo de vida de software en un subconjunto del ciclo de vida global y se integra con el. Una o mas revisiones de safety deben de realizarse en cada fase, por ejemplo, para la fase A se debe realizar una revisión preliminar de requisitos, en la B una revisión de requisitos del sistema y una revisión preliminar de diseño, y así para cada una de las fases. Durante la fase de análisis de requisitos, estos son clasificados como funcionales, de rendimiento, de safety, de seguridad (Security), y de fiabilidad. Y dentro de los requisitos de safety, se dividen en críticos y relacionados con safety. Se acuerda un método entre los proveedores y los que adquieren el software para hacer y controlar los cambios a los requisitos. También se definen requisitos de fiabilidad para las funciones de sistema implementadas en software así como para la interacción entre software y hardware. Estos requisitos se utilizan para optimizar el diseño del Oscar Diez 8/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática sistema. Se realiza un análisis de criticalidad que incluye identificar funciones y componentes que son críticos para conseguir los objetivos. Al final de esta fase se obtiene una especificación de requisitos software junto a la matriz de trazabilidad de requisitos, que es utilizada para la siguiente fase, la de diseño, en la cual se establecen métodos y herramientas para facilitar y medir el progreso de cumplimiento de los objetivos de safety y fiabilidad. Este estándar también hace hincapié en la reutilización de software y como esta afecta al safety y a la fiabilidad del sistema, en parte debido al problema de la reutilización de software en el fallo del Ariane 5. La definición del estándar es muy completa y al estar dividido en tres niveles permite llegar a mayor nivel en determinados puntos del estándar, como el uso de ciertas técnicas y herramientas. También dedica una fase a la recogida de requisitos, y pese a que no agrupa a los RNF en un grupo, si distingue estos de los funcionales y en concreto los de safety los trata en mas detalle, estableciendo dos categorías, los críticos y relacionados con safety. 6.2.3. NASA-STD-8719.13A y NASA GB-1740.13-96 Los dos estándares se complementan entre si. El STD-8719.13A establece el que y el por que del software safety en lo referente a la planificación, desarrollo, y análisis [9]. El GB-1740.13-96 se centra en el como. Los estándares presentan una metodología de seguridad (safety) en los programas de la NASA y describe las actividades necesarias para asegurar que la seguridad (safety) es incorporada en el software adquirido o desarrollado por la NASA. Para conseguir esto se establecen un ciclo de vida en 7 fases (concepción e iniciación, requisitos, arquitectura, diseño detallado, implementación, integración y pruebas, y operaciones y mantenimiento) para integrar las actividades de safety en el desarrollo, y no hace referencia a ninguna metodología de desarrollo. También identifica tres actividades como tareas independientes durante las fases, entre las que se encuentra la trazabilidad de los requisitos de safety. [7] En la fase de requisitos se explica que los requisitos de safety del software pueden venir de dos fuentes: los requisitos que provienen de la especificación de seguridad (Safety) del sistema, y los requisitos que son derivados del análisis de riesgos, para luego obtener recomendaciones de safety para las próximas fases. Los requisitos son categorizados durante el análisis de requisitos como críticos respecto al safety, relacionados con safety, y no relacionados con safety. Y lo que se pretende es identificar los que son críticos y los relacionados con safety, y los relaciona con los posibles peligros que pueden conllevar, clasificando estos peligros en función de las consecuencias y su probabilidad de ocurrencia. Al final lo que se busca es dar mas importancia a los requisitos que sean mas importantes desde el punto de vista del peligro que puedan ocasionar si no se tienen en cuenta. [9] Este estándar enlaza la recogida de requisitos con el control de riesgos, incluyendo en detalle como deben evaluarse los requisitos. Pero aunque se centra en los requisitos de safety, no hace una diferenciación clara a la hora de tratar el resto de RNF. 6.3. Defensa Debido al uso de software en cada vez mas sistemas de defensa, y al desarrollo de nuevas armas como misiles o armas nucleares, y a los riesgos que conlleva el uso de estos sistemas, se ha realizado desde el principio un gran enfoque en seguridad (safety) para estos sistemas, siendo uno de los primeros sectores industriales en hacer este enfoque y continúan siendo pioneros. Se van a tratar dos estándares, uno de los EEUU y el otro del Reino Unido con bastantes similitudes. 6.3.1. MIL-STD-882D: US DoDefense Este estándar (MIL-STD-882D Mishap Risk Management) fue creado por el departamento de defensa Norteamericano en 1977 y se produjo una nueva versión en 1984, siendo la primera en utilizar el termino Oscar Diez 9/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática “Software Safety”. Es importante destacar que este estándar como su propio nombre indica se centra en una gestión y control de riesgos para productos militares, y se hace referencia a otros estándares para requisitos software generales. El primer paso es el desarrollo de un plan de Seguridad (safety) en el sistema, en el que se describen las actividades y tareas para implementar el programa de safety. Dentro de este plan se deben recoger los requisitos de verificación para asegurar el safety en todo el proceso, así como los requisitos de certificación para el software y los dispositivos de safety. A partir de aquí el estándar indica que se debe realizar un análisis de riesgos para descubrir los peligros potenciales. Se realiza un control de riesgos según se van identificando los posibles peligros para eliminarlos o mitigarlos hasta que todos los peligros han sido eliminados o controlados a un nivel aceptable. Dentro de este control de riesgos se realiza una especificación de requisitos de fiabilidad y seguridad (safety) junto con su criterio de evaluación. Cada uno de los requisitos de seguridad (safety) del software son documentados en la especificación del sistema o subsistema apropiado, junto con los criterios objetivos para poder verificar que han sido cumplidos. A partir de aquí se utilizaran diversas técnicas para eliminar o controlar esos posibles peligros, detallando incluso ejemplos de características de seguridad para sistemas para controlar esos riesgos. Planes y pruebas de seguridad deben ser realizados a partir de los requisitos de seguridad (safety) para demostrar que los requisitos son completos, que han sido cumplidos, y que el riesgo residual ha sido controlado a un nivel aceptable, y por lo tanto el sistema puede operar de forma segura en el entorno deseado. Como se puede ver el estándar se basa en un análisis de riesgos para obtener los requisitos de safety, con las ventajas y desventajas que esto conlleva. El estándar da unas pautas a nivel de herramientas así como a nivel incluso de programación en ciertos escenarios. No se ve como en el resto una clara distinción entre RFN y RNF, y se refiere solo a los requisitos de safety, dejando el resto para ser tratados con otros estándares. 6.3.2. DEF STAN 00-55: UK Ministry of Defence El DEF STAN 00-55 (Requirements for safety related software) forma parte de una serie de estándares creados por el ministerio de defensa del Reino Unido. El estándar esta basado en el 00-56, que es una guía para la gestión de la seguridad (safety) en los sistemas de defensa. El estándar recoge las mejores prácticas para el desarrollo y análisis de safety en sistemas software de forma que estas técnicas puedan ser aplicadas a sistemas de defensa. El estándar se basa en un ciclo de vida formado por seis procesos: planificación de programa del sistema de seguridad (Safety), definición de requisitos de seguridad (safety), realización de un análisis de peligros, asignación de objetivos de safety/ requisitos a componentes del sistema, asegurar que el sistema cumple los objetivos de seguridad, y verificar que el resultado es adecuado. Dentro de la segunda fase, se analizan y especifican los requisitos funcionales, de rendimiento, de safety, de fiabilidad, y seguridad y las restricciones que se derivan de los requisitos del sistema asignados al software. Para ello los requisitos deben ser descompuestos con suficiente detalle. Estos requisitos deben ser especificados por cada peligro en términos de probabilidad de ocurrencia y por cada categoría de importancia en caso de accidente. Los requisitos deben ser recogidos en un notación formal, y estos requisitos expresados con notación formal deben ser probamos mediante un versión ejecutable de la especificación formal (una especie de prototipo). Una vez probados, se deben realizar una revisión formal de safety y fiabilidad para asegurar que cumplen el código de práctica de diseño, que cumplen los requisitos de fiabilidad y safety y que son correctos, consistentes y no son ambiguos. Además se recomienda realizar un estudio para descubrir posibles peligros asociados con el uso del sistema en el entorno intencionado. Este estándar reúne los conceptos de ciclo de vida de los anteriores estándares y el uso de gestión de riesgos del estándar de defensa norteamericano. Existe una fase propia para la recogida de requisitos y los requisitos de safety son tratados de forma diferente que los funcionales. Oscar Diez 10/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática 6.4. Nuclear Al igual que en sistemas de defensa, existe una larga historia en el área de seguridad (safety) en los sistemas de energía nuclear, y mas desde que los sistemas de control de plantas nucleares pasaron a ser creados en software. 6.4.1. IEC 60880: Software para ordenadores en plantas nucleares Creado por el subcomité de la comisión electrotécnica internacional, fue uno de los primeros estándares en tratar la seguridad (safety) del software en la industria nuclear. El estándar cubre todo el ciclo de vida software, tanto durante el desarrollo como durante la parte operacional del software. El ciclo de vida se compone de siete fases con unas tareas y actividades asignadas a cada fase. Las fases son Análisis y especificación de requisitos del software, desarrollo, verificación, integración de hardware y software, validación del sistema, operación y mantenimiento y modificación. Al final de cada fase se realiza una revisión crítica. [7] El estándar hace hincapié en la fase de análisis de requisitos. Los requisitos software para funciones asignadas a sistemas de seguridad (safety) son recogidas de la especificación de requisitos del sistema. Para ello se recomienda un lenguaje de especificación formal para asegurar la claridad de los requisitos. Los requisitos deben ser marcados como obligatorios u opcionales, para ayudar a la priorizacion mas tarde, y deben incluir también lo que el software no debe hacer. [17] Como en la mayoría de estándares se hace una categorización de los requisitos, dividiéndolos en requisitos funcionales, requisitos de rendimiento del sistema, requisitos de fiabilidad, requisitos de gestión de errores, requisitos de monitorización continua, requisitos de interfaz ordenador-maquina, requisitos de interfaz de sistema, restricciones operacionales del entorno, y requisitos de datos. Toda esta información debe ser plasmada en la especificación de requisitos software. Para cada una de estas categorías, el estándar establece que se deben recoger los detalles de ese tipo de requisitos. Por ejemplo, para los requisitos funcionales que describen las funciones de seguridad (safety) del sistema asignadas al software se debe generar una lista de todas las funciones que realiza el software, y por cada función se debe ser descrita en términos de su objetivo, las entradas y salidas requeridas, interacción con otras funciones, y la relación con la fiabilidad del sistema. Lo que indica que el estándar recoge en mucho detalle cada una de los tipos de requisitos. 7. Estándares A continuación se describen algunos de los estándares existentes, centrándose en la parte de requisitos no funcionales y safety. 7.1. IEC61508-3 International Electrotechnical Comisión Dentro de esta estándar, es la parte 3 (dentro de las 7 que componen el estándar) la que incluye lo referente a requisitos del software. La primera versión fue publicada a principios de 1998 y recoge representantes de industria y 10 países [7]. El estándar se destina a cualquier software relacionado con la seguridad (safety) que incluya software que es parte de un sistema de seguridad (safety), software que es usado para desarrollar un sistema software relacionado con la seguridad (Safety) o las herramientas y sistemas que interaccionan con lo anterior. [11] Al igual que la mayoría de estándares define un ciclo de vida de seguridad (safety) en software que incluye ocho fases, siendo la primera la especificación de requisitos de software. El objetivo de esta primera fase es la especificación de los requisitos funcionales de seguridad (safety) del software, así como los requisitos de integridad del software. Normalmente, estos requisitos se derivan de la especificación de requisitos del software y reflejan el resultado de las actividades de planes de seguridad (safety) del sistema. Se indica en el estándar que estos requisitos deben ser escritos con un nivel razonable de detalle. También recomienda el uso de diagramas de bloque para aislar los errores de especificación, los errores aleatorios y sistemáticos, y las causas de fallo más comunes. [11] Oscar Diez 11/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática Una vez se han definido los requisitos con un detalle suficiente y se han realizado los diagramas, se procede a la siguiente fase, que es el plan de validación de la seguridad (safety) del software, para más tarde pasar al diseño y al desarrollo. Aunque se habla de requisitos de safety, y se tratan de forma distinta a los requisitos funcionales, no se hace un tratamiento parecido para el resto de los RNF. Aunque si se indican algunas herramientas para el análisis mas en detalle de los requisitos. Otra de las ventajas de este estándar es que es muy abierto y permite ser usado por diferentes sectores. 7.2. SEMSPLC, IEE Guía Técnica 8 Fue publicado en 1996 por el Instituto de Ingenieros Eléctricos del Reino Unido. Su objetivo es servir como guía en el desarrollo de software de aplicación para controladores lógicos programables (PLC) usados en sistemas relacionados con la seguridad (Safety). Estas guías están organizadas sobre las fases del ciclo de vida del desarrollo, y se requiere realizar unas actividades para cada fase basadas en el SIL. Se describen tres procesos, que son la gestión del safety, la gestión de la verificación del software, y la gestión de la calidad. Estos se describen en términos de objetivos, entradas, salidas, procedimientos, verificación y autorización. [10] El ciclo de vida de desarrollo complementa estos procesos de gestión. Este consta de cinco fases, requisitos, diseño, diseño detallado, codificación y pruebas. Para cada fase se describen sus objetivos, las entradas y salidas, los procedimientos, actividades extras de seguridad (safety) para SIL 3 y 4, descripciones de las salidas de la fase, verificación y requisitos de autorización. [7] En la fase de requisitos se busca que estos sean precisos, consistentes, correctos, no ambiguos y verificables. Los requisitos deben tener en cuenta las restricciones conocidas del sistema, y deben ser comprensibles por clientes y desarrolladores. No hay que olvidar que en este estándar estamos hablando de PLC, y que estos normalmente operan en tiempo real, por lo que el tiempo aquí es crítico, y se examinan todos los posibles escenarios relacionados con el tiempo. [7] Como en otros estándares de los vistos anteriormente, los requisitos software de PLC son derivados de la especificación y el análisis de riesgos del sistema. Se establecen unas categorías para los requisitos. Requisitos de Seguridad (Safety) Req. Funcionales Req. De integridad Requisitos non-safety funcionales Requisitos No funcionales Req. Seguridad Req. Mantenimiento Req. Fiabilidad Req. Rendimiento Req. Disponibilidad La primera categoría de requisitos se documenta en la especificación de requisitos de seguridad (safety), que se produce durante el proceso de gestión del safety. Las categorías dos y tres son documentadas en la especificación de requisitos software, que es una salida de la fase de requisitos. Durante esta fase se debe crear un diccionario de datos preliminar, así como los interfaces del software con el software, hardware y los operadores. A cada uno de los requisitos se le debe asignar un SIL. [10] Durante esta fase se debe realizar un análisis para determinar como los peligros del sistema son afectados o pueden serlo por el software. Este análisis de riesgos puede ser realizado usando los métodos FTA o FMECA. Así mismo se debe realizar una evaluación del software para verificar que no se alcanzan estados no deseados. Con el fin de asegurar que los requisitos de seguridad (safety) son precisos, consistentes, completos, correctos, no ambiguos y verificables, para los requisitos asignados con SIL 3 o 4 se recomienda utilizar un lengua formal, prototipos, maquinas de estado finitas, y modelado de redes Petri. Oscar Diez 12/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática Tras todo esto obtenemos como salidas de esta fase la especificación de requisitos software, el diccionario de datos, la especificación de pruebas para requisitos software, la especificación de las pruebas de aceptación, la verificación de los requisitos del software y el informe de seguridad (safety). El estándar da mas detalles para cada una de estas salidas. Antes de pasar a la siguiente fase, la de diseño, se deben resolver todos los problemas pendientes en esta fase. Este estándar incluye mas información practica que el resto de los estándares, indicando posibles técnicas o herramientas a usar, aunque no se centran en un lenguaje de programación o técnica especifica. Se ven puntos comunes a otros estándares como el uso del ciclo de vida de desarrollo y la categorización de los requisitos, aunque esta vez no incluye los requisitos de safety como requisitos no funcionales, y les dedica una de las categorías de igual forma que se hace en el estándar MISRA. 8. Conclusión Como se ha presentado, la mayoría de los estándares presentan muchas cosas en común en lo que se refiere a la recogida de requisitos, y en concreto a los requisitos de seguridad (safety), como son el considerar al software como parte del sistema y como un subsistema aislado. También la mayoría, aunque no todos, optan por el uso de un ciclo de vida de safety con una fase claramente definida para la recogida de requisitos. En lo que ya no hay tanto consenso según se puede ver en la tabla del anexo B, es en la división de los requisitos funcionales y no funcionales y en su tratamiento. Aunque la mayoría indica que los requisitos safety no son iguales que los requisitos funcionales, no establecen un marco común como el de Cheng presentado al principio del presente trabajo para el tratamiento de estos. Otro punto común a varios de los estándares es la recogida de los requisitos no funcionales a partir de la especificación de requisitos, y hay que tener en cuenta que no todas los requisitos no funcionales son recogidas en la especificación de requisitos. Tampoco se hace referencia, en la mayoría de estándares a técnicas o herramientas para la recogida de RNF y sobre todo técnicas para explicar como pasar estos requisitos no funcionales al diseño del sistema. Una posible excepción a lo anterior es el análisis de riesgos y su paso a diseño que se realizan en algunos de los estándares presentados. Una de las posibles mejoras en los estándares mostrados seria la inclusión o referencia a estas técnicas para la recogida de RNF y como transformar estos requisitos no funcionales en atributos y funciones del sistema. Oscar Diez 13/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática 9. Anexo A. Estandares de Software Safety A continuación se enumeran en la tabla los principales estándares de safety en software en la actualidad, de los cuales se han utilizado algunos para el presente trabajo. Estandar IEEE 1059 IEEE 1228 BS EN 50128:2001 ANSI/UL 1998 IEC 60880 IEC 60950-1 BSI IEC 61508-1 Descripcion Guide for Software Verification and Validation Plans Software Safety Plans Railway applications. Communications, signaling and processing systems. Software for railway control and protection systems Software in Programmable Components, Second Edition Software for Computers in the Safety Systems of Nuclear Power Stations Safety of Information Technology Equipment - Functional Safety of Electrical/Electronic/Programmable Electronic Safety-Related Systems IEC 61508-2 Functional Safety of Electrical/Electronic/Programmable Electronic Safety-related Systems - Part 2: Requirements for Electrical/Electronic/Programmable Electronic Safety-related Systems IEC 61508-3 Functional Safety of Eelectrical/Eelectronic/Programmable Eelectronic Safety-Related Systems - Part 3: Software Requirements IEC 61508-5 Functional Safety of Eelectrical/Eelectronic/Programmable Eelectronic Safety-Related Systems - Part 5: Examples of Methods for the Determination of Safety Integrity Levels RTCA DO- Software Considerations in Airborne Systems and Equipment Certification 178B/ED-12B IEE SEMSPLC 8 Guidelines: Safety-Related Application Software for Programmable Logic Controllers AECL CE-1001- Standard for Software Engineering of Safety Critical Software STD REV.2 ANS ANSI/IEEE Application Criteria for Programmable Digital Computer Systems in Safety Systems of 7.4.3.2 Nuclear Power Generating Stations ANSI/AAMI Medical device software - Software life cycle processes SW68 DEF 00-56 Part Safety Management Requirements for Defence Systems Part 1 1/2 DEF 00-56 Part Safety Management Requirements for Defence Systems Containing Programmable 2/2 Electronics Part 2: General Application Guidance SAE AS9006 Aerospace Software Supplement for AS9100A DoD MIL-STD- System Safety Program Requirements 882D EIA SEB6-A System Safety Engineering in Software Development Oscar Diez 14/16 2006 Safety y Requisitos no funcionales Trabajo de Investigación Facultad de Informática 10. Anexo B. Tabla comparativa de Estandares Estandar Distingue RF / RNF Distingue RNF/Req Safety EN 50128 MISRA (Automóviles) RTCA/DO-178B (aviación) ECSS (ESA) DEF STAN 00 55 IEC61508-3 SI SI Oscar Diez NO SI Indica Tecnicas/herramientas para RNF/Req Safety NO NO SI SI Interrelaciona la Gestion de Riesgos con Recogida de Requisitos NO NO NO SI NO NO NO NO NO NO SI SI SI NO NO SI SI SI SI NO SI NO 15/16 Fase propia de Recogida de Requisitos 2006 Safety - Requisitos no funcionales Facultad de Informática 11. Bibliografía [1] Kotonya, G., Sommerville, I., "Requirements Engineering Processes and Techniques", Jonh Wiley & Sons, 1998. [2] Chung, L., Nixon, B., Yu, E. and Mylopoulos,J. “Non-Functional Requirements in Software Engineering” Kluwer Academic Publishers, 2000. [3] Luiz Marcio Cysneiros, Julio César Sampaio do Prado Leite . “Using UML to Reflect Non-Functional Requirements”, 2001 [4] Dorfman, M. and Thayer, R., "Standards, Guidelines and Examples on System and Software Requirements Engineering", IEEE Computer Society Press, 1990. [5] Modugno, F., Leveson, N.G., Reese, J.D., Partridge, K.,and Sandys, S.D., “Integrated Safety Analysis of Requirements Specifications,” Requirements Engineering 2(2), 1997. [6] Luiz Marcio Cysneiros, Julio César Sampaio do Prado Leite, “Using UML to Reflect Non-Functional Requirements”, 2001 [7] Debra S. Herrmann, “Software Safety and Reliability”, IEEE, 1999 [8] IEC, “Functional Safety and IEC 61508”, Sept 2005 [9] NASA-STD-8719.13A: Software safety, NASA Technical standard, 1997. [10] SEMSPLC Guidelines, Safety-Related Application Software for Programmable Logic Controllers, IEE Technical Guidelines 8, 1996 [11] IEC 60880:1986-09, “Software for computers in safety systems of Nuclear Power Stations” [12] Sam Supakkul, Lawrence Chung, “Integrating FRs and NFRs: A Use Case and Goal Driven Approach”, 2005 [13] Kelly J. Hayhurst, "The Guidance and Control Software Project: A Software Engineering Case Study", NASA Langley Research Center, 1997 [14] DOE - Department of Energy EEUU, DOE Oversight Manual, “Safety Software Quality Assurance Draft”, 2006 [15] Nancy G. Leveson, "Safeware: System Safety and Computers", Addison Wesley, 1995 [16] B. Littlewood, Bryans, P. Ryan and L. Strigini, "E-voting: Dependability Requirements and Design for Dependability", 2006 [17] US Regulatory Commission, “Review Guidelines for Software Languages for Use in Nuclear Power Plant Safety Systems”, Final Report, 1997 Oscar Diez 16 08/09/2006