INGENIERIA DE REQUERIMIENTOS AVANZADA (requisitos) ALINEADO CON LAS MEJORES PRÁCTICAS Capítulo # 1 INGENIERIA DE REQUERIMIENTOS AVANZADA 1. INTRODUCCION ________________________________________________________________ 3 OBJETIVO GENERAL ________________________________________________________________ 5 OBJETIVOS ESPECÍFICOS. _________________________________________________________ 6 2. INGENIERÍA DE REQUISITOS ___________________________________________________ 7 3. CICLO DE VIDA DE LA ADMINISTRACIÓN DE UN PROYECTO _________________ 8 4. DEFINICIÓN DEL PROYECTO ____________________________________________________ 8 5. PLANEAMIENTO INICIAL – DESARROLLO DE REQUISITOS ___________________ 9 6. ESPECIFICACIONES ____________________________________________________________ 12 7. REQUERIMIENTOS FUNCIONALES Y NO FUNCIONALES. _____________________ 14 7.1 REQUERIMIENTOS FUNCIONALES __________________________________________________________ 14 7.2 REQUERIMIENTOS NO FUNCIONALES ________________________________________________________ 14 8. METODOLOGÍAS DE REQUERIMIENTOS _______________________________________ 15 8.1 METODOLOGÍA ESTRUCTURADA ___________________________________________________________ 15 8.2 METODOLOGÍA ORIENTADA A OBJETOS ______________________________________________________ 16 9. ESPECIFICACIÓN DE REQUERIMIENTOS ISO/IEEE 830 ______________________ 18 10. OBJETIVOS DE LA ERS. _______________________________________________________ 18 11. CARACTERÍSTICAS DE UN ERS _______________________________________________ 19 11.1 COMPROBACIÓN DE VALIDEZ ____________________________________________________________ 20 11.2 CONSISTENCIA ______________________________________________________________________ 20 11.4. COMPROBACIÓN DE TOTALIDAD _______________________________________________________ 20 11.5 COMPLETITUD ______________________________________________________________________ 21 11.6 VERIFICABILIDAD ____________________________________________________________________ 21 11.7 CLASIFICACIÓN _____________________________________________________________________ 21 11.8 MODIFICABILIDAD ___________________________________________________________________ 21 11.9 EXPLORABILIDAD (TRACEABILITY) _________________________________________________________ 22 11.10 UTILIZABLE DURANTE LAS TAREAS DE MANTENIMIENTO Y USO _____________________________________ 22 12. ESQUEMA DE LA ERS DEFINIDA EN EL IEEE 830-1998 _____________________ 23 I. INTRODUCCIÓN _______________________________________________________________________ 24 II. DESCRIPCIÓN DE LA INFORMACIÓN __________________________________________________________ 24 III DESCRIPCIÓN FUNCIONAL ________________________________________________________________ 24 IV DESCRIPCIÓN DEL COMPORTAMIENTO ________________________________________________________ 25 V SECCIÓN DE CRITERIOS DE VALIDACIÓN ________________________________________________________ 25 VI BIBLIOGRAFÍA. _______________________________________________________________________ 25 13. NATURALEZA DE LA INGENIERÍA DE REQUERIMIENTOS __________________ 26 13.1. MATEMÁTICAS ____________________________________________________________________ 26 13.2. CREACIÓN ________________________________________________________________________ 26 13.3. GESTIÓN DE PROYECTO _______________________________________________________________ 26 14. 1 PARTICIPANTES Y PAPELES _________________________________________________ 27 INGENIERIA DE REQUERIMIENTOS AVANZADA 14.1. CLIENTE _________________________________________________________________________ 27 14.2. DESARROLLADORES __________________________________________________________________ 27 14.3. GESTORES ________________________________________________________________________ 27 14.4. USUARIOS FINALES __________________________________________________________________ 28 14.5. CÓDIGO ÉTICO DE UN INGENIERO DE SOFTWARE _______________________________________________ 28 15. CONCLUSIONES _______________________________________________________________ 31 16. BIBLIOGRAFÍA _______________________________________________________________________ 32 2 INGENIERIA DE REQUERIMIENTOS AVANZADA 1. INTRODUCCION Dentro del campo de la Ingeniería del software se adscriben un sinnúmero de disciplinas, técnicas y metodologías que referencian a todas las actividades relacionadas con la fabricación del software y su gestión, entre las principales se pueden citar ingeniería de requerimientos avanzada, ingeniería de calidad (comúnmente control de calidad), la ingeniería de métodos, ingeniería de usabilidad, arquitectura de bases de datos, todas íntimamente relacionadas que se traslapan durante el ciclo de vida de un proyecto de software de tal forma que el software se comporte confiable y eficazmente, para que sea accesible en su desarrollo, control, mantenimiento y seguimiento y que cumpla con todos los componentes y necesidades que los usuarios o clientes han definido. Este documento aborda la ingeniería de requerimientos avanzada desde sus inicios, su evolución y modernización paralelamente auspiciada y soportada por las Normas Internacionales ISO (ISO.ORG) las cuales dan un soporte de autenticidad a través de la mejora de procesos, entre ellas se citan: ISO/IEC 9001:2000: Adopta un enfoque basado en procesos para el desarrolla, implementación y mejora la eficacia a través de un sistema de gestión de la calidad. (9001:2000, 2000) (Ginebra). ISO/IEC 9001:2008: Modificación de la ISO/IEC 9001:2000 (ISO.ORG) ISO/IEC 9000-3:2004: Se plantea una guía metodología a la aplicación de ISO 9001 para el desarrollo, la aplicación y mantenimiento de software. ISO/IEC 12207:1995: Comprende los procesos del ciclo de vida del desarrollo del software. 3 INGENIERIA DE REQUERIMIENTOS AVANZADA ISO/IEC 12207:2008: Desarrolla un marco común para los procesos de ciclo de vida de software, empleando terminologías claramente definidas. Contiene los procesos, actividades y tareas que se aplican durante la adquisición de un producto de software o servicios y el desarrollo, operación, mantenimiento. ISO/IEC 9126:2001: Establece las características para evaluar la calidad del producto software y establece los lineamientos de la calidad. ISO/IEC 15939:2007: Desarrolla un proceso de medición través de un modelo que contiene las actividades, es adaptable y flexible a los requerimientos de los usuarios. ISO/IEC 15504:2004: Desarrolla y proporciona un marco guía para la evaluación y mejorar la capacidad y madurez de los procesos. Se aliena y aplica junto ISO/OEC 12207. ISO/IEC 14598:1999: Establece pautas que soportan al proceso de evaluación del software. ISO/IEC 25000:2005: Implementa una guía para el uso de las nuevas series de estándares internacionales. El proceso de análisis de requerimientos es la etapa de la ingeniería del software que desarrolla y conecta la asignación del software a en al ámbito del sistema y el diseño y su mantenimiento. (Galeon.com). Los requisitos para un sistema son descripciones de lo que el sistema debe hacer: el servicio que ofrece y las restricciones en su operación. Tales requerimientos reflejan las necesidades de los clientes por un sistema que atienda cierto propósito. Al proceso de descubrir, analizar, documentar y verificar estos requerimientos. 4 servicios y restricciones se le llama ingeniería de INGENIERIA DE REQUERIMIENTOS AVANZADA El cuadro N° 1 muestra el esquema general de los procesos de la ingeniería de requerimientos avanzada (IRA). Objetivo General Desarrollar un guía metodológica bajo las normas generalmente aceptadas que permitan formular procesos cualitativos y cuantitativos sostenibles para el desarrollo y calidad del software, y que mediante la orientación correcta de estos procedimientos tal forma que el software se comporte confiable y eficazmente, para que sea accesible en su desarrollo, control, mantenimiento y seguimiento para que cumpla con todos los componentes y necesidades que los usuarios o clientes han definido. 5 INGENIERIA DE REQUERIMIENTOS AVANZADA Objetivos Específicos. Definir una mejora continua y sostenible en el diseño de aplicaciones de manera tal que se ajusten a los requerimientos de las organizaciones. Especificar a una mayor calidad durante el desarrollar aplicaciones yanto simples como complejas. Definir los costos, el tiempo y el esfuerzo en el desarrollo de proyectos del software. Alinear las normas específicas mundialmente reconocidas como ISO, ITIL, CMMI. Organizar un equipo de trabajo multidisciplinaria bajo los estándares internacionales, en el desarrollo, mantenimiento y seguimiento en aplicaciones de software. Identificar mediante pruebas eficientes las posibles mejoras para una mejor adaptabilidad y aplicaciones de software. 6 continuidad en el funcionamiento de las INGENIERIA DE REQUERIMIENTOS AVANZADA 2. Ingeniería de Requisitos Durante el curso de un proyecto, coexisten dos ciclos de vida que son interdependientes. El ciclo de vida del proyecto, por un lado, podría describir las fases, entregables y actividades que deben ser completadas para producir un producto, servicio o resultado y cada área de aplicación tiene su ciclo de vida específico. Por otro lado, el ciclo de vida de desarrollo del proyecto o ciclo de vida de desarrollo del software que define las etapas que unen su inicio y su final. Para lograr visualizar la logística a utilizar en cada forma de la ingeniería del software y ubicar la etapa de la ingeniería del requerimientos avanzada primero se debe conocer las diferentes normas y metodologías desarrolladas para el ciclo de vida de desarrollo del software, que comprenden 5 elementos, o partes, (llamadas en algunos casos ciclos, etapas, fases), en cada una de estos ciclos se utiliza un tipo variante de ingeniería del software. 7 INGENIERIA DE REQUERIMIENTOS AVANZADA 3. Ciclo de Vida de la Administración de un Proyecto Uno de los retos más importantes para el Director del Proyecto consiste en alinear el ciclo de vida específico del proyecto con el ciclo de vida de su administración ya que estos dos ciclos se traslaparán. Tanto las actividades necesarias para crear el producto del proyecto como las requeridas para su adecuada administración pueden ser asociadas a través de los entregables o salidas de la administración del proyecto. 4. Definición del Proyecto En el caso de negocio se plasma la esencia del proyecto, la necesidad de la que este surge, el problema que debe resolverse, la oportunidad que debe ser aprovechada por la organización. En otras palabras, define algunos de los elementos principales del proyecto y proporciona la información necesaria para apoyar la decisión de iniciarlo y de llevarlo a cabo a través de todas las etapas de su ciclo de vida. El planeamiento inicial del proyecto abarca la definición del alcance inicial, el desarrollo de un cronograma de alto nivel, la identificación de estándares de calidad, la preparación de un presupuesto preliminar, la identificación inicial de riesgos y el desarrollo, a nivel preliminar, de un plan de comunicaciones. Ello supone también la ingeniería de requerimientos donde el punto inicial son los llamados levantamiento de requisitos, los cuales se abarcan en este documento como objetivo principal. 8 INGENIERIA DE REQUERIMIENTOS AVANZADA 5. Planeamiento Inicial – Desarrollo de Requisitos El análisis de requisitos es un proceso iterativo que se presenta como una espiral de actividades que incluye un estudio de factibilidad, adquisición y análisis de requerimientos, especificación de requerimientos (descubrimiento), validación de requerimientos (refinamiento), administración de requerimientos (modelización). Comienza con un refinamiento detallado del ambiente del programa que ha sido inicialmente establecido durante a ingeniería del sistema y refinado durante la planificación del proyecto de software. Dentro del ciclo de vida de un proyecto de software los requisitos son las partes principales del producto o la aplicación que se debe construir por lo que se deben identificar, desarrollar objetivamente y documentarlos. El análisis de requisitos es una condición o capacidad que ser alcanzada o procesada por un sistema o componente de un sistema, especificación u otros documentos formalmente impuesta. (Society) Dentro del detalle se debe comprender las condiciones que debe cumplir o al menos tener una aplicación o sistema en o parte de sus componentes para llegar a satisfacer las necesidades de una aplicación de software. El principal objetivo de los requerimientos es la participación de los analistas, y la participación del rol y responsabilidad de los actores iniciales o usuarios futuros duelos de la aplicación, debido principalmente al conocimiento de los procesos de la organización que se van a automatizar. La técnica de análisis más comúnmente usada para cubrir el vacío de comunicación entre el cliente y el técnico y conseguir que comience el proceso de comunicación, es dirigir una entrevista o revisión preliminar. La primera reunión entre las partes (el ingeniero de software y el cliente) es una proeza. A pesar de todo se sugiere que el analista inicie con unas preguntas independientes del contexto, el primer conjunto de preguntas se centran en el cliente: 9 INGENIERIA DE REQUERIMIENTOS AVANZADA Ejemplo: ¿Quién es el cliente dueño del proyecto? ¿Quién va a utilizar la solución? ¿Cómo se espera el retorno de la inversión de la solución? Las siguientes preguntas permiten al analistas conocer mejor el problema y al c cliente expresar su s ideas sobre la solución. ¿Cómo caracteriza una buena calidad que fuera generada por una solución satisfactoria? ¿Qué problemas resolverá esta solución? ¿Existe alguna forma de verificar y o describirme el ambiente donde se va a utilizar la solución? ¿Dentro del ambiente donde se desarrollara la solución existen limitaciones que afecten la forma en que va a trabajar la solución? La entrevista cierra con una serie de preguntas para logra cuantificar la efectividad de la reunión de la reunión, algunas de ellas son: ¿Es Usted la persona adecuada para responder a estas preguntas? ¿Son oficiales sus respuestas? ¿Las preguntas y cuestionamiento han sido relevantes mis preguntas para resolver su problema? ¿Considera que se deben incorporar más personal para proporcionar información adicional? El documento de requerimientos (llamado algunas veces especificación de requerimientos del software o SRS) es un comunicado oficial de lo que se deben implementar los desarrolladores del sistema. Incluye tanto los requerimientos del usuario para un sistema, como una especificación detallada de los requerimientos del sistema. En ocasiones, los requerimientos del sistema y del usuario se integran en una sola descripción, En otros casos, los requerimientos del usuario se definen en una introducción a la especificación de los requerimientos del sistema. 10 INGENIERIA DE REQUERIMIENTOS AVANZADA Clientes y desarrolladores de software, constantemente tienen inconsistencias en su forma de pensar, como “nosotros y ellos”. No solamente deben trabajar en equipo para identificar y refinar los requisitos, también cada grupo de trabajo define su propio modelo o pensamiento y deben buscar el método de comunicación más apropiado. Con estos problemas presentes se ha desarrollado un enfoque orientado al equipo para la recopilación de requisitos que se aplica durante las primeras etapas de análisis y requisitos llamado Técnica para Facilitar la Especificación de la Aplicación (TFEA), comprende a creación mixta de un equipo de clientes y personas encargadas de desarrollo que trabajan juntos para el desarrollo e identificar el problema. (trackli.googlecode.com) Se han propuesto muchos enfoques diferentes para el método TFEA. Cada uno utiliza un guion ligeramente diferente, peeos tipos aplican alguna variación de las siguientes directrices básicas: Se lleva a cabo una reunión en un lugar neutral, a la que llegan tanto técnicos como clientes. Se establecen reglas para la preparación y participación. Se sugiere una agenda que sea lo suficientemente formal para que cubra todos los puntos importantes, pero lo suficientemente informal para estimular el flujo libre de ideas. Se acuerda la elección de un facilitador para controlar la reunión. (trackli.googlecode.com) Se utiliza una fórmula para la comunicación efectiva El objetivo es identificar el problema, proponer elementos de una solución, avaluar los diferentes enfoques y especifica car un conjunto preliminar de requisitos de la solución en un ambiente adecuada para alcanzar el objetivo. (trackli.googlecode.com) 11 INGENIERIA DE REQUERIMIENTOS AVANZADA 6. Especificaciones Los ingenieros del software se han visto forzados a trabajar con especificaciones incompletas, inconsistentes o mal establecidas, los requisitos del software se pueden analizar de varias formas diferente y las especificaciones puede ser vista como un proceso de representación de forma que conduzca finalmente a una correcta implementación del software. Balzar y Goldman sugieren y propones ocho principios para establecer y desarrollar las buenas especificaciones, entre ellas están: (Chelob) Principio # 1: Hacer una distinción entre funcionalidad e implementación. Una especificación es una descripción de cómo se desea realizar, no de cómo se va a realizar (implementar) Principio # 2: Se requiere utilizar un lenguaje para la especificación de sistema que este orientado al proceso. (Chelob) (Galeon.com) Se debe especificar el sistema completo de las partes que interactúan, en vez de solo un componente. Principio # 3: únicamente y especificación debe comprender y determinar todo el sistema como un todo del cual un determinado software es parte del componente. Un sistema está compuesto de muchos componentes que entrelazan e interactúan entre sí. Únicamente dentro del modelo del sistema como un todo y de la interacción entre sus componentes las partes deben definir el comportamiento de un componente específico y único. (Galeon.com) Principio # 4: similarmente una especificación debe comprender todo el ambiente en el que el sistema debe trabajar en la producción. (Galeon.com) Similarmente, La especificación del entorno permite especificar la interfaz del sistema de la misma forma que los propios sistemas, en vez de introducir un formalismo. 12 INGENIERIA DE REQUERIMIENTOS AVANZADA Principio # 5 Para cada especificación de un sistema debe existir un modelo cognitivo. (Galeon.com) La especificación de un sistema debe ser un modelo cognitivo en vez de un modelo de diseño o de implementación. (Galeon.com) El sistema como tal debe describir un sistema la percepción de los usuarios finales. (Chelob) Principio # 6. Cada especificación única del sistema debe ser operativa. La especificación debe ser completa y lo bastante formal para que puede usarse para determinar especificación, con casos si una de implementación prueba elegidos propuesta satisface arbitrariamente. la (Chelob) (Galeon.com) Principio # 7: La especificación del sistema deben ser tolerantes a la incompletita y ampliable. (Chelob), (Galeon.com) Ninguna especificación estará prácticamente completa. El medio ambiente en que se desarrolla es demasiado complejo y confuso. Una especificación en la mayoría de los casos es un modelo – abstracción- de alguna situación real. (Chelob) Principio # 8: Una especificación prácticamente debe estar localizada y acoplada. (Chelob) La especificación no es un objeto estático previamente compuesto, sino un objeto dinámico que sufre considerable modificaciones. (Chelob) 13 INGENIERIA DE REQUERIMIENTOS AVANZADA 7. Requerimientos Funcionales y no funcionales. Normalmente existen dos tipos de requerimientos siendo funcionales y no funcionales 7.1 Requerimientos Funcionales Los requerimientos funcionales son aquellos que se utilizan para lo que debe hacer el sistema. Tales requerimientos dependen del tipo de software que se está desarrollando, de los usuario esperados del software y del enfoque general que adopte la organización cuando se describen los requerimientos, Los requerimientos funcionales se describen en forma abstracta, los requerimientos funcionales más específicos del sistema detallan las funciones del sistema, sus entradas y salidas 7.2 Requerimientos No Funcionales Los requerimientos no funcionales, son requerimientos que no se relacionan directamente con los servicios específicos que el sistema entrega a sus usuarios, pueden relacionarse emergentes del sistema, como fiabilidad, tiempo de resuelta u uso de almacenamiento, capacidad de los dispositivos. Los requerimientos no funcionales afectan más la arquitectura global de un sistema que los componentes individuales, como unos requerimientos de seguridad, surgen a través de las necesidades de los usuarios debido a las restricciones presupuestarias, políticas de la organización, necesidad de interoperabilidad con otro software. 14 INGENIERIA DE REQUERIMIENTOS AVANZADA 8. Metodologías de Requerimientos Teniendo el documento de especificación de requerimientos, el analista desarrollara el modelado de la nueva aplicación. (Piattini Velthuis, 1996). También se pueden utilizar variados tipos de metodologías entre las que más comúnmente existen: la metodología estructurada y la metodología orientada a objetos 8.1 Metodología Estructurada Es considera como la primera aproximación para el desarrollo del problema. En esta metodología predominan los procesos, por lo tanto su objetivo principal es especificar y descomponer la funcionalidad de las aplicaciones. De acuerdo a los movimiento la información se procesa y reprocesa durante la vida del software, esta es modificada por una serie de procesos la cual la y transforma en nueva información. Los diagramas de flujos de datos (DFD) que se desarrollan son una norma técnica para modelado gráfico que esquematiza un flujo de información de datos y las transformaciones que se aplican a los datos al moverse desde el inicio hasta el final de un proceso. (Galeon.com) (trackli.googlecode.com) La metodología estructurada se centra menos en la creación de símbolos gráficos adicionales y más en la representación y especificaciones de los aspectos del software orientado al control. Por tanto se basa en el modelo de flujo como primer elemento de presentación gráfica de un sistema basado en computadora. Usando como base diagramas de flujo de datos y de control, el analista separa las funciones que transforman el flujo. Después, crea un modelo de comportamiento usando un diagrama de transición de estados y un modelo de contenido de datos con un diccionario de requisitos. Las especificaciones de los procesos y del control proporcionan una elaboración adicional de los detalles 15 INGENIERIA DE REQUERIMIENTOS AVANZADA 8.2 Metodología Orientada a Objetos Los métodos orientados a objetos para el análisis de requisitos del software, permiten al analista obtener el modelo de un problema representando clases, objetos, atributos y operaciones como componentes principales de modelación. Los puntos de vista orientados a los objetos combinan la clasificación de objetos, la herencia de atributos y los mensajes de comunicación dentro del contexto de la notación de modelación. Los objetos modernizan casis cualquier aspecto identificable del ámbito del problema: entidades externas, casos, sucesos, papeles, unidades organizativas, lugares y estructuras pueden ser representadas por objetos. Un aspecto importante, se debe a que los objetos encapsulan datos y procesos. Las operaciones de procesamiento son parte del objeto son iniciadas pasando un mensaje al objeto. Una definición de una clase forma la base para la reusabilidad en los niveles de modelación, diseño e implementación. La metodología orientada a objetos proporciona una notación y un conjunto heurístico para construir un modelo AOO- Análisis orientado a objetos. Dentro de las metodologías más predominantes la orientación a objetos es las más recientes y utilizadas en la actualidad, debido a la crecientes ventajas, éntrelas cueles se destaca: La metodología se basa en componentes, o sea es más fácil de reutilizar el código para terceras soluciones. Su mantenimiento y seguimiento es más fácil debido 16 a que los cambios están más focalizados y localizados INGENIERIA DE REQUERIMIENTOS AVANZADA Dentro de las características de los lenguajes orientados a objetos se detallan: Objetos y clases: Un objeto está compuesta por una estructura de datos y de una colección de métodos, los que en sus primeras versiones eran llamados procedimientos o funciones, los cuales manipulan los datos o la información. Los datos estructurados dentro de un objeto son llamados atributos, estos objetos solo puede ser manejados por medio de su interfaz, lo que al final es una colección de funciones que se implementan y son visibles al exterior. Tanto los objetos como las clases contienen muchas características Herencia: Es un mecanismo básico por el que las clases hijas heredan el código de las clases padre. (Alvarez, 2014) Polimorfismo: El polimorfismo es la posibilidad de definir clases diferentes que tienen métodos o atributos llamados de forma idéntica, que se comportan de manera distinta. Este concepto se puede aplicar tanto a funciones como a tipos de datos. De aquí se deriva los conceptos defunciones polimórficas y tipos polimórficos. Funciones Poliformas: son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta. Tipos Poli fórmicos: Los tipos polimórficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no está especificado. (EduRed) 17 INGENIERIA DE REQUERIMIENTOS AVANZADA 9. Especificación de Requerimientos ISO/IEEE 830 Las Especificaciones de Requerimientos de Software (ERS), es un plan o documento que describe en forma completa y con un nivel de detalle todas las iteraciones y elementos que se requiere para el desarrollo de un proyecto de software y sus aplicativos. El ERS condiciona todos aquellos elementos que se necesitan para construir una solución de software que cumplan con las normas o metodologías aceptadas en el ámbito internacional. 10. Objetivos de la ERS. Dentro de los objetivos de un ERS están desarrolladas las especificaciones de requisitos para el desarrollo de una aplicación de software, entre ellos: Guiar a los a los clientes/Usuarios para que logren describir de una manera clara y objetiva lo que se desea desarrollar para obtener un producto final mediante una aplicación de software, la participación debe ser en forma activa y consecuente en el desarrollo y levantamiento de la especificación de requisitos, ya que el cliente tiene visión global más amplia y detallada de los procesos que se realizan en las labores diarias. (Monferre Agut) (docslide.us/documents/9001.html) Hacer comprender y conceptualizar a los desarrolladores y analistas lo que se requiere concretamente debido a que en muchas ocasiones el cliente/usuario no sabe exactamente o no entiende lo que se requiere. (Monferre Agut) La ERS permite definir todos los requisitos que cumplan con la visión del producto a desarrollar y a los desarrolladores tener una línea base para desarrollar el documento de requerimientos. 18 INGENIERIA DE REQUERIMIENTOS AVANZADA Particularmente del condicionarse la línea base para definir y desarrollar de estándares y nomenclaturas de todo tipo para un ERS lo que puede ser utilizado para cada proyecto del ciclo de vida de sistemas. Con el documento de especificación de requisitos el ingeniero del software puede hacer referencia a la verificación y validación, así como identificar las mejoras y correcciones o actualizaciones en los procesos analizados. La ERS es un documento que detalla ciertos elementos, de una forma objetiva y de una determinada manera, el cuál debe cumplir con el estándar IEEE 830. Una ERS forma parte de los entregables del ciclo de vida del proyecto en su etapa inicial que debe definir correctamente todos los requerimientos necesarios para una mayor flexibilidad a los desarrolladores y analistas para la implementación de la solución del software. 11. Características de un ERS Dentro de características de un documento de especificación de requisitos software se indican las siguientes: 19 Validez Consistencia Ambigüedad Totalidad Completitud Realismo Verificabilidad Clasificación Modificabilidad Explorabilidad (traceability) Utilizable durante las tareas de mantenimiento y uso INGENIERIA DE REQUERIMIENTOS AVANZADA 11.1 Comprobación de validez Se deben considerar y analizar para identificar las funciones adicionales o diferentes que se requieran. Los sistemas tiene diversas participantes con diversas necesidades, y cualquier conjunto de requerimientos es inevitablemente un compromiso a través de la comunidad de participantes. 11.2 Consistencia Los requerimientos en el documento no deben estar en conflicto. Esto es, no debe haber restricciones contradictorias o descripciones diferentes de la misma función del sistema. Algunos casos son: Los requisitos que detallan el mismo objeto real bajo diferente terminología. Debe haber una característica específica para cada objeto real. Si se llega a un conflicto lógico entre dos requisitos determinadas. las dos acciones serían perfectamente válidas. 11.3. Ambigüedad No deben darse en una palabra o una frase los múltiples significados, de lo contrario se pueden incluir un glosario de significados. 11.4. Comprobación de Totalidad El documento de requerimientos debe incluir requerimientos que definan todas las funciones y restricciones pretendidas por el usuario del sistema. 20 INGENIERIA DE REQUERIMIENTOS AVANZADA 11.5 Completitud Una ERS tiene completitud si: Una descripción de la función o entidad a especificar. Una descripción de sus entradas y sus procedencias. Una descripción de sus salidas ya a donde se dirigen. Información sobre los datos requeridos para el cálculo u otras entidades en el sistema que se utilizan. Una descripción de la acción que se va a tomar. Se utiliza un determinado estándar. Por las razones suficientes si no se utiliza el estándar determinado o un aparte de él, se debe realizar la observación o nota qué no se ha utilizado dicho apartado. Normas APA: el documento d debe cumplir con la norma APA en lo que respecta a etiquetadas figuras, tablas, diagramas, términos y unidades de medida empleados. 11.6 Verificabilidad Significa que el requisito debe escribirse siempre de manera que sean verificable. 11.7 Clasificación No necesariamente todos los requisitos son igual o tienen la misma importancia. Estos se pueden clasificar por diversos criterios: Importancia: Los requisitos opcionales, requisitos o condicionales. Estabilidad: Diferentes formas de cambios que hacen un llamado a una requisito, por lo que deben establecer prioridades, de modo que de un requisito por su prioridad no emplee excesivos recursos. 11.8 Modificabilidad Una ERS es modificable si cualquier cambio puede realizarse de manera fácil, completa y consistente. Siendo así, lo más recomendado es tener una organización coherente en la que aparezca el índice o una tabla de contenidos fácilmente accesible. (docslide.us/documents/9001.html) 21 INGENIERIA DE REQUERIMIENTOS AVANZADA A su vez también es recomendable evitar la redundancia, para que no aparezca un mismo requisito en varios lugares del ERS, de tal forma, que para modificar un error, será más cómodo si no tenemos que buscar el mismo requisito en varios lugares. (docslide.us/documents/9001.html) 11.9 Explorabilidad (traceability) Una ERS es explorable si el origen de cada requerimiento es claro tanto hacia atrás (origen que puede ser un documento, una persona etc.) como hacia delante (componentes del sistema que realizan dicho requisito). (docslide.us/documents/9001.html) (docslide.us/documents/9001.html) Cuando un requisito de la ERS está integrado o desglosado debe detectar las referencias hacia atrás y adelante en el ciclo de vida. (Monferre Agut) Las referencias hacia delante de la ERS son especialmente importantes para el mantenimiento del software. Si el código y los documentos deben ser modificados es primordial poder comparar el conjunto de requisitos que se ven afectados. 11.10 Utilizable durante las tareas de mantenimiento y uso Se debe considerar los procesos de mantenimiento incluyendo personal que nunca ha intervenido directamente en el desarrollo y logre realizar con capacidad su mantenimiento. (docslide.us/documents/9001.html)Así, dicha ERS actúa a modo de plano de la aplicación, permitiendo incluso modificaciones que no requieran un cambio en el diseño. (Monferre Agut) (docslide.us/documents/9001.html) En muchas circunstancias, el actores del desarrollo suponen algunos conocimientos que el personal nuevo que se encargue del mantenimiento no tiene por qué tener. (830) , por lo que ante esta cuestionamiento e imprescindible que la documentación este correcta y que las funciones estén detalladas tanto monitoreadas. 22 en su origen para que puedan ser modificadas, y INGENIERIA DE REQUERIMIENTOS AVANZADA 12. Esquema de la ERS definida en el IEEE 830-1998 La especificación de requisitos del software es el producto final refinado del desarrolló del análisis. La función y el comportamiento asignados al software como parte de la ingeniería de sistemas se refina, estableciendo una descripción completa de la información, una descripción funcional detallada, una indicación de los requisitos de rendimiento y de las restricciones de diseño, unos criterios de validación apropiados. A continuación se retrata un perfil del formato propuesto por el IEEE 8301998. I. Introducción a. Referencia del Sistemas b. Descripción General c. Restricciones el proyecto del Software II. Descripción de la Información a. Representación del flujo d la información. 1. Flujo de Datos 2. Flujo de Control b. Representación del contenido de la información c. Descripción de la interfaz del sistema III. Descripción Funcional a. Partición funcional b. Descripción funcional 1. Narrativa de procesamiento 2. Restricciones/limitaciones 3. Requisitos de rendimiento 4. Restricciones de diseño 5. Diagramas de soporte c. Descripción del control 1. Especificación del Control 2. Restricciones del diseño 23 INGENIERIA DE REQUERIMIENTOS AVANZADA IV. Descripción del comportamiento a. Estados del Sistema Sucesos y acciones V. Criterios de Validación a. Límites de rendimiento b. Clases de Pruebas c. Respuesta esperada del software d. Consideraciones especiales VI. Bibliográfica VII. Apéndice Descripción de los apartados. I. Introducción La introducción describe los fines y los objetivos del software, describiéndoles en el contexto de un sistema basado en computadora. Realmente la introducción puede no ser nada más que el ámbito del documento de planificación. II. Descripción de la Información La descripción de la información proporciona una descripción detallada del problema que del software debe resolver. Estarán documentados el flujo y la estructura de la información. Se describe el hardware, el software y las interfaces humanas, para los elementos externos del sistema las funciones internas del software. III Descripción Funcional La sección de descripción funcional proporciona una descripción de cada función requerida para resolver el problema. Para cada función se da una explicación del procedimiento, se establecen y justifican las restricciones de diseño, se establecen las características del comportamiento y se incluyen uno o más diagramas para representar gráficamente la estructura global del software y la interrelación entre funciones y otros elementos del sistema. 24 INGENIERIA DE REQUERIMIENTOS AVANZADA IV Descripción del comportamiento La sección de descripción del comportamiento examina el funcionamiento del software como una secuencia de los sucesos externos y de las características de control generadas internamente. V Sección de Criterios de Validación La sección de criterios de validación es probablemente la sección más importante e, irónicamente, más descuidada de la especificación de requisitos del software, ¿Cómo reconocer una implementación fructífera? ¿Qué clase de pruebas se deben dirigir para validar la función, el rendimiento y las restricciones? .Descuidamos esta sección porque para complementarla necesitamos un profundo entendimiento de los requisitos del software. Sin embargo, la especificación de los criterios de validación actúa como una revisación implícita de los requisitos. VI Bibliografía. La especificación de requisitos del software incluye una bibliografía y un apéndice. La bibliografía contiene referencias a todos los documentos relacionados con el software, Aquí s e incluye cualquier otro documento de ingeniería dl software, así como las referencias técnicas, los libros adquiridos y los estándares. El apéndice contiene información que complementa la especificación. En el apéndice se presentan las tablas de datos, la descripción detallada de los algoritmos, los diagramas, los gráficos y otro material. 25 INGENIERIA DE REQUERIMIENTOS AVANZADA 13. Naturaleza de la Ingeniería de Requerimientos La ingeniería de software es una disciplina que está orientada a aplicar conceptos y métodos de ingeniería al desarrollo de software de calidad. 13.1. Matemáticas Los programas tienen muchas propiedades matemáticas. Por ejemplo la corrección y la complejidad de muchos algoritmos son conceptos matemáticos que pueden ser rigurosamente probados. El uso de matemáticas en la IS es llamado métodos formales. 13.2. Creación Los programas son construidos en una secuencia de pasos. El hecho de definir propiamente y llevar a cabo estos pasos, como en una línea de ensamblaje, es necesario para mejorar la productividad de los desarrolladores y la calidad final de los programas. Este punto de vista inspira los diferentes procesos y metodologías que se encuentran en la IS. 13.3. Gestión de Proyecto El desarrollo de software de gran porte requiere una adecuada gestión del proyecto. Hay presupuestos, establecimiento de tiempos de entrega, un equipo de profesionales que liderar. Recursos (espacio de oficina, insumos, equipamiento) por adquirir. Para su administración se debe tener una clara visión y capacitación en gestión de proyectos. 26 INGENIERIA DE REQUERIMIENTOS AVANZADA 14. Participantes y papeles Para el desarrollo de un sistema de software es necesaria la colaboración de muchas personas con diversas competencias, capacidades e intereses. Al conjunto de personas involucradas en el proyecto se les conoce como participantes. Al conjunto de funciones y responsabilidades que hay dentro del proyecto o sistema se le conoce como roles o papeles. Los roles están asociados a las tareas que son asignadas a los participantes, en consecuencia, una persona puede desempeñar uno o múltiples roles, así también un mismo rol puede ser representado por un equipo.35 14.1. Cliente Es frecuente el uso de los términos "usuarios", "usuarios finales" y "clientes" como sinónimos, lo cual puede provocar confusión; estrictamente, el cliente (persona, empresa u organización) es quién especifica los requisitos del sistema,36 en tanto que el usuario es quien utiliza u opera finalmente el producto software, pudiendo ser o no el cliente. 14.2. Desarrolladores Esta clase de participantes están relacionados con todas las facetas del proceso de desarrollo del software. Su trabajo incluye la investigación, diseño, implementación, pruebas y depuración del software. 37 14.3. Gestores En el contexto de ingeniería de software, el gestor de desarrollo de software es un participante, que reporta al director ejecutivo de la empresa que presta el servicio de desarrollo. Es responsable del manejo y coordinación de los recursos y procesos para la correcta entrega de productos de software, mientras participa en la definición de la estrategia para el equipo de desarrolladores, dando iniciativas que promuevan la visión de la empresa. 38 27 INGENIERIA DE REQUERIMIENTOS AVANZADA 14.4. Usuarios finales El usuario final es quien interactúa con el producto de software una vez es entregado.39 Generalmente son los usuarios los que conocen el problema, ya que día a día operan los sistemas. 14.5. Código ético de un ingeniero de software Un ingeniero de software debe tener un código donde aseguran, en la medida posible, que los esfuerzos realizados se utilizarán para realizar el bien y deben comprometerse para que la ingeniería de software sea una profesión benéfica y respetada. Para el cumplimiento de esta norma, se toman en cuenta ocho principios relacionados con la conducta y las decisiones tomadas por el ingeniero; donde estos principios identifican las relaciones éticamente responsables de los individuos, grupos y organizaciones donde participen. Los principios a los que deben sujetarse son sobre la sociedad, cliente y empresario, producto, juicio, administración, profesión, colegas y por último el personal. Sociedad: Los ingenieros de software deben actuar de manera congruente con el interés social, aceptando la responsabilidad total de su trabajo, moderando los intereses con el bienestar social, aprobando el software solamente si se tiene una creencia bien fundamentada, cooperando en los esfuerzos para solucionar asuntos importantes de interés social, ser justo y veraz en todas las afirmaciones relativas al software o documentos asociados. Cliente y empresario: Se debe actuar de manera tal que se llegue a conciliar los mejores intereses de los clientes y empresarios, congruentemente con el interés social. Estos deberán prestar servicios en sus áreas de competencia, siendo honestos y francos sobre las limitaciones, no utilizar un software que se obtenga ilegalmente o sin ética, usar la propiedad de los clientes o empresarios de manera autorizada, mantener secreto cualquier documento de información confidencial. 28 INGENIERIA DE REQUERIMIENTOS AVANZADA Producto: Hay que asegurarse que los productos y sus modificaciones cumplan con los estándares profesionales más altos posibles, procurando la alta calidad, costos aceptables y una agenda razonable asegurando que los costos y beneficios sean claros y aceptados por el empresario y el cliente. Asegurar que las metas y objetivos de cualquier proyecto sean adecuados y alcanzables. Juicio: Se debe mantener una integridad e independencia en el juicio profesional, moderando todo juicio técnico por la necesidad de apoyar y mantener los valores humanos, mantener la objetividad profesional con respecto a cualquier software o documento relacionado, no involucrarse en prácticas financieras fraudulentas. Administración: Se deberá asegurar una buena administración para cualquier proyecto en el cual se trabaje, utilizando procedimientos efectivos para promover la calidad y reducir riesgos, asegurándose también que se conozcan las políticas y procedimientos del empresario para proteger contraseñas, archivos e información confidencial. Profesión: Se debe incrementar la integridad y reputación de la profesión en conjunto con el interés social, ayudando al desarrollo de un ambiente organizacional favorable para actuar, promoviendo el conocimiento público de la ingeniería de software, extendiendo el conocimiento de la ingeniería de software por medio de participaciones en organizaciones, reuniones y publicaciones profesionales. Colegas: Cada ingeniero deberá apoyar y ser justos con los colegas, motivando a sus colegas sujetándose al código, ayudando también a su desarrollo profesional, reconocer los trabajos de otros y abstenerse a atribuirse de méritos indebidos, revisar los trabajos de manera objetiva, sincera y propiamente documentada. 29 INGENIERIA DE REQUERIMIENTOS AVANZADA Personal: Los ingenieros de software participaran toda su vida en el aprendizaje con la práctica y promoverán un enfoque ético de la profesión, mejorando su conocimiento de los avances en el análisis, especificación, diseño, desarrollo, mantenimiento, pruebas del software y documentos relacionados en conjunto con administración del proceso de desarrollo. 40 30 INGENIERIA DE REQUERIMIENTOS AVANZADA 15. Conclusiones El análisis delos requisitos es e<l primer paso técnico del procesos de ingeniería de requerimientos. Es en este punto donde se refina la declaración general del ámbito del software en una especificación concreta que se convierte en la base de todas las actividades de ingeniero de requerimientos que siguen. En análisis debe centrarse en los ámbitos d información, funcional, y de comportamiento del problema. Para comprender mejor lo que se requiere, se crean modelos, se parte del problema y desarrollan representaciones que muestran la esencia de los requisitos y, posteriormente, los detalles de implementación. En muchos casos no es posible especificar completamente el problema en una etapa tan temprana. La construcción de prototipos constituye un método alternativo, que da como resultado un modelo ejecutable de software a partir del cual se pueda refinar los requerimientos. Para poder construir adecuadamente el prototipo, se necesitan técnicas y herramientas especiales 31 INGENIERIA DE REQUERIMIENTOS AVANZADA 16. Bibliografía 830, 4. /. (s.f.). 49587242 / ERS Según IEEE 830. Obtenido de http://es.scribd.com/doc/49587242/ERS-Segun-IEEE-830 9001:2000, I. (15 de 12 de 2000). Quality management systems -Requirements. Obtenido de http://www.iso.org/iso/catalogue_detail?csnumber=21823 Aguirre, C. (s.f.). NATURALEZA DE LA INGENIERÍA DE SOFTWARE. Obtenido de http://caro9a.blogspot.com/ Alvarez, M. A. (10 de 04 de 2014). Herencia en Programación Orientada a Objetos. Obtenido de http://www.desarrolloweb.com/articulos/herenciaen-programacion-orientada-objetos.html Chelob. (s.f.). Proceso de desarrollo de software. http://www.monografias.com/trabajos5/desof/desof.shtml. docslide.us/documents/9001.html. (s.f.). Especificación de Requisitos Software según. Obtenido de http://docslide.us/documents/9001.html EduRed. (s.f.). Polimorfismo (Informática). http://www.ecured.cu/Polimorfismo_ (Inform%C3%A1tica). F.J. Zarazaga , S., J. Nogueras , I., & M.A. , L. (s.f.). Necesidad de una metodología: La estructurada y la Orientada a Objetos. Obtenido de Ingeniería del Software I: https://sites.google.com/site/cursofpeanalistafuncional/necesidad-deuna-metodologia F.J. Zarazaga Soria, J. N. (s.f.). Necesidad de una metodología: La estructurada y la Orientada a Objetos. Obtenido de Ingeniería del Software I: https://sites.google.com/site/cursofpeanalistafuncional/necesidad-deuna-metodologia Flores, A. (s.f.). Esquema del ERS definida en el IEEE 830-1998. Obtenido de http://dsv666.blogspot.com/ Galeon.com, H. (s.f.). REQUERIMIENTOS DEL SOFTWARE. Obtenido de http://requerimientos.galeon.com/ 32 INGENIERIA DE REQUERIMIENTOS AVANZADA Ginebra, S. C. (s.f.). Número de referenciaISO 9001:2008(traducción oficial)© ISO 2008NORMA INTERNACIONAL Traducción oficial Official translación Traducción officielle. Obtenido de http://docslide.us/education/iso-90015584a66e071ba.html http://es.slideshare.net/AldoMamani/norma-830, http://es.slideshare.net/romulohuancaluque1/9001-2, http://dsv666.blogspot.com/, http://es.scribd.com/doc/49587242/ERSSegun-IEEE-8, & http://docslide.us/documents/9001.html. (s.f.). Especificación de Requerimientos de Software según el estándar IEEE830. Obtenido de http://es.slideshare.net/AldoMamani/norma-830 I, D. d. (s.f.). E78. INGENIERÍA DEL SOFTWARE 5º CURSO DE INGENIERÍA INFORMÁTICA 2000-2001. Obtenido de especificación de Requisitos Software según el estándar de IEEE 830: http://docslide.us/documents/9001.html InSlideShare. (s.f.). Especificación de Requisitos Software Según el Estándar IEEE830. Obtenido de http://es.slideshare.net/romulohuancaluque1/9001-29858820 International Organización for Standardization, I. (s.f.). We develop and publish International Standards. Obtenido de http://www.iso.org/iso/home.html ISO.ORG. (s.f.). ISO 9000 - Quality management. Obtenido de http://www.iso.org/iso/home/standards/managementstandards/iso_9000.htm Miguel Angel, A. (s.f.). Polimorfismo en Programación Orientada a Objetos. Obtenido de http://www.desarrolloweb.com/articulos/polimorfismo- programacion-orientada-objetos-concepto.html Monferre Agut, R. (s.f.). romulohuncaluque/9001-29858820 Especificación de Requisitos según el Estándar IEEE 830. Obtenido de E78 Ingeniería del Software: http://es.slideshare.net/romulohuancaluque1/9001-29858820 Monferrer Agut, R. (2001). Especificación de REquisitos Sotfwar. Obtenido de http://es.slideshare.net/romulohuancaluque1/9001-29858820 33 INGENIERIA DE REQUERIMIENTOS AVANZADA Piattini Velthuis, M. G. (01 de 09 de 1996). Análisis y Diseño detallado de aplicaciones Informáticas de Gestión. Obtenido de http://www.agapea.com/libros/Analisis-y-Diseno-detallado-deaplicaciones-Informaticas-de-Gestion--9788478972333-i.htm Pressman, R. S. (2005). Ingeniería del Software, Un Enfoque Práctico. México: Mc Graw Hill. scribd.com/doc/289109144/. (s.f.). scribd / wiki. Obtenido de http://es.scribd.com/doc/289109144/Wiki Society, I. C. (s.f.). 610.12-1990 - IEEE Standard Glossary of Software Engineering Terminology. Obtenido de https://standards.ieee.org/findstds/standard/610.12-1990.html Sommerville, I. (2005). Ingeniería del Software. Madrid, España: Pearson Educación, S.A. trackli.googlecode.com. (s.f.). EVOLUCION DE LA . Obtenido de http://trackli.googlecode.com/svn/trunk/Documentacion/Otra%20inform acion/CMC/ingenieriasoftwaretematica.doc 34