Documentos de Académico
Documentos de Profesional
Documentos de Cultura
3 Cuales son las caractersticas de una profesin?......................................................................................1 1.4 Cuales son los objetivos del proyecto SWEBOK?......................................................................................1 1.5 Organizacin Jerrquica............................................................................................................................... 1 1.6 Matriz y material de referencia..................................................................................................................... 1 1.7 Profundidad del tratamiento......................................................................................................................... 1 1.8 Restricciones relativas al formato del libro................................................................................................... 1 1.9 Las reas de conocimiento........................................................................................................................... 1 1.9.1 Estructura para la descripcin de las reas de conocimiento...............................................................1 1.9.2 rea de Conocimiento de Requerimientos de software........................................................................1 1.9.3 rea de Conocimiento de Diseo de software......................................................................................2 1.9.4 rea de Conocimiento de Construccin de software.............................................................................2 1.9.5 rea de Conocimiento de Pruebas de software....................................................................................3 1.9.6 rea de Conocimiento de Mantenimiento de software..........................................................................3 1.9.7 rea de Conocimiento de Gestin de la configuracin de software......................................................3 1.9.8 rea de Conocimiento de Gestin de ingeniera de software...............................................................4 1.9.9 rea de Conocimiento de Proceso de Ingeniera de software..............................................................4 1.9.10 rea de Conocimiento de Mtodos y Herramientas de Ingeniera de software...................................5 1.9.11 rea de Conocimiento de Calidad de software...................................................................................5 1.9.12 Disciplinas relativas a la Ingeniera del software.................................................................................5 2 Requerimientos de software................................................................................................................................ 6 2.1 Fundamentos de requerimientos de software............................................................................................... 6 2.1.1 Definicin de Requerimiento Software ................................................................................................. 6 2.1.2 Requerimientos de Producto y de Proceso........................................................................................... 7 2.1.3 Requerimientos funcionales y no funcionales.......................................................................................7 2.1.4 Propiedades emergentes...................................................................................................................... 7 2.1.5 Requerimientos cuantificables.............................................................................................................. 7 2.1.6 Requerimientos del Sistema y requerimientos del Software.................................................................8 2.2 Proceso de Requerimientos......................................................................................................................... 8 2.2.1 Modelos del Proceso............................................................................................................................. 8 2.2.2 Actores del Proceso.............................................................................................................................. 8 2.2.3 Soporte y gestin del proceso............................................................................................................... 9 2.2.4 Calidad y mejora de proceso................................................................................................................. 9 2.3 Obtencin de Requerimientos...................................................................................................................... 9 2.3.1 Fuentes de los requerimientos............................................................................................................ 10
2.3.2 Tcnicas de obtencin de requerimientos...........................................................................................10 2.4 Anlisis de requerimientos......................................................................................................................... 11 2.4.1 Clasificacin de los requerimientos.................................................................................................... 11 2.4.2 El modelo conceptual......................................................................................................................... 12 2.4.3 Asignacin de requerimientos y diseo arquitectnico ......................................................................13 2.4.4 Negociacin de requerimientos........................................................................................................... 14 2.5 Especificacin de requerimientos............................................................................................................... 14 2.5.1 El documento de la definicin de sistema........................................................................................... 14 2.5.2 Especificacin de requerimientos del sistema.....................................................................................14 2.5.3 Especificacin de requerimientos del software...................................................................................15 2.6 Validacin de Requerimientos.................................................................................................................... 15 2.6.1 Revisin de requerimientos ................................................................................................................ 16 2.6.2 Prototipado.......................................................................................................................................... 16 2.6.3 Validacin del Modelo......................................................................................................................... 16 2.6.4 Pruebas de Aceptacin....................................................................................................................... 16 2.7 Consideraciones prcticas......................................................................................................................... 17 2.7.1 Naturaleza iterativa del proceso de Requerimientos .........................................................................17 2.7.2 Gestin del Cambio ............................................................................................................................ 17 2.7.3 Atributos de los requerimientos .......................................................................................................... 18 2.7.4 Seguimiento de requerimientos........................................................................................................... 18 2.7.5 Medicin de Requerimientos............................................................................................................... 18 3 Diseo de software............................................................................................................................................ 19 3.1 Fundamentos de diseo de software.......................................................................................................... 20 3.1.1 Conceptos generales de diseo.......................................................................................................... 20 3.1.2 Contexto del Diseo de Software........................................................................................................ 20 3.1.3 Procesos de diseo de Software......................................................................................................... 20 3.1.4 Principios de diseo ........................................................................................................................... 20 3.2 Problemas claves en el diseo de software................................................................................................ 21 3.2.1 Concurrencia....................................................................................................................................... 21 3.2.2 Control y Manejo de Eventos ............................................................................................................. 21 3.2.3 Distribucin de los componentes......................................................................................................... 22 3.2.4 Manejo de errores ,excepciones y tolerancia a fallos..........................................................................22 3.2.5 Interaccin y Presentacin.................................................................................................................. 22 3.2.6 Persistencia de datos.......................................................................................................................... 22 3.3 Estructura y Arquitectura de Software........................................................................................................ 22 3.3.1 Estructuras Arquitectnicas y puntos de vista.....................................................................................22 3.3.2 Patrones de diseo (patrones micro arquitectnicos)........................................................................23 3.3.3 Las familias de los programas y Frameworks.....................................................................................23 3.4 Anlisis y evaluacin de la calidad del diseo del software........................................................................23
3.4.1 Atributos de Calidad............................................................................................................................ 23 3.4.2 Anlisis de la Calidad y Tcnicas de Evaluacin................................................................................24 3.4.3 Medidas............................................................................................................................................... 24 3.5 Notaciones del diseo de software............................................................................................................. 24 3.5.1 Descripcin Estructural (Vista esttica)............................................................................................... 24 3.5.2 Descripcin del comportamiento......................................................................................................... 25 3.6 Estrategias y Mtodos Diseo de software ................................................................................................ 26 3.6.1 Estrategias generales.......................................................................................................................... 26 3.6.2 Diseo orientado a funciones(Diseo estructurado)............................................................................26 3.6.3 Diseo orientado a Objetos................................................................................................................. 26 3.6.4 Diseo Centrado en Datos.................................................................................................................. 26 3.6.5 Diseo basado en componentes (CDB)..............................................................................................27 3.6.6 Otros mtodos..................................................................................................................................... 27 4 Construccin de software.................................................................................................................................. 28 4.1 Fundamentos de la construccin de software............................................................................................29 4.1.1 Minimizar la complejidad..................................................................................................................... 29 4.1.2 Anticipar cambios................................................................................................................................ 29 4.1.3 Construir para verificar:....................................................................................................................... 30 4.1.4 Estndares en construccin:............................................................................................................... 30 4.2 Gestin de la Construccin......................................................................................................................... 30 4.2.1 Modelos de Construccin.................................................................................................................... 30 4.2.2 Planificacin de la Construccin [Bec99; McC04]...............................................................................31 4.2.3 Medicin de la Construccin [McC04]................................................................................................. 31 4.3 Consideraciones Prcticas......................................................................................................................... 31 4.3.1 Diseo de Construccin...................................................................................................................... 31 4.3.2 Lenguajes de Construccin ................................................................................................................ 31 4.3.3 Codificacin ........................................................................................................................................ 32 4.3.4 Pruebas de Construccin.................................................................................................................... 33 4.3.5 Reutilizacin ....................................................................................................................................... 33 4.3.6 Calidad de la Construccin................................................................................................................. 34 4.3.7 Integracin.......................................................................................................................................... 34 5 Pruebas de software.......................................................................................................................................... 35 5.1 Fundamentos de las Pruebas del Software ...............................................................................................36 5.1.1 Terminologa relacionada con las pruebas..........................................................................................36 5.1.2 Cuestiones clave................................................................................................................................. 37 5.1.3 Relacin de las pruebas con otras actividades...................................................................................38 5.2 Niveles de Pruebas.................................................................................................................................... 38 5.2.1 El objeto de la prueba......................................................................................................................... 38 5.2.2 Objetivos de las pruebas..................................................................................................................... 39
5.3 Tcnicas de pruebas.................................................................................................................................. 41 5.3.1 Pruebas basadas en la intuicin y experiencia del ingeniero de software...........................................42 5.3.2 Tcnicas basadas en la especificacin............................................................................................... 42 5.3.3 Tcnicas basadas en el cdigo........................................................................................................... 43 5.3.4 Tcnicas basadas en errores ............................................................................................................. 44 5.3.5 Tcnicas basadas en el uso ............................................................................................................... 44 5.3.6 Tcnicas basadas en la naturaleza de la aplicacin...........................................................................44 5.3.7 Seleccionando y combinando tcnicas...............................................................................................45 5.4 Medidas de las pruebas............................................................................................................................. 45 5.4.1 Evaluacin de un programa durante las pruebas................................................................................45 5.4.2 Evaluacin de las pruebas realizadas................................................................................................. 46 5.5 El Proceso de las Pruebas......................................................................................................................... 47 5.5.1 Consideraciones prcticas.................................................................................................................. 47 5.5.2 Actividades de las pruebas................................................................................................................. 49 6 Mantenimiento de software................................................................................................................................ 51 6.1 Fundamentos del mantenimiento de software............................................................................................ 51 6.1.1 Definiciones y terminologa................................................................................................................. 51 6.1.2 Naturaleza del mantenimiento............................................................................................................. 52 6.1.3 Necesidad por el mantenimiento......................................................................................................... 52 6.1.4 La mayora de los costos de mantenimiento.......................................................................................53 6.1.5 Evolucin del Software........................................................................................................................ 53 6.1.6 categoras de mantenimiento.............................................................................................................. 53 6.2 Problemas clave en el mantenimiento de software....................................................................................54 6.2.1 Problemas tcnicos............................................................................................................................. 54 6.2.2 Problemas de gestin.......................................................................................................................... 56 6.2.3 Estimacin de costos de mantenimiento............................................................................................. 57 6.3 Medidas del mantenimiento de software.................................................................................................... 57 6.4 Proceso del mantenimiento........................................................................................................................ 58 6.4.1 Procesos de mantenimiento................................................................................................................ 58 6.4.2 Actividades de mantenimiento............................................................................................................ 59 6.5 Tcnicas para el mantenimiento................................................................................................................. 61 6.5.1 Comprensin del programa................................................................................................................. 62 6.5.2 Reingeniera........................................................................................................................................ 62 6.5.3 Ingeniera inversa............................................................................................................................... 62 7 Gestin de la configuracin software................................................................................................................. 63 7.1 Gestin del proceso de la SCM.................................................................................................................. 64 7.1.1 Contexto de Organizacin para la SCM..............................................................................................65 7.1.2 Restricciones y guias para el proceso de la SCM ..............................................................................65 7.1.3 Planificar la SCM................................................................................................................................. 65
7.1.4 Plan de la SCM .................................................................................................................................. 67 7.1.5 Seguimiento de la Gestin de la Configuracin del Software .............................................................68 7.2 Identificacin de la Configuracin del Software .........................................................................................68 7.2.1 Identificacin de los Elementos a Controlar........................................................................................69 7.2.2 Libreras de Software.......................................................................................................................... 71 7.3 Control de la Configuracin del Software .................................................................................................. 71 7.3.1 Peticin, Evaluacin y Aprobacin de Cambios del Software ...........................................................71 7.3.2 Implementacin de Cambios en el Software ......................................................................................72 7.3.3 Desviaciones y Remisiones ............................................................................................................... 73 7.4 Reporte del Estado de la Configuracin del Software ..............................................................................73 7.4.1 Informacin del Estado de la Configuracin del Software ..................................................................73 7.4.2 Informes del Estado de la Configuracin del Software .......................................................................73 7.5 Auditoria de la Configuracin del Software................................................................................................. 73 7.5.1 Auditoria de la Configuracin Funcional del Software.........................................................................74 7.5.2 Auditora de la Configuracin Fsica del Software...............................................................................74 7.5.3 Auditoras durante el proceso de una Lnea Base de Software..........................................................74 7.6 Gestin del Lanzamiento y Distribucin del Software.................................................................................74 7.6.1 Construccin del Software.................................................................................................................. 74 7.6.2 Gestin del Lanzamiento del Software................................................................................................75 8 Gestin de ingeniera del software.................................................................................................................... 76 8.1 Iniciacin y Definicin del Alcance.............................................................................................................. 79 8.1.1 Determinacin y negociacin de requerimientos.................................................................................79 8.1.2 Anlisis de factibilidad (Tcnica, Operacional, financiera y socio poltica)..........................................79 8.1.3 Procesos para el anlisis y revisin de requerimientos.......................................................................80 8.2 Planeacin de Proyectos de Software........................................................................................................ 80 8.2.1 Planeacin del proceso....................................................................................................................... 80 8.2.2 Determinar los entregables................................................................................................................. 80 8.2.3 Estimacin de Esfuerzo, calendario y costo........................................................................................81 8.2.4 Asignacin de recursos....................................................................................................................... 81 8.2.5 Gestin de riesgos.............................................................................................................................. 81 8.2.6 Gestin de Calidad.............................................................................................................................. 81 8.2.7 Gestin de Planes............................................................................................................................... 81 8.3 Ejecucin del Proyecto de Software.......................................................................................................... 82 8.3.1 Implementacin de Planes.................................................................................................................. 82 8.3.2 Gestin de Contratos con Proveedores.............................................................................................. 82 8.3.3 Implementacin de Procesos de medicin.......................................................................................... 82 8.3.4 Proceso de Supervisin...................................................................................................................... 82 8.3.5 Proceso de Control.............................................................................................................................. 83 8.3.6 Informes.............................................................................................................................................. 83
8.4 Revisin y Evaluacin................................................................................................................................ 83 8.4.1 Determinar la Satisfaccin de los Requerimientos..............................................................................83 8.4.2 Revisar y Evaluar la Ejecucin............................................................................................................ 83 8.5 Cierre.......................................................................................................................................................... 84 8.5.1 Determinar el Cierre............................................................................................................................ 84 8.5.2 Actividades de Cierre.......................................................................................................................... 84 8.6 Medidas de la Ingeniera del Software....................................................................................................... 84 8.6.1 Establecer y Sostener el Compromiso de Medir.................................................................................84 8.6.2 Planificar el Proceso de Medicin....................................................................................................... 85 8.6.3 Realizar el Proceso de Medicin......................................................................................................... 86 8.6.4 Evaluar las Mediciones....................................................................................................................... 86 9 Proceso de Ingeniera del software................................................................................................................... 93 9.1 Implementacin y Cambios de Proceso..................................................................................................... 94 9.1.1 Infraestructura del Proceso................................................................................................................. 95 9.1.2 Ciclo de Gestin del Proceso del Software.........................................................................................95 9.1.3 Modelos Para el Proceso de Implementacin y Cambios...................................................................96 9.1.4 Consideraciones Prcticas................................................................................................................. 96 9.2 Definicin de Procesos............................................................................................................................... 96 9.2.1 Modelos de Ciclo de Vida del Software............................................................................................... 96 9.2.2 Procesos del Ciclo de Vida del Software............................................................................................. 97 9.2.3 Notaciones para las Definiciones de los Procesos..............................................................................97 9.2.4 Adaptacin del Proceso...................................................................................................................... 97 9.2.5 Automatizacin.................................................................................................................................... 98 9.3 Valoracin del Proceso............................................................................................................................... 98 9.3.1 Modelos de Valoracin del Proceso.................................................................................................... 98 9.3.2 Mtodos de Valoracin del Proceso.................................................................................................... 98 9.4 Medicin de los Procesos y Productos....................................................................................................... 99 9.4.1 Medicin del Proceso.......................................................................................................................... 99 9.4.2 Medicin del producto software......................................................................................................... 100 9.4.3 Calidad de los resultados de medicin..............................................................................................101 9.4.4 Modelos de informacin software...................................................................................................... 101 9.4.5 Tcnicas de medicin de procesos................................................................................................... 101 10 Mtodos y herramientas de ingeniera del software......................................................................................104 11 Calidad de Software....................................................................................................................................... 105 11.1 Fundamentos de calidad de software..................................................................................................... 105 11.1.1 Cultura y tica en la Ingeniera de Software...................................................................................106 11.1.2 Valores y Costos de la calidad........................................................................................................ 106 11.1.3 Modelos y caractersticas de calidad............................................................................................... 107 11.1.4 Mejoramiento de la calidad ............................................................................................................ 108
11.2 Procesos de Gestin de Calidad de Software........................................................................................ 108 11.2.1 Aseguramiento de la Calidad de Software......................................................................................109 11.2.2 Verificacin y Validacin................................................................................................................. 110 11.2.3 Revisiones y Auditorias................................................................................................................... 111 11.3 Consideraciones prcticas...................................................................................................................... 113 11.3.1 Requisitos de calidad de software................................................................................................... 113 11.3.2 Caracterizacin de Defectos........................................................................................................... 114 11.3.3 Tcnicas de Gestin de la Calidad del Software.............................................................................115 11.3.4 Medicin de la Calidad del Software...............................................................................................116 12 Disciplinas relativas a la Ingeniera del software........................................................................................... 119
1 Introduccin a la gua
1.1 Que es ingeniera del software? 1.2 Que es una profesin reconocida? 1.3 Cuales son las caractersticas de una profesin? 1.4 Cuales son los objetivos del proyecto SWEBOK? 1.5 Organizacin Jerrquica 1.6 Matriz y material de referencia 1.7 Profundidad del tratamiento 1.8 Restricciones relativas al formato del libro 1.9 Las reas de conocimiento 1.9.1 Estructura para la descripcin de las reas de conocimiento 1.9.2 rea de Conocimiento de Requerimientos de software
Un requerimiento es definido como una propiedad que debe tener con el fin de resolver algunos problemas del mundo real. La primera subrea del conocimiento es Fundamentos de Requerimientos del software . Se incluyeron las definiciones de Requerimientos del Software, tambin los principales tipos de requerimientos: producto vs proceso, funcional vs no funcional y propiedades emergentes del producto. El subrea tambin describe la importancia de requerimientos cuantificables y diferencia entre requerimientos de sistemas y del software. La segunda subrea es el Proceso de Requerimientos, que introduce el proceso en s, orientando las otras cinco subreas y muestra como la ingeniera de requerimientos encaja dentro de otros procesos de ingeniera del software. En l se describen los modelos de procesos, los actores de los procesos, el soporte y gestin de procesos, mejora y calidad de procesos La tercera subrea es Obtencin de requerimientos, que se ocupa de donde vienen los requerimientos del software y como el ingeniero del software puede recogerlos. Incluye Fuentes de requerimientos y tcnicas de obtencin. La cuarta subrea, Anlisis de Requerimientos, tiene que ver con el proceso de analizar los requerimientos para: Detectar y resolver los conflictos entre los requerimientos. Descubrir los lmites del software y la forma en que deben interactuar con su entorno Elaborar los requerimientos del software para el sistema. En el anlisis de requerimientos incluye clasificacin de requerimientos, modelado conceptual, diseo Arquitectnico y la asignacin de requerimientos, y la negociacin de requerimientos. La quinta es la subrea es la especificacin de requerimientos. Se refiere a la produccin de un documento, o su equivalente electrnico, que puede ser sistemticamente revisado,
evaluado, y aprobado. Para sistemas complejos, hay tres tipos diferentes de documentos que se producen: definicin del sistema, especificacin de los requerimientos del sistema, especificacin de requerimientos del software. Esta subrea describe los tres documentos y sus actividades. La sexta es la subrea es validacin de requerimientos , cuyo objetivo es recoger todos los problemas antes de que se comprometan los recursos dirigidos a los requerimientos. Validacin de requerimientos se refiere al proceso de examinar los documentos necesarios para asegurar que estn definiendo el sistema correcto (es decir, el sistema que el usuario espera). Se subdivide en las descripciones de la conducta de revisin de requerimientos, de prototipos, y validacin de modelos y pruebas de aceptacin. En la sptima y ltima subarea se encuentran las Consideraciones prcticas. En la cual se describen los temas que deben entenderse en la prctica. El primer tema es el carcter iterativo de los procesos de requerimientos. Los siguientes tres temas son fundamentalmente sobre la gestin del cambio y el mantenimiento de los requerimientos en un estado que con precisin refleja el software a ser construido, o que ya se ha construido. Incluye la gestin del cambio, los atributos de requerimientos, y la localizacin de los requerimientos. El ltimo tema es la medicin de requerimientos.
La segunda subarea describe la Gestin de la Construccin. Los temas son los Modelos de Construccin, la Construccin de Planificacin, y Medicin de la Construccin. La tercera subarea abarca las Consideraciones prcticas. Los temas son el diseo de construccin, lenguajes de construccin, codificacin, pruebas de construccin, la reutilizacin, la calidad de la construccin, y la integracin.
5 - La quinta rea es la auditora de configuracin de software. Consta de una configuracin funcional, una configuracin fsica y auditoras de un punto de partida del software. 6 - La sexta rea es la gestin de lanzamiento y entrega del software, cubriendo la construccin del software y de la gestin de lanzamiento
1.9.11
El rea de Conocimiento de Calidad del Software se ocupa de la calidad del software, consideraciones que trascienden los procesos del ciclo de vida del software. Dado que la calidad del software es una preocupacin omnipresente en la ingeniera de software, tambin se considera en muchas de las otras (reas de conocimiento SWEBOK), y el lector se dar cuenta de los punteros a lo largo de esta (reas de conocimiento SWEBOK (el Area de Conocimiento (AC))). La descripcin de este (reas de conocimiento SWEBOK), abarca tres sub-reas. La primera describe la sub-rea Fundamentos de Calidad de Software tales como la cultura de ingeniera de software y la tica, el valor y los costos de calidad, modelos y caractersticas de calidad y la mejora de la calidad. El segundo abarca la sub-rea de Gestin de Calidad de Procesos de Software. Los temas son el aseguramiento de la calidad de software, verificacin y validacin, y las revisiones y auditoras. La tercera y ltima sub-rea describe Consideraciones prcticas relacionadas con la calidad del software. Los temas son los requisitos de calidad del software, la caracterizacin de defectos, tcnicas de gestin de calidad de software y medicin de la calidad del software
1.9.12
2 Requerimientos de software
Acrnimos DAG El Grafico Acclico Dirigido FSM Medicin del tamao funcional INCOSE Consejo Internacional de Ingeniera de Sistemas SADT Tcnica de diseo y anlisis estructurado UML Lenguaje de modelado unificado INTRODUCCION El rea de conocimiento (AC) de requerimientos del software se refiere a la obtencin, anlisis, especificacin, y validacin de requerimientos del software. Est ampliamente reconocido dentro de la industria del software que los proyectos de ingeniera de software son crticamente vulnerables cuando estas actividades se realizan mal. Los requerimientos del software expresan las necesidades y restricciones impuestas en un producto de software que contribuye a la solucin de algunos problemas de la vida real [kot00] El termino ingeniera de requerimientos es ampliamente usado en el campo para denotar la manipulacin sistemtica de requerimientos. Por razones de consistencia, este trmino no ser usado en la gua, Se ha decidido el uso del trmino de ingeniera para las actividades que se tratan sobre ingeniera del software. Por la misma razn Ingeniero de requerimientos un termino que aparece en algunas literaturas, tampoco se utilizar. En su lugar se utilizar el termino Ingeniero del software o, en algunos casos especficos, puede ser usado especialista de los requerimientos. La descomposicin del el rea de Conocimiento (AC) es ampliamente compatible con las secciones de IEE 12207 que se refiere a las actividades de requerimientos.(IEEE12207.1-96). Un riesgo inherente en la descomposicin propuesta es que el proceso de cascada puede ser inferido. Para evitar esto, la segunda subarea Proceso de requerimientos, es diseada para proporcionar una descripcin de alto nivel del proceso de requerimientos partiendo de los recursos y obligaciones bajo las cuales el proceso funciona y las cuales actan para configurarlo. Una descomposicin alternativa podra utilizar una estructura basada el producto (requerimientos del software, requerimientos del sistema, propiedades, casos de uso, y otras). El proceso basado en la descomposicin reflejan el hecho de que el proceso de requerimientos, si este es acertado, se debe considerar como un proceso que implica actividades complejas, firmemente unidas(ambas secuenciales y concurrentes), mas que una actividad discreta, una nica actividad realizada al principio de un proyecto de desarrollo de software.
muchas ms. Las funcionalidades de usuarios, los procesos de negocio, y los dispositivos son tpicamente complejos. Por consiguiente, los requerimientos, en particular de software son tpicamente una combinacin compleja de requerimientos de personas diferentes en niveles diferentes de una organizacin y del ambiente en que el software operar. Una propiedad esencial de todos los requerimientos del software es que son verificables. Puede ser difcil o costoso verificar ciertos requerimientos del software. Por ejemplo, la comprobacin del requerimiento de procesamientos en un call center, puede hacer necesario el desarrollo de un software de simulacin. Los requerimientos del software y el personal de calidad de software deben asegurar que los requerimientos puedan verificarse dentro de las restricciones en los recursos disponibles. Los requerimientos tienen otros atributos adems de las propiedades de comportamiento que ellos expresan. Los ejemplos comunes incluyen una tasa de prioridad para permitir los intercambios frente a los recursos finitos y un valor de estado para permitir supervisar el progreso del proyecto. Tpicamente, se identifican los requerimientos del software nicamente para que ellos puedan sujetarse al control de configuracin de software y pueden manejarse durante todo el ciclo de vida del software. [Kot00; Pfl01; Som05; Tha97]
amigable al usuario). Esto es particularmente importante para los requerimientos no funcionales. Dos ejemplos de requerimientos cuantificados son los siguientes: el software para un call center debe aumentar el rendimiento del procesamiento del centro por un 20%; y un sistema tendr una probabilidad de generar un error fatal durante cualquier hora de funcionamiento de menos de 1 * 10-8. El requerimiento de rendimiento de procesamiento est en un nivel muy alto y necesitar ser derivado en varios requerimientos detallados. El requerimiento de fiabilidad determinar firmemente la arquitectura del sistema. [Dav93; Som05]
Particularmente, el tema trata de como las actividades de obtencin, anlisis, especificacin y validacin se configuran para diferentes tipos de proyectos y de restricciones. El tema tambin incluye actividades que proporcionan entrada al proceso de requerimientos, tal como estudios de mercadeo y de viabilidad [Kot00; Rob99; Som97; Som05]
Clientes: Este grupo abarca aqullos han comisionado el software o quien representa el mercado del software de destino. Analistas de mercado: Un producto de mercadeo masivo no tendr un cliente comisionado as que las personas de marketing a menudo necesitan establecer lo que el mercado requiere y actuar como un cliente intermediario. Reguladores: Muchos dominios de aplicacin como por ejemplo el transporte pblico o la banca son regulados. El software en estos dominios debe cumplir con los requerimientos de estas autoridades reguladoras. Ingenieros de software: Estos individuos tienen un inters legtimo en beneficiarse del desarrollo del software, por ejemplo, reutilizando componentes en otros productos. Si, en este escenario, un cliente de un producto particular tiene requerimientos especficos que comprometen el potencial rehso de componentes, entonces los ingenieros de software deben pesar cuidadosamente sus propios intereses contra los del cliente.
No ser posible satisfacer perfectamente los requerimientos de cada involucrado, y es el trabajo de los ingenieros de software negociar los beneficios que son aceptables para los involucrados principales y dentro de presupuestario, tcnico, regulador, y otras obligaciones. Un pre requerimiento para esto es que se identifiquen a todos los involucrados, la naturaleza de sus intereses, y capturen sus requerimientos. [Dav93; Kot00; Rob99; Som97; You01]
Uno de los aspectos fundamentales de la buena ingeniera de software es que haya buena comunicacin entre los usuarios del software y los ingenieros. Antes de comenzar el desarrollo, los especialistas de requerimientos pueden formar el conducto para esta comunicacin. Ellos deben mediar entre el dominio de los usuarios del software (y otros involucrados) y el mundo tcnico del ingeniero de software.
10
Escenarios: Valiosos medios para proporcionar contexto a los requerimientos del usuario. Ellos permiten a los ingenieros del software proveer un marco de trabajo para cuestionar acerca de tareas de usuario por medio de preguntas como que ocurre si y cmo se hace esto. El tipo ms comn de escenario es el caso de uso. Hay un vnculo aqu con el tema (Modelo conceptual) porque la notacin de escenarios tales como los casos de uso y los diagramas son comunes en el modelado de software. Prototipos: Una herramienta valiosa para clarificar requerimientos confusos. Pueden actuar de una manera similar a los escenarios, proveyendo a los usuarios con un contexto dentro del cul pueden entender mejor la informacin que necesitan proporcionar. Hay un amplia gama de tcnicas de prototipado, desde bocetos de papel de diseos de pantalla, hasta versiones de prueba beta de productos software y una fuerte relacin de su uso para la obtencin de los requerimientos y el uso de prototipos para la validacin de los requerimientos (vase el tema 6.2 Prototipado). Reuniones de Facilitacin: El propsito de estas es intentar alcanzar un efecto aditivo por el que un grupo de personas puede obtener ms visin en los requerimientos del software que trabajado individualmente. Ellos pueden inspirarse y refinar las ideas que pueden ser difciles de traer a la superficie usando entrevistas. Otra ventaja es que se deje a los involucrados reconocer donde hay requerimientos en conflicto. Cuando se aplica bien, esta tcnica puede resultar en un rico y constante sistema de requerimientos que difcilmente sera realizable de otro modo. Sin embargo, las reuniones necesitan ser manejadas cuidadosamente (por lo tanto es necesario un facilitador) para evitar que una situacin que puede ocurra donde las capacidades crticas del equipo son erosionadas por lealtad del grupo, o los requerimientos reflejan de la poca franqueza de las personas y favoreciendo. Observacin: La importancia del contexto del software dentro del ambiente de organizacin ha conducido a la adaptacin de las tcnicas de observacin para la obtencin de los requerimientos. Los ingenieros del software aprenden sobre las tareas del usuario sumergindose en la observacin de cmo los usuarios obran recprocamente con su software. Estas tcnicas son relativamente costosas, pero son instructivas porque ilustran que muchas tareas del usuario y procesos del negocio son demasiado sutiles y complejas para que sus a personas los describan fcilmente.
11
Si el requerimiento es funcional o no funcional (vase el tema 1.3 requerimientos funcionales y no funcionales). Si el requerimiento est derivado de uno o ms requerimientos de alto nivel o una propiedad emergentes (vase las caractersticas emergentes del tema 1.4) o est impuesto directamente ante el software por un involucrado u otra fuente. Si el requerimiento es sobre en el producto o sobre el proceso. Los requerimientos sobre el proceso pueden restringir la eleccin de promovedores, a adaptar el proceso de ingeniera del software o los estndares que an sido adheridos. La prioridad del requerimiento. Generalmente la ms alta prioridad, la ms esencial es el requerimiento para satisfacer las metas finales del software. A menudo clasificado en una escala de punto fijo tal como obligatorio, altamente deseable, deseable u opcional, la prioridad a menudo tiene que ser equilibrada con el coste de desarrollo e implementacin. El alcance del requerimiento. El alcance se refiere al grado al cual un requerimiento afecta el software y componentes del software. Algunos requerimientos, particularmente los no funcionales, tienen un alcance global que no puede ser asignado a un componente discreto. Por lo tanto, el requerimiento con alcance global puede afectar fuertemente a la arquitectura del software y el diseo de muchos componentes, mientras que uno puede con un alcance estrecho ofrecer un nmero de opciones del diseo y no afectar demasiado a la satisfaccin de otros requerimientos. Volatilidad/estabilidad. Algunos requerimientos cambiarn durante el ciclo de vida del software, y nivelarse durante el proceso de desarrollo. Es til hacer estimaciones de la probabilidad de que un requerimiento cambie. Por ejemplo, en una aplicacin bancaria, los requerimientos para las funciones que calculan los intereses de las cuentas de usuario son mas estables que los requerimientos para soportar un tipo particular de cuenta exenta de impuestos. Lo anterior refleja una caracterstica fundamental del dominio de las actividades bancarias (esas cuentas pueden ganar intereses), mientras que el ltimo se puede dejar obsoleto por un cambio en la legislacin del gobierno. Sealar requerimientos potencialmente voltiles puede ayudar al ingeniero del software a establecer un diseo que sea ms tolerante al cambio.
Otras clasificaciones pueden ser apropiadas, dependiendo de la prctica normal y del uso que se le d. Hay un fuerte solapamiento entre la clasificacin de los requerimientos y las cualidades de los requerimiento (vase las cualidades de los requerimiento del punto 7.3).
12
Los requerimientos de proceso del cliente. Los clientes pueden imponer su notacin o mtodo favorecido, o prohibir cualquiera que le sea desconocido. Este factor puede estar en conflicto con el factor anterior. La disponibilidad de mtodos y de herramientas. Notaciones o mtodos que son mal apoyados por el entrenamiento y las herramientas pueden no alcanzar la aceptacin esperada aunque se satisfagan tipos particulares de problemas. Ntese que, en casi todos los casos, es til comenzar construyendo un modelo de contexto del software. El contexto del software proporciona una conexin entre el software previsto y su ambiente externo. Esto es crucial para entender el contexto del software en su ambiente operacional e identificar sus interfaces con el ambiente. El tema de modelado se junta firmemente con la de los mtodos. Para los propsitos prcticos, un mtodo es una notacin (o sistema de notaciones) apoyada por un proceso que dirige la utilizacin de la notacin. Hay escasa evidencia emprica para apoyar las demandas de superioridad de una notacin sobre otra. Sin embargo, la extensa aceptacin de un mtodo o de una notacin particular puede conducir a nivel industrial al beneficio de habilidades y de conocimientos. sta es actualmente la situacin con el UML (Lenguaje de Modelado Unificado). (UML04) El modelado formal usa notaciones basadas en matemtica discreta, y que son detectables al razonamiento lgico, han tenido impacto en algunos dominios especializados. stos puede ser impuesto por los clientes o los estndares y puede ofrecer ventajas que obligan al anlisis de ciertas funciones o componentes crticos. Este tema no busca ensear un estilo o una notacin de modelado particular sino proporcionar una gua con el propsito de modelar. Dos estndares proporcionan las notaciones que pueden ser tiles en desarrollo conceptual realizando modelado-IEEE conceptual Std 1320.1, IDEF0 para el modelado funcional; e IEEE Std 1320.2, IDEF1X97 (IDEFObject) para modelado de la informacin.
13
IEEE Std 1471-2000, prctica recomendada para la descripcin arquitectnica de sistemas orientados al software, sugiere un enfoque de las mltiples vistas para describir la arquitectura de sistemas y de sus tems del software. (IEEE1471-00)
14
se especifican. En sentido estricto, la especificacin de requerimientos del sistema es una actividad de la ingeniera de sistemas y esta fuera del alcance de esta gua. IEEE Std 1233 es una gua para la evolucin de los requerimientos del sistema. (IEEE1233-98)
15
los requerimientos son validados. El objetivo es recoger cualquier problema antes de que los recursos se comprometan a abordar los requerimientos. La validacin de requerimientos se refiere al proceso de examinar el documento de los requerimientos para asegurarse de que este define el software adecuadamente (es decir, el software que la los usuarios esperan). [Kot00]
2.6.2 Prototipado
Prototipos es comnmente un medio para validar interpretacin de los requerimientos del software por parte del ingeniero software, as como para capturar nuevos requerimientos. Al igual que con obtencin de requerimientos, hay una serie de tcnicas de prototipado y un numero de puntos en el proceso donde la validacin de prototipos puede ser apropiado. La ventaja de los prototipos es que pueda hacer que sea ms fcil de interpretar las suposiciones del ingeniero de software y, en caso necesario, dar informacin til sobre por qu estn equivocados. Por ejemplo, la dinmica del comportamiento de una interfaz de usuario se puede entender mejor a travs de un prototipo de animacin que a travs de la descripcin textual o modelos grficos. Tambin hay desventajas, sin embargo. Estos incluyen el peligro de distraer la atencin de los usuarios de la funcionalidad bsica subyacente por cuestiones de esttica o problemas de calidad con el prototipo. Por esta razn, varias personas recomiendan prototipos que eviten el software, tales como bocetos, basada en maquetas. Los prototipos pueden ser costosos para el desarrollo. Sin embargo, si evitan el despilfarro de recursos por tratar de satisfacer los requerimientos errneos, su costo puede ser ms fcilmente justificable.
16
17
que debe aplicarse a los cambios propuestos. Este tiene fuertes vnculos con AK gestin de configuracin de software KA.
18
3 Diseo de software
SIGLAS LDA Lenguajes de Descripcin de Arquitectura DER Diagramas Entidad-Relacin IDL Interfaz de descripcin de lenguajes DFA Diagrama de flujo de datos PLD Pseudo-cdigo y de Lenguajes Diseo del Programa DBC diseo basado en componentes El diseo es definido en [IEEE610.12-90] tanto como "el proceso de definir la arquitectura, componentes, interfaces y otras caractersticas de un sistema o componente "y" el resultado de [ese proceso]. Visto como un proceso, en la ingeniera de software, el diseo es la actividad del ciclo de vida en la que se analizan los requerimientos de software para producir una descripcin de la estructura interna del software que servir como base para su construccin. Ms precisamente, un diseo de software (el resultado) debe describir la arquitectura del software, es decir, cmo el software se descompone y organizados en los componentes y las interfaces entre esos componentes. Tambin debe describir los componentes en un nivel de detalle que permiten su construccin. El diseo de software juega un papel importante en el desarrollo software: permite a los ingenieros de software: producir varios modelos que forman una especie de prototipo de la solucin que se implementara. Podemos analizar y evaluar estos modelos para determinar si nos van a permitir cumplir con los requerimientos. Tambin se puede examinar y evaluar varias soluciones alternativas para evaluar ventajas y desventajas. Por ltimo, podemos utilizar los modelos resultantes para planificar el desarrollo de actividades, adems de utilizarlos como entrada y punto de partida de construccin y de pruebas. En una lista de modelos de los procesos de ciclo de vida del software IEEE / EIA 12207, tales como los procesos del ciclo de vida del software [IEEE12207.0-96], diseo de software consta de dos actividades que se ajustan entre el anlisis de requerimientos de software y la construccin de software: Diseo arquitectnico de software (A veces llamado diseo nivel superior): describe la estructura de software de nivel superior y la organizacin y la identificacin de los distintos componentes Diseo detallado de software: describiendo cada componente lo suficiente como para permitir su construccin. En cuanto al alcance del rea del conocimiento de diseo de software (AC), la actual descripcin de rea del conocimiento (AC) no discute todos los temas cuyo nombre contenga la palabra "diseo". En la terminologa de Tom DeMarco (DeM99), el rea de Conocimiento (AC) discutida en este captulo trata principalmente el diseo (la descomposicin diseo, asignacin de partes de componentes de software). Sin embargo, debido a su importancia en el creciente campo de la arquitectura software, tambin se ocupar del diseo (Familias patrones de diseo). Poe el contario el rea del conocimiento de diseo de software no se ocupa de que el diseo (lnea del diseo, generalmente se realiza durante el proceso de requerimientos de software con el objetivo de conceptualizar y especificando el software para satisfacer las necesidades descubiertas y requerimientos), ya que este tema debe ser considerado parte de los requerimientos anlisis y especificacin de condiciones. La descripcin del rea de conocimiento de diseo de software esta relaciona especficamente con los requerimientos de Software, Construccin de Software, Gestin de Ingeniera de software, Calidad de Software y dems disciplinas relacionadas con la Ingeniera de Software.
19
3.1.3.1
El diseo arquitectnico
El diseo arquitectnico describe cmo el software es descompuesto y organizado en componentes (La arquitectura de software) [IEEEP1471-00]
3.1.3.2
Diseo detallado
se describe como el comportamiento especfico de
El resultado de este proceso es un conjunto de modelos y artefactos que registran las decisiones ms importantes que se han adoptado. [Bud04:c2; IEE1016-98; Lis01:c13; Pre04:c9]
3.1.4.1
Abstraccin
La abstraccin es "el proceso de descomposicin de la informacin para que las cosas que son diferentes pueden ser tratados como si fueran los mismos. " [Lis01] En el contexto de diseo de software, hay dos mecanismos de abstraccin clave: parametrizacin y especificacin. La abstraccin por especificacin da lugar a tres tipos principales de abstraccin: de
20
3.1.4.2
Acoplamiento y cohesin
Acoplamiento se define como la fuerza de la relaciones entre los mdulos, mientras que la cohesin se define por la relacin entre los elementos que componen un mdulo [Bas98:c6; Jal97:c5; Pfl01:c5; Pre04:c9]
3.1.4.3
La descomposicin y la modularizacin
Descomposicin y modularizacin de un software de gran tamao, en un nmero de pequeos programas independependientes, por lo general con el objetivo de ubicar diferentes funcionalidades o responsabilidades sobre los diferentes componentes [Bas98:c6; Bus96:c6; Jal97:c5; Pfl01:c5; Pre04:c9]
3.1.4.4
Encapsulacin / ocultacin de informacin significa agrupar y empaquetar los elementos y los detalles internos de una abstraccin y haciendo estos detalles inaccesibles. [Bas98:c6; Bus96:c6; Jal97:c5; Pfl01:c5; Pre04:c9]
3.1.4.5
La separacin de la interfaz y de la implementacin, implica la definicin de un componente mediante la especificacin de un interfaz pblica, conocida por los clientes, separada de los detalles de cmo el componente es realizado. [Bas98:c6; Bos00:c10; Lis01:c1, c9]
3.1.4.6
El logro de la suficiencia, completitud, y primitivismo significa garantizar que un componente de software capture todas las caractersticas importantes de una abstraccin, y nada ms [Bus96:c6; Lis01:c5]
3.2.1 Concurrencia
Cmo descomponer el software en procesos, tareas e hilos y tratar temas relacionados con la eficiencia, la atomicidad, la sincronizacin, y los asuntos de planificacin . [Bos00: c5; Mar02: CDS; Mey97: C30; Pre04: c9]
21
22
Estructura general (por ejemplo, las capas, las tuberas y los filtros, black-board) Sistemas distribuidos (por ejemplo, cliente-servidor, tres niveles, broker) Sistemas interactivos (por ejemplo, Model0-Vista-Controdor, Presentacin-AbstraccinControl) Sistemas adaptable (por ejemplo, micro-kernel, reflexin) Otros (por ejemplo, basado en reglas). por lotes, los intrpretes, control de procesos,
23
3.4.3 Medidas
Las medidas pueden ser utilizadas para evaluar o estimar cuantitativamente diversos aspectos del tamao de un diseo de software, estructura, o la calidad. La mayora de las medidas que se han propuesto por lo general dependen del enfoque utilizado para la produccin del diseo. Estas medidas se clasifican en dos grandes categoras: Medidas de diseo orientadas a funcin (Estructurado): la estructura del diseo, obtenidos principalmente a travs de la descomposicin funcional; generalmente representado como un grfico de la estructura (A veces llamado un diagrama jerrquico) en el que las diversas medidas se pueden calcular [Jal97: C5, C7, Pre04: C15] Medidas de diseo orientado a objetos: La estructura general del diseo es a menudo representado como un diagrama de clase, en el que las diversas medidas se pueden calcular. Las medidas de las propiedades del contenido interno de cada clase tambin se puede calcular [Jal97:c6, c7; Pre04:c15]
24
Diagramas de componentes: Usado para representar un conjunto de componentes ("Parte fsica y reemplazable [s] de un sistema que [conforme] y [proporcionar] la realizacin de un conjunto de las interfaces " [Boo99]) y sus interrelaciones [Boo99:c12,c31]. Tarjetas de clase responsabilidad y colaboracion (CRCs): Usadas para indicar los nombres de los componentes (clase), sus responsabilidades, y los nombres de los componentes que colaboran " [Boo99: c4; Bus96]. Diagramas de Despliege: Usados para representar un conjunto de nodos (Fsica) y sus interrelaciones, y, por tanto, para moldear los aspectos fsicos de un sistema [Boo99: C30]. Diagramas de entidad-relacin (ERDs): utilizados para representar los modelos conceptuales de los datos almacenados en sistemas de informacin [Bud04: c6; Dor02: v1c5; Mar02: RD]. Lenguajes descripcin de Interfaz (IDLs): Lenguajes de programacin que se utilizan para definir las interfaces (nombres y tipos de operaciones de exportacin) de los componentes de software [Bas98: c8, Boo99: C11]. Diagramas de estructurales de Jackson: se utiliza para describir las estructuras de datos en trminos de secuencia, seleccin e iteracin [Bud04: c6; Mar02: RD]. Diagramas de estructura: se utiliza para describir la estructura de llamada de los programas (En el cual describe el llamado de los mdulos, y como un modulo es llamado por otro modulo) [Bud04: c6; Jal97: c5; Mar02: DR;Pre04: C10].
25
comportamiento de un procedimiento o mtodo generalmente en la fase de proyecto. [Bud04: c6; Fre83: VII;Jal97: c7; Pre04: c8, c11].
26
27
4 Construccin de software
Acrnimos OMG: Grupo de manejo de objetos UML: Lenguaje de Modelado Unificado INTRODUCCION El termino construccin de software hace referencia a la creacin detallada de funcionalidad a travs de una combinacin de cdigos, verificacin, pruebas de unidad, pruebas de integracin y depuracin. El rea de conocimiento de la construccin de software esta unido a todas las reas de conocimiento, mas fuertemente al diseo y prueba de software. Esto se debe a que el proceso mismo de construccin de software involucra tanto el diseo significativo de software como las actividades de prueba. Tambin utiliza las salidas del diseo y proporciona una de las entradas para las pruebas, consistiendo estas actividades en el diseo y en las pruebas, y en este caso no en las KAs. Las fronteras detalladas entre el diseo, construccin y prueba (si es que hay alguna) variarn dependiendo de los procesos del ciclo de vida del software que estn siendo usados en el proyecto. A pesar de que se pueda realizar parte del diseo detallado antes de la construccin, mucho del trabajo del diseo se lleva a cabo durante la actividad misma de la construccin. Por lo que el KA de Construccin del Software est vinculado muy de cerca al KA de Diseo del Software. Por medio de la construccin los ingenieros del software realizan tanto pruebas de unidad, como pruebas de integracin de su trabajo. As que el rea del conocimiento de la construccin de software tambin esta muy relacionado a el rea de conocimiento de prueba de de software. La construccin de software tpicamente produce los volmenes mas altos de tems de configuracin que necesitan ser manejados en un proyecto de software (archivos fuentes, contenidos, casos de prueba y dems). As que el rea de conocimiento de construccin de software esta tambin muy relacionada el rea de conocimiento Gestin de la configuracin del software. Ya que la construccin de software confa fuertemente en herramientas y mtodos y es probablemente el rea de conocimiento que ms los usa, estas se encuentran relacionadas a las herramientas de la ingeniera del software y al rea del conocimiento de los mtodos y herramientas. Mientras que la calidad del software es importante en todas las reas del conocimiento, el cdigo es lo ltimo que se entrega en un proyecto de software. As que la calidad del software esta tambin unida a la construccin de software. Entre las Disciplinas Descritas de la Ingeniera del Software el KA de Construccin del Software es lo ms parecido a la ciencia informtica en su uso del conocimiento de algoritmos y de las prcticas detalladas de codificacin, ambas son consideradas, con frecuencia, como pertenecientes al dominio de la ciencia informtica. Tambin est relacionada con la gestin del proyecto en la medida en que la gestin de la construccin pueda presentar retos considerables. Descomposicin de los temas de Construccin de Software A continuacin se presenta la descomposicin del KA de la Construccin del Software junto con breves descripciones de los temas ms importantes asociados a este. La figura 1 ofrece una representacin grfica de la descomposicin de alto nivel de las divisiones de esta KA.
28
Los primeros tres conceptos aplican tanto al diseo como a la construccin. Las siguientes secciones definen estos conceptos y describen como aplican a la construccin.
29
La anticipacin al cambio esta soportada en muchas tcnicas especficas resumidas en el tema 3.3 Codificacin.
Uso de estndares externos. La construccin depende del uso de estndares externos para lenguajes de construccin, herramientas de construccin, interface tcnicas e interacciones entre construccin de software y otras reas de conocimiento. Los estndares provienen de numerosas fuentes, incluyendo especificaciones de interfaces de Hardware y software tales como las de OMG Object Management Group, IEEE (Instituto de Ingenieros de Elctrica y Electrnica) o la ISO (Organizacin de estndares Internos). Uso de estndares internos. Los estndares pueden ser tambin creados en una base organizacional a nivel corporativo o para uso en proyectos especficos. Estos estndares apoyan la coordinacin de actividades en grupo, minimizan la complejidad, anticipan el cambio y construyen para verificar.
30
Por consiguiente, lo que est considerado como construccin depende hasta cierto grado del modelo de ciclo de vida utilizado.
texto utilizados tanto en los sistemas operativos de Windows como de Unix son ejemplos de esto, y otro ejemplo son las listas de seleccin en forma de men de algunos generadores de programas. Los lenguajes de herramientas se utilizan para construir aplicaciones partiendo de las herramientas (conjuntos integrados de partes reutilizables especficas de las aplicaciones), y son ms complejos que los lenguajes de configuracin. Los lenguajes de herramientas pueden definirse explcitamente como lenguajes de programacin de aplicaciones (por ejemplo, scripts), o pueden simplemente estar implcitos en el conjunto de interfaces de las herramientas. Los lenguajes de programacin son el tipo ms flexible de lenguaje de construccin. Tambin son los que menos informacin contienen acerca de las reas especficas de la aplicacin y los procesos de desarrollo, y por tanto requieren el mayor entrenamiento y destreza posibles para utilizarlo con eficacia. Existen tres tipos generales de notacin utilizados para los lenguajes de programacin, a saber: Lingsticos Formales Visuales
Las notaciones lingsticas se distinguen en particular por la utilizacin de cadenas de texto del tipo palabra para representar construcciones complejas de software, y por la combinacin en patrones de tales cadenas del tipo palabra que tienen una sintaxis del tipo sentencia. Utilizadas adecuadamente, cada una de estas cadenas debera tener una fuerte connotacin semntica ofreciendo un entendimiento intuitivo inmediato de lo que sucedera cuando se ejecute la construccin del software subyacente. Las notaciones formales se apoyan menos en los significados de las palabras y cadenas de texto intuitivos y de todos los das, y ms en las definiciones respaldadas por definiciones precisas, sin ambigedad, y formales (o matemticas). Las notaciones de construccin formal y los mtodos formales estn en el corazn de la mayora de las formas de programacin de sistemas, donde la precisin, el comportamiento del tiempo, y la capacidad de realizar pruebas son ms importantes que la facilidad de mapeo a un lenguaje natural. Las construcciones formales tambin utilizan modos de combinar smbolos definidos con precisin que evitan la ambigedad de muchas construcciones del lenguaje natural. Las notaciones visuales se apoyan bastante poco en las notaciones orientadas al texto tanto de la construccin lingstica como de la formal, y en cambio s se apoyan en una interpretacin visual directa y en la colocacin de las entidades visuales que representan al software subyacente. La construccin visual tiende a estar un tanto limitada por la dificultad de hacer declaraciones complejas utilizando slo el movimiento de entidades visuales en un despliegue. Sin embargo, tambin puede convertirse en un arma poderosa en los casos en donde la principal tarea de programacin es simplemente construir y ajustar una interfaz visual a un programa, cuyo comportamiento detallado ha sido definido anteriormente.
4.3.3 Codificacin
[Ben00; IEEE12207-95; McC04] Las consideraciones siguientes se aplican a la actividad de construccin del cdigo del software: Tcnicas para crear cdigo fuente comprensible, que incluye la asignacin de nombres y el esquema del cdigo fuente. Utilizacin de clases, tipos enumerados, variables, constantes predefinidas, y otras entidades similares Utilizacin de estructuras de control. Manejo de las condiciones de error tanto lo errores planeados como las excepciones (la entrada de datos malos, por ejemplo)
32
Prevencin de brechas en la seguridad a nivel de cdigo (el bfer o el ndice de la matriz se desborda, por ejemplo) Utilizacin de recursos por medio del uso de mecanismos de exclusin y disciplina en el acceso serial a recursos reutilizables (incluyendo hilos o bloqueos de bases de datos) Organizacin del cdigo fuente (en declaraciones, rutinas, clases, paquetes u otras estructuras) Documentacin del cdigo Puesta a punto del cdigo
El propsito de las pruebas de construccin es reducir la brecha entre el tiempo en el que se introducen fallos en el cdigo y el tiempo en el que se detectan esos fallos. En algunos casos, las pruebas de construccin se llevan a cabo despus de la escritura del cdigo. En otros casos, se pueden elaborar casos de pruebas antes de que se escriba el cdigo. Es tpico de las pruebas de construccin el incluir un subconjunto de tipos de pruebas, que se describen en el KA de Pruebas del Software. Por ejemplo, no es tpico de las pruebas de construccin el incluir las pruebas del sistema, las pruebas alfa, las pruebas beta, las pruebas de estrs, las pruebas de construccin, las pruebas de facilidad de uso, u otros tipos de pruebas ms especializadas. Se han publicado dos estndares sobre dicho tema: IEEE Std 829-1998, IEEE Standard for Software Test Documentation and IEEE Std 1008-1987, IEEE Standard for Software Unit Testing. Se pueden ver tambin los sub-temas correspondientes en el KA de Pruebas del Software: 2.1.1 Pruebas Unitarias y 2.1.2 Pruebas de Integracin para un material de referencia ms especializado.
4.3.5 Reutilizacin
[IEEE1517-99; Som05]. Tal y como se afirma en la introduccin del (IEEE1517-99): El implementar la reutilizacin del software conlleva algo ms que crear y utilizar libreras de recursos. Requiere formalizar la prctica de la reutilizacin por medio de la integracin de procesos y actividades de reutilizacin en el ciclo de vida del software. Sin embargo, la reutilizacin tiene suficiente importancia en la construccin del software como para dedicarle aqu un tema. Las tareas relacionadas con la reutilizacin en la construccin del software durante su codificacin y pruebas son: La seleccin de unidades, bases de datos, procedimientos de pruebas o datos de pruebas reutilizables. La evaluacin de la posibilidad de reutilizacin del cdigo o de las pruebas. Comunicar la informacin sobre reutilizacin realizada en el cdigo nuevo, los procedimientos de pruebas o los datos de pruebas.
33
La tcnica o tcnicas especficas elegidas dependen de la naturaleza del software que se est construyendo, as como del conjunto de habilidades de los ingenieros del software que llevan a cabo la construccin. Las actividades de calidad de la construccin se distinguen de las otras actividades de calidad por su enfoque. Las actividades de calidad de la construccin se centran en el cdigo y en los artefactos que estn estrechamente relacionados con el cdigo: diseos en pequea escala en oposicin a otros artefactos que estn menos directamente ligados al cdigo, tales como requisitos, diseos de alto nivel y planes.
4.3.7 Integracin
[Bec99; IEEE12207-95; McC04] Una actividad clave durante la construccin es la integracin de rutinas, clases, componentes y subsistemas construidos por separado. Adems, un sistema particular del software podra necesitar ser integrado con otros sistemas de software o de hardware. Los intereses relacionados con la integracin de la construccin incluyen planificar la secuencia en la que se integrarn los componentes, crear andamiajes que soporten versiones provisionales del software, determinar el grado de pruebas y la calidad del trabajo realizado sobre los componentes antes de que sean integrados, y determinar los puntos en el proyecto en los que se prueban las versiones provisionales del software.
34
5 Pruebas de software
INTRODUCCIN Hacer pruebas es una actividad que tiene el objetivo de evaluar y mejorar la calidad del producto, identificando defectos y problemas. Las pruebas del software consisten en verificar el comportamiento de un programa dinmicamente a travs de un grupo finito de casos de prueba, debidamente seleccionados del, tpicamente, mbito de ejecuciones infinito, en relacin al comportamiento esperado. En la definicin anterior las palabras en itlica se corresponden con aspectos esenciales en la identificacin del rea de Conocimiento de las Pruebas del Software. En particular: Dinmicamente: Este trmino significa que hacer pruebas siempre supone ejecutar el programa con entrada de datos (valorados). Es preciso afirmar que la entrada de valores no es siempre suficiente para definir una prueba, dado que un sistema complejo y no determinista podra tener diferentes comportamientos con las mismas entradas de datos, dependiendo del estado en el que se encuentre. En cualquier caso, en esta rea de Conocimiento (AC), mantendremos el trmino de entrada de datos, asumiendo la convencin de que el trmino incluye un estado del sistema especfico, en los casos en que sea necesario. Existen otras tcnicas complementarias a las pruebas, aunque diferentes, descritas en el rea de Conocimiento (AC) sobre la Calidad del Software. Finito: Incluso en programas sencillos, tericamente podra haber tantas pruebas que realizar, que hacer pruebas exhaustivas podra llevar meses o aos. Esta es la razn por la que en la prctica el conjunto completo de pruebas se podra considerar infinito. Hacer pruebas siempre supone un compromiso entre recursos y calendarios de trabajo limitados, por un lado, y necesidades inherentes de pruebas ilimitadas, por otro. Seleccionados: La diferencia esencial entre las distintas tcnicas de pruebas propuestas se encuentra en cmo se escoge el conjunto de pruebas. Los ingenieros de software deben ser conscientes de que criterios de seleccin distintos pueden producir grados de efectividad muy diferentes. La forma de identificar el criterio de seleccin de pruebas ms apropiado para un conjunto de condiciones particulares es un problema complejo; en la prctica se usa la experiencia en el diseo de pruebas y tcnicas de anlisis de riesgo. Esperado: Debera ser posible, aunque a veces no sea fcil, decidir si el resultado observado de la ejecucin de un programa es aceptable o no, porque si no el esfuerzo de realizar las pruebas sera intil. El comportamiento observado se puede comprobar con los resultados esperados por el usuario (normalmente conocido como pruebas de validacin), con las especificaciones (pruebas de verificacin), o, finalmente, contra el comportamiento esperado de los requisitos implcitos o expectativas razonables. Vea ms detalles en el rea de Conocimiento (AC) de Requerimientos del Software, punto 6.4 Pruebas de Aceptacin. La apreciacin de las pruebas del software ha evolucionado hacia una forma ms constructiva. Ya no se asume que realizar pruebas es una tarea que empieza solamente cuando la fase de programacin se ha completado, y que tiene el nico propsito de detectar errores. Las pruebas del software se ven ahora como una actividad que debera estar presente durante todo el proceso de desarrollo y mantenimiento y es en s misma una parte importante de la construccin del producto. Es ms, la planificacin de las pruebas debera empezar en las primeras etapas del proceso de requisitos, mientras que los planes y procedimientos de pruebas deberan desarrollarse y posiblemente refinarse sistemticamente segn avanza el desarrollo. La planificacin de las pruebas y las propias actividades de diseo constituyen una informacin muy til que ayuda a los diseadores de software a identificar debilidades potenciales (tales como elementos del diseo que han pasado desapercibidos, contradicciones de diseo, u omisiones o ambigedades en la documentacin). En la actualidad se considera que la prevencin es la actitud adecuada en lo que respecta a la calidad: obviamente es mejor evitar problemas que solucionarlos. Realizar pruebas debe verse
35
como un medio para verificar, no slo si la prevencin ha sido efectiva, si no para identificar fallos en aquellos casos en los que, por alguna razn, no lo ha sido. Aunque quizs sea obvio, vale la pena reconocer que, incluso despus de una jornada de pruebas extensiva, el software an podra contener errores. Las acciones de mantenimiento correctivas proporcionan la solucin a errores en el software, despus de que ste ha sido entregado. El rea de Conocimiento (AC) del Mantenimiento del Software aborda los temas relacionados con el mantenimiento del software. En el rea de Conocimiento (AC) del Mantenimiento del Software (vase punto 3.3 Tcnicas de Gestin de Calidad del Software), las tcnicas de gestin de la calidad del software se dividen entre tcnicas estticas (sin ejecucin de cdigo) y tcnicas dinmicas (con ejecucin de cdigo). Ambas categoras son tiles. Esta rea de Conocimiento (AC) se centra en tcnicas dinmicas. Las pruebas del software tambin estn relacionadas con la construccin del software (vase la seccin 3.4 tcnicas basadas en defectos). Las pruebas de unidad y de integracin estn ntimamente relacionadas con la construccin del software, si no son parte de la misma. Descomposicin de temas La primera subrea describe los Fundamentos de las Pruebas del Software. Cubre las definiciones bsicas del rea de pruebas del software, la terminologa bsica y los trminos clave, as como las relaciones con otras actividades. La segunda subrea, Niveles de Pruebas, est formada por dos puntos ortogonales: el primero (2.1) enumera los niveles en que tradicionalmente se subdividen de manera amplia las pruebas de software, mientras que el segundo (2.2) considera las pruebas para situaciones o propiedades especficas y se conoce como objetivos de las pruebas. No todos los tipos de pruebas se pueden aplicar a todos los productos de software, tampoco se han enumerado todos los tipos posibles. El objeto y los objetivos de las pruebas determinan la forma en que un grupo de pruebas se identifica, en lo que se refiere a su consistencia cuntas pruebas son suficientes para conseguir el objetivo especificado y su composicin qu casos de prueba se deberan seleccionar para conseguir el objetivo especificado (aunque normalmente la parte para conseguir el objetivo especificado es implcita y slo se usa la primera parte de las dos frases anteriores). Los criterios para responder a la primera cuestin se denominan criterios de idoneidad las pruebas, mientras que los que se refieren a la segunda cuestin se denominan criterios de seleccin de las pruebas. En las ltimas dcadas se han desarrollado varias Tcnicas de Pruebas y an se estn proponiendo nuevas tcnicas. El conjunto de pruebas comnmente aceptadas estn enumeradas en la subrea 3. Las Mediciones de Pruebas se enumeran en la subrea 4. Finalmente, los aspectos relacionados con el Proceso de las Pruebas estn enumerados en la subrea 5.
5.1 Fundamentos de las Pruebas del Software 5.1.1 Terminologa relacionada con las pruebas 5.1.1.1 Definiciones de pruebas y terminologa relacionada
[Bei90:c1; Jor02:c2; Lyu96:c2s2.2] (IEEE610.12-90) Vea una introduccin detallada del KA de las Pruebas del Software en las referencias recomendadas.
5.1.1.2
36
En la literatura sobre Ingeniera del Software, se usan diversos trminos para describir un funcionamiento incorrecto, particularmente falta, error, fallo y otros trminos. Esta terminologa se define detalladamente en el estndar IEEE 610.12- 1990, Standard Glossary of Software Engineering Terminology (IEEE610-90) y tambin se discute en el KA de la Calidad del Software. Es esencial distinguir claramente entre la causa de un funcionamiento incorrecto, en cuyo caso se usan trminos como error y defecto, y los efectos no deseados observados en los servicios proporcionados por un sistema, que se llamarn fallos. Hacer pruebas puede descubrir fallos, pero es el error el que se puede, y se debe, eliminar. En cualquier caso, debera aceptarse que no es siempre posible identificar unvocamente las causas de un fallo. No existe ningn criterio terico que pueda usarse para determinar qu error produce el fallo observado. Podra decirse que hay que corregir el error para eliminar el problema, pero otros cambios tambin podran funcionar. Para evitar ambigedades, algunos autores prefieren hablar de entradas que causan fallos (Fra98) en vez de errores o lo que es lo mismo, aquellos grupos de entradas de datos que hacen que el fallo aparezca.
5.1.2 Cuestiones clave 5.1.2.1 Criterios de seleccin de pruebas/Criterios de idoneidad de pruebas (o finalizacin de pruebas)
[Pfl01:c8s7.3; Zhu97:s1.1] (Wey83; Wey91; Zhu97) Un criterio de seleccin de pruebas es un medio para decidir cules deben ser los casos de prueba adecuados. Un criterio de seleccin se puede usar para seleccionar casos de pruebas o para comprobar si el grupo de casos de prueba es apropiado o sea, para decidir si se puede terminar de hacer pruebas. Vase el apartado Finalizacin de la seccin 5.1 Consideraciones prcticas.
5.1.2.2
[Bei90:c1s1.4; Per95:c21] (Fra98) Realizar pruebas consiste en observar un conjunto de ejecuciones del programa. Hay diferentes objetivos que nos pueden guiar en la seleccin del conjunto de pruebas: la efectividad del grupo de pruebas slo se puede evaluar en funcin del objetivo seleccionado.
5.1.2.3
[Bei90:c1; Kan99:c1] Cuando realizamos pruebas para la identificacin de defectos, una prueba es satisfactoria si produce un error en el sistema. Es ste un enfoque completamente diferente al de realizar pruebas para demostrar que el software satisface las especificaciones u otro conjunto de propiedades deseadas, en cuyo caso una prueba satisfactoria es aquella en la que no se observan errores (al menos significativos).
5.1.2.4
[Bei90:c1] (Ber96, Wey83) Un orculo es cualquier agente (humano o mecnico) que decide si un programa se comporta correctamente durante una prueba y consecuentemente produce un veredicto de superada o fallida. Hay varios tipos diferentes de orculos, y la automatizacin de orculos puede ser muy difcil y costosa.
5.1.2.5
[Kan99:c2] (How76) La teora de pruebas advierte en contra de un nivel injustificado de confianza en una serie de pruebas superadas. Desafortunadamente, la mayor parte de los resultados establecidos en la teora de pruebas son negativos, en el sentido de que establecen aquello que la prueba no puede conseguir, en vez de lo que consigui. La ms famosa cita a este respecto es el
37
aforismo de Dijkstra que dice las pruebas de un programa se pueden usar para mostrar las presencia de errores, pero nunca para demostrar su ausencia. La razn obvia es que realizar un grupo completo de pruebas no es posible en el software real. Como consecuencia, las pruebas deben dirigirse en funcin de los riesgos y por tanto pueden verse como una estrategia de gestin de riesgo.
5.1.2.6
[Bei90:c3]
Los caminos no alcanzables son aquellos caminos de control que no pueden ejecutarse para ninguna entrada de datos. Son un problema importante en las pruebas orientadas por caminos y particularmente en las derivaciones automticas de entradas de pruebas que se emplean en las tcnicas de pruebas basadas en cdigo.
5.1.2.7
[Bei90:c3, c13] (Bac90; Ber96a; Voa95) El trmino posibilidad de hacer pruebas tiene dos significados relacionados pero diferentes: por un lado, se refiere al grado de facilidad del software para satisfacer un determinado criterio de cobertura de pruebas, como se describe en (Bac90); por otro, se define como la probabilidad, posiblemente cualificada estadsticamente, de que los errores del software queden expuestos durante las pruebas, si es errneo, tal y como se describe en (Voa95, Ber96a). Ambos significados son importantes.
5.2.1.1
Pruebas de Unidad
[Bei90:c1; Per95:c17; Pfl01:c8s7.3] (IEEE1008-87) Las pruebas de unidad verifican el funcionamiento aislado de partes del software que se pueden probar independientemente. Dependiendo del contexto, estas partes podran ser
38
subprogramas individuales o un componente ms grande formado por unidades muy relacionadas. Hay una definicin ms precisa de prueba de unidad en el estndar IEEE de pruebas de unidad del software (IEEE1008-87), que tambin describe un enfoque integrado para realizar y documentar pruebas de unidad sistemticamente. Normalmente, las pruebas de unidad se realizan con acceso al cdigo fuente y con el soporte de herramientas de depuracin, pudiendo involucrar a los programadores que escribieron el cdigo
5.2.1.2
Pruebas de Integracin
[Jor02:c13, 14; Pfl01:c8s7.4] Una prueba de integracin es el proceso de verificar la interaccin entre componentes de software. Estrategias clsicas de integracin, como arriba hacia abajo o abajo hacia arriba, se usan, tradicionalmente, con software estructurado jerrquicamente. Las estrategias modernas de integracin estn dirigidas por la arquitectura, lo que supone integrar los componentes de software o subsistemas basndose en caminos de funcionalidad identificada. Las pruebas de integracin son una actividad continua, que sucede en cada fase en que los ingenieros de software tienen que hacer abstracciones de las perspectivas de bajo nivel y concentrarse en las perspectivas del nivel que estn integrando. Con la excepcin de software sencillo y pequeo, las estrategias de pruebas de integracin sistemticas e incrementales son preferibles a probar todos los componentes juntos al final, lo que se conoce (de forma grfica), como pruebas en big bang.
5.2.1.3
[Jor02:c15; Pfl01:c9] Las pruebas del sistema se ocupan del comportamiento de un sistema completo. La mayora de los fallos funcionales deberan haber sido identificados antes, durante las fases de pruebas de unidad y pruebas de integracin. Las pruebas del sistema se consideran normalmente como las apropiadas para comparar el sistema con los requerimientos no funcionales del sistema, como seguridad, velocidad, exactitud y confiabilidad. Las interconexiones externas con otras aplicaciones, utilidades, dispositivos hardware o con el sistema operativo, tambin se evalan en este nivel. Vase el AC de Requerimientos del Software para ms informacin acerca de requerimientos funcionales y no funcionales.
39
5.2.2.1
Pruebas de aceptacin/cualificacin
[Per95:c10; Pfl01:c9s8.5] (IEEE12207.0- 96:s5.3.9) Las pruebas de aceptacin comparan el comportamiento del sistema con los requerimientos del cliente, sea cual sea la forma en que stos se hayan expresado. El cliente realiza, o especifica, tareas tpicas para comprobar que se satisfacen sus requerimientos o que la organizacin los ha identificado para el mercado al que se destina el software. Esta actividad de pruebas puede incluir o no a los desarrolladores del sistema.
5.2.2.2
Pruebas de instalacin
[Per95:c9; Pfl01:c9s8.6] Normalmente, cuando las pruebas de aceptacin han terminado, el software se puede comprobar una vez instalado en el entorno de destino. Las pruebas de instalacin se pueden ver como pruebas del sistema realizadas en relacin con los requerimientos de la configuracin de hardware. Los procedimientos para la instalacin tambin se podran verificar.
5.2.2.3
[Kan99:c13]
A veces, antes de poner el software en distribucin, ste se proporciona a un grupo representativo de usuarios potenciales para que puedan usarlo en pruebas en las instalaciones del desarrollador (pruebas alpha) o externamente (pruebas beta). Dichos usuarios notifican problemas con el producto. Normalmente, el uso de versiones alfa y beta sucede en entornos no controlados y no siempre se le hace referencia en los planes de pruebas.
5.2.2.4
[Kan99:c7; Per95:c8] (Wak99) Las pruebas de conformidad tienen el objetivo de verificar si el comportamiento del software se corresponde con las especificaciones.
5.2.2.5
[Lyu96:c7; Pfl01:c9s.8.4] (Pos96) Las pruebas, al ayudar a identificar errores, son un medio para mejorar la confiabilidad. Por contraste, generando casos de prueba aleatorios siguiendo el perfil de operaciones, se pueden derivar aproximaciones estadsticas de confiabilidad. Cuando se usan modelos que potencian la confiabilidad, ambos objetivos se pueden alcanzar al mismo tiempo (vase tambin el punto 4.1.4 Pruebas de ejecucin, evaluacin de la confiabilidad)
5.2.2.6
Pruebas de regresin
[Kan99:c7; Per95:c11, c12; Pfl01:c9s8.1] (Rot96) Segn (IEEE610.12-90), las pruebas de regresin son pruebas selectivas que se repiten en un componente para verificar que los cambios no han producido efectos indeseados... En la prctica, la idea es demostrar que cierto software que previamente pas un conjunto de pruebas, an las pasa. Beizer (Bei90) las define como cualquier repeticin de pruebas que tiene como objetivo demostrar que el comportamiento del software no ha cambiado, excepto en aquellos aspectos en que se haya requerido as. Por supuesto se tiene que llegar a un compromiso entre realizar pruebas de regresin cada vez que se hace un cambio y los medios de que se dispone para realizar las pruebas. Las pruebas de regresin se pueden realizar en cada uno de los niveles de pruebas descritos en el punto 2.1 El objeto de la prueba y son vlidas tanto para pruebas funcionales como no funcionales.
5.2.2.7
Pruebas de rendimiento
40
Estas pruebas tienen el objetivo de verificar que el software alcanza los requerimientos de rendimiento especificados, particularmente los de capacidad y tiempo de respuesta. Un tipo particular de pruebas de rendimiento son las pruebas de volumen (Per95:p185, p487; Pfl01:p401), en los que las limitaciones internas del programa o sistema se ponen a prueba.
5.2.2.8
Pruebas de estrs
[Per95:c17; Pfl01:c9s8.3] Las pruebas de estrs hacen funcionar el software a la mxima capacidad para la que fue diseado, y por encima de ella.
5.2.2.9
Pruebas de continuidad
Un grupo de pruebas se ejecuta en dos versiones diferentes de un producto software y los resultados se comparan.
5.2.2.10
Pruebas de recuperacin
[Per95:c17; Pfl01:c9s8.3] El objetivo de las pruebas de recuperacin es verificar la capacidad del software para reiniciarse despus de un desastre.
5.2.2.11
Pruebas de configuracin
[Kan99:c8; Pfl01:c9s8.3] En los casos en los que el software se construye para dar servicio a distintos usuarios, las pruebas de configuracin analizan el software en las diferentes configuraciones especificadas.
5.2.2.12
Pruebas de usabilidad
[Per95:c8; Pfl01:c9s8.3] Este proceso evala lo fcil que le resulta usar y aprender a usar el software al usuario, incluyendo la documentacin del usuario, la efectividad de las funciones del software para soportar las tareas de usuario y, finalmente, la habilidad de recuperarse de errores provocados por el usuario.
5.2.2.13
[Bec02]
El desarrollo dirigido por pruebas no es una tcnica en s misma, pero promociona el uso de pruebas como una parte subordinada al documento de especificacin de requerimientos en vez de una comprobacin independiente de que el software implementa dichos requerimientos correctamente.
41
veces, estas tcnicas se clasifican como de caja blanca (tambin conocidas como caja de cristal), si las pruebas estn basadas en informacin acerca de cmo se ha diseado o programado el software, o como de caja negra si los casos de prueba se basan solamente en el comportamiento de la entrada y salida de datos. Una ltima categora se basa en el uso combinado de dos o ms tcnicas. Obviamente, no todo el mundo usa estas tcnicas con la misma frecuencia. La siguiente lista incluye las tcnicas que los ingenieros de software deberan conocer.
Pruebas ad hoc
5.3.1.2
Las pruebas por exploracin se definen como aprendizaje, diseo de pruebas y ejecucin de pruebas al mismo tiempo. Esto significa que las pruebas no se definen primero como parte de un plan de pruebas establecido, si no que se disean, ejecutan y se modifican dinmicamente. La efectividad de las pruebas por exploracin se basa en el conocimiento del ingeniero de software, que se puede derivar de varias fuentes: el comportamiento observado del producto durante las pruebas, su familiaridad con la aplicacin, la plataforma o el proceso de fallos, los posibles tipos de errores y fallos, el riesgo asociado con un producto en particular, etc. [Kan01:c3]
[Jor02:c7; Kan99:c7] El dominio de la entrada de datos se subdivide en colecciones de subconjuntos, o clases de equivalencia, las cuales se consideran equivalentes de acuerdo con la relacin especificada. Un grupo representativo de pruebas (a veces solo uno) se toma de cada clase.
5.3.2.2
[Jor02:c6; Kan99:c7] Casos de prueba se seleccionan en y cerca de los lmites del dominio de las variables de la entrada de datos, basndose en la idea de que una gran parte de los errores se concentran cerca de los valores extremos de la entrada de datos. Una extensin de esta tcnica son las pruebas de robustez, donde se seleccionan casos de prueba que se encuentran fuera del dominio de las variables de la entrada de datos, para comprobar la robustez del programa con entradas de datos errneos e inesperados.
5.3.2.3
Tablas de decisin
[Bei90:c10s3] (Jor02) Las tablas de decisin representan relaciones lgicas entre condiciones (mayoritariamente entradas) y acciones (mayoritariamente salidas). Los casos de prueba se derivan sistemticamente considerando cada combinacin de condiciones y acciones posibles. Una tcnica relacionada es el grfico causa-efecto. [Pfl01:c9]
42
5.3.2.4
[Bei90:c11; Jor02:c8] Al modelar un programa como una mquina de estado finito, se pueden seleccionar las pruebas de manera que cubran estados y sus transiciones.
5.3.2.5
[Zhu97:s2.2] (Ber91; Dic93; Hor95) Si las especificaciones se proporcionan en un lenguaje formal, es posible realizar una derivacin automtica de los casos de prueba funcionales y, al mismo tiempo, proporcionar unos resultados de referencia, un orculo, que se usa para comprobar los resultados de las pruebas. Existen mtodos para derivar casos de prueba de especificaciones basadas en el modelo (Dic93, Hor95) o especificaciones algebraicas. (Ber91)
5.3.2.6
Pruebas aleatorias
[Bei90:c13; Kan99:c7] En este caso las pruebas se generan de una manera completamente aleatoria, lo que no debe confundirse con las pruebas estadsticas basadas en el perfil operativo descritas en el punto 3.5.1 Perfil Operativo. Esta forma de realizar pruebas se incluye en la categora de entradas basadas en la especificacin, ya que el domino de las entradas de datos se debe conocer para ser capaces de seleccionar elementos aleatorios del mismo.
[Bei90:c3; Jor02:c10] (Zhu97) Los criterios de cobertura estn basados en el flujo de control se usan para cubrir todos los bloques de cdigo o lneas de cdigo individuales o una combinacin especifica de los mismos. Hay varios criterios de cobertura propuestos. Como cobertura de condicin/decisin. El criterio basado en el flujo de control ms efectivo son las pruebas de caminos, cuyo objetivo es verificar todos los caminos de control de tipo entrada-salida del grfico de flujos. Como, en general, las pruebas de caminos no son posibles debido a los bucles, en la prctica se usan otros criterios menos exigentes, como pruebas de lneas de cdigo, pruebas de condiciones y pruebas de decisin. La idoneidad de dichas pruebas se mide en porcentajes; por ejemplo, cuando las pruebas han ejecutado todas las condiciones al menos una vez, se dice que se ha conseguido una cobertura de condiciones del 100%.
5.3.3.2
[Bei90:c5] (Jor02; Zhu97) En las pruebas basadas en el flujo de datos, el grfico de flujos de control tiene anotaciones con informacin acerca de como las variables del programa se definen, usan y destruyen. El criterio ms efectivo, todos los caminos de uso-definicin, requiere que para cada variable, se ejecute cada uno de los segmentos del camino del flujo de control de esa variable a un usa de esa definicin. Para reducir el nmero de caminos necesarios, se emplean estrategias menos efectivas como todas las definiciones y todos los usos.
5.3.3.3
Modelos de referencia para pruebas basadas en el cdigo (grfico de flujos, grfico de llamadas)
[Bei90:c3; Jor02:c5] Aunque no es una tcnica en s misma, la estructura de control de un programa se representa usando grficos de flujo en las tcnicas de pruebas basadas en cdigo. Un grfico de flujo es un grfico dirigido cuyos nodos y arcos se corresponden con elementos del programa. Por ejemplo, los nodos podran representar lneas de cdigo o secuencias de lneas de cdigo ininterrumpidas y los arcos la transferencia de control entre nodos.
43
5.3.4.1
[Kan99:c7]
Inducir errores
Inducir errores, en los casos de pruebas se han diseado especficamente por ingenieros de software intentando imaginar los errores ms probables en un programa determinado. La historia de errores descubiertos en proyectos anteriores es una buena fuente de informacin, como lo es tambin la experiencia del ingeniero.
5.3.4.2
[Per95:c17; Zhu97:s3.2-s3.3] Un mutante es una versin ligeramente modificada de un programa al que se le est haciendo pruebas, diferencindose tan solo en un pequeo cambio sintctico. Cada caso de prueba se aplica al original y a los mutantes generados: si una prueba consigue identificar la diferencia entre el programa y el mutante, se dice que se ha matado al mutante. Esta tcnica se concibi originalmente para evaluar un conjunto de pruebas (vase 4.2), las pruebas por mutacin son un criterio de pruebas en s mismas: o se generan pruebas aleatorias hasta que se han matado los mutantes suficientes, o se disean pruebas especficas para matar a los mutantes supervivientes. En el ltimo caso, las pruebas por mutacin se pueden clasificar como tcnicas basadas en cdigo. El efecto de acoplamiento, que es la base asumida en las pruebas de mutacin, consiste en asumir que buscando errores sintcticos simples, se encontrarn otros ms complejos pero existentes. Para que esta tcnica sea efectiva, se debe poder derivar un nmero importante de mutantes de una manera sistemtica.
[Jor02:c15; Lyu96:c5; Pfl01:c9] Durante pruebas para la evaluacin de la confiabilidad, el entorno de pruebas debe reproducir el entorno operativo del software tan fielmente como sea posible. La idea es deducir la futura confiabilidad del software durante su use real desde los resultados de las pruebas. Para conseguir esto, se le asigna una probabilidad de distribucin, o perfil, a las entradas de datos, basndose en la frecuencia en que suceden durante el funcionamiento real.
5.3.5.2
[Lyu96:c6]
Las pruebas orientadas a la confiabilidad del software (SRET) son un mtodo de pruebas que forma parte del proceso de desarrollo completo, donde la realizacin de pruebas est diseada y guiada por los objetivos de confiabilidad y el uso relativo esperado y lo crticas que sean las distintas funciones en ese mbito
44
Pruebas para Internet Pruebas para GUI [Jor20] Pruebas para programas concurrentes (Car91) Pruebas de conformidad de protocolos (Pos96; Boc94) Pruebas para sistemas de tiempo real (Sch94) Pruebas para sistemas de seguridad crtica (IEEE1228-94)
[Bei90:c1s.2.2; Jor02:c2, c9, c12; Per95:c17] (Pos96) Las tcnicas de pruebas basadas en las especificaciones y el cdigo se contrastan frecuentemente como pruebas funcionales vs estructurales. Estos dos mtodos de seleccin de pruebas no se deber ver como alternativos si no como complementarios; de hecho, usan fuentes de informacin diferentes y se ha comprobado que remarcan diferentes tipos de problemas. Estas tcnicas se pueden combinar, dependiendo del presupuesto para pruebas.
5.3.7.2
Deterministas vs aleatorias
(Ham92; Lyu96:p541-547) Los casos de pruebas se pueden seleccionar de una forma determinista, de acuerdo con una de las varias tcnicas enunciadas, o seleccionadas aleatoriamente de una distribucin de entradas de datos, como se hace normalmente en las pruebas de confiabilidad. Existen varias comparaciones analticas y empricas que analizan las condiciones en que uno de los mtodos es ms efectivo que el otro.
45
5.4.1.1
[Bei90:c7s4.2; Jor02:c9] (Ber96; IEEE982.1-88) Las medidas basadas en el tamao de un programa (por ejemplo, nmero de lneas de cdigo o mtodos) o en la estructura de un programa (como la complejidad), se usan para guiar a las pruebas. Las medidas estructurales pueden incluir medidas entre mdulos del programa, en trminos de la frecuencia en que cada mdulo llama a los otros.
5.4.1.2
[Bei90:c2; Jor02:c2; Pfl01:c8] (Bei90; IEEE1044-93; Kan99; Lyu96) La literatura de pruebas es rica a la hora de clasificar y analizar errores. Con el objetivo de hacer las pruebas ms efectivas, es importante saber que tipos de errores se pueden encontrar en un programa que se est comprobando y la frecuencia relativa en que estos errores han sucedido antes. Esta informacin puede ser muy til para realizar predicciones de calidad y tambin para mejorar el proceso. Se puede encontrar ms informacin en el AC de la Calidad del Software, punto 3.2 Caracterizacin de defectos. Existe un estndar del IEEE acerca de como clasificar anomalas del software (IEEE1044-93).
5.4.1.3
Densidad de fallos
[Per95:c20] (IEEE982.1-88; Lyu96:c9) Un programa que se est comprobando se puede valorar contando y clasificando los errores descubiertos por su tipo. Parra cada tipo de error, la densidad de errores se mide como la razn entre el nmero de errores encontrados y el tamao del programa.
5.4.1.4
[Pfl01:c9] (Pos96:p146-154) Una estimacin estadstica de la confiabilidad del software, que se puede conseguir mediante la realizacin y evaluacin de la confiabilidad (vase 51 punto 2.2.5), se puede usar para evaluar un producto y decidir si las pruebas se pueden detener o no.
5.4.1.5
[Lyu96:c7; Pfl01:c9] (Lyu96:c3, c4) Los modelos de crecimiento de la confiabilidad proporcionan una prediccin de confiabilidad basada en los fallos observados durante la realizacin y evaluacin de la confiabilidad (vase punto 2.2.5). Estos modelos asumen, en general, que los errores que causan los fallos observados se han arreglado (aunque algunos modelos tambin aceptan arreglos imperfectos), y por tanto, el producto muestra una confiabilidad incremental de promedio. Existen docenas de modelos publicados en la actualidad. Muchos se basan en algunas presunciones comunes, y otros no. Mayoritariamente, estos modelos se dividen en modelos de cuenta de fallos y tiempo entre fallos.
[Jor02:c9; Pfl01:c8] (IEEE982.1-88) Varios criterios de idoneidad de las pruebas necesitan que los casos de pruebas ejecuten sistemticamente un conjunto de elementos identificados en el programa o en la especificacin (vase punto 3). Para evaluar la completitud de las pruebas realizadas, los ingenieros de pruebas pueden monitorizar los elementos cubiertos y su nmero total. Por ejemplo, es posible medir el porcentaje de condiciones cubiertas ejecutadas entre las definidas en la
46
especificacin. La idoneidad de los criterios basados en cdigo necesita la instrumentacin adecuada del programa que se est comprobando.
5.4.2.2
Introduccin de errores
[Pfl01:c8] (Zhu97:s3.1) Algunas veces se introducen errores artificialmente en un programa antes de comprobarlo. Cuando las pruebas se realizan, algunos de estos errores aparecern y posiblemente algunos otros que ya estaban en el software tambin aparecern. En teora, dependiendo de cul de los errores artificiales aparezca y cuntos de ellos, se puede evaluar la efectividad de las pruebas y se puede estimar el nmero restante de errores genuinos. En la prctica, los matemticos estadsticos se cuestionan la distribucin y representatividad de los errores introducidos en relacin con los errores genuinos y el tamao pequeo de la muestra en la que se basa cualquier extrapolacin. Algunos incluso afirman que esta tcnica debera usarse con sumo cuidado, ya que introducir errores en el software acarrea el riesgo obvio de olvidarlos all.
5.4.2.3
Puntuacin de la mutacin
[Zhu97:s3.2-s3.3] En las pruebas por mutacin (vase el punto 3.4.2), la razn de mutantes matados por nmero total de mutantes generados puede ser una medida de la efectividad del conjunto de pruebas realizadas.
5.4.2.4
[Jor02:c9, c12; Per95:c17; Zhu97:s5] (Fra93; Fra98; Pos96: p64-72) Se han llevado a cabo varios estudios para comparar la efectividad relativa de las diferentes tcnicas de pruebas. Es importante ser preciso acerca de la propiedad contra la cual las tcnicas se han calificado; cual, por ejemplo, es el significado exacto dado al trmino efectividad? Las interpretaciones posibles son: el nmero de pruebas necesarias para encontrar el primer fallo, la razn entre el nmero de errores encontrados durante las pruebas y todos los errores encontrados durante y despus de las pruebas, o cual fue la mejora de la confiabilidad. Se han llevado a cabo comparaciones analticas y empricas entre las diferentes tcnicas, de acuerdo con cada uno de los significados de efectividad especificados antes.
[Bei90:c13s3.2; Pfl01:c8] Un elemento muy importante para el xito de las pruebas es una actitud de colaboracin respecto a las actividades de pruebas y garanta de calidad. Los jefes de proyecto tienen un papel fundamental en fomentar una recepcin favorable en general respecto al descubrimiento de fallos durante el desarrollo y mantenimiento; particularmente, previniendo que los programadores se obsesionen con quien es el dueo del cdigo, de tal forma que ninguno se sienta responsable por los fallos que aparezcan en su cdigo.
47
5.5.1.2
[Kan01]
Se pueden guiar las fases de pruebas con varios mecanismos, por ejemplo; en pruebas basadas en el riego, que usa los riesgos en el producto para asignar prioridad y centrar la atencin de las estrategias de pruebas; o en las pruebas basadas en situaciones, en las que los casos de pruebas se definen y basan en escenarios de software especificados.
5.5.1.3
[Bec02: III; Per95:c1-c4; Pfl01:c9] (IEEE1074-97; IEEE12207.0-96:s5.3.9, s5.4.2, s6.4, s6.5) Las actividades de pruebas realizadas a diferentes niveles (vase punto 2, Niveles de pruebas) se deben organizar, junto con las personas, herramientas, normas y medidas, en un proceso bien definido que ser una parte integral del ciclo de vida del software. En el estndar IEEE/EIA 12207.0, las pruebas no se describen como un proceso independiente, si no que los principios de las actividades de las pruebas se encuentran incluidos con los cinco procesos primarios del ciclo de vida y con los procesos de soporte. En el estndar IEEE 1074, las pruebas se agrupan con otras actividades de evaluacin como una parte integral del ciclo de vida completo.
5.5.1.4
[Bei90:c13s5; Kan99:c12; Per95:c19; Pfl01:c9s8.8] (IEEE829-98) La documentacin es una parte integral de la formalizacin del proceso de las pruebas. El estndar del IEEE Estndar para la Documentacin de las Pruebas del Software (IEEE829-98) proporciona una buena descripcin de los documentos de las pruebas y su relacin entre cada uno y con el proceso de las pruebas. La documentacin de pruebas puede incluir, entre otros, el Plan de Pruebas, la Especificacin del Diseo de las Pruebas, la Especificacin del Procedimiento de las Pruebas, la Especificacin de los Casos de Pruebas, el Diario de las Pruebas y el Informe de Problemas o de Incidentes durante las Pruebas. El software que se est comprobando se documenta como el Artculo en Pruebas. La documentacin de las pruebas se debe generar y actualizar continuamente, con el mismo nivel de calidad que cualquier otro tipo de documentacin en la ingeniera del software.
5.5.1.5
[Bei90:c13s2.2-c13s2.3; Kan99:c15; Per95:c4; Pfl01:c9] La formalizacin del proceso de pruebas tambin puede formalizar la organizacin del equipo de pruebas. El equipo de pruebas puede estar compuesto por miembros internos (parte del equipo del proyecto, involucrados o no en la construccin del software), o de miembros externos, con la esperanza de contar con una perspectiva independiente y sin prejuicios, o, finalmente, de miembros internos y externos. La decisin puede ser afectada por consideraciones como coste, planificacin, nivel de madurez de las organizacin involucradas y como de crtica sea la aplicacin.
5.5.1.6
[Per95:c4, c21] (Per95: Apndice B; Pos96:p139-145; IEEE982.1-88) Los jefes de proyectos pueden usar varias medidas, acerca de los recursos invertidos en las pruebas y de la efectividad de las varias fases de pruebas en encontrar fallos, para controlar y mejorar el proceso de las pruebas. Estas medidas de las pruebas pueden cubrir, entre otros, aspectos como el nmero de casos de pruebas especificados, el nmero de casos de pruebas ejecutados, el nmero de casos de pruebas superados y el nmero de casos de pruebas no superados. La evaluacin de los informes de las fases de pruebas se puede combinar con anlisis de las races de las causas para evaluar la efectividad del proceso de las pruebas en encontrar errores tan pronto como sea posible. Dicha evaluacin se puede asociar con el anlisis de riesgos. Lo que es ms, los recursos que merece la pena invertir en las pruebas deberan ser proporcionales al uso/importancia de la aplicacin: diferentes tcnicas tienen distinto coste y proporcionan diferentes niveles de seguridad en la confiabilidad del producto.
48
5.5.1.7
Finalizacin
[Bei90:c2s2.4; Per95:c2] Se debe tomar una decisin acerca de cuantas pruebas son suficientes y cuando la fase de pruebas se puede finalizar. Las medidas concienzudas, como las conseguidas mediante cobertura de cdigo o completitud funcional y la estimacin de densidad de errores o de confiabilidad operativa, proporcionan un suporte muy til, pero no son suficientes por s mismas. Esta decisin tambin incluye consideraciones acerca del coste y los riesgos en que se incurrir debido a los fallos potenciales que an queden, en vez del coste que conllevara continuar realizando pruebas. Vase tambin el punto 1.2.1 Criterios de seleccin de pruebas/Criterios de idoneidad de pruebas.
5.5.1.8
[Bei90:c13s5]
Con el objetivo de realizar pruebas o mantenimiento de una forma organizada y efectiva respecto al coste, los medios usados para realizar pruebas en cada parte del software se deberan reutilizar de una forma sistemtica. Dicho repositorio de material de pruebas debe estar bajo el control de un software de gestin de configuraciones, de forma que los cambios en los requerimientos del software o el diseo queden reflejados en cambios en el alcance de las pruebas realizadas. Las soluciones adoptadas para realizar pruebas en determinados tipos de aplicaciones bajo determinada circunstancias, teniendo en cuenta los motivos detrs de las decisiones que se han tomado, forman un patrn de pruebas que se puede documentar y ser reutilizado en proyectos similares.
5.5.2.1
Planificacin
[Kan99:c12; Per95:c19; Pfl01:c8s7.6] (IEEE829-98:s4; IEEE1008-87:s1-s3) Como cualquier otro aspecto de la gestin de proyectos, las actividades de las pruebas se deben planificar. Algunos aspectos clave de la planificacin de las pruebas incluyen la coordinacin de personal, la gestin de instalaciones y equipos disponibles (que pueden incluir soportes magnticos, planes de pruebas y procedimientos) y planificar en caso de posibles situaciones no deseables. Si se mantiene ms de una lnea base del software al mismo tiempo, una importante consideracin de planificacin es el tiempo y esfuerzo necesario para asegurarse de que se ha usado la configuracin correcta para establecer el entorno de pruebas.
5.5.2.2
[Kan99:c7] (Pos96:c2; IEEE1008-87:s4, s5) La generacin de caos de pruebas se basa en el nivel de pruebas que se vaya a realizar y en las tcnicas de pruebas a usar. Los casos de pruebas deberan estar bajo el control de un software de gestin de configuraciones e incluir los resultados esperados para cada prueba.
5.5.2.3
[Kan99:c11]
El entorno usado para las pruebas debera ser compatible con las herramientas de ingeniera de software. Debera facilitar el desarrollo y control de casos de pruebas y la anotacin y recuperacin de los resultados esperados, los scripts y otros materiales de pruebas.
49
5.5.2.4
Ejecucin
[Bei90:c13; Kan99:c11] (IEEE1008-87:s6, s7) La ejecucin de las pruebas deberan incluir un principio bsico de experimentacin cientfica: todos los pasos durante las pruebas se deberan realizar y documentar de una forma lo suficientemente clara, que cualquier otra persona debera ser capaz de reproducir los resultados. Por tanto, las pruebas deben realizarse de acuerdo con los procedimientos documentados y usando una versin claramente definida del software que se est comprobando.
5.5.2.5
[Per95:c20, c21] (Pos96:p18-20, p131-138) Los resultados de las pruebas se deben evaluar para determinar si las pruebas han sido satisfactorias o no. En la mayora de los casos, satisfactorias significa que el software se ha ejecutado como se esperaba y no ha tenido ningn resultado inesperado importante. No todos los resultados inesperados son necesariamente errores, ya que se podra considerar que algunos son simple ruido. Antes de que se pueda arreglar un error, se necesita realizar un anlisis y algn trabajo de depuracin para identificarlo, aislarlo y describirlo. Cuando los resultados de las pruebas son particularmente importantes, puede que se convoque una revisin formal para evaluarlas.
5.5.2.6
[Kan99:c5; Per95:c20] (IEEE829-98:s9-s10) Las actividades de las pruebas se pueden aadir a un diario de pruebas para identificar cuando una prueba se ha ejecutado, quien la ha realizado, que configuracin del software se ha utilizado y cualquier otra informacin relevante de identificacin. Resultados inesperados o incorrectos se pueden aadir a un sistema de notificacin de problemas, cuyos datos sern la base para procesos de depuracin posteriormente y para arreglar los errores que causaron problemas durante las pruebas. Las anomalas no clasificadas como errores tambin se podran documentar, en caso de que ms tarde resulte que producen problemas ms serios de lo que se pens originalmente. Los informes de pruebas tambin son una entrada para los procesos de requerimientos de cambi de gestin (vase el AC de la Gestin de la Configuracin del Software, punto 3, Control de la configuracin del software)
5.5.2.7
[Kan99:c6]
Seguimiento de defectos
Los fallos observados durante las pruebas son, en la mayora de los casos, debidos a errores o defectos en el software. Dichos defectos se pueden analizar para determinar cuando fueron introducidos en el software, que clase de error produjo que se aparecieran (por ejemplo requerimientos definidos pobremente, declaraciones incorrectas de variables, fallo de memoria o errores de programacin) y cuando deberan haber sido observados en el software por primera vez. La informacin del seguimiento de defectos se usa para determinar qu aspectos de la ingeniera del software necesitan mejorase y la efectividad de anlisis y pruebas anteriores.
50
6 Mantenimiento de software
Los esfuerzos del desarrollo de software resultan en la entrega de un producto de software el cual satisface los requerimientos de usuario. Por consecuencia, el producto de software debe cambiar o evolucionar. Una vez en operacin, los defectos se descubren, los entornos de operacin cambian y nuevos requerimientos de usuario aparecen. La fase de mantenimiento del ciclo de vida comienza siguiendo un periodo de garanta o entrega de soporte post-implementacin, sin embargo las actividades de mantenimiento suceden mucho antes. El mantenimiento de software es una parte integral del ciclo de vida del software. Sin embargo histricamente no ha recibido el mismo grado de atencin que las otras fases existentes. Histricamente, el desarrollo de software ha tenido un perfil mucho ms alto que el mantenimiento en muchas organizaciones. Esto ahora est cambiando, como algunas organizaciones que se esfuerzan por exprimir en la mayora sus investigaciones de desarrollo de software manteniendo la operabilidad del sistema el mayor tiempo posible. Las preocupaciones acerca del ao 2000 se hallaron enfocadas significantemente en la fase de mantenimiento de software, y el paradigma de cdigo abierto ha prestado ms atencin al problema de artefactos de mantenimiento de software desarrollado por otros. En la gua, el mantenimiento de software est definido como la totalidad de acciones necesarias para proveer soporte rentable (econmico y fiable) al software. Las actividades se presentan durante el escenario de pre-entrega, as como durante el escenario de post-entrega. Las actividades de pre-entrega incluyen: planeamiento para operaciones post-entrega, planeamiento para mantenimiento, planeamiento para determinacin logstica de las actividades de transicin. Las actividades de post-entrega incluyen: Modificacin de Software, Entrenamiento , funcionamiento o interfaces para un servicio de asistencia. Las reas del conocimiento del mantenimiento de software esta relacionados con todos los aspectos de la ingeniera del software, por lo tanto, esta descripcin de las reas del conocimiento estn enlazadas a todos los captulos de la gua. Descomposicin de temas para Mantenimiento de software
51
objetivo es modificar el producto de software existente mientras se preserva su integridad. ISO/IEC 14764, la norma internacional para el mantenimiento de software, define el mantenimiento del software en los mismos trminos que el IEEE/EIA 12207 y enfatiza los aspectos de pre-entrega, del mantenimiento, por ejemplo, planeacin.
-Mantener el control sobre las modificaciones de software -Perfeccionar funciones existentes -Prevenir la degradacin del desempeo de software a nivelen inaceptables
53
Mantenimiento correctivo: modificacin reactiva de un producto de software presentada despus de la entrega para corregir problemas descubiertos. Mantenimiento adaptativo: modificacin de un producto de software presentada despus de la entrega para mantener un producto de software utilizable en un entorno cambiado o cambiante. Mantenimiento perfectivo: modificacin de un producto de software despus de la entrega para mejorar el desempeo o mantenimiento. Mantenimiento preventivo: modificacin de un producto de software despus de ser entregado para detectar y corregir fallas latentes en el producto de software antes que estas se conviertan en fallas efectivas. ISO/IEC 14764 clasifica el mantenimiento adaptativo y perfectivo como mejoras. Tambin agrupa juntas las categoras de mantenimiento preventivo y correctivo en una categora de correccin, como se muestra en la tabla 1. El mantenimiento preventivo, la categora ms reciente, se presenta en su mayora en los productos de software cuya seguridad es crtica. Correccin Proactiva Reactiva preventiva correctiva Mejoramiento Perfectiva Adaptativa
El entendimiento limitado se refiere a cun rpido un ingeniero de software puede entender donde hacer cambios o una correccin en un software que el mismo no ha desarrollado. Las investigaciones indican que de un 40% a 60% del esfuerzo de mantenimiento es dedicado al entendimiento del software para ser modificado, as, el tema de la compresin de software es de gran inters para los ingenieros de software. La comprensin es ms difcil en una representacin orientada- texto, en cdigo fuente, por ejemplo, donde a menudo es difcil de rastrear la evolucin de software a travs de sus versiones(lanzamientos) si los cambios no estn documentados y cuando los desarrolladores no estn disponibles para explicarlo, que es frecuentemente el caso. As, los ingenieros de
54
software debern tener inicialmente un entendimiento limitado del software, y mucho mas debe realizarse para remediar esto.
6.2.1.2
Pruebas
El costo de repetir pruebas completas en un componente mayor de un software puede ser significante en trminos de tiempo y dinero. Pruebas de regresin, la repeticin de pruebas selectiva de un software o componente para verificar que las modificaciones no han causados efectos no intencionados, es importante para el mantenimiento. As como encontrar el tiempo para las pruebas es a menudo difcil. Existe el reto de pruebas coordinadas cuando los diferentes miembros del equipo de mantenimiento estn trabajando en diferentes problemas al mismo tiempo. Cuando el software muestra funciones criticas, puede ser imposible desconectarlo para pruebas. El rea de conocimiento de pruebas de software provee informacin y referencias en su subtema pruebas de regresin.
6.2.1.3
Anlisis de impacto
El anlisis de impacto describe como conducir, de manera econmica t completa, un anlisis completo sobre la temtica del impacto en un software existente. Los mantenedores debern poseer un ntimo conocimiento de la estructura y contenido de software. Ellos usan ese conocimiento para realizar anlisis de impacto el cual identifica todos los sistemas y productos de software afectados por una peticin de cambio en software y desarrolla un estimado de los recursos necesitados para el logro del cambio. Adicionalmente, el riesgo de hacer el cambio es determinado. La peticin de cambio, algunas veces llamada una peticin de modificacin, y frecuentemente llamada un reporte de problema, debe ser analizada primera y traducida en trminos de software. Eso es presentado despus de que una peticin de cambio entra al proceso de gestin de la configuracin de software. Arthur declara que los objetivos del anlisis de impacto son: Determinacin del alcance de un cambio de acuerdo a un plan y trabajo de implementacin Desarrollo de estimaciones exactas de los recursos necesitados para realizar el trabajo Anlisis de los costos y/o beneficios del cambio solicitado Comunicacin hacia los otros de la complejidad de un cambio dado
La gravedad de un problema es usualmente usada para decidir cmo y cuando un problema ser reparado. El ingeniero de software entonces identifica los componentes afectados. Varias soluciones potenciales son ofrecidas y por consecuente una recomendacin es hecha para el mejor va de accin. El software desarrollado con mantenibilidad en mente facilita en gran manera el anlisis de impacto. Ms informacin puede ser encontrada en el rea de conocimiento de gestin de configuracin de software.
6.2.1.4
Mantenibilidad
Cmo se promueve y se hace seguimiento a los problemas de mantenibilidad a lo largo del desarrollo?, la IEEE define la mantenibilidad como la facilidad con la cual un software puede ser mantenido, mejorado, adaptado, o corregido para satisfacer requerimientos especificados. ISO/IEC define la mantenibilidad como una de las caractersticas de calidad. Las sub-caractersticas de la mantenibilidad deben ser especificadas, repasadas, y controladas durante las actividades de desarrollo de software con el fin de reducir los costos de mantenimiento. Si esto se realiza con xito, la mantenibilidad de software ser mejorada. Esto es frecuentemente una dificultad para lograr porque las sub-caractersticas de la mantenibilidad no son un enfoque importante durante el proceso de desarrollo de software. Los desarrolladores estn preocupados con muchas otras cosas y frecuentemente descuidan los requerimientos del mantenedor. Esto puede a su vez, y frecuentemente lo hace, resulta en una falta de la documentacin del sistema, lo cual es una causa principal de dificultades en comprensin del programa y anlisis de impacto. Tambin ha sido observado que la presencia
55
la
El principal nfasis es entregar a tiempo y sobre el presupuesto los requerimientos de usuario. Los objetivos organizacionales describen como demostrar el retorno en la inversin de actividades de mantenimiento de software. Bennett declara que el desarrollo inicial de software es usualmente basado-proyecto, con una escala de tiempo y presupuesto definidos para conocer las necesidades del usuario, en contraste, el mantenimiento de software frecuentemente tiene el objetivo de extender la vida del software lo ms posible, adems, deben ser manejados por la necesidad de encontrarse con la demanda del usuario para las actualizaciones de software y mejoras. En ambos casos, el retorno en inversin es mucho menos claro, as que la vista desde un nivel de gestin mayor es usualmente de una actividad mayor consumiendo recursos significativos sin beneficios cuantificables claros para la organizacin.
6.2.2.2
Personal
Esto se refiere a como atraer y mantener un personal de mantenimiento. El mantenimiento usualmente no es visto como un trabajo glamoroso. Deklava provee una lista de problemas relacionados con el personal basado en el estudio de datos. Como resultado, el personal de mantenimiento de software es visto frecuentemente como ciudadanos de segunda clase y la moral sufre.
6.2.2.3
Proceso
El proceso de software es un conjunto de actividades, mtodos, prcticas, y transformaciones las cuales la gente usa para desarrollar y mantener software y sus productos asociados. En el nivel de proceso, las actividades de mantenimiento comparten mucho en comn con el desarrollo de software (por ejemplo, la gestin de configuracin de software es una actividad crucial en ambos). El mantenimiento tambin requiere varias actividades que no se encuentran en el desarrollo de software (vea la seccin 3.2 en actividades nicas para detalles.) esas actividades presentan retos para el mantenimiento.
6.2.2.4
Los aspectos organizacionales describen como identificar cual organizacin y/ o funcin sera responsable por el mantenimiento de software. El equipo que desarrolla el software no es asignado necesariamente en mantener el software una vez esta en operacin. En la decisin en la cual la funcin de mantenimiento de software se ubicara, las organizaciones de ingeniera del software deben, por ejemplo, estar con el desarrollador original o ir a un equipo separado (o mantenedor). A menudo, la opcin del mantenedor se escoge para asegurar que el software se ejecuta apropiadamente y evoluciona para satisfacer las necesidades cambiantes del usuario. Ya que hay muchos pros y contras para cada una de esas opciones, la decisin debe ser tomada por una base caso-por-caso. Lo que importa es la delegacin o asignacin de la responsabilidad de mantenimiento a un grupo sencillo o persona, indiferentemente de la estructura de la organizacin.
6.2.2.5
Subcontratacin
La subcontratacin del mantenimiento se est convirtiendo en una industria grande. Grandes corporaciones estn subcontratacin portafolios enteras de sistemas de software, incluyendo mantenimiento de software. Ms aun, la opcin de subcontratacin es seleccionada para software de menos misin crtica, as es como las compaas estn dispuestas a perder el control del software usado en los ncleos de sus negocios. Carey reporta que algunos externalizaran solamente si ellos pueden encontrar formas de control estratgico de mantenimiento. Sin embargo, las medidas de control son difciles de encontrar. Uno de los mayores retos para los subcontratadores es determinar el alcance de los servicios de
56
mantenimiento requeridos y los detalles contractuales. McCracken declara que 50% de los subcontratadores provee servicios sin ningn acuerdo claro de nivel de servicio. Las compaas de subcontratacin tpicamente gastan un nmero de meses evaluando el software antes que ellos entren en la relacin contractual. Otro reto identificado es la transicin del software hacia el subcontratador.
6.2.3.1
Estimacin de costos
Esto fue mencionado en el subtema 2.1.3, anlisis de impacto, que el anlisis de impacto identifica todos los sistemas y productos de software afectados por una peticin de cambio de software y desarrolla una estimacin de los recursos necesitados para lograr el cambio. Las estimaciones de costos de mantenimiento son afectados por muchos factores tcnicos y no tcnicos. La ISO/IEC 14764 declara que los dos enfoques ms populares para estimar recursos para el mantenimiento de software son el uso de modelos paramtricos y el uso de experiencia. Ms a menudo, una combinacin de estas es usada.
6.2.3.2
Modelos paramtricos.
Algn trabajo ha sido emprendido en aplicar modelamiento de costos parametricos al mantenimiento de software. Lo significativo es que datos de proyectos pasados son necesitados para usar modelos. Jones discute todos los aspectos de estimacin de costos, incluyendo puntos de funcin, y provee un capitulo detallado en la estimacin de mantenimiento.
6.2.3.3
Experiencia
Experiencia, en la forma del juicio de experto (usando la tcnica delphi, por ejemplo), analogas, y una estructura de desglose del trabajo, varios enfoques que deberan ser usados para aumentar los datos de los modelos parametricos. Claramente el mejor enfoque a la estimacin del mantenimiento es combinar datos empricos y experiencia. Esa informacin deber ser proveda como resultado de un programa de medidas.
6.3.1.1
Mediciones especficas
Abran [Abr93] presenta estudios comparativos internos para comparar diferentes organizaciones de mantenimiento interno. El mantenedor debe determinar que mediciones son apropiadas para la organizacin en cuestin.
57
Sugiere mediciones que sean mas especificas a mantenimiento de software de programas de medicin. Esa lista incluye un numero de mediciones por cada uno de las 4 subcateristicas de mantenibilidad: Analizabilidad: Mediciones del mantenedor de soporte o recursos gastados en el intento de diagnostico, deficiencias o causas de falla o en identificacin de partes a ser modificadas Cambiabilidad: Mediciones del mantenedor de soporte asociado a la implementacin de una modificacin especifica. Estabilidad: Medicin del comportamiento inesperado de software, incluyendo aquel encontrado durante el testeo. Pruebabilidad (testing): medicin del soporte del mantenedor y el usuario, en el intento de probar el software modificado, algunas mediciones de mantenibilidad del software pueden obtenerse usando herramientas comerciales.
ISO/IEC 14764 es una elaboracin del proceso de la IEEE/EIA 12207.0-96. Las actividades de los procesos de mantenimiento de la ISO/IEC son similares a esos de la IEEE, excepto que
58
ellos han agregado una pequea diferencia. Las actividades del proceso de mantenimiento de software desarrolladas por la ISO/IEC se muestran en la figura 3.
Cada una de las actividades de mantenimiento principales de la ISO/IEC 14764 se subdivide aun ms en tareas, como sigue: Implementacin de proceso Anlisis de problema y modificacin Implementacin de modificacin Revisin/aceptacin de mantenimiento Migracin Retiro de software
Takang y Grubb proporcionan una historia de los modelos de procesos de mantenimiento previos al desarrollo de los modelos de procesos de la IEEE y la ISO/IEC. Parikh tambin da un buen resumen de un proceso de mantenimiento genrico. Recientemente, metodologas agiles han emergido las cuales promueven procesos ligeros. Este requerimiento emerge de la creciente demanda por cambio rpido de servicios de mantenimiento. Algunos experimentos con mantenimiento extremo son presentados en (Poo01).
59
adaptarlo para encontrar sus necesidades especficas. Sin embargo, para el mantenimiento de software, algunas actividades incluyen procesos nicos para el mantenimiento de software.
6.4.2.1
Actividades nicas
Hay gran cantidad de procesos, actividades y prcticas que son nicas para el mantenimiento de software, por ejemplo: Transicin: es una secuencia controlada y coordinada de actividades durante las cuales un software es transferido progresivamente del desarrollador al mantenedor. Peticin de modificacin aceptacin/rechazo: la peticin de modificacin trabajo sobre cierto tamao/esfuerzo/complejidad que pueden ser rechazados por mantenedores y reencaminados al desarrollador. Peticin de modificacin y ayuda del servicio de asistencia de problemas: una funcin de soporte para el usuario final que dispara la valoracin, priorizacin, y costos de las peticiones de modificacin. Anlisis de impacto Soporte de software: ayuda y aconseja a los usuarios con respecto a peticiones de informacin(por ejemplo, reglas de negocios, validacin, significado de datos y peticiones/reportes ad-hoc) Acuerdos del nivel de servicio (SLAs) y contratos especializados de mantenimiento los cuales son la responsabilidad de los mantenedores.
6.4.2.2
Actividades de soporte
Los mantenedores deben presentar actividades de soporte, como la planeacin de mantenimiento de software, gestin de configuracin de software, verificacin y validacin, garanta de calidad de software, revisiones, autoras, y entrenamiento de usuarios. Otra actividad de soporte, entrenamiento del mantenedor, tambin es necesaria.
6.4.2.3
Una importante actividad para el mantenimiento de software es planear, y los mantenedores deben direccionar los problemas relacionados con un nmero de perspectivas de planeacin: Planeamiento de negocios (nivel organizacional) Planeamiento de mantenimiento (nivel de transicin) Planeamiento de lanzamiento/versin (nivel de software) Planeamiento de Peticiones individuales de cambio de software (nivel de requisitos)
En el nivel de peticin individual, el planeamiento es llevado a cabo durante el anlisis de impacto (refirase al sub-tpico 2.1.3 anlisis de impacto para mas detalles). La actividad de planeamiento de lanzamiento/versin requiere que el mantenedor: Coleccione los datos de disponibilidad de peticiones individuales Estar de acuerdo con los usuarios en el contenido de los lanzamientos/versiones subsecuentes Identificar conflictos potenciales y desarrollar alternativas Evaluar el riesgo de un lanzamiento dado y desarrollar un plan de apagado en caso de que se levanten problemas Informar a todos los interesados
Mientras que los proyectos de desarrollo de software pueden tpicamente dura desde algunos meses a algunos aos, la fase de mantenimiento usualmente dura muchos aos. Haciendo estimados de recursos es un elemento clave de la planeacin del mantenimiento. Esos
60
recursos debern ser incluidos en los presupuestos del proyecto de planeacin de los desarrolladores. La planeacin del mantenimiento de software debe empezar con la decisin de desarrollar un nuevo sistema y debe considerar objetivos de calidad. Un documento conceptual debe ser desarrollado, seguido por un plan de mantenimiento. El documento conceptual para mantenimiento debe aadir: El alcance del mantenimiento de software Adaptacin del proceso de mantenimiento de software Identificacin de la organizacin de mantenimiento de software Una estimacin de costos de mantenimiento de software
El siguiente paso es desarrollar un plan de mantenimiento de software correspondiente. Este plan debe ser preparado durante el desarrollo de software, y debe especificar como los usuarios van a pedir modificaciones de software o reportar problemas. El planeamiento de mantenimiento de software es direccionado en la IEEE 1219 e ISO/IEC 14764. ISO/IEC14764 provee guas para el plan de mantenimiento. Finalmente, en el nivel ms superior, la organizacin de mantenimiento tendr que conducir las actividades de planeamiento de negocios (presupuestos, financiamientos, recursos humanos) as como todas las otras divisiones de la organizacin. El conocimiento de mantenimiento requerido para hacerlo puede ser encontrado en las disciplinas relacionadas con el captulo de ingeniera del software.
6.4.2.4
El estndar para el mantenimiento de software de la IEEE, IEEE 1219, describe la gestin de configuracin de software como un elemento crtico del proceso de mantenimiento. Los procedimientos de gestin de configuracin de software deben proporcionar para la verificacin, validacin y auditoria de cada paso requerido para identificar, autorizar, implementar y lanzar el producto de software. No es suficiente simplemente rastrear peticiones de modificacin o reportes de problemas. El producto de software y cualquier cambio hecho a l debe ser controlado. Este control es establecido por medio de la implementacin y reforzamiento de un proceso de gestin de configuracin de software aprobado. El rea de conocimiento de gestin de configuracin de software proporciona detalles de SCM y discute el proceso por el cual las peticiones de cambio de software son presentadas, evaluadas y aprobadas. El SCM para mantenimiento de software es diferente del SCM para desarrollo de software en el nmero de pequeos cambios que deben ser controlados en un software operacional. El proceso de SCM es implementado al desarrollar y seguir un plan de gestin de configuracin y operando procedimientos. Los mantenedores participan en tablas de control de configuracin para determinar el contenido del siguiente lanzamiento/versin.
6.4.2.5
Calidad de software
No es suficiente, tampoco, con solo esperar que la calidad incrementada resultara del mantenimiento de software. Esta debe ser planeada e implementada en procesos para apoyar el proceso de mantenimiento. Las actividades y tcnicas para garantizar la calidad de software (SQA), V&V, revisiones y auditorias deben ser seleccionadas concerniendo con todos los otros procesos para lograr el nivel deseado de calidad. Tambin es recomendado que el mantenedor adapte los procesos de desarrollo de software, tcnicas y entregas, para instanciar documentacin de prueba, y resultados de pruebas. Mas detalles pueden encontrarse en el rea de conocimiento de CALIDAD DE SOFTWARE.
61
6.5.2 Reingeniera
Reingeniera es definida como la exanimacin y alteracin de software para reconstituirlo en una nueva forma, incluye la implementacin subsecuente de la nueva forma. Dorfman and Thayer declaran que la reingeniera es la ms radical (y costosa) forma de alteracin. Otros creen que la reingeniera puede ser usada para cambios menores. A menudo no es realizado para mejorar la Mantenibilidad, pero para reemplazar el envejecimiento del legado de software. Arnold provee un compendio comprensivo de temas, por ejemplo, conceptos, herramientas y tcnicas, estudios de casos y riesgos y beneficios asociados con la reingeniera.
62
INTRODUCCIN: Un sistema se puede definir como una coleccin de componentes que se organizan con el objetivo de proporcionar una funcin o conjunto de funciones determinadas (IEEE 610.12-90). La configuracin de un sistema son las caractersticas funcionales y/o fsicas del hardware, firmware, software o una combinacin de las mismas, segn lo dispuesto en la documentacin tcnica y el resultado obtenido en un producto. (Buc96) Tambin se puede considerar como una coleccin de versiones especficas de elementos de hardware, firmware o software que se combinan de acuerdo con un proceso de construccin especfico para un satisfacer un propsito particular. Por tanto la gestin de configuracin es la disciplina de identificar la configuracin de un sistema en momentos diferentes con el propsito de controlar de una manera sistemtica los cambios en la configuracin y mantener la integridad y el seguimiento de los cambios en la configuracin durante el ciclo de vida del sistema. (Ber97) Se define formalmente (IEEE610.12-90) como Una disciplina que establece direccin y seguimiento tcnicos y administrativos a: la identificacin y documentacin de las caractersticas funcionales y fsicas de un elemento de configuracin, toma notas y produce informes de cambios en el proceso y en el estado de implementacin y verifica el cumplimiento de los requerimientos especificados. La gestin de la configuracin del software (SCM) es un proceso que soporta el ciclo de vida del software (IEEE12207.0-96) que beneficia a la gestin de proyectos, las actividades de desarrollo y mantenimiento, las actividades de control y a los clientes y usuarios del producto final. El concepto de gestin de configuracin es aplicable a todos los elementos que se pueden controlar, aunque existen algunas diferencias de implementacin entre CM del hardware y CM del software.
63
La SCM est ntimamente relacionada con la actividad de control de calidad del software (SQA). Tal y como se define en la auditoria de configuracin (AC) de la Calidad del Software, los procesos de la SQA proporcionan la garanta de que los procesos y productos de software en el ciclo de vida del proyecto cumplen los requerimientos especificados gracias a la planificacin, la publicacin y ejecucin de un conjunto de actividades que proporcionan la confidencia necesaria de que se est teniendo en cuenta la calidad al construir el software. Las actividades de la SCM ayudan a conseguir estos objetivos de la SQA. En el contexto de algunos proyectos (vase, por ejemplo, IEEE730-02), requerimientos especficos de las SQA requieren ciertas actividades de la SCM. Las actividades de la SCM son: gestin y planificacin de los procesos de la SCM, identificacin de la configuracin del software, control de la configuracin del software, contabilizacin del estado de la configuracin del software, auditora de la configuracin del software y gestin del lanzamiento y entrega del software. Descomposicin de temas para la gestin de configuracin software
64
65
aceptadas y la naturaleza del proyecto (por ejemplo, el tamao o lo crtico que sea). Las actividades ms importantes cubiertas son: Identificacin de la Configuracin del Software, Control de la Configuracin del Software, Reporte del Estado de la Configuracin del Software, Auditoria de la Configuracin del Software y la Gestin de Lanzamiento y Entrega de Software. Adems, se suelen considerar puntos como organizacin y responsabilidades, recursos y calendarios, seleccin de herramientas e implementacin, control de proveedores y subcontratos y control de la interfaz. Los resultados de las actividades de planificacin se registran en un Plan de SCM, que normalmente est sujeto a revisin y auditoria de la SQA.
7.1.3.1
[Ber92:c7; Buc96:c3; IEEE828-98:c4s2] Para prevenir confusin acerca de quin debe realizar determinadas tareas de la SCM, se deben identificar claramente las organizaciones involucradas en el proceso de la SCM. Las responsabilidades especficas para una actividad o tarea de la SCM tambin deben ser asignadas a organizaciones, bien por ttulo o por elemento de la organizacin. Se debe identificar tambin la autoridad general y los canales de comunicacin de la SCM, aunque se podra realizar como parte de la fase de planificacin del aseguramiento de la calidad o al nivel de la gestin de proyectos.
7.1.3.2
[Ber92:c7; Buc96:c3; IEEE828-98:c4s4; c4s5] Planificar para la SCM ayuda identifica las necesidades de personal y herramientas que se requieren para realizar las tareas y actividades de la SCM. Aborda cuestiones de planificacin estableciendo las secuencias de tareas de la SCM necesarias e identifica sus relaciones con los planes de proyecto y los hitos establecidos en la fase de planificacin del proyecto. Tambin se especifican las necesidades de formacin requeridas para la implementacin de los planes y formacin de personal.
7.1.3.3
[Ber92:c15; Con98:c6; Pre01:c31] Las actividades de la SCM son soportadas por diferentes tipos de herramientas y procedimientos para su uso. Dependiendo de la situacin, se pueden combinar estas habilidades de herramientas con herramientas manuales, herramientas automticas que proporcionan una habilidad simple de la SCM, herramientas automticas que integran una coleccin de habilidades de la SCM (e incluso otras habilidades). O entornos de herramientas integrados que cubren las necesidades de mltiples participantes en el proceso de ingeniera del software (por ejemplo, SCM, desarrollo, V&V). El apoyo de herramientas automticas comienza a ser ms importante y difcil de establecer, segn los proyectos crecen en tamao y el entorno del proyecto se hace ms complejo. Las habilidades de estas herramientas proporcionan apoyo para: La biblioteca de la SCM Procedimientos de de peticin y aprobacin de cambios del software (SCR) Cdigo (y los productos relacionados) y las tareas de gestin de cambios Reportes del estado de configuracin del software y recoleccin de medidas de la SCM Auditora de la configuracin del software Gestin y seguimiento de la documentacin del software Construccin del software Gestin y seguimiento de los lanzamientos del software y su entrega Las herramientas utilizadas en estas reas, tambin pueden proporcionar medidas para mejorar el proceso. Royce [Roy98] describe siete medidas principales, tiles para gestionar procesos de la ingeniera del software. La informacin disponible de las varias herramientas de la SCM es afn al indicador de Trabajo y Progreso de Royce y a sus indicadores de calidad de
66
Cambio de Trfico y Estabilidad, Ruptura y Modularidad, Reprocesamiento de Trabajo y Adaptabilidad y TMEF (Tiempo medio entre fallos) y Madurez. Los informes para estos indicadores se pueden organizar de varias maneras, como por elemento de configuracin del software o por tipo de cambio requerido.
7.1.3.4
Control de Proveedores/Subcontratistas
[Ber92:c13; Buc96:c11; IEEE828-98:c4s3.6] Un proyecto de software podra hacer uso o adquirir productos software que se hayan comprado, como compiladores u otras herramientas. La planificacin de la SCM considera que elementos y como se pondrn estos elementos bajo control de configuracin (por ejemplo, integrados en bibliotecas de proyecto) y como se evaluarn y gestionarn los cambios y actualizaciones. Consideraciones similares son aplicables al software subcontratado. En este caso, tambin se deben establecer los requerimientos de la SCM a ser impuestos a los procesos de la SCM del subcontratista como parte del subcontrato y los medios para monitorizar que se cumple con ellos. El ltimo incluye consideraciones acerca de que informacin de la SCM ha de estar disponible para poder monitorizar, de una manera eficiente, que se cumplen los requerimientos.
7.1.3.5
Control de Interaccin
[IEEE828-98:c4s3.5] Cuando un elemento de software interacciona con otro elemento de software o hardware, un cambio a cualquiera de los dos elementos puede afectar al otro. La planificacin para los procesos de la SCM considera como se identificarn los elementos que interaccionan y como se gestionarn y comunicarn los cambios a dichos elementos. El papel de la SCM puede ser parte de un proceso ms general a nivel de sistema, para el control y especificacin de las interacciones y podra afectar a las especificaciones de las interacciones, los planes de control de las interacciones y los documentos de control de las interacciones. En este caso, la planificacin de la SCM para el control de las interacciones ocurre dentro del contexto del proceso a nivel de sistema. Se puede encontrar una discusin del rendimiento de las actividades del control de las interacciones en [Ber92:c12].
67
7.1.5.1
[Buc96:c3; Roy98] Se pueden asignar medidas de la SCM para proporcionar informacin especfica acerca de la evolucin del producto o una visin interna de cmo funcionan los procesos de la SCM. Un objetivo relacionado con el seguimiento de los procesos de la SCM es descubrir oportunidades para mejorar los procesos. Las mediciones de procesos de la SCM proporcionan un buen medio para monitorizar la efectividad de las actividades de la SCM de una manera continuada. Estas mediciones son tiles para caracterizar el estado actual del proceso y para proporcionar una base para hacer comparaciones en el tiempo. Los anlisis de las mediciones pueden proporcionar ideas que lleven a cambios en el proceso y a las correspondientes actualizaciones del SCMP. Las bibliotecas de software y las diferentes capacidades de las herramientas de la SCM proporcionan fuentes para extraer informacin acerca de las caractersticas de los procesos de la SCM (e informacin del proyecto y de gestin). Por ejemplo, sera til para evaluar los criterios usados para determinar qu niveles de autoridad son los ptimos para autorizar ciertos tipos de cambios, el tener informacin acerca del tiempo necesario para realizar distintos tipos de cambios. Se debe tener cuidado en asegurarse de mantener el objetivo del seguimiento en los hallazgos que pueden surgir de las mediciones y no en las mediciones en s mismas. El KA del Proceso de la Ingeniera del Software presenta una discusin acerca de medidas del producto y de los procesos. El programa de medidas del software se describe en el KA de la Gestin del Ingeniera del Software.
7.1.5.2
[Buc96:c15]
Se pueden llevar a cabo auditorias durante el proceso de ingeniera del software para investigar el estado actual de elementos especficos de la configuracin o para evaluar la implementacin del proceso de la SCM. Las auditorias durante el proceso de la SCM proporcionan un mecanismo ms formal para monitorizar aspectos seleccionados del proceso y se podra coordinar con la funcin del SQA. Vase tambin el punto 5 Auditoria la Configuracin del Software.
68
La actividad de la identificacin de la configuracin del software identifica los elementos que deben ser controlados, establece esquemas de identificacin para los elementos y sus versiones, y establece las herramientas y las tcnicas que se utilizarn en la adquisicin y gestin de elementos sujetos a control. Estas actividades constituyen la base para las otras actividades de SCM.
7.2.1.1
[Buc96:c4; c6, Pre04:c27] Una configuracin del software es el conjunto de caractersticas funcionales y fsicas del software tal y como se han definido en la documentacin tcnica o conseguido en un producto final (IEEE610.12-90). Se puede ver como parte de una configuracin del sistema ms general.
7.2.1.2
[Buc96:c4;c6; Con98:c2; Pre04:c27] Un elemento de configuracin de software (SCI) es una agregacin de software, asignado para tener gestin de configuracin y se trata como una sola entidad en el proceso de la SCM (IEEE610.12-90). La SCM controla un conjunto variado de elementos adems del cdigo. Los elementos de software con potencial posibilidad de llegar a ser elementos de configuracin incluyen: Planes, documentacin de especificaciones y diseo, material de pruebas, herramientas de software, cdigo fuente y ejecutable, libreras de cdigo, datos y diccionarios de datos, documentacin para la instalacin, para mantenimiento, para operacin y uso del software. La seleccin de SCIs es un proceso importante en el que se ha de conseguir un equilibrio entre proporcionar una visibilidad adecuada para el control del proyecto y proporcionar un nmero manejable de elementos a controlar. Se puede encontrar una lista con criterios para la seleccin de SCIs en [Ber92].
7.2.1.3
[Con98:c2; Pre04:c27] La relacin estructural entre los SCIs seleccionados y sus partes constituyentes, afectan a otras actividades o tareas de la SCM tales como la construccin del software o el anlisis del impacto de los cambios propuestos. El seguimiento adecuado de estas relaciones es tambin importante como soporte a las operaciones de seguimiento. La necesidad de asignar los elementos identificados a la estructura del software y la necesidad de soportar la evolucin de los elementos de software y sus relaciones, se deberan considerar durante el diseo de los mtodos de identificacin para los SCIs.
7.2.1.4
[Bab86:c2]
Los elementos de software evolucionan al mismo tiempo que el proyecto de software avanza. Una versin de un elemento de software es un elemento identificado y especificado particularmente. Se puede pensar en ella como el estado de un elemento que evoluciona. [Con98:c3-c5] Una revisin es una nueva versin de un elemento que reemplazar la versin
69
anterior. Una variante es una nueva versin de un elemento que se aadir a la configuracin sin reemplazar la versin anterior.
7.2.1.5
Lnea base
[Bab86:c5; Buc96:c4; Pre04:c27] La lnea base de un software es un conjunto de elementos de configuracin del software que se han designado formalmente y fijados en un momento determinado durante el ciclo de vida del software. El trmino se usa tambin para referirse a una versin en particular de un elemento de la configuracin del software acordada previamente. En cualquiera de los casos, la lnea base solo se puede cambiar por medio de procedimientos de control de cambios formales. Una lnea base junto con todos los cambios aprobados para la lnea base, representa la configuracin actual aprobada. Algunas lneas base comnmente utilizadas son la funcional, la asignada, la de desarrollo y la de productos (vase por ejemplo [Ber92]). La lnea base funcional se corresponde con los requerimientos del sistema ya verificados. La lnea base asignada se corresponde con las especificaciones de los requerimientos del sistema y las especificaciones de los requerimientos de las interfaces de software. La lnea base de desarrollo representa la configuracin evolutiva del software en momentos determinados durante el ciclo de vida del proyecto. La autoridad de cambios para dicha lnea base es normalmente la responsabilidad de la organizacin de desarrollo, pero se podra compartir con otras organizaciones (por ejemplo la de SCM o la de Pruebas). La lnea base del producto corresponde a el producto de software completo, entregado para la integracin de sistemas. Las lneas base a usar en un proyecto determinado, junto con los niveles de autoridad asociados necesarios para la aprobacin de cambios, se identifican normalmente en el SCMP.
7.2.1.6
[Buc96:c4]
Diferentes elementos de configuracin del software se ponen bajo el control de la SCM en momentos distintos; lo que significa que se aaden a una lnea base en particular en puntos especficos del ciclo de vida del software. El evento que da comienzo al proceso es la terminacin de alguna tarea formal de aceptacin tal como una revisin formal. La figura 2 caracteriza el crecimiento de elementos en una lnea base durante el ciclo de vida. Esta figura se basa en el modelo de cascada solamente por motivos ilustrativos; los subndices usados en la figura indican la versin de los elementos durante su evolucin. La solicitud de cambios del software (SCR) se describe en el punto 3.1 Solicitud, Evaluacin y Aprobacin de Cambios del Software.
70
Seguidamente de la adquisicin de un SCI, los cambios a dicho elemento se deben aprobar formalmente de la manera apropiada para el elemento y la lnea base involucrados, como se define en el SCMP. Despus de la aprobacin, el elemento se incorpora en la lnea base del software siguiendo el procedimiento apropiado.
71
7.3.1.1
[Ber92:c9; Buc96:c9, c11; Pre04:c27] La autoridad para aceptar o rechazar los cambios propuestos, es normalmente la responsabilidad de una entidad conocida como Consejo de Control de la Configuracin (CCB). En proyectos pequeos, dicha autoridad normalmente reside en el Jefe de Proyecto o algn otro individuo elegido, en vez de en un consejo de varias personas. Puede haber mltiples niveles de autoridad de cambios, dependiendo de una variedad de criterios, como cuan crtico sea el elemento involucrado, la naturaleza del cambio (por ejemplo, el impacto en el presupuesto y planificacin), o el momento actual en el ciclo de vida. La composicin de CCBs que se utilice para un sistema determinado varia en relacin a estos criterios (siempre atendera un representante de la SCM). Cuando el alcance de la autoridad de un CCB es est limitado solamente al software, se le conoce como Consejo de Control de Configuracin del Software (CCBS). Las actividades del CCB estn sujetas normalmente a auditoras de la calidad de software o revisiones.
7.3.1.2
[Buc96:c9, c11; Pre04:c27] Un proceso efectivo de peticin de cambio del software (SCR) requiere el uso de herramientas de soporte y procedimientos, desde formularios de papel y un procedimientos documentado hasta la herramienta electrnica para generar peticiones de cambio, imponiendo el flujo del proceso de cambios, capturando las decisiones del CCB y produciendo informacin del proceso de cambio. Un enlace entre las habilidades de esta herramienta y el sistema de informe de errores puede facilitar el seguimiento de soluciones para los informes de errores. Las descripciones del proceso de cambios y los formularios de soporte (informacin) aparecen en gran nmero de las referencias, por ejemplo [Ber92:c9].
72
podran aparecer como aplicaciones especializadas separadas, bajo el control de un grupo independiente de la SCM. Tambin podran aparecer integradas como parte del entorno de la ingeniera del software. Finalmente, podran ser tan elementales como un sistema de control de cambios rudimentario proporcionado por el sistema operativo.
73
planes y procedimientos (IEEE1028-97). Las auditorias se llevan a cabo de acuerdo con un proceso bien definido que consiste en varias responsabilidades y papeles de auditoria. En consecuencia, cada auditoria se debe planear con cuidado. Una auditoria requiere un nmero de personas que realizarn una variedad de tareas en un periodo de tiempo bastante reducido. Herramientas que den soporte a la planificacin y ejecucin de la auditoria pueden facilitar mucho el proceso. Se pueden encontrar consejos para realizar auditorias de software en varias referencias, como [Ber92:c11, Buc96:c15] y (IEEE1028-97). La actividad de auditoria de la configuracin del software determina el grado en que un elemento satisface las caractersticas funcionales y fsicas. Se pueden realizar auditorias informales de este tipo en momentos clave del ciclo de vida. Hay dos tipos de auditoras que podran ser requeridas por el contrato (por ejemplo, en contratos para software crtico): la Auditoria de la Configuracin Funcional (FCA) y la Auditora de la Configuracin Fsica (PCA). El completar con xito estas auditoras puede ser un prerrequisito para establecer la lnea base del producto. Buckley [Buc96:c15] contrasta los objetivos de las FCA y PCA en los contextos de software y hardware y recomienda que se evale cuidadosamente la necesidad de una FCA y PCA de software antes de realizarlas.
74
compiladores. Podra ser necesario reconstruir una copia exacta de un elemento de configuracin que se haya construido previamente. En ese caso, las herramientas de soporte y las instrucciones de construccin asociadas deben de estar bajo el control de la SCM para asegurarse de la disponibilidad de la las versiones correctas de las herramientas. Las habilidades de una herramienta son tiles para seleccionar la versin correcta de elementos de software para un entorno destino determinado y para el proceso de construir el software automticamente con las versiones seleccionadas y los datos de configuracin apropiados. En proyectos grandes con desarrollo en paralelo o en entornos de desarrollo distribuido, estas habilidades de las herramientas son necesarias. La mayora de los entornos de ingeniera del software proporcionan esta habilidad. Estas herramientas varan en complejidad, desde las que requieren que el ingeniero de software aprenda un lenguaje de guiones especfico a soluciones grficas que ocultan la mayor parte de la complejidad en una solucin de construccin inteligente. El proceso y los productos de la construccin estn sujetos, normalmente, a verificacin de la calidad del software. Los resultados de un proceso de construccin se podran necesitar para futuras referencias y podran convertirse en registros de la garanta del software.
75
76
desarrollo son importantes no solo a nivel del proyecto sino tambin para el xito a largo plazo de una organizacin. El personal de ingeniera de software puede presentar una nica formacin o retos en la gestin de personal (por ejemplo, la gestin econmica en un contexto donde la tecnologa emergente sufre cambios rpidos y continuos). La gestin de la comunicacin es tambin a menudo mencionada como un aspecto pasado por alto pero importante en la actuacin de los individuos en un campo donde se precise el entendimiento de las necesidades de los usuarios y de los complejos requerimientos y diseos que sean necesarios. Finalmente, es necesaria la gestin del portafolio, la cual est en la capacidad de tener una visin general no solo del conjunto de software bajo desarrollo sino tambin del software ya en uso en una organizacin. Adems, la reutilizacin de software es un factor clave en el mantenimiento y mejoras en la productividad y competitividad. La reutilizacin efectiva requiere una visin estratgica que refleje el poder nico y los requerimientos de esta tcnica. En adicin para entender los aspectos de la gestin que son nicamente influenciados por el software, los ingenieros de software deben tener algunos conocimientos de los aspectos generales, adquiridos en los primeros cuatro aos antes de graduarse que son mencionados en la gua. La cultura y comportamiento organizacional, y la gestin empresarial funcional en trminos de consecucin, la gestin de suministros en cadena, el mercadeo, las ventas y la distribucin, todos tienen una influencia, aunque indirectamente, en los procesos de ingeniera de software en las organizaciones. Relevantes a estas KA son las nociones de gestin de proyectos, como la construccin de productos de software tiles es gestionado normalmente en la forma de (tal vez programas de) proyectos individuales. A este respecto, nosotros encontramos amplios soportes en la Gua de la Gestin de Proyectos del Cuerpo de Conocimiento (PMBOOK)(PMI00), en el cual se incluyen las siguientes KAs de la gestin de proyectos: gestin de la integracin de proyectos, gestin del mbito del proyecto, gestin del tiempo del proyecto, gestin de los costos del proyecto, gestin de la calidad del proyecto, gestin de los recursos humanos del proyecto, gestin de las comunicaciones del proyecto. Claramente, todos estos tpicos tienen relevancia directa con la KA de la gestin de la ingeniera de software. Un intento de duplicar el contenido de la Gua del PMBOOK sera casi imposible e inapropiado. En su lugar, sugerimos que el lector interesado en la gestin de proyectos adems consulte lo que es especfico al proyecto de la ingeniera de software del PMBOOK el mismo. La Gestin de proyectos es tambin encontrada en los captulos de las Disciplinas Relacionadas con la Ingeniera de Software. Las KA de la Gestin de la Ingeniera de Software consisten de ambos, los procesos de la gestin de proyectos de software, en estas primeras cinco subreas, y la medicin de la ingeniera de software en las siguientes subreas. Aunque estos dos temas pueden aparecer por separado, y en realidad poseen muchos aspectos nicos, su gran relacin los ha llevado a ser tratados en conjunto en las KA. Desafortunadamente, se asume comnmente en la industria del software que los productos se entregan tarde, por encima de lo presupuestado, y de baja calidad e incierta funcionalidad. En la gestin de informes de medicin - un principio asumido por algunas disciplinas de ingeniera como verdad puede ayudar a cambiar esta percepcin. En esencia, una gestin sin medicin, cualitativa y cuantitativa, sugiera una falta clara de rigor, y medicin sin gestin sugiere una falta de propsitos o contexto. De igual manera, sin embargo, gestin y medicin sin conocimientos es igualmente ineficaz, por eso debemos ser cuidadosos en enfatizar excesivamente en los aspectos cuantitativos de la Gestin de la Ingeniera de Software (SEM). Efectivamente la gestin requiere de ambos y de la experiencia. Las siguientes definiciones de trabajo se adoptan aqu: La Gestin de Procesos, se refiere a las actividades que son tomadas en orden para asegurar que los procesos de ingeniera de software sean realizados de manera consistente con las polticas, objetivos y estndares de la organizacin. La Medicin se refiere a la asignacin de valores y etiquetas a los aspectos de la ingeniera de software (productos, procesos y recursos como fue definido por[Fen98]) y los modelos que son derivados de estos, sean estos modelos desarrollados usando estadsticas, conocimientos expertos u otras tcnicas.
77
Las subreas de la gestin de proyectos de ingeniera de software hacen extensivo el uso de la subrea de medicin de la ingeniera de software. No es de extraar, que estas KA estn estrechamente relacionadas con otras en la gua de el SWEBOK, y leer las siguientes descripciones de las KA en conjunto con ellas seria particularmente til. Requerimientos del Software, son descritas algunas de las actividades a ser desarrolladas durante la fase de iniciacin y definicin de alcances del proyecto. Gestin de configuracin de software, trata sobre la identificacin, control, estado de cuentas, y la auditoria de la configuracin de software junto con el software relacionado con la gestin y los entregables. Procesos de Ingeniera de Software, porque los procesos y proyectos estn estrechamente relacionados (estas KA solo describen procesos y productos medibles). Calidad de Software, como la calidad es constantemente un objetivo de la gestin y es un propsito de muchas actividades que deben ser gestionadas. Descomposicin de los tpicos de la Gestin de la Ingeniera de Software Como las KA de la gestin de la ingeniera de software estn expuestas aqu como unos procesos organizacionales los cuales incorporan las nociones de gestin de procesos y proyectos, debemos crear una descomposicin que est basada en ambos tpicos y en el ciclo de vida del software. Sin embargo la base primaria para un nivel alto de descomposicin esta en los procesos de gestin en un proyecto de ingeniera de software. Existen seis subreas principales. Las primeras cinco subreas en siguen gran parte los procesos de gestin de la IEEE/EIA 12207. Las seis subreas son: Iniciacin y definicin de alcance, la cual se ocupa de las decisiones de iniciar un proyecto de ingeniera de software. Planeacin de proyectos de software, la cual dirige las actividades emprendidas a preparase para una ingeniera de software exitosa de una perspectiva de gestin. Promulgacin del proyecto de software, la cual se ocupa de las actividades de la gestin de la ingeniera de software generalmente aceptadas que ocurren durante la ingeniera de software. Revisin y evaluacin, la cual se ocupa de garantizar que el software es satisfactorio. Cierre, el cual dirige las actividades complementarias de un proyecto de ingeniera de software. Medicin de Ingeniera de Software, la cual se ocupa de el desarrollo e implementacin efectiva de programas de medicin en las organizaciones de ingeniera de software (IEEE 12207.0-96). La descomposicin de los tpicos para las KA de la ingeniera de software se muestra en la figura 1.
78
Revisin y evaluacin
Cierre
Proceso de planeacin Proceso de entregables Esfuerzo, cronograma y costos de estimacin Asignar recursos
Implementaci n de planes Gestionar los contratos de distribucin Implementar procesos de medicin Procesos de monitoreo Procesos de control
Establecer y apoyar compromisos evaluacin Plan de procesos de medicin Realizar los procesos de medicin Evaluar la medicin
Reportes
79
(sean internos o externos) para asegurar que el proyecto puede ser completado a satisfaccin en una manera oportuna y rentable (usando, por ejemplo, una matriz de requerimientos y capacidades). Esto a menudo requiere de alguna estimacin ballpark (en el contexto) del esfuerzo y el costo basados en mtodos apropiados (por ejemplo, tcnicas anlogas de informes expertos).
80
productos de software del mercado. El uso de la tercera parte y el software obtenido son planeados y suministrados para ser seleccionados.
81
Tambin se ha de planificar cmo se gestionar el proyecto y cmo se gestionar la planificacin. Los informes, la supervisin y el control del proyecto deben encajar en el proyecto de ingeniera del software seleccionado y en las realidades del proyecto, y deben reflejarse en los varios artefactos que se usarn para gestionarlo. Pero, en un contexto en donde los cambios son ms una expectativa que un susto, es de vital importancia que se gestionen los propios planes. Esto requiere que sistemticamente se dirija, supervise, repase, informe y, donde as lo requiera, revise, la unin a los planes. Los planes asociados a otros procesos de soporte orientados a gestin (por ejemplo, documentacin, gestin de la configuracin del software, y resolucin de problemas) tambin necesitan gestionarse de esa misma manera.
82
8.3.6 Informes
[Rei02: c10; Tha97: c3,c10] En perodos especficos y concertados, se informa de la unin a los planes dentro de la organizacin (por ejemplo al comit de direccin de cartera del proyecto) y a los contratistas externos (por ejemplo, clientes, usuarios). Informes de esta naturaleza deben orientarse hacia una unin global en oposicin a los informes detallados que se requieren frecuentemente dentro del equipo de proyecto.
83
dificultad (por ejemplo, conflictos entre miembros del equipo). Se evalan los distintos mtodos, herramientas y tcnicas empleadas para ver su eficacia y adecuacin, y se valora sistemtica y peridicamente el propio proceso para conocer su relevancia, utilidad y eficacia en el contexto del proyecto. Cuando se juzga necesario, se llevan a cabo y se gestionan los cambios.
8.5 Cierre
El proyecto llega a su fin cuando todos los planes y procesos implicados se han promulgado y completado. En esta fase, se repasan los criterios para el xito del proyecto. Una vez que se ha establecido el cierre, se llevan a cabo actividades de archivado, post mortem y de mejoras de los procesos.
84
Definir el alcance de la medicin. Se debe establecer la unidad organizacional a la que se va a aplicar cada requisito de medicin. Esto puede consistir en un rea funcional, en un solo proyecto, en un solo sitio, o incluso en toda la empresa. Todas las subsiguientes tareas de medicin relacionadas con este requisito deben encontrarse dentro del alcance definido. Adems, se debe identificar a los contratistas implicados. Compromiso de la direccin y del personal con la medicin. El compromiso debe establecerse formalmente, debe comunicarse, y debe apoyarse en los recursos (ver el siguiente artculo).
Empear recursos para la medicin. El compromiso de la organizacin con la medicin es un factor esencial para el xito, como demuestra la asignacin de recursos para llevar a cabo el proceso de medicin. El asignar recursos incluye el reparto de responsabilidades para las diferentes tareas del proceso de medicin (tales como usuario, analista y bibliotecario) y el proporcionar una financiacin, entrenamiento, herramientas, y apoyo adecuados para dirigir el proceso de un modo perdurable.
85
a las prcticas actuales. La aprobacin demuestra que existe un compromiso con el proceso de medicin [ISO15939-02: 5.2.6.1 y Apndice F]. o Hay que hacer que los recursos estn disponibles para implementar las tareas de medicin planeadas y aprobadas. La disponibilidad de los recursos puede organizarse en aquellos casos en donde los cambios han de pilotarse antes de un amplio despliegue. Se debe prestar atencin a los recursos necesarios para un amplio despliegue de los nuevos procedimientos o mediciones [ISO1593902: 5.2.6.2].
Adquirir y desplegar tecnologas de apoyo. Esto incluye una evaluacin de las tecnologas de apoyo disponibles, la seleccin de las tecnologas ms adecuadas, la adquisicin de esas tecnologas, y el despliegue de esas tecnologas [ISO 1593902:5.2.7].
86
las categoras. Determinar los costes y beneficios de las mejoras potenciales y seleccionar las acciones de mejora adecuadas. Comunicar las mejoras propuestas al dueo del proceso de medicin y a los contratistas para su revisin y aprobacin. Comunicar tambin la falta de mejoras potenciales si el anlisis no identifica ninguna mejora [ISO 15939-02: 5.4.2].
[Dor02]
[ISO15239 02]
[Fen98]
[Pfl01]
[Pre0 4]
[Rei02]
[Som05 ]
[Tha97 ]
1.Iniciacin y Alcance
1.1 Determinacin y Negociacin de Requerimientos 1.2 Viabilidad, Anlisis 1.3 Construir Verificar para
v2c4
C4
C7
C5
C6
C6 C6
2. Planificacin de un Proyecto Software 2.1 Planificacin de un Proceso 2.2 Determinar los entregables 2.3 Esfuerzo, Horario y Clculo del Coste 2.4 Reparto de Recursos 2.5 Gestin de Riesgos 2.6 Gestin de Calidad 2.7 Gestin de Planes 3. Promulgacin del Proyecto Software 3.1 Implementacin de Planes C3 C4 V2c7 V1c8, v2c3-c5 C3 C3 V2c7 C12 C3 c23,c 24 C24 C25 C26 c5,c6 C4,c23 C5 v1c6,v2c7 ,v2c8 c2,c3 c2,c2 1 C24 c1,c3, c5 c3,c4 C3,c4, c6 C4
C3
C4 C4 C24,c2 5 C4
C6,c7 C4 C9,c10 C4
87
3.2 Gestin de Contratos con Proveedores 3.3 Implementacin de Procesos para medir 3.4 Proceso Supervisin de V1c8, v2c2-c5, c7 V2c7 C13,c1 4 C22 C10,c1 2 C10
C4
C3,c10
C25
C3,c10
3.5 Proceso de Control 3.6 Informes 4. Revisin y Evaluacin 4.1 Determinar la satisfaccin de Requerimientos los
C10 C10
C3,c9 C3,c10
C10
C3,c10
4.2 Revisar y Evaluar la Ejecucin 5. Cierre 5.1 Determinar el Cierre 5.2 Actividades Cierre 6. Medida Ingeniera del Software 6.1 Establecer Sostener el compromiso de Medir 6.2 Planificar el Proceso de Medicin 6.3 Realizar el Proceso de Medicin 6.4 Evaluar Mediciones las y de del la
v1c8,v2c3 ,c5
C8,c9
C10
C3,c10
C10 C4
C3,c10
C3,c13
C22
C5,C,D,E, F
C5,G
C5,D
88
[Dor02] M. Dorfman and R.H. Thayer, eds., Software Engineering, IEEE Computer Society Press, 2002, Vol. 1, Chap. 6, 8, Vol. 2, Chap. 3, 4, 5, 7, 8. [Fen98] N.E. Fenton and S.L. Pfleeger, Software Metrics: A Rigorous & Practical Approach, second ed., International Thomson Computer Press, 1998, Chap. 1-14. [ISO15939-02] ISO/IEC 15939:2002, Software Engineering Software Measurement Process, ISO and IEC, 2002. [Pfl01] S.L. Pfleeger, Software Engineering: Theory and Practice, second ed., Prentice Hall, 2001, Chap. 2-4, 8, 9, 12, 13. [Pre04] R.S. Pressman, Software Engineering: A Practitioner's Approach, sixth ed., McGrawHill, 2004, Chap. 2, 6, 7, 22-26. [Rei02] D.J. Reifer, ed., Software Management, IEEE Computer Society Press, 2002, Chap. 16, 7-12, 13. [Som05] I. Sommerville, Software Engineering, seventh ed., Addison-Wesley, 2005, Chap. 3-6, 23- 25. [Tha97] R.H. Thayer, ed., Software Engineering Project Management, IEEE Computer Society Press, 1997, Chap. 1-10. Apndice a. Lista de lecturas adicionales (Adl99) T.R. Adler, J.G. Leonard, and R.K. Nordgren, Improving Risk Management: Moving from Risk Elimination to Risk Avoidance, Information and Software Technology, vol. 41, 1999, pp. 29-34. (Bai98) R. Baines, Across Disciplines: Risk, Design, Method, Process, and Tools, IEEE Software, July/August 1998, pp. 61-64. (Bin97) R.V. Binder, Can a Manufacturing Quality Model Work for Software? IEEE Software, September/October 1997, pp. 101-102,105. (Boe97) B.W. Boehm and T. DeMarco, Software Risk Management, IEEE Software, May/June 1997, pp. 17-19. (Bri96) L.C. Briand, S. Morasca, and V.R. Basili, Property-Based Software Engineering Measurement, IEEE Transactions on Software Engineering, vol. 22, iss. 1, 1996, pp. 68-86. (Bri96a) L. Briand, K.E. Emam, and S. Morasca, On the Application of Measurement Theory in Software Engineering, Empirical Software Engineering, vol. 1, 1996, pp. 61-88. (Bri97) L.C. Briand, S. Morasca, and V.R. Basili, Response to: Comments on Property-based Software Engineering Measurement: Refining the Addivity Properties, IEEE Transactions on Software Engineering, vol. 23, iss. 3, 1997, pp. 196- 197. (Bro87) F.P.J. Brooks, No Silver Bullet: Essence and Accidents of Software Engineering, Computer, Apr. 1987, pp. 10-19. (Cap96) J. Capers, Applied Software Measurement: Assuring Productivity and Quality, second ed., McGraw-Hill, 1996. (Car97) M.J. Carr, Risk Management May Not Be For Everyone, IEEE Software, May/June 1997, pp. 21-24. (Cha96) R.N. Charette, Large-Scale Project Management Is Risk Management, IEEE Software, July 1996, pp. 110-117. (Cha97) R.N. Charette, K.M. Adams, and M.B. White, Managing Risk in Software Maintenance, IEEE Software, May/June 1997, pp. 43-50. (Col96) B. Collier, T. DeMarco,and P. Fearey, A Defined Process for Project Postmortem Review, IEEE Software, July 1996, pp. 65-72. (Con97) E.H. Conrow and P.S. Shishido, Implementing Risk Management on Software Intensive Projects, IEEE Software, May/June 1997, pp. 83-89. (Dav98) A.M. Davis, Predictions and Farewells, IEEE Software, July/August 1998, pp. 6-9.
89
(Dem87) T. DeMarco and T. Lister, Peopleware: Productive Projects and Teams, Dorset House Publishing, 1987. (Dem96) T. DeMarco and A. Miller, Managing Large Software Projects, IEEE Software, July 1996, pp. 24-27. (Fav98) J. Favaro and S.L. Pfleeger, Making Software Development Investment Decisions, ACM SIGSoft Software Engineering Notes, vol. 23, iss. 5, 1998, pp. 69-74. (Fay96) M.E. Fayad and M. Cline, Managing Object-Oriented Software Development, Computer, September 1996, pp. 26-31. (Fen98) N.E. Fenton and S.L. Pfleeger, Software Metrics: A Rigorous & Practical Approach, second ed., International Thomson Computer Press, 1998. (Fle99) R. Fleming, A Fresh Perspective on Old Problems, IEEE Software, January/February 1999, pp. 106-113. (Fug98) A. Fuggetta et al., Applying GQM in an Industrial Software Factory, ACM Transactions on Software Engineering and Methodology, vol. 7, iss. 4, 1998, pp. 411-448. (Gar97) P.R. Garvey, D.J. Phair, and J.A. Wilson, An Information Architecture for Risk Assessment and Management, IEEE Software, May/June 1997, pp. 25-34. (Gem97) A. Gemmer, Risk Management: Moving beyond Process, Computer, May 1997, pp. 33-43. (Gla97) R.L. Glass, The Ups and Downs of Programmer Stress, Communications of the ACM, vol. 40, iss. 4, 1997, pp. 17-19. (Gla98) R.L. Glass, Short-Term and Long-Term Remedies for Runaway Projects, Communications of the ACM, vol. 41, iss. 7, 1998, pp. 13-15. (Gla98a) R.L. Glass, How Not to Prepare for a Consulting Assignment, and Other Ugly Consultancy Truths, Communications o 1 f the ACM, vol. 41, iss. 12, 1998, pp. 11-13. (Gla99) R.L. Glass, The Realities of Software Technology Payoffs, Communications of the ACM, vol. 42, iss. 2, 1999, pp. 74-79. (Gra99) R. Grable et al., Metrics for Small Projects: Experiences at the SED, IEEE Software, March/April 1999, pp. 21-29. (Gra87) R.B. Grady and D.L. Caswell, Software Metrics: Establishing A Company-Wide Program. Prentice Hall, 1987. (Hal97) T. Hall and N. Fenton, Implementing Effective Software Metrics Programs, IEEE Software, March/April 1997, pp. 55-64. (Hen99) S.M. Henry and K.T. Stevens, Using Belbins Leadership Role to Improve Team Effectiveness: An Empirical Investigation, Journal of Systems and Software, vol. 44, 1999, pp. 241-250. (Hoh99) L. Hohmann, Coaching the Rookie Manager, IEEE Software, January/February 1999, pp. 16-19. (Hsi96) P. Hsia, Making Software Development Visible, IEEE Software, March 1996, pp. 2326. (Hum97) W.S. Humphrey, Managing Technical People: Innovation, Teamwork, and the Software Process: Addison-Wesley, 1997. (IEEE12207.0-96) IEEE/EIA 12207.0-1996//ISO/IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes, IEEE, 1996. (Jac98) M. Jackman, Homeopathic Remedies for Team Toxicity, IEEE Software, July/August 1998, pp. 43-45. (Kan97) K. Kansala, Integrating Risk Assessment with Cost 812 IEEE 2004 Version Estimation, IEEE Software, May/June 1997, pp. 61-67. (Kar97) J. Karlsson and K. Ryan, A Cost-Value Aproach for Prioritizing Requirements, IEEE Software, September/October 1997, pp. 87-74.
90
(Kar96) D.W. Karolak, Software Engineering Risk Management, IEEE Computer Society Press, 1996. (Kau99) K. Kautz, Making Sense of Measurement for Small Organizations, IEEE Software, March/April 1999, pp. 14-20. (Kei98) M. Keil et al., A Framework for Identifying Software Project Risks, Communications of the ACM, vol. 41, iss. 11, 1998, pp. 76-83. (Ker99) B. Kernighan and R. Pike, Finding Performance Improvements, IEEE Software, March/April 1999, pp. 61-65. (Kit97) B. Kitchenham and S. Linkman, Estimates, Uncertainty, and Risk, IEEE Software, May/June 1997, pp. 69-74. (Lat98) F. v. Latum et al., Adopting GQM-Based Measurement in an Industrial Environment, IEEE Software, January-February 1998, pp. 78-86. (Leu96) H.K.N. Leung, A Risk Index for Software Producers, Software Maintenance: Research and Practice, vol. 8, 1996, pp. 281-294. (Lis97) T. Lister, Risk Management Is Project Management for Adults, IEEE Software, May/June 1997, pp. 20-22. (Mac96) K. Mackey, Why Bad Things Happen to Good Projects, IEEE Software, May 1996, pp. 27- 32. (Mac98) K. Mackey, Beyond Dilbert: Creating Cultures that Work, IEEE Software, January/February 1998, pp. 48-49. (Mad97) R.J. Madachy, Heuristic Risk Assessment Using Cost Factors, IEEE Software, May/June 1997, pp. 51-59. (McC96) S.C. McConnell, Rapid Development: Taming Wild Software Schedules, Microsoft Press, 1996. (McC97) S.C. McConnell, Software Project Survival Guide, Microsoft Press, 1997. (McC99) S.C. McConnell, Software Engineering Principles, IEEE Software, March/April 1999, pp. 6- 8. (Moy97) T. Moynihan, How Experienced Project Managers Assess Risk, IEEE Software, May/June 1997, pp. 35-41. (Ncs98) P. Ncsi, Managing OO Projects Better, IEEE Software, July/August 1998, pp. 50-60. (Nol99) A.J. Nolan, Learning From Success, IEEE Software, January/February 1999, pp. 97105. (Off97) R.J. Offen and R. Jeffery, Establishing Software Measurement Programs, IEEE Software, March/April 1997, pp. 45-53. (Par96) K.V.C. Parris, Implementing Accountability, IEEE Software, July/August 1996, pp. 8393. (Pfl97) S.L. Pfleeger, Assessing Measurement (Guest Editors Introduction), IEEE Software, March/April 1997, pp. 25-26. (Pfl97a) S.L. Pfleeger et al., Status Report on Software Measurement, IEEE Software, March/April 1997, pp. 33-43. (Put97) L.H. Putman and W. Myers, Industrial Strength Software Effective Management Using Measurement, IEEE Computer Society Press, 1997. (Rob99) P.N. Robillard, The Role of Knowledge in Software Development, Communications of the ACM, vol. 42, iss. 1, 1999, pp. 87-92. (Rod97) A.G. Rodrigues and T.M. Williams, System Dynamics in Software Project Management: Towards the Development of a Formal Integrated Framework, European Journal of Information Systems, vol. 6, 1997, pp. 51-66.
91
(Rop97) J. Ropponen and K. Lyytinen, Can Software Risk Management Improve System Development: An Exploratory Study, European Journal of Information Systems, vol. 6, 1997, pp. 41- 50. (Sch99) C. Schmidt et al., Disincentives for Communicating Risk: A Risk Paradox, Information and Software Technology, vol. 41, 1999, pp. 403-411. (Sco92) R.L. v. Scoy, Software Development Risk: Opportunity, Not Problem, Software Engineering Institute, Carnegie Mellon University CMU/SEI-92- TR-30, 1992. (Sla98) S.A. Slaughter, D.E. Harter, and M.S. Krishnan, Evaluating the Cost of Software Quality, Communications of the ACM, vol. 41, iss. 8, 1998, pp. 67-73. (Sol98) R. v. Solingen, R. Berghout, and F. v. Latum, Interrupts: Just a Minute Never Is, IEEE Software, September/October 1998, pp. 97-103. (Whi95) N. Whitten, Managing Software Development Projects: Formulas for Success, Wiley, 1995. (Wil99) B. Wiley, Essential System Requirements: A Practical Guide to Event-Driven Methods, Addison- Wesley, 1999. (Zel98) M.V. Zelkowitz and D.R. Wallace, Experimental Models for Validating Technology, Computer, vol. 31, iss. 5, 1998, pp. 23-31. Apndice b. Lista de estndares (IEEE610.12-90) IEEE Std 610.12-1990 (R2002), IEEE Standard Glossary of Software Engineering Terminology, IEEE, 1990. (IEEE12207.0-96) IEEE/EIA 12207.0- 1996//ISO/IEC12207:1995, Industry Implementation of Int. Std. ISO/IEC 12207:95, Standard for Information Technology-Software Life Cycle Processes, IEEE, 1996. (ISO15939-02) ISO/IEC 15939:2002, Software Engineering-Software Measurement Process, ISO and IEC, 2002. (PMI00) Project Management Institute Standards Committee, A Guide to the Project Management Body of Knowledge (PMBOK), Project Management Institute, 2000.
92
INTRODUCCIN El rea de Conocimiento (AC) del Proceso de Ingeniera del Software puede examinarse en dos niveles. El primer nivel engloba las actividades tcnicas y de gestin dentro de los procesos del ciclo de vida del software realizadas durante la adquisicin, desarrollo, mantenimiento y retirada del software. El segundo es un meta-nivel, que se refiere a la definicin, implementacin, valoracin, medicin, gestin, cambios y mejoras de los procesos mismos del ciclo de vida del software. El primer nivel lo cubren las otras AC en la Gua. Este el rea de Conocimiento (AC) se ocupa del segundo nivel. El trmino proceso de ingeniera del software puede interpretarse de diversas maneras, y esto puede llevar a confusiones. Un significado, donde se usa la palabra el, como en el caso de el proceso de ingeniera del software, podra implicar que existe slo un modo correcto de realizar tareas de ingeniera del software. En la Gua se evita este significado porque no existe tal proceso. Los estndares como IEEE12207 hablan de procesos de ingeniera del software, lo que significa que hay muchos procesos involucrados, tales como el proceso de desarrollo o proceso de administracin de configuracin. Un segundo significado se refiere a una discusin general sobre procesos relacionados con la ingeniera del software. Este es el significado que se pretende con el ttulo de esta el rea de Conocimiento (AC) y el que se usa con ms frecuencia en la descripcin del el rea de Conocimiento (AC). Finalmente, un tercer significado podra referirse al conjunto actual de actividades realizadas dentro de una organizacin, que podra verse como un solo proceso, especialmente desde dentro de la organizacin. Se utiliza este significado en el rea de Conocimiento (AC) en muy pocos casos. Esta el rea de Conocimiento (AC) se aplica a cualquier parte de la gestin de los procesos del ciclo de vida del software en la que se introduzcan cambios tecnolgicos o de procedimiento para la mejora de proceso o producto. Los procesos de ingeniera del software tienen importancia no slo para las grandes organizaciones. Ms an, las actividades relacionadas con los procesos pueden ser, y han sido, realizadas con xito por pequeas organizaciones, equipos e individuos.
93
El objetivo de gestionar los procesos del ciclo de vida del software es implementar nuevos o mejores procesos en las prcticas actuales, sean stos individuales, proyectos u organizacionales. Esta el rea de Conocimiento (AC) no aborda explcitamente la Gestin de Recursos Humanos (HRM), por ejemplo, que estn consagrados en la gente CMM (Cur02) y procesos de ingeniera de sistemas [ISO1528-028; IEEE 1220-67 98]. Tambin debera reconocerse que muchos temas de procesos de ingeniera del software estn relacionados de cerca con otras disciplinas, tales como la gestin, incluso a veces utilizando una terminologa diferente. Desglose de temas para el proceso de ingeniera
94
herramienta u optimizando un procedimiento). A esto tambin se le puede denominar evolucin del proceso. En ambos casos hay que modificar las prcticas actuales. Si resulta que se extienden las modificaciones, puede que tambin sean necesarios cambios en la cultura organizacional.
9.1.1.1
Se pretende que el SEPG sea el foco central de mejoras del proceso de la ingeniera del software y tiene cierto nmero de responsabilidades en trminos de inicializacin y mantenimiento. stos se describen en [Fow90].
9.1.1.2
El concepto de EF separa la organizacin del proyecto (la organizacin del desarrollo del software, por ejemplo) de la organizacin de las mejoras. La organizacin del proyecto se centra en el desarrollo y en el mantenimiento del software, mientras que la EF se ocupa de mejoras del proceso de la ingeniera del software. Se trata de que la EF institucionalice el aprendizaje colectivo de una organizacin, desarrollando, actualizando, y entregando a la organizacin del proyecto los paquetes de experiencia (por ejemplo, guas, modelos y cursos de entrenamiento), tambin conocidos como validaciones de procesos. La organizacin del proceso ofrece a la EF sus productos, los planes utilizados en su desarrollo, y los datos reunidos durante su desarrollo y operacin. En [Bas92] se presentan ejemplos de paquetes de experiencia.
95
96
97
proyecto, los requisitos reguladores, las prcticas industriales y las culturas corporativas. Algunos estndares, tales como IEEE/EIA 12207, contienen mecanismos y recomendaciones para lograr la adaptacin.
9.2.5 Automatizacin
[Pf101:c2] Las herramientas automatizadas o apoyan la ejecucin de las definiciones del proceso o aportan una gua a los humanos que desarrollan los procesos definidos. En los casos en los que se realiza el anlisis de un proceso, algunas herramientas permiten distintos tipos de simulaciones (por ejemplo, la simulacin de un evento discreto). Adems, existen herramientas que apoyan cada una de las notaciones de la definicin del proceso citados anteriormente. Ms an, estas herramientas pueden ejecutar las definiciones de procesos para otorgar una ayuda automatizada a los procesos actuales, o en algunos casos para automatizarlos plenamente. Una visin general de las herramientas de modelado de procesos puede encontrarse en [Fin94] y de los entornos centrados en procesos en (Gar96). Los trabajos sobre cmo aplicar Internet al suministro de una gua de un proceso en tiempo real est descrita en (Kel98).
98
Los mtodos SCAMPI giran en torno a las valoraciones CMMI [SEI01]. Las actividades realizadas durante una valoracin, la distribucin de esfuerzos en estas actividades, as como la atmsfera durante una valoracin son muy diferentes dependiendo de que sean para una mejora o para la adjudicacin de un contrato. Se han criticado los modelos y mtodos de las valoraciones de los procesos, por ejemplo (Fay97; Gra98). La mayora de estas crticas se refieren a la evidencia emprica que apoya el uso de modelos y mtodos de valoracin. Sin embargo, desde la publicacin de estos artculos, ha existido alguna evidencia sistemtica que apoyaba la eficacia de las valoraciones de los procesos (Cla97; Ele00; Ele00a;106 Kri99).
99
cierto tipo de cambio), productividad (LDC (Lneas de Cdigo)) o Puntos Funcin por personames), tiempo-de mercado, o satisfaccin del cliente (como medidos por medio de una encuesta a clientes). Esta relacin depende del contexto particular (por ejemplo, el tamao de la organizacin o el tamao del proyecto). En general, estamos mucho ms preocupados acerca del proceso de salidas. Sin embargo, con el objetivo de conseguir las salidas del proceso que deseamos (por ejemplo, mayor facilidad de mantenimiento, mayor satisfaccin del cliente), debemos haber implementado los procesos adecuados. Por supuesto que no son nicamente los procesos lo que tiene incidencia en las salidas. Otros factores como la capacidad del equipo y las herramientas que utilizan juegan un importante papel. Por ejemplo, cuando se evala el impacto de cambio en un proceso, es importante poner de relieve esas otras influencias. Adems es importante considerar el grado en el que el proceso ha sido institucionalizado (que fidelidad hay al proceso) para poder explicar porqu buenos procesos no siempre proporcionan las salidas deseadas en una situacin dada.
Figura 2 Diagrama que muestra la relacin entre un proceso y los resultados obtenidos
9.4.2.1
El tamao de un producto software es evaluado a menudo mediante medidas de longitud (por ejemplo, lneas de cdigo fuente en un mdulo, pginas en documento de especificacin de los requisitos del software), o funcionalidad (por ejemplo, puntos de funcin en una especificacin). El Estndar IEEE Std 14143.1 proporciona los principios de medicin funcional del software. Los estndares internacionales para la medicin funcional del software incluyen el ISO/IEC 19761, 20926, y el 20968 [IEEE 14143.1- 00; ISO19761-03; ISO20926-03; ISO20968-02].
9.4.2.2
Una amplia gama de medidas de la estructura de productos de software se puede aplicar el diseo tanto a los de alto y de bajo nivel y el cdigo artefactos para reflejar el flujo de control (por ejemplo, el ciclomtico nmero, cdigo de nudos), de flujo de datos (por ejemplo, las medidas de corte), de anidacin (por ejemplo, el polinomio de anidacin medida, la medida BAND), estructuras de control (por ejemplo, la medida del vector, la medida NPATH), y estructura modular y la interaccin (por ejemplo, la informacin flujo, las medidas basadas en los rboles, el acoplamiento y la cohesin). [Fen98:c8; Pre04: C15]
9.4.2.3
Como un atributo multi-dimensional, medicin de la calidad es menos sencillo de definir que los de arriba. Adems, algunas de las dimensiones de la calidad es probable que exigen una valoracin cualitativa en lugar de forma cuantitativa . Una discusin ms detallada de la medicin de calidad del software se proporciona en el AC Calidad del Software, el tema 4.4.
100
ISO modelos de calidad de productos de software y de las correspondientes medidas se describen en ISO9126, partes 1 a 4 [ISO9126-01]. [Fen98: C9, C10; Pre04: C15; Som05: C24]
9.4.4.1
La construccin de modelos incluye la calibracin y evaluacin del modelo. El enfoque metaconducido a la medicin informa el proceso de construccin de modelos en la medida en que los modelos se construyen para responder a las preguntas pertinentes y lograr objetivos de mejora del software. Este proceso tambin se ve influido por las limitaciones implcitas de medicin en particular escalas en relacin a la eleccin del mtodo de anlisis. Los modelos se calibran (utilizando en particular las observaciones pertinentes, por ejemplo, los proyectos de los ltimos proyectos que utilizan una tecnologa similar) y su eficacia se evala (por ejemplo, mediante pruebas de su desempeo en las muestras de retencin). [Fen98: c4, c6, c13; Pfl01: c3, c11, c12, Som05: C25]
9.4.4.2
El modelo de implementacin incluye tanto la interpretacin y el refinamiento de los modelos, los modelos calibrados se aplican al proceso, sus resultados se interpretan y evalan en el contexto del proceso o proyecto, y los modelos son luego refinados en su caso. [Fen98: c6; Pfl01: c3, C11, C12; Pre04: C22; Som05: C25]
101
La calidad de los resultados de las mediciones, tales como la precisin, repetibilidad y reproducibilidad, son problemas en la medicin de los procesos de ingeniera de software, ya que son medidas basados en instrumentos y prejuicios, como, por ejemplo, cuando los evaluadores de asignar puntajes a un proceso particular. Una discusin y un mtodo para lograr la calidad de la medicin se presentan en [Gol99]. Tcnicas del proceso de medicin se han clasificado en dos tipos generales: anlisis y evaluacin comparativa. Los dos tipos de tcnicas se pueden utilizar juntos desde que se basan en diferentes tipos de informacin. (Car91)
9.4.5.1
Tcnicas analticas
Las tcnicas analticas se caracterizan por basarse en "pruebas cuantitativas para determinar dnde se necesitan mejoras, y si una iniciativa de mejora ha sido un xito." El tipo de anlisis se ejemplifica con el Paradigma de Mejoramiento de la Calidad (PMC) que consiste en un ciclo de entender, evaluar y empaquetar [SEL96]. Las tcnicas presentadas a continuacin se destinan como otros ejemplos de las tcnicas analticas, y reflejan lo que se hace en la prctica. [Fen98; Mus99], (Lyu96; Wei93, Zel98) Sea o no una organizacin especfica utiliza todas estas tcnicas depende, al menos parcialmente, en su madurez. Estudios experimentales: La experimentacin consiste en la creacin de experimentos controlados o casi en la organizacin para evaluar los procesos. (McG94) Por lo general, un nuevo proceso se compara con el actual proceso para determinar si el primero tiene mejores resultados del proceso. Otro tipo de estudio experimental es la simulacin de procesos. Este tipo de estudio puede ser utilizado para analizar el comportamiento del proceso, explorar el potencial de mejora de procesos, predecir los resultados del proceso si el proceso actual ha cambiado en cierto modo, la ejecucin y control de procesos. Los datos iniciales sobre el rendimiento del proceso actual son necesarios recoger, sin embargo, como base para la simulacin. Revisin del proceso de definicin: es un medio por el cual una definicin de proceso (ya sea descriptivo o normativo, o ambos) se revisa, y las deficiencias y las posibles mejoras de procesos identificados. Ejemplos tpicos de esto son presentados en (Ban95; Kel98). Una manera fcil de funcionamiento para analizar un proceso es compararlo con una norma vigente (nacional, internacional o cuerpo profesional), como IEEE/EIA12207.0 [IEEE12207.0-96]. Con este enfoque, no hay datos cuantitativos recogidos en el proceso, o, si lo son, juegan un papel de apoyo. Los individuos que realizan el anlisis de la definicin del proceso utilizan sus conocimientos y capacidades para decidir qu cambios en el proceso potencialmente llevara a resultados convenientes del proceso. Los estudios observacionales tambin pueden proporcionar informacin til para la identificacin de mejoras en los procesos. (Agr99) Clasificacin ortogonal del defecto: es una tcnica que puede ser utilizada para conectar las fallas que se encuentran con las posibles causas. Se basa en una asignacin entre los tipos de fallas y provoca culpa. (Chi92; Chi96) El estndar de IEEE en la clasificacin de las fallas (o anomalas) pueden ser tiles en este contexto (el estndar IEEE para la Clasificacin de Software de anomalas (IEEE1044-93). Anlisis de Causa Raz es otra tcnica comn de anlisis que se utiliza en la prctica. Esto implica el seguimiento posterior de los problemas detectados (por ejemplo, fallos) para identificar las causas del proceso, con el objetivo de cambiar el proceso para evitar estos problemas en el futuro. Ejemplos de diferentes tipos de procesos se describen en (Col93; Ele97; Nak91). La tcnica de clasificacin de defectos ortogonal descrito anteriormente se puede utilizar para encontrar categoras en las que existen muchos problemas, momento en el que se pueden analizar. Clasificacin del defecto ortogonal es, pues, una tcnica utilizada para realizar una seleccin cuantitativa de dnde aplicar Anlisis de Causa Raz. Control Estadstico de Procesos: es una forma efectiva de identificar la estabilidad, o la falta de ella, en el proceso a travs del uso de grficos de control y sus interpretaciones. Una buena introduccin a SPC en el contexto de la ingeniera de software se presenta en un (Flo99). El Proceso Personal software define una serie de mejoras en las prcticas de desarrollo de un individuo en un determinado orden [Hum95]. Se trata de "abajo hacia arriba" en el sentido
102
de que establece la recogida de datos personales y de mejoras basadas en las interpretaciones de los datos.
9.4.5.2
El segundo tipo de tcnica, la evaluacin comparativa, "depende de la identificacin de un" excelente "la organizacin en un campo y documentar sus prcticas y herramientas." La evaluacin comparativa se supone que si una organizacin menos competente adopta las prcticas de la excelente organizacin, tambin se convertir en un excelente. Evaluacin comparativa incluye la evaluacin de la madurez de una organizacin o la capacidad de sus procesos. Esto es ejemplificado por el trabajo de evaluacin de software de proceso. Una visin general introductoria de las evaluaciones de proceso y su aplicacin se proporciona en (Zah98).
103
104
11 Calidad de Software
SIGLAS MICM (CMMI) CEPS (COTS) PDCA ACS (SQA) GCS (SQM) GCT (TQM) VyV (V&V) Modelo integrado de capacidad y madurez Periodo comercial del software Planear, hacer, evaluar, actuar Aseguramiento de la calidad de software Gestin de la calidad del software Gestin de la calidad total Verificacin y validacin
INTRODUCCION Qu es la calidad del software y porque la calidad del software es tan importante y tan nombrada en la gua de SWEBOK? con el paso de los aos distintas organizaciones y autores han definido el trmino calidad de forma diferente. Para Phil crosby (Cro79) es la conformidad a las requerimientos de los usuarios. Para Watts humprey (Hum89) se refiere a ella como El logro de excelentes niveles de uso de aptitud mientras que para IBM era la tpica frase la calidad dirigida por el mercado que se basaba en lograr la satisfaccin completa del cliente. El criterio de Baldrige a la calidad de organizacin (NIST03) usaba una frase muy similar la calidad orientada el cliente e incluye la satisfaccin del cliente como primera prioridad. Ms recientemente, la calidad se ha definido en (ISO9001-00) como el grado en que un conjunto de caractersticas inherentes cumple requisitos. Este captulo trata con los asuntos de calidad del software que trascienden los procesos de ciclo de vida. La calidad de software es una preocupacin (un inters) ubicua en la ingeniera de software, y entonces tambin es considerado en mucho del KAS. En resumen en la gua SWEBOK se describe una determinada cantidad de maneras de alcanzar la calidad del software. Aunque Particularmente esta el rea de Conocimiento (AC) cubre las tcnicas bsicas, de aquellos que no necesitan la ejecucin del software mientras se evala. Sin embargo las tcnicas dinmicas estn cubiertas en el rea de Conocimiento (AC) de pruebas de software. Desglose de los temas de Calidad de Software
105
11.1.1
Se espera de los ingenieros de software que tenga un compromiso con la calidad del software como parte de su cultura. Una cultura de ingeniera de software saludable es descrita en (Wie96). La tica puede desempear un papel significativo en la calidad del software, la cultura y las actitudes de los ingenieros de software. La IEEE computer society y el ACM (IEEE99) han desarrollado un cdigo de tica y prctica profesional basada en 8 principios para ayudar a los ingenieros de software a reforzar las actitudes relacionadas con la calidad y la independencia de su trabajo.
11.1.2
(Boe78; NIST03;Pre04;Wei93) La nocin de Calidad no es tan simple como puede parecer. Para cualquier producto de la ingeniera, hay muchas cualidades deseadas de inters, para una perspectiva particular del producto, para ser discutidas y decididas en el momento en que los requisitos de los productos se definen. Las caractersticas de calidad pueden ser necesarias o no, o podr ser obligado a un mayor o menor grado y las compensaciones podrn hacerse entre ellos. (Pfl01) El coste de la calidad se puede diferenciar en los costes de la prevencin, evaluacin de costos, el costo de fallas internas y el costo de falla externa. (Hou99). Una de las motivaciones detrs de un proyecto de software es el deseo de crear un software que tiene valor y este valor puede o no puede cuantificarse como un costo. El cliente tendr algn costo mximo en cuenta, en cambio de lo cual se espera que el propsito bsico del software se cumpla. El cliente tambin puede tener algunas expectativas en cuanto a la calidad del software. A veces los clientes no pueden haber pensado a treves de los problemas de calidad o los costos relacionados. Es la caracterstica meramente decorativa, o es esencial para el software? Si la respuesta se encuentra en algn punto intermedio, como es casi siempre el caso, se trata de hacer al cliente parte del proceso de decisin y plenamente consciente de los costos y beneficios. Lo ideal sera que la mayora de estas decisiones se tomaran en el proceso de software necesario (Vase el rea de conocimiento de requerimientos de software), pero estos problemas pueden seguir a lo largo del ciclo de vida del software. No existe una regla de cmo estas decisiones se deben tomar, pero el ingeniero de software debe ser capaz de presentar alternativas de calidad y sus costos. Un debate sobre el costo y el valor de los requerimientos de calidad se puede encontrar en (Jon96: C5; Wei96:C11) CALIDAD DEL SOFTWARE FUNDAMENTOS CALIDAD SOFTWARE Cultura y tica en Ingeniera de Software DE DE la PROCESOS DE GESTION DE CALIDAD DE SOFTWARE Aseguramiento de calidad de Software Verificacin y Validacin Revisiones y Auditorias la CONSIDERACIONES PRACTICAS Requisitos de la Solicitud de Calidad Caracterizacin de defectos Tcnicas de Gestin de la Calidad de Software Medicin de la Calidad del Software
106
11.1.3
(DAC01;Kia95; Lap 91; LEW92; Mus99;NIST;PRE01;RAK97;Sei02;Wal96) La terminologa para las caractersticas de calidad del software difiere de una taxonoma (o modelo de calidad de software) a otro, tal vez cada modelo tiene un nmero diferente de niveles jerrquicos y un nmero total caractersticas diferentes. Varios autores han elaborado modelos de caractersticas o atributos de calidad del software que puede ser til para la discusin, planificacin y evaluacin de la calidad de los productos de software. (Boe78; McC77) ISO / IEC ha definido tres modelos relacionados con la calidad del producto de software (Calidad interna, la calidad externa y la calidad en uso) (ISO9126-01) y un conjunto de partes relacionadas (ISO14598-98).
11.1.3.1
La Gestin de la calidad del software y el proceso de la calidad de ingeniera del software, tienen una influencia directa sobre la calidad del producto del software. Modelos y criterios que evalan las capacidades de las organizaciones de software son principalmente consideraciones de la gestin y la organizacin del proyecto y como tales, se contemplan en la el rea de gestin de ingeniera del software y el rea de proceso de ingeniera de software Por supuesto, no es posible distinguir por completo la calidad del proceso, desde la calidad del producto. La calidad de los procesos, discutidos en el rea de proceso de ingeniera de software de esta gua, influencian las caractersticas cualitativas de los productos de software, que a su vez afectan a la calidad en uso, segn lo percibido por el cliente. Dos normas de calidad son importantes (Ticklt Lio03) y una que tiene un impacto en la calidad del software es la norma (ISO 9001-00), junto con sus directrices para la aplicacin a software (ISO 90003-04). Otro estndar de la industria sobre la calidad de software es (CMMI (SEI02)), tambin se discute en el rea de procesos de ingeniera de software. CMMI tiene la intencin de proporcionar una gua para la mejora de procesos en las reas especficas relacionadas con el proceso de gestin de calidad son: (a) Aseguramiento de la calidad del proceso y del producto (b) La verificacin de proceso y (C) La validacin de proceso. CMMI clasifica las revisiones y las auditorias como mtodos de verificacin y no como procesos especficos como (IEEE 12207.096). Hubo inicialmente un cierto debate sobre si ISO 9001 o CMMI deben ser utilizados por los ingenieros de software para asegurar la calidad. Este debate ha sido ampliamente publicado y en consecuencia, se ha llegado a la conclusin que los dos son complementario y que la certificacin ISO 9001 puede ayudar enormemente en la obtencin de los niveles de madures ms alto de la CMMI.
11.1.3.2
El ingeniero de software necesita, en primer lugar, determinar el propsito real del software . En este sentido, es de vital importancia tener en cuenta que los requerimientos del cliente son lo primero y que incluyan los requisitos de calidad, no solo los requerimientos funcionales. As, el ingeniero de software tiene la responsabilidad de obtener los requisitos de calidad que no puede ser explicito desde el principio y discutir su importancia, as como el nivel de dificultad en la obtencin de ellos. Todos los procesos asociados con la calidad del software (por ejemplo, la construccin, verificacin y mejora de la calidad) sern diseados con estos requisitos en mente y que conlleva costos adicionales. La Norma (ISO 9126-01) define, para dos de sus tres modelos de calidad las caractersticas d y las sub caractersticas de calidad, y medidas que son tiles para evaluar la calidad del producto de software. (SUR 03). El significado del trmino producto se amplia para incluir cualquier artefacto que es la salida de cualquier proceso que se utiliza para construir el producto de software final. Ejemplo de un producto incluyen, pero no limitado a: Una especificacin de requisito del sistema, una especificacin de software necesario para un componente de software de un sistema, un diseo de un modulo, cdigo, documentacin de las pruebas o reportes producidos como resultado de las tareas de anlisis de calidad. Aunque la mayora de tratamiento de calidad se describe en trminos del software final y el rendimiento
107
del sistema, en la prctica se requiere que los productos relevantes intermedios sean evaluados a lo largo del proceso de ingeniera de software.
11.1.4
Mejoramiento de la calidad
(NIST 03; PRE 04; WEI 96) La calidad de los productos de software se puede mejorar mediante un proceso iterativo de mejora continua que requiere control de la gestin, coordinacin, y retroalimentacin de muchos procesos en paralelo: (1) Los procesos del ciclo de vida del software, (2) los proceso de deteccion, eliminacin y prevencin de errores/defectos (3) El proceso de mejora de la calidad. (KIN 92) La teora y los conceptos detrs de mejora de calidad, tales como la construccin de la calidad a travs de la prevencin y deteccin temprana de errores, la mejora continua y orientacin al cliente, son pertinentes a la ingeniera de software. Estos conceptos se basan en el trabajo de los expertos en la calidad que han declarado que la calidad de un producto est directamente relacionada con la calidad del proceso utilizado para crearlo. (CRO79, DEM 86, JUR 89). Enfoques tales como la gestin de calidad total (TQM), procesos de planear, hacer, verificar y actuar (PHVA) son herramientas con las que los objetivos de calidad que pueden obtener. Gestin de patrocinio apoya el proceso y las evaluaciones del producto y las conclusiones resultantes. Entonces, un programa de mejora se desarrolla identificando las acciones detalladas y mejorando los proyectos que deben abordarse en un marco de tiempo factible. El apoyo a la gestin implica que cada proyecto de mejora tiene suficiente recursos para lograr el objetivo definido para ello. El Patrocinio de gestin debe ser solicitado con frecuencia por la ejecucin de actividades proactivas de comunicacin. La participacin de los grupos de trabajo, as como los medios de apoyo administrativo y los recursos asignados a nivel de proyectos, se discuten en el rea de proceso de ingeniera.
108
Estos procesos fomentan la calidad y tambin encuentran posibles problemas. Sin embargo, difieren un tanto en su nfasis. La ayuda de procesos de SQM garantiza una mejor calidad de software en un proyecto determinado. Ellos tambin ofrecen, como un subproducto, la informacin a la gestion, incluyendo una indicacin de la calidad del proceso de ingeniera de software completo. El Proceso de Ingeniera de Software y la gestin de Ingeniera de Software KAs hablan de programas de calidad para la organizacin que desarrolla el software. SQM puede proporcionar informacin relevante para estas reas. Los procesos de SQM consisten en tareas y tcnicas para indicar como proyectos de software (por ejemplo, la gestion, el desarrollo, la gestin de configuracion) est siendo puesto en prctica y tambien los productos intermedios y finales cumplen con sus requisitos especificadas. Los resultaodos de estas tareas son montados en informes para la gestion antes de que la accin correctiva sea tomada. La gestin de un proceso de SQM se encarga de garantizar que los resultados de estos informes son exactos. Como se describe en este KA, los procesos de SQM estn estrechamente relacionados, ya que pueden superponerse e incluso a veces se combinan. Ellos parecen en gran parte reactivos de naturaleza porque dirigen los procesos tan expertos y los productos tal como se producen; pero ellos tienen un papel principal en la etapa de planificacin en ser proactivos en trminos de los procesos y los procedimientos necesarios para alcanzar los niveles de calidad y el grado de calidad que necesitan los interesados en el software. La gestin de riesgos tambin puede jugar un papel importante en el suministro de calidad de software. La incorporacin de anlisis disciplinado de riesgos y tcnica de gestin en los procesos de ciclo de vida del software puede aumentar el potencial de producir un producto de calidad (Cha89). Consulte la Gestin de Ingeniera del Software KA para el material relacionado sobre la gestin de riesgo.
11.2.1
[Ack02; Ebe94; Fre98; Gra92; Hor03; Pfl01; Pre04; Rak97; Sch99; Som05; Voa99; Wal89; Wal96]. SQA, Procesos que garantizan el aseguramiento de los productos de software y procesos en el ciclo de vida del proyecto, se ajusten a sus necesidades especificadas por la planificacin, la promulgacin, realizando una serie de actividades para proporcionar la confianza adecuada de que la calidad est siendo construida en el software. Esto quiere decir asegurar de forma clara el problema y que estn debidamente declarados y que los requisitos de la solucin estn bien definidas y expresadas. SQA busca mantener la calidad durante todo el desarrollo y el mantenimiento del producto por la ejecucin de una variedad de actividades en cada etapa que puede resultar en la identificacin temprana de problemas, una caracterstica casi inevitable de cualquier actividad compleja. El papel de SQA con respecto al proceso es asegurar que los procesos previstos sean adecuados y ms tarde ejecutado de acuerdo con el plan, y que los procesos de medicin pertinentes se proporcionan a la organizacin correspondiente.
109
El plan de SQA define los medios que se utilizarn para asegurar que el software desarrollado para un determinado producto cumple los requisitos del usuario y de la ms alta calidad posible dentro de las limitaciones del proyecto. Para hacer as, primero debe asegurarse de que el objetivo de calidad est claramente definido y entendido. Se debe considerar la gestin, el desarrollo y proyectos de mantenimiento para el software. Referencia al estndar (IEEE730-98) para ms detalles. Las actividades especficas de calidad y las tareas son presentadas, con sus costos y las exigencias de recursos, sus objetivos de manejo, y su horario en relacin con los objetivos en la gestin de ingeniera de software, el desarrollo o proyectos de mantenimiento. El plan de SQA debe ser coherente con el plan de gestin de la configuracin de software (vase la Gestin de Configuracin de Software KA). El plan de SQA identifica los documentos, normas, prcticas y convenciones que rigen el proyecto y cmo ellos sern controlados y supervisados para garantizar la suficiencia y cumplimiento. El plan de SQA tambin identifica medidas, tcnicas estadsticas, los procedimientos para reportar problemas y medidas correctivas, los recursos tales como herramientas, tcnicas y metodologas, la seguridad para medios de comunicacin fsicos, formacin y generacin de informes y la documentacin SQA. Por otra parte, el plan de SQA dirige las actividades de aseguramiento de la calidad del software de cualquier otro tipo de actividad descrita en los proyectos de software, como la contratacin de proveedores de software para el proyecto de instalacin o software comercial fuera de la plataforma de software (COTS), y el servicio despus de la entrega de el software. Esto tambin puede contener los criterios de aceptacin, as como actividades de informacin y gestin que son crticos para la calidad del software.
11.2.2
Verificacin y Validacin
[Fre98; Hor03; Pfl01; Pre04; Som05; Wal89; Wal96] Para los objetivos de brevedad, Verificacin y Validacin (V*V) son tratadas como un solo tema en esta gua y no como dos temas separados, como en el estndar (IEEE12207.0-96). "Software de V & V es un enfoque disciplinado para evaluar los productos de software en todo el ciclo de vida del producto. Un esfuerzo de V & V, se esfuerza por asegurar que la calidad es construida en el software y que el software satisface las necesidades del usuario " (IEEE105993). V & V se ocupa directamente de la calidad del producto software y utiliza tcnicas de prueba que puede localizar defectos para que puedan ser tratados. Tambin evala el producto intermedio, sin embargo, y, en esta capacidad, los pasos intermedios de los procesos del ciclo de vida del software. El proceso de V & V determina si realmente o no los productos de un desarrollo o una actividad de mantenimiento se ajustan a la exigencia de la actividad, y si es o no el producto de software que cumple con su propsito y cumple con los requisitos del usuario. La verificacin es un intento de garantizar que el producto se construye correctamente, en el sentido de que los productos de salida de una actividad cumplen con las especificaciones que se les imponen en las actividades anteriores. La validacin es un intento de garantizar que el producto se construye, es decir, el producto cumple con su finalidad especfica. Tanto el proceso de verificacin y el proceso de validacin comienzan temprano en la fase de desarrollo o mantenimiento. Proporcionan un examen de las caractersticas claves del producto en relacin tanto con antecedentes inmediatos del producto y las especificaciones que deben cumplir. El propsito de la planificacin de V & V es asegurar que cada recurso, el papel y la responsabilidad son claramente asignados. El resultado de V & V Plan de documentos y describe los diversos recursos y sus funciones y actividades, as como las tcnicas y herramientas que se utilizarn. La comprensin de las distintas finalidades de cada actividad de V & V le ayudar en la planificacin cuidadosa de las tcnicas y los recursos necesarios para cumplir sus
110
propsitos. Normas (IEEE1012-98: S7 y IEEE1059 93: Apndice A) especificar lo que normalmente entra en un plan de V & V. El plan tambin se ocupa de la gestin, la comunicacin, polticas y procedimientos de las actividades de V & V y su interaccin, as como la presentacin de informes de defectos y los requisitos de documentacin.
11.2.3
Revisiones y Auditorias
Para los propsitos de la brevedad, las revisiones y auditoras son tratados como un solo tema en esta gua, en lugar de dos temas separados, como en (IEEE12207.0-96). La revisin y proceso de auditora es ampliamente definida en (IEEE12207.0-96) y en ms detalle en (IEEE1028-97). Cinco tipos de revisiones o auditoras se presentan en el IEEE1028-97 estndar: Revisiones por la administracin Revisiones tcnicas Inspecciones Tutoriales Auditoras
11.2.3.1
Revisiones de gestin
"El propsito de un examen de la administracin es seguir la evolucin, determinar el estado de los planes y programas, confirmar los requisitos y su distribucin en el sistema, o evaluar la eficacia de la gestin de los enfoques utilizados para lograr la adecuacin a un fin" [IEEE102897]. Apoyan las decisiones sobre los cambios y las acciones correctivas que se requieren durante un proyecto de software. Revisin de administracin de determina la adecuacin de los planes, programas, y los requisitos y supervisa su progreso o inconsistencias. Estos exmenes se pueden realizar sobre los productos tales como los informes de auditora, informes de situacin, informes de V & V, y los planes de muchos tipos, incluyendo la gestin de riesgos, gestin de proyectos, gestin de configuracin de software, la seguridad del software, y la evaluacin de riesgos, entre otros. Consulte a la Direccin de Ingeniera del Software y el KAs el material relacionado con la gestin de configuracin de software.
11.2.3.2
Revisiones tcnicas
[Fre98; Hor03; Lew92; Pfl01; Pre04; Som05; Voa99; Wal89; Wal96] "El propsito de una revisin tcnica es evaluar un producto de software para determinar su idoneidad para el uso previsto. El objetivo es identificar las discrepancias de las especificaciones y normas aprobadas. Los resultados deben proporcionar a la direccin pruebas que confirmen (o no) que el producto cumple con las especificaciones y se adhiere a las normas, y que los cambios son controlados " (IEEE1028-97). Funciones especficas deben estar establecidos en una revisin tcnica: una toma de decisiones, un lder de revisin, una grabadora, y el personal tcnico para apoyar las actividades de examen. Una revisin tcnica requiere que los insumos obligatorios estn en su lugar a fin de proceder: Declaracin de objetivos Un producto de software especfico Gestin de proyecto de plan especfico La lista de temas relacionados con este producto El procedimiento de revisin tcnica
El equipo sigue el procedimiento de revisin. Un individuo tcnicamente calificado presenta una visin general del producto, y el examen se lleva a cabo durante una o ms reuniones. El examen tcnico se completa una vez que todas las actividades enumeradas en el examen se han completado.
111
11.2.3.3
Inspecciones
[Ack02; Fre98; Gil93; Rad02; Rak97] "La finalidad de la inspeccin es detectar e identificar anomalas de productos de software" (IEEE1028-97). Dos diferenciadores importantes de las inspecciones en contraposicin a los exmenes son los siguientes Un individuo que ocupa una posicin de gestin de ningn miembro del equipo de inspeccin no participar en la inspeccin. La inspeccin debe ser dirigido por un mediador imparcial que est entrenado en tcnicas de inspeccin.
Inspecciones de software implican siempre el autor de un producto intermedio o final, mientras que en los otros no. Las inspecciones tambin incluyen un lder de la inspeccin, la grabadora, un lector, y unos pocos (2-5) los inspectores. Los miembros de un equipo de inspeccin puede poseer conocimientos diferentes, tales como experiencia en el campo, mtodo de diseo experiencia o conocimientos lingsticos. Las inspecciones se realizan normalmente en una parte relativamente pequea del producto a la vez. Cada miembro del equipo debe examinar el software producto y otros insumos de revisin antes de la reunin de examen, tal vez mediante la aplicacin de una tcnica analtica (consulte la seccin 3.3.3) a una pequea seccin del producto, o a todo el producto con un enfoque slo en un aspecto, por ejemplo, las interfaces. Cualquier anomala detectada se documenta y se enva al jefe de inspeccin. Durante la inspeccin, el jefe de inspeccin realiza la sesin y verifica que todo el mundo ha preparado para la inspeccin. Una lista de verificacin, con anomalas y preguntas germano a las cuestiones de inters, es una herramienta comn utilizada en las inspecciones. La lista resultante a menudo se clasifica a las anomalas (ver IEEE1044-93 para ms detalles) y se revisa para exhaustividad y precisin por el equipo. La decisin de salir de inspeccin debe corresponder a uno de los tres criterios siguientes: Aceptar sin volver a trabajar o en la mayora de menores Aceptar con la verificacin de reproceso Vuelva a inspeccionar
Las Reuniones de inspeccin suelen durar unas horas, mientras que las revisiones tcnicas y las auditoras son por lo general ms amplias en su alcance y toman ms tiempo.
11.2.3.4
Tutoriales
[Fre98; Hor03; Pfl01; Pre04; Som05; Wal89; Wal96] "El propsito de un tutorial es evaluar un producto de software. Un tutorial puede ser realizado con el propsito de educar a una audiencia en relacin con un producto de software " (IEEE1028-97) Los objetivos principales son [IEEE1028-97]: Buscar anomalas. Mejorar el producto de software. Considerar la posibilidad de implementaciones alternativas. Evaluar la conformidad con las normas y especificaciones.
El tutorial es similar a una inspeccin, pero se suele realizar de manera menos formal. El tutorial, organizado esencialmente por el ingeniero de software para dar a sus compaeros de equipo la oportunidad de revisar su trabajo, como una tcnica de aseguramiento.
112
11.2.3.5
Auditoras
[Fre98; Hor03; Pfl01; Pre01; Som05;Voa99; Wal89; Wal96] "El propsito de una auditora de software es proporcionar una evaluacin independiente de la conformidad de los productos de software y los procesos a la normativa aplicable, normas, directrices, planes y procedimientos " [IEEE1028-97]. La auditora es una actividad organizada formalmente, con los participantes que tienen funciones especficas, tales como auditor principal, otro auditor, un grabador o un iniciador, e incluye un representante de la organizacin auditada. La auditora determinar los casos de no conformidad y elaborara un informe que requiere el equipo para tomar medidas correctivas. Si bien puede haber muchos nombres oficiales para los exmenes y auditoras, como las sealadas en la norma (IEEE1028-97), el punto importante es que pueden ocurrir en casi cualquier producto en cualquier etapa del desarrollo o proceso de mantenimiento.
11.3.1.1
Factores de influencia
Varios factores influyen en la planificacin, gestin y seleccin de las tcnicas y actividades de SQM, incluyendo: El dominio del sistema en el cual el software residir (de seguridad crtica, de misin crtica, crucial) Requisitos del sistema y del software Los componentes comerciales (externos) o estndares (internos) para ser usados en el sistema Las normas especficas aplicables de ingeniera de software Los mtodos y herramientas de software que se utilizar para el desarrollo y mantenimiento y para la evaluacin de la mejora de la calidad El presupuesto, el personal, organizacin de proyecto, planes, y la planificacin de todos los procesos Los usuarios previstos y el uso del sistema El nivel de integridad del sistema
La informacin sobre estos factores influye en cmo los procesos de SQM son organizados y documentados, como las, actividades especficas de SQM se seleccionan, qu recursos se necesitan, y que se impongan lmites a los esfuerzos.
11.3.1.2
Fiabilidad
En los casos en que un fallo del sistema puede tener consecuencias muy graves, la fiabilidad general (el hardware, el software y los humanos) es la principal exigencia de calidad por encima de la funcionalidad bsica. la fiabilidad del software incluye caractersticas tales como tolerancia a fallos, seguridad y la utilidad. La fiabilidad es tambin un criterio que puede ser definido en trminos de confiabilidad (ISO9126). El cuerpo de la literatura para los sistemas debe ser altamente confiable (" la alta confianza" o "sistemas de alta integridad"). La terminologa para los sistemas tradicionales mecnicos y elctricos que no pueden incluir el software ha sido importada para discutir las amenazas o peligros, los riesgos, la integridad del sistema, y los conceptos relacionados, y se puede encontrar en las referencias citadas para esta seccin.
113
11.3.1.3
El nivel de integridad se determina sobre la base de las posibles consecuencias de la falla del software y la probabilidad de fracaso. Para el software en el que la seguridad es importante, las tcnicas tales como anlisis de riesgos para la seguridad o el anlisis de amenaza, para la seguridad, puede ser utilizado para desarrollar una actividad de planificacin que servirn para identificar donde se encuentran posibles reas problemticas. Similar al historial de fallos de software, tambin puede ayudar en la identificacin de cuales tcnicas sern ms tiles en el descubrimiento de fallas y evaluacin de la calidad. Los niveles de Integridad proponen (por ejemplo, la sucesin de la integridad) en (IEEE1012-98).
11.3.2
Caracterizacin de Defectos
[Fri95; Hor03; Lew92; Rub94; Wak99; Wal89] Los procesos SQM encuentran defectos. La caracterizacin de defectos conduce a una comprensin del producto, facilita las correcciones al proceso o el producto, e informa a la gestin de proyectos o al cliente del estado del proceso o producto. Muchos defectos (fallos) las taxonomas existentes, y, si bien se han hecho intentos para obtener un consenso sobre una taxonoma de fallas y fracaso, la literatura indica que hay unos cuantos en el uso de [Bei90, Chi96, Gra92], IEEE1044-93) La caracterizacin de defectos (anomalas) tambin se utiliza en las auditoras y revisiones, El lder de revisin a menudo presenta una lista de anomalas proporcionada por los miembros del equipo para su examen en una reunin de revisin. Cmo evolucionan nuevos mtodos de diseo y lenguajes, junto con los avances en tecnologas de software en general, aparecen nuevos tipos de fallas, esto requiere una gran cantidad de esfuerzo para interpretar las clases definidas previamente. Cuando se le hace seguimiento a los fallos, el ingeniero de software est interesado no slo en el nmero de fallos, sino tambin en los tipos. Por s sola la informacin, sin una clasificacin, no es realmente de alguna utilidad en la identificacin de las causas de los fallos, ya que determinados tipos de problemas deben ser agrupados con el fin de realizar determinaciones sobre ellos. El punto es establecer una taxonoma de fallos que sea significativo para la organizacin y los ingenieros de software. SQM descubre la informacin en todas las etapas de desarrollo y mantenimiento de software. Por lo general, donde la palabra "defecto" se utiliza, se refiere a una "falla", como se define a continuacin. Sin embargo, las diferentes culturas y normas podrn utilizar significados algo diferentes para estos trminos, que han llevado a los intentos de definirlos. Definiciones parciales adoptadas de la norma (IEEE610.12-90) son los siguientes: Error: " una diferencia... entre el resultado calculado y el resultado correcto". Fallo: "Un paso incorrecto, proceso, o de definicin de datos en un programa de ordenador". Fracaso: "El resultado [incorrecto] de un fallo". Equivocacin: "Una accin humana que produce un resultado incorrecto".
Los fracasos que se encuentran en la prueba como consecuencia de fallos de software se incluyen como defectos en la discusin en esta seccin. Los modelos de fiabilidad se construyen a partir de datos recogidos de fracasos durante las pruebas de software o desde el software en servicio, y por lo tanto pueden ser utilizados para predecir futuros fracasos y ayudar en las decisiones sobre cundo dejar de probar. [Mus89]. Una accin probable resultado de las conclusiones de SQM es eliminar los defectos del producto objeto en el examen. Otras acciones permiten el logro de todo el valor de los resultados de las actividades de SQM. Estas acciones incluyen el anlisis y resumen de los resultados, y el uso de tcnicas de medicin para mejorar el producto y el proceso, as como para realizar un seguimiento de los defectos y su eliminacin. La mejora de procesos se
114
discuten principalmente en el Proceso de Ingeniera de Software KA, siendo una fuente de informacin el proceso de SQM. Los datos sobre las insuficiencias y los defectos encontrados durante la aplicacin de las tcnicas de SQM podra perderse si no se registran. Para algunas tcnicas (por ejemplo,revisiones tcnicas, auditoras e inspecciones), los registradores estn presentes para establecer dicha informacin, junto con las publicaciones y decisiones. Cuando se utilizan herramientas automticas, el instrumento salida puede proporcionar la informacin defecto. Los datos sobre los defectos pueden ser recogidos y registrados en un SCR (solicitud de cambio de software) se forma y puede ser posteriormente ingresado en algn tipo de base de datos, ya sea manualmente o automticamente, a partir de una herramienta de anlisis Los informes sobre fallos son proporcionados a la direccin de la organizacin.
11.3.3
[Bas94; Bei90; Con86; Chi96; Fen97; Fri95; Lev95; Mus89; Pen93; Sch99; Wak99; Wei93; Zel98] Las tcnicas de SQM se pueden clasificar de muchas maneras: Esttica, uso Intensivo de Personas, analtico y dinmico.
11.3.3.1
Tcnicas Estticas
Incluye un examen de la documentacin del proyecto y el software, y otra informacin sobre los productos de software sin ejecutarlas. Estas tcnicas pueden incluir actividades de uso Intensivo de Personas (Como se define en el punto 3.3.2.) o actividades de anlisis (como se define en el punto 3.3.3.), realizado por personas, con o sin la asistencia de herramientas automatizadas.
11.3.3.2
El ajuste de las Tcnicas de uso Intensivo de Personas, incluidas las revisiones y auditorias, pueden variar de una reunin formal a una reunin informal o una situacin de comprobacin de escritorio, pero (por lo general, por lo menos) dos o ms personas estn involucradas. La preparacin antes de tiempo puede ser necesaria. Los recursos que no sean los artculos de objetos de examen pueden incluir listas de comprobacin y los resultados de las tcnicas analticas y pruebas de los recursos. Estas actividades sobre exmenes y auditorias se describen en (IEEE 1028-97). [Fre98, Hor03] y [Jon96, Rak97]
11.3.3.3
Tcnicas analticas:
Un ingeniero de software generalmente aplica tcnicas analticas. A veces varios ingenieros de software usan la misma tcnica, pero cada uno lo aplica a las partes diferentes del producto. Algunas tcnicas son conducidas por instrumento; los otros son manuales. Unos pueden encontrar defectos directamente, pero ellos tpicamente son usados apoyar otras tcnicas. Unos tambin incluyen varias evaluaciones como la parte de anlisis de calidad total. Los ejemplos de tales tcnicas incluyen el anlisis de complejidad, anlisis de control de flujo y el anlisis algortmico. Cada tipo de anlisis tiene un propsito especfico, y no todos los tipos se aplican a cada proyecto. Un ejemplo de una tcnica de apoyo es el anlisis de la complejidad, que es til para determinar si el diseo o la implementacin es demasiado compleja para su correcto desarrollo, para poner a prueba, o mantener. Los resultados de un anlisis de la complejidad se pueden tambin utilizar en el desarrollo de casos de prueba. Tcnicas de bsqueda de defectos, tales como el anlisis de control de flujo, tambin se puede utilizar para apoyar a otra actividad. Para el software con muchos algoritmos, anlisis algortmico es importante, especialmente cuando un algoritmo incorrecto puede causar un resultado catastrfico. Existen demasiadas tcnicas analticas como para mencionarlos todos aqu. La lista y las referencias siempre pueden ofrecer ideas sobre la seleccin de una tcnica, as como sugerencias para la lectura adicional.
115
Otros, ms formal, los tipos de tcnicas analticas que se conoce como mtodos formales. Se utilizan para verificar los requisitos de software y diseos. La prueba de la correccin se aplica a las zonas crticas de software. Se han utilizado principalmente en la verificacin de las piezas fundamentales de los sistemas crticos, tales como la seguridad y los requisitos especficos de seguridad.
11.3.3.4
Tcnicas dinmicas
Diferentes tipos de tcnicas dinmicas se realizan durante todo el desarrollo y mantenimiento de software. En general, se trata de las pruebas tcnicas, pero las tcnicas como la simulacin, verificacin de modelos, y la ejecucin simblica puede ser considerada dinmica. La lectura del Cdigo se considera una tcnica esttica, pero los ingenieros de software con experiencia pueden ejecutar el cdigo a medida que leen a travs de l. En este sentido, la lectura de cdigo tambin se puede calificar como una tcnica dinmica. Esta discrepancia en la categorizacin indica que las personas con diferentes roles en la organizacin puede considerar y aplicar estas tcnicas de forma diferente. Algunas pruebas de lo que se puede realizar en el proceso de desarrollo, proceso de SQA, o proceso de V & V, una vez ms en funcin de la organizacin del proyecto, como pruebas de direccin de proyectos de SQM, esta seccin incluye algunos comentarios durante las pruebas. El software que prueba KA proporciona la discusin y referencias tcnicas a la teora, las tcnicas para las pruebas, y la automatizacin.
11.3.3.5
Pruebas
Los procesos de aseguramiento descritos en SQA y V*V examinan cada producto en relacin con la especificacin de requisitos de software para garantizar la capacidad de rastreo de la produccin, la consistencia, integridad, exactitud y rendimiento. Esta confirmacin tambin incluye los resultados de los procesos de desarrollo y mantenimiento, recogida, anlisis y medicin de los resultados. SQA se asegura de que los tipos adecuados de las pruebas sean planificados, desarrollado e implementado, y V & V desarrolla proyectos de prueba, las estrategias, casos y procedimientos. Las pruebas se analizan en detalle en el KA de pruebas de software. Dos tipos de pruebas pueden caer en el inicio de SQA y V & V, debido a su responsabilidad por la calidad de los materiales utilizados en el proyecto: Evaluacin y prueba de herramientas que se utilizarn en el proyecto (IEEE1462-98) Prueba de conformidad (o la revisin de pruebas de conformidad) de componentes y productos COTS para ser utilizado en el producto, ahora existe un estndar para los paquetes de software (IEEE1465-98) A veces, una organizacin independiente de V & V se le puede pedir para supervisar el proceso de prueba y, a veces a presenciar la ejecucin real para garantizar que se lleve a cabo conforme con los procedimientos establecidos. Una vez ms, de V & V pueden ser llamados a evaluar la prueba en s: la adecuacin de los planes y procedimientos, y la suficiencia y exactitud de los resultados. Otro tipo de pruebas que puedan caer bajo el ttulo de la organizacin de V & V es la prueba de terceros. El tercero no es el desarrollador, ni es de ninguna manera asociados con el desarrollo del producto. En cambio, el tercero es un servicio independiente, por lo general acreditados por algn organismo de la autoridad. Su propsito es poner a prueba un producto para el cumplimiento de un conjunto especfico de requerimientos.
11.3.4
Los modelos de calidad de productos de software a menudo incluyen medidas para determinar el grado de cada caracterstica de calidad alcanzado por el producto. Si se seleccionan adecuadamente, las medidas pueden apoyar la calidad del software (entre otros aspectos de los procesos del ciclo de vida del software) de mltiples maneras. Ellos
116
pueden ayudar en el proceso de gestin de la toma de decisiones. Se pueden encontrar reas problemticas y los cuellos de botella en el proceso de software, y pueden ayudar a los ingenieros de software a evaluar la calidad de su trabajo para objetivos de SQA y para la mejora de procesos de calidad a largo plazo. Con la creciente sofisticacin del software, las cuestiones de calidad van ms all de si realmente el software funciona bien a como se logren las metas medibles de calidad. Hay algunos temas ms que la medicin de SQM apoya directamente. Estos incluyen la asistencia para decidir cundo debe dejar de probar. Para ello, los modelos de fiabilidad y puntos de referencia, tanto de defecto y utilizacin de datos de fracaso, son tiles. El costo de los procesos de SQM es un tema que casi siempre se plantea en la decisin de cmo un proyecto debe ser organizado. A menudo, se utilizan en los modelos genricos de costes, que se basan, en cuando se encuentra un defecto y cunto esfuerzo se necesita para corregir el defecto, en relacin con la constatacin del defecto temprano en el proceso de desarrollo. Datos del proyecto puede dar una idea ms clara de los costos. La discusin sobre este tema puede encontrarse en [Rak97: pp 39-50]. Informacin relacionada se puede encontrar en el Proceso de Ingeniera de Software y Gestin de Ingeniera del Software KAs. Por ltimo, los informes de SQM proporcionan valiosa informacin no slo sobre estos procesos, sino tambin de cmo todos los procesos de ciclo de vida del software se pueden mejorar. Los debates sobre estos temas se encuentran en [McC04] y (IEEE1012-98). Si bien las medidas para las caractersticas de calidad y las caractersticas de produccin pueden ser til en ellos (por ejemplo, el nmero de exigencias defectuosas o la proporcin de exigencias defectuosas) tcnicas matemticas y graficas pueden ser aplicadas para ayudar en la interpretacin de las medidas. Estos sistemas se adaptan a las siguientes categoras y se discuten en [Fen97, Jon96, Kan02, Lyu96, Mus99]. De base estadstica (por ejemplo, anlisis de Pareto, diagramas de ejecucin, diagramas de dispersin, distribucin normal). Las pruebas estadsticas (por ejemplo, la prueba binomial, prueba de ji cuadrado). Anlisis de tendencias. Prediccin (por ejemplo, modelos de fiabilidad). Las tcnicas de base estadstica y las pruebas a menudo proporcionan una imagen de las reas ms problemticas del producto de software en el examen. Las tablas y las grficas resultantes son los artculos de visualizacin que los tomadores de decisiones pueden utilizar para concentrar los recursos en las que parecen son ms necesarios. Los resultados de los anlisis de tendencias pueden indicar que un apndice no se ha respetado, como en las pruebas, o que ciertas clases de defectos se har ms intensa a menos que se tomen medidas correctivas en el desarrollo. Las tcnicas de prediccin ayudan en la planificacin del tiempo de prueba y en la prediccin de fracaso. Ms discusiones sobre la medicin en general aparecen en el Proceso de Ingeniera de Software y en la Gestin de Ingeniera del Software. Informacin ms especfica sobre la medicin de las pruebas se presenta en el KA de pruebas de software. Las referencias [Fen97, Jon96, Kan02, Pfl01] proporcionan debates sobre el anlisis de defecto, que consiste en medir presencias de defecto y luego aplicar mtodos estadsticos para la comprensin de los tipos de los defectos que se producen con mayor frecuencia, es decir contestando a preguntas para evaluar su densidad. Tambin ayuda en la comprensin de las tendencias y lo bien que las tcnicas de deteccin trabajan, el desarrollo y los procesos de mantenimiento estn progresando. La medicin de la cobertura de la prueba ayuda a estimar la cantidad de esfuerzo de la prueba que queda por hacer, y para predecir los posibles defectos restantes. A partir de estos mtodos de medicin, los perfiles de defecto pueden ser desarrollados para un dominio de aplicacin especfico. Entonces, para el siguiente sistema de software dentro de esa organizacin, los perfiles se pueden utilizar para guiar los procesos de SQM, es decir, hacer el esfuerzo, donde los problemas son ms probables que ocurran.
117
Del mismo modo, los puntos de referencia, o el recuento de defectos tpicos de ese dominio, puede servir como una ayuda para determinar si el producto est listo para la entrega. Discusin sobre el uso de datos del SQM para mejorar los procesos de desarrollo y mantenimiento aparece en la Gestin de Ingeniera del Software y en el Proceso de Ingeniera de Software KAs.
118
119