Professional Documents
Culture Documents
Fase Definicin Pasos Anlisis del Sistema Planificacin del Proyecto Anlisis de Requerimientos Desarrollo Diseo preliminar Diseo detallado Codificacin Cartas de Estructura PDL Documento del cdigo con comentarios externos e internos Manual del usuario* Documento de las corridas de prueba Documentos Documento de Especificacin del Sistema Documento de Plan de Proyecto Documento de Especificacin de Requerimientos (DFDs)
Pruebas Mantenimiento * Se va desarrollando en todos los pasos anteriores e incluso puede sufrir modificaciones durante el mantenimiento.
Anlisis de Requerimientos
1. 2. 3. 4. descripcin de la informacin representacin del contenido (Diccionario de Datos) descripcin funcional informal o formal descripcin del comportamiento (diagramas de transicin de estados)
Resultado: Modelo funcional realizado con alguna metodologa (orientada al flujo de datos, orientada a las estructuras de datos, orientada a objetos)
Diseo preliminar
1. Arquitectnico (Cartas de estructura) 2. De datos 3. De la interface refinamiento modularidad ocultamiento de la informacin abstraccin de datos independencia funcional: cohesin y acoplamiento
Diseo detallado
Procedimental: notaciones tabulares (Tablas de decisin), textuales (PDL) o grficas (NS, DF) Algoritmos
Codificacin
lenguaje estilo
Pruebas
De Unidad: de caja blanca, de caja negra De Integracin: ascendente, descendente, mixta
Mantenimiento
Correctivo Adaptativo Perfectivo
El Modelo Esencial
Es un modelo de lo que el sistema debe hacer para satisfacer los requerimientos del usuario, diciendo lo mnimo posible acerca de cmo se implementar. Esto supone tecnologa perfecta y que se puede obtener fcilmente y sin costo. Esto significa evitar describir implementaciones especficas de procesos en el sistema. Lo mismo se da para los flujos y almacenes de datos. El modelo debe describir el contenido sin describir el medio u organizacin fsica de los datos.
2. Modelo de comportamiento.
Describe el comportamiento que se requiere del sistema para que interacte de forma exitosa con el ambiente. Consiste de los diagramas de flujo de datos, de entidad relacin, de transicin de estados y diccionarios y especificaciones de proceso.
El Modelo Ambiental.
Adems de determinar qu est en el interior del sistema y qu en el exterior, tambin define las interfaces entre el sistema y el ambiente. Se necesita saber qu informacin entra al sistema desde el ambiente exterior y qu informacin produce al ambiente externo. Como las entradas y las salidas no se producen al azar, otro aspecto crtico del modelo ambiental consiste en identificar los acontecimientos que ocurren en el ambiente al cual debe responder el sistema. Slo aquellos que (1) ocurren en el ambiente exterior y (2) requieren una respuesta del sistema.
La Declaracin de Propsitos Es una declaracin textual breve y concisa del propsito del sistema, dirigida al nivel administrativo superior, la administracin de los usuarios, y otros que no estn directamente involucrados con el desarrollo del sistema. La intencin no es dar una descripcin completa y detallada del sistema.
El Diagrama de Contexto Es un caso especial de DFD donde una burbuja representa todo el sistema. Enfatiza varias caractersticas importantes del sistema: Las personas, organizaciones y sistemas con los que se comunica el sistema (terminadores). Los datos que el sistema recibe del mundo exterior y que deben procesarse de alguna forma. Los datos que el sistema produce y se envan al mundo exterior. Los almacenes de datos que el sistema comparte con otros sistemas. La frontera entre el sistema y el resto del mundo. La Lista de Acontecimientos Es una lista narrativa de los estmulos que ocurren en el mundo exterior a los cuales el sistema debe responder. Cada acontecimiento puede ser de flujo, temporal o de control. El acontecimiento orientado a flujo es el que se asocia a un flujo de datos, el sistema se da cuenta de que ha ocurrido el acontecimiento cuando llega algn dato o posiblemente varios. Esto se corresponde con un flujo de datos del diagrama de contexto. Los acontecimientos temporales arrancan con la llegada de un momento dado en el tiempo. No se inician con flujos de datos de entrada, pero podran requerir que el sistema solicite entradas.
El Diccionario de Datos Inicial Define todos los flujos y almacenes externos. El Modelo de Entidad - Relacin de los almacenes externos
Construccin del Diagrama de Contexto La parte ms fcil del diagrama de contexto es el proceso. Los terminadores se comunican directamente con el sistema a travs de flujos de datos o a travs de almacenes externos. Los terminadores no se comunican entre s. Algunos terminadores tienen un buen nmero de entradas y salidas. Cuando el terminador es una persona individual, es preferible poner el rol que desempea ms que su identidad. Es importante distinguir entre fuentes y manejadores.
Los flujos que aparecen en el diagrama de contexto modelan datos que entran y salen del sistema. Se incluyen en el diagrama de contexto si se ocupan para detectar un acontecimiento en el ambiente al que deba responder el sistema, o si se ocupan (como datos) para producir una respuesta. Tambin se muestran cuando el sistema produce datos para responder a un acontecimiento. El diagrama de contexto no muestra los mensajes y medios especficos de coordinacin que el sistema y los terminadores pasan entre s para indicar que estn listos para las entradas o salidas. En lugar de eso, debe suponerse que las entradas son causadas e iniciadas por los terminadores y que las salidas son causadas e iniciadas por el sistema. Construccin de la Lista de Acontecimientos No confundir un acontecimiento y un flujo relacionado con un acontecimiento. Describir los acontecimientos desde el punto de vista del sistema. La manera de identificar los acontecimientos relevantes para un sistema es examinar cada terminador y preguntar qu efecto pueden tener sus acciones sobre el sistema.
1.2.3 Qu se hace primero, el diagrama de contexto o la lista de acontecimientos? En realidad no importa mientras finalmente se produzcan ambos y se revisen para asegurar que sean consistentes. 1.2.4 Cuando se terminen ambas componentes del modelo ambiental ser posible confirmar lo siguiente: El sistema necesita cada flujo de entrada del diagrama de contexto para reconocer que ha ocurrido un acontecimiento, lo necesita para producir una respuesta a un acontecimiento, o ambas cosas. Cada flujo de salida debe ser respuesta a un acontecimiento. Cada acontecimiento no temporal debe tener entradas a partir de las cuales el sistema pueda detectarlo. Cada acontecimiento debe producir salidas inmediatas como respuesta o bien almacenar los datos que luego sern salidas (como respuesta o parte de una respuesta a algn otro acontecimiento).
Paradigmas.
La ingeniera de software est compuesta por una serie de pasos que abarcan los mtodos, las herramientas y los procedimientos. Estos pasos se denominan frecuentemente paradigmas de la ingeniera de software. La eleccin de un paradigma se lleva a cabo de acuerdo con la naturaleza del proyecto y de la aplicacin, los mtodos y herramientas a usar y los controles y entregas requeridas. Los paradigmas son tres: ciclo de vida en fases, construccin de un prototipo y tcnicas de cuarta generacin.
Diseo
Codificacin
Prueba
Mantenimiento
a) Ingeniera del sistema: (Planeamiento). Debido a que el software es siempre parte de un sistema mayor, primero debemos analizar con que elementos debe interrelacionarse (hardware, personas, bases de datos). b) Anlisis de requisitos: El proceso de recopilacin de requisitos se centraliza e intensifica especialmente para el software. Para comprender la naturaleza de los programas a construir debemos comprender el mbito de la informacin, as como la funcin, el rendimiento y las interfaces requeridas. Los requisitos tanto del sistema como del software se documentan y revisan con el cliente. c) Diseo: se enfoca sobre cuatro atributos distintos del sistema: la estructura de datos, la arquitectura del software, el detalle procedimental y la caracterizacin de la interfaz. El diseo traduce los requisitos en una representacin del software que pueda ser establecida de forma que obtenga la calidad requerida ates de comenzar la codificacin. Se documenta y forma parte de la configuracin del software. d) Implementacin: el diseo debe traducirse en una forma legible en la mquina: codificacin y depuracin (verificacin de errores). e) Verificacin: Prueba de integracin: se utiliza para probar todas las unidades del sistema en una unidad funcional. Prueba de aceptacin: para demostrar que el sistema implementado responde a las expectativas del usuario. f) Mantenimiento: el software sufrir cambios despus de entregado al cliente. Los cambios se debern a correccin, adaptacin, aumentacin. Desventajas: 1) Los proyectos reales raramente siguen el flujo secuencial, siempre hay interacciones y se crean problemas en la aplicacin del paradigma. 2) Es difcil para el usuario definir todos los requisitos al principio. 3) El cliente debe tener paciencia, hasta la etapa final no ve el sistema. Un error importante no detectado hasta que el programa este funcionando puede ser desastroso.
10
Construccin de Prototipos.
La construccin de prototipos es un proceso que facilita al programador la creacin de un modelo del software a construir. El modelo puede ser: Un modelo en papel: que describa la interaccin hombre mquina. Un prototipo que funcione: que implemente algn subconjunto de funciones del software deseado. Un programa existente: que ejecute parte o toda la funcin deseada, pero que tenga otras caractersticas a ser mejoradas en el nuevo trabajo de desarrollo.
Comienzo Parada Recoleccin y Refinamiento de requisitos Producto de ingeniera Refinamiento del prototipo Diseo rpido Construccin de prototipos Evaluacin del prototipo por el cliente
Pasos: 1) Recoleccin de requisitos: el tcnico y el cliente se renen y definen los objetivos globales para el software, identifican todos los requisitos conocidos y perfilan las reas en donde ser necesario una mayor definicin. No tiene que ser completo como en el ciclo de vida en fases. 2) Diseo rpido: se enfoca sobre la representacin de los aspectos del software visibles al usuario (ej.: mtodos de entrada y formato de salida). 3) Construccin del prototipo. 4) Evaluar y refinar los requerimientos: el prototipo construido es evaluado por el cliente / usuario y se utiliza para refinar los requerimientos del software a desarrollar. Se produce un proceso interactivo en el que el prototipo es afinado para que satisfaga las necesidades del cliente, al mismo tiempo que facilita al que lo desarrolla una mejor comprensin de lo que hay que hacer. 5) Producto construido. Podramos hacer un modelo de prototipo para el punto de definicin de requerimientos del ciclo de vida en fases, para intentar mejorar la comunicacin con el cliente. El prototipo sirve para los requerimientos y luego se desecha. La utilizacin de este paradigma puede ser problemtica por las siguientes razones: a) El cliente ve funcionando lo que parece una versin del software, ignorando que por el apuro en hacer que funcione no se han considerado los aspectos de calidad y mantenimiento a largo plazo. b) El tcnico de desarrollo realiza frecuentemente ciertos compromisos de implementacin para obtener un prototipo que funcione rpido (ej.: un determinado lenguaje) quizs inapropiado para el sistema, luego olvida cuales eran las razones por las cuales era inapropiado y termina utilizndolo. Ventajas: Aunque se presenten problemas, el prototipo es un paradigma efectivo para la ingeniera de software. Al comienzo el tcnico y el cliente debern estar de acuerdo en que se construya para servir solo como un mecanismo para la identificacin de requerimientos; luego se descarta y se construye el software real con miras a la calidad y mantenimiento.
11
Modelo en Espiral
El modelo en espiral para la ingeniera de Software ha sido desarrollado para cubrir las mejores caractersticas tanto del ciclo de vida clsico como de la creacin de prototipos, aadiendo al mismo tiempo un nuevo elemento: el anlisis de riesgo, que falta en esos paradigmas. El modelo define cuatro actividades principales: 1. Planificacin: Determinacin de objetivos, alternativas y restricciones. 2. Anlisis de riesgo: Anlisis de alternativas e identificacin/resolucin de riesgos. 3. Ingeniera: Desarrollo del producto de siguiente nivel. 4. Evaluacin del Cliente: Valoracin de los resultados de la ingeniera. Con cada iteracin alrededor del espiral, comenzando en el centro y siguiendo hacia el exterior, se construyen sucesivas versiones del software, cada vez ms completas. Durante la primera vuelta alrededor de la espiral se definen los objetivos, las alternativas y las restricciones, y se analizan e identifican los riesgos. Si el anlisis de riesgo indica que hay incertidumbre en los requisitos, se puede usar la creacin de prototipos en el cuadrante de ingeniera, para dar asistencia tanto al encargado del desarrollo, como al cliente. Se pueden usar simulaciones y otros modelos para definir ms el problema y refinar los requisitos. El cliente evala el trabajo de ingeniera y sugiere modificaciones. En base a los comentarios del cliente se produce la siguiente fase de planificacin y de anlisis de riesgo. En cada bucle alrededor de la espiral, la culminacin del anlisis de riesgo resulta en una decisin de seguir o no seguir. Si los riesgos son demasiado grandes, se puede dar por terminado el proyecto. Sin embargo, en la mayora de los casos se sigue avanzando alrededor del camino de la espiral, y ese camino lleva a los desarrolladores hacia fuera, haciendo un modelo mas completo del sistema y, al final, al propio sistema operacional. Cada vuelta alrededor de la espiral requiere ingeniera que se puede llevar a cabo mediante el enfoque de vida clsico o de la creacin de prototipos. El paradigma del modelo en espiral utiliza un enfoque evolutivo para la ingeniera de software, permitiendo al desarrollador y al cliente entender y reaccionar a los riesgos en cada nivel evolutivo. Utiliza la creacin de prototipos como un mecanismo de reduccin del riesgo, pero, lo que es ms importante, permite al que lo desarrolla aplicar el enfoque de creacin de prototipos en cualquier etapa de la evolucin del producto. Puede ser difcil convencer a grandes clientes de que el enfoque evolutivo es controlable. Requiere una considerable habilidad para la valoracin del riesgo, y cuenta de esta habilidad para el xito. Si no se descubre un riesgo importante, indudablemente surgirn problemas.
12
Comienza con la recoleccin, el cliente describe los requisitos, que son a continuacin traducidos directamente a un prototipo operativo. Sin embargo en la prctica no se puede hacer eso. El cliente puede no estar seguro de lo que necesita, puede ser incapaz o no desear especificar la informacin en la forma en que una herramienta de cuarta generacin puede aceptarla. Para aplicaciones pequeas se puede ir directamente desde el paso de recoleccin a implementacin en un lenguaje de cuarta generacin. Sin embargo, es necesario mayor esfuerzo para desarrollar una estrategia de diseo para el sistema. El uso de tecnologa de cuarta generacin sin diseo, para grandes proyectos, causar dificultades (poca calidad, mantenimiento pobre, mala aceptacin por el cliente). La implementacin en lenguajes de cuarta generacin permite, al que desarrolla el software, centrarse en la representacin de los resultados deseados, que es lo que se traduce automticamente en un cdigo fuente que produce dichos resultados. Para poder transformar una implementacin con tecnologa de cuarta generacin en un producto, el que lo desarrolla debe dirigir una prueba completa, desarrollar una documentacin con sentido y ejecutar el resto de actividades de transicin que se dan en los otros paradigmas.
Ventajas: Los difusores aducen reducciones dramticas en el tiempo de desarrollo del software Y una mejora en la productividad de la gente que construye software. Desventajas: Los detractores aducen que las herramientas actuales de cuarta generacin no son fciles de usar, que el cdigo fuente es ineficiente y el mantenimiento est abierto a discusin. Ambas posturas tienen su parte de razn. Aunque son difciles los hechos de las suposiciones pues hay pocos estudios controlados. 1. En la actualidad su mbito est limitado a sistemas de informacin de gestin, concretamente al anlisis de informacin y a la obtencin de informes relativos a grandes bases de datos. 2. En aplicaciones pequeas los estudios indican que se reduce el tiempo requerido para producir software. 3. Para grandes trabajos exige el mismo o ms tiempo de anlisis, diseo y prueba.
13
Combinacin de Paradigmas.
En muchos casos los paradigmas pueden y deben considerarse de forma que puedan utilizarse las ventajas de cada uno en un nico proyecto. En todos los casos se comienza con la determinacin de objetos, alternativas y restricciones, pasos que se llaman recoleccin preliminar de requisitos. A partir de ese punto se puede tomar cualquier camino como indica la figura. Por ejemplo, se pueden seguir los pasos del ciclo de vida si se puede especificar completamente el sistema al principio de todo. Si los requisitos son inciertos, se puede usar un prototipo para definir mejor los requerimientos. Usando el prototipo como gua, puede despus seguir los pasos del modelo de ciclo de vida clsico. Alternativamente, el prototipo puede evolucionar hacia el sistema y volver al paradigma del ciclo de vida en el momento de prueba. Usar la tecnologa de cuarta generacin para implementar el prototipo o implementar el sistema en el paso de la codificacin del ciclo de vida. No hay necesidad de ser dogmtico en la eleccin del paradigma, la naturaleza de la aplicacin debe dictar el mtodo a elegir. Mediante la combinacin de paradigmas, el todo puede ser mejor que la suma de las partes.
Anlisis de requisitos
Prototipado
T4G
Modelo en espiral
Diseo
T4G
Sistema en operacin
Mantenimiento
14
La definicin empieza con la etapa de anlisis del sistema. Durante esta etapa se desarrolla una descripcin bien delimitada del alcance del esfuerzo. Para el software se definen los recursos necesarios y se establecen las restricciones de tiempo y costo. La etapa de planificacin tiene como propsito proveer de una indicacin preliminar de la viabilidad del proyecto en la relacin de costo y tiempo establecido. El siguiente paso es el anlisis y definicin de los requerimientos. En este paso el elemento del sistema asignado al software se define en detalle. Los requerimientos se analizan y se definen de una de las dos siguientes maneras: El anlisis formal del dominio de la informacin puede ser usado para establecer una representacin del flujo de informacin y estructura. Estas representaciones se expanden luego para convertirse en una especificacin del software. Alternativamente se construye un prototipo de software y es evaluado por el cliente en un intento de afianzar los requerimientos.
15
16
Estrategias de Solucin
El anlisis de sistemas se centra en todos los elementos del sistema y no solo en el software y se realiza con los siguientes objetivos: 1) Identificacin de las necesidades: El analista se entrevista con el cliente y su representante y los objetivos son: a) Identificar los objetivos del sistema: el analista debe distinguir entre lo que necesita el cliente y lo que desea. b) Identificar funciones importantes. c) Identificar informacin que se necesita, rendimiento requerido, lmites de costo y tiempo. Es decir, identificar necesidades del usuario: objetivos, posibilidad de desarrollo en cuanto a equipamiento, restricciones de costo y tiempo, informacin a producir y el rendimiento requerido. La informacin recogida se especifica en un Documento de conceptos del sistema. 2) Estudio de viabilidad: Se centra en los siguientes puntos bsicos: se realiza cuando hay duda de alguno de ellos, de lo contrario no es necesario. VIABILIDAD ECONMICA: evaluar el costo frente al beneficio final. VIABILIDAD TCNICA: estudio de funcionalidad, rendimiento y restricciones que pueden afectar el desarrollo del sistema. Las consideraciones que se asocian normalmente son: Riesgo de desarrollo: trata de ver si el elemento del sistema se puede realizar de manera que la funcin y rendimiento se puedan alcanzar dentro de las restricciones definidas. Disponibilidad de recursos: si se tienen los recursos necesarios de hardware, software y personal. Tecnologa: si est la tecnologa adecuada. VIABILIDAD LEGAL: analizar si violamos la ley con el sistema. ALTERNATIVAS: una evaluacin de enfoques alternativos para el desarrollo del sistema. El estudio de viabilidad puede documentarse en un informe separado de los otros documentos importantes de gestin e incluso como apndice de la especificacin del sistema. 3) Anlisis econmico: El anlisis de costo beneficio seala los costos de desarrollo del proyecto y los contrasta con los beneficios tangibles e intangibles del sistema. El anlisis de beneficios depender de las caractersticas del sistema. 4) Anlisis tcnico: Comienza con una definicin de viabilidad tcnica del sistema propuesto: Qu tecnologas se requieren?, Qu nuevos materiales, algoritmos y mtodos se requieren?. La evaluacin analtica no es siempre posible, sin embargo la modelizacin es un mecanismo efectivo para el anlisis tcnico. El analista comprueba el comportamiento del modelo y lo compara con el mundo real o al sistema esperado, obteniendo informacin para la viabilidad tcnica del sistema propuesto. 5) Asignacin y compromisos: Una vez que se ha respondido a las cuestiones relativas al anlisis hay que considerar soluciones alternativas. Cada funcin del sistema con su rendimiento requerido y sus caractersticas de interfaz, es asignada a uno o ms elementos del sistema.
17
El Diagrama de Contexto establece el lmite de informacin entre el sistema que se est implementando y el entorno en que va a operar. El DCA define todos los suministradores externos de informacin que emplea el sistema, todos los consumidores externos de informacin creados por el sistema y todas las entidades que se comunican a travs de la interfaz o realiza mantenimiento y autocomprobacin. En esencia el DCA sita a cualquier sistema en el contexto de su entorno exterior. Entre las regiones del DCA se especifica el flujo de informacin entre las mismas y en cada regin se especifican subsistemas y la informacin que fluye entre ellos, logrando llegar a un Diagrama de Flujo de la Arquitectura o DFA.
18
19
2. Recursos
Son los recursos requeridos para hacer el sistema, si lo ubicramos en forma de pirmide en la base se encuentra el Entorno de Desarrollo (herramientas de software y hardware). En un nivel ms alto se ubican los componentes de software reutilizables y en el nivel ms alto se ubica los recursos humanos. Cada recurso se especifica con las siguientes caractersticas: Descripcin el recurso. Informe de disponibilidad. Fecha cronolgica en que se requiere el recurso. Tiempo en el que ser empleado. Tipos de Recursos HUMANOS: Se debe seleccionar los recursos humanos segn las habilidades tcnicas que se requieren para llevar a cabo el desarrollo. El nmero de personas requerido para un proyecto de software slo puede ser determinado despus de hacer una estimacin del esfuerzo de desarrollo. SOFTWARE REUTILIZABLE: La utilizacin de componentes de software existentes lleva a una reduccin importante del costo global. HARDWARE: Cada elemento de hardware debe ser especificado por el planificador del proyecto de software. Se deben considerar tres categoras: El sistema de desarrollo: es la computadora y perifricos asociados que se utilizan en la base de desarrollo. La mquina objetivo: es un procesador que ejecutar software como parte del sistema basado en la computadora. Otros elementos: del hardware del nuevo sistema. SOFTWARE: se utiliza como herramienta para el desarrollo de nuevo software. Existen herramientas que facilitan la creacin de nuevo software (metodologas, cdigo, cdigo reusable, etc.). 20
Modelos de Estimacin Existen tcnicas para la estimacin de coto y esfuerzo de dos tipos: Top Down: se estiman los costos globales y despus los parciales. Bottom Up: se estiman los costos de las partes del sistema y luego se obtiene el costo total. TCNICAS DE DESCOMPOSICIN: descompone cada mdulo, calcula el costo de cada uno (estimndolo mediante LCD o PF) y luego resume en general para la estimacin global del proyecto. ESTIMACIN BASADA EN EL PROCESO: es la tcnica ms comn para estimar un proyecto. o JUICIO EXPERTO: la estimacin de todas las tareas, individualmente, la hace una persona experta usando datos histricos de proyectos realizados con anterioridad, para luego obtener el costo total. o DELFI: es una extensin del Juicio Experto, distintas persona (expertas o no) hacen distintas estimaciones y luego por medio de un coordinador se trata de consensuar el costo total. DISTRIBUCIN DE ESFUERZOS:
La figura muestra una distribucin recomendada del esfuerzo donde se enfatiza el inicio (anlisis y diseo) y el final (prueba). Es solo una directriz. Las caractersticas de cada proyecto deben dictar la distribucin del esfuerzo. El esfuerzo gastado en la planificacin rara vez supera el 3%. El anlisis de requerimientos puede ir entre el 10% y el 20%. Normalmente se aplica entre el 20% y el 30% para el diseo del software. Las pruebas y posterior depuracin pueden contabilizar del 30% al 50%, el grado crtico del elemento del sistema de software a menudo dicta la cantidad de pruebas que se requieren. Por ejemplo: si un fallo puede provocar la prdida de una vida humana pueden considerarse porcentajes ms altos para la etapa de prueba.
21
22
Tambin se pueden clasificar segn la informacin que entregan: DE PRODUCTIVIDAD: se centran en el rendimiento del proceso de ingeniera de software. DE CALIDAD: proporciona una indicacin de cmo se ajusta el software a los requisitos implcitos y explcitos del cliente. Aunque existen muchas formas de medir la calidad, las mtricas ms usadas incluyen: correccin, facilidad de mantenimiento, integridad y facilidad de uso. DE TCNICA: se centra en las caractersticas del software (por ejemplo: la complejidad lgica o el grado de modularidad), ms que en el proceso a travs del cual ha sido desarrollado el software.
Ejemplos de Utilizacin de Mtricas Orientadas Al Tamao LDC - Lneas De Cdigo Medida directa del software y del proceso: -- productividad = kldc / persona_mes -- calidad = errores / kldc -- costo = $ / kldc Medida discutida porque depende del lenguaje y necesita una estimacin compleja Orientadas a la Funcin PF - puntos de funcin Medida indirecta del software y del proceso: -- productividad = pf / persona_mes -- calidad = errores / pf -- costo = $ / pf Medida independiente del lenguaje, de estimacin ms fcil pero subjetiva Calculo del PF: Parmetros # Entradas De Usuario # Salidas Al Usuario # Peticiones Al Usuario # Archivos # Interfaces Externas Total Factor de Peso Resultado
X X X X X
= = = = =
PF=TOTAL*[0.65+0.01*SUM(Fi)] i=1..14 Fi = Valores de ajuste de complejidad Valores de ajuste de complejidad 0- sin influencia 2- moderado 4- significativo
Se debe asignar un valor de ajuste de complejidad a cada una de las siguientes preguntas: 1- copias de seguridad? 2- comunicacin de datos? 3- procesamiento distribuido? 4- rendimiento critico? 5- entorno existente? 6- entradas interactivas? 7- mltiples pantallas de entrada? 8- actualizacin de archivos interactiva? 9- e/s, archivos, peticiones son complejas? 10- procesamiento complejo? 11- Cdigo reutilizable? 12- Se diseo instalacin? 13- Es para distintas organizaciones? 14- fcilmente modificable?
23
5. Anlisis de Riesgo
Cuando se analizan los riesgos es importante cuantificar el nivel de incertidumbre y el grado de prdida asociado con cada riesgo. Para hacerlo, se consideran diferentes categoras de riego: Riesgos del Proyecto: Amenazan al Plan de Proyecto. Los riesgos del proyecto identifican los problemas potenciales de presupuesto, planificacin temporal, personal, recursos, cliente y requisitos y su impacto en un proyecto de software. Riesgos Tcnicos: Amenazan la Calidad y la Planificacin Temporal del software que hay que producir. Identifican problemas potenciales de diseo, implementacin, de interfaz, verificacin y de mantenimiento. Riesgos del Negocio: Amenazan la viabilidad del software a construir. Los cinco principales riesgos de negocios son: 1. Construir un producto o sistema excelente que no quiere nadie en realidad (Riesgo de Mercado). 2. Construir un producto que no encaja en la estrategia comercial general de la compaa (Riesgo Estratgico). 3. Construir un producto que el departamento de venta no sabe como vender. 4. Perder el apoyo de una gestin experta debido a cambios de enfoque o a cambios de personal (Riesgo de Direccin). 5. Perder presupuesto o personal asignado (Riesgo de Presupuesto). Otra forma de categorizar los riegos es: Riesgos Conocidos: Son todos aquellos que se pueden descubrir despus de una cuidadosa evaluacin del Plan del Proyecto, del entorno tcnico y comercial en que se desarrolla el proyecto y otras fuentes de informacin fiables. Ejemplo: fechas de entrega poco realistas, falta de especificacin de requisitos o de mbitos de software, o un entorno pobre de desarrollo. Riesgos Predecibles: Se extrapolan de la experiencia en proyectos anteriores, por ejemplo: cambio de personal, mala comunicacin con el cliente, disminucin del esfuerzo del personal a medida que atienden peticiones de mantenimiento. Riesgos Impredecibles: Son extremadamente difciles de identificar por adelantado.
Identificacin del Riego La identificacin del riego es un intento sistemtico para especificar las amenazas al Plan de Proyecto. Identificando los riegos conocidos y predecibles, el gestor del proyecto da un paso adelante para evitarlos cuando sea posible y controlarlos cuando sea necesario. Un mtodo para identificar riesgos es crear una lista de comprobacin de elementos de riesgo, que consiste en una serie de preguntas a posibles riegos y las respuestas, analizadas en el Plan de Proyecto. Proyeccin del Riesgo La proyeccin del riego, tambin llamada estimacin del riesgo, intenta medir cada riesgo de dos maneras: - La probabilidad de que el riesgo sea real. - Las consecuencias de los problemas asociados con el riesgo, si ocurriera. Evaluacin del Riesgo Se intenta dar prioridades a los riesgos que no se haban cubierto y se empieza a pensar las maneras de controlar y/o impedir los riesgos que sean ms probables que aparezcan. La evaluacin del riego definir un nivel de referencia del riesgo, que posee un nico punto de referencia o punto de ruptura, que marcar la decisin de seguir con el proyecto o dejarlo. Tratamiento del Riesgo Una estrategia eficaz para tratar los riesgos debe considerar tres aspectos: 1. Evitar el Riesgo: Se plantean las estrategias para evitar los riesgos. 2. Supervisar el Riesgo: Se identifican los factores que pueden proporcionar una indicacin de si el riesgo se est haciendo ms o menos probable. A medida que progresa el proyecto, comienzan las actividades de supervisin del riesgo. El jefe de proyecto supervisa estos factores. 3. Gestin del Riesgo y Planes de Contingencia: Asume que los esfuerzos de reduccin ha fracasado y que el riesgo se ha convertido en una realidad. Se establecen los Planes de Contingencia para el riego.
24
6. Planificacin Temporal
Puede verse desde dos perspectivas diferentes: La fecha final ya est establecida, la establece el cliente. La fecha final es organizada por el que realiza el software. Si un cliente solicita a un grupo de desarrollo de software la construccin de un producto en un tiempo determinado, y despus de una cuidadosa estimacin y anlisis de riesgo, el gestor de anlisis de riesgo llega a la conclusin de que el software, tal y como se ha pedido, requerir ms tiempo para crearlo que el estipulado por el Cliente, se pueden seguir los siguientes pasos: 1. Realizar una estimacin detallada usando informacin de proyectos anteriores. 2. Empleando un modelo incremental, establecer una estrategia de desarrollo que proporcione una funcionalidad critica mnima para la fecha impuesta. Las dems funcionalidades se implementarn ms tarde. 3. Reunirse con el cliente y empleando la estimacin detallada, explicarle porque la fecha lmite impuesta no es realista. 4. Ofertar la estrategia de desarrollo incremental como alternativa. Se puede tambin proponer al cliente un aumento de personal, pero ello implicara un aumento en los costos. La Planificacin Temporal objetiva de un proyecto es necesaria porque si se retrasa el proyecto, la solucin de sumar ms personal al proyecto no es siempre aconsejable pues el personal agregado debe aprenderse el sistema y la gente que les ensea es la misma que estaba trabajando, y el proyecto se retrasa todava ms. Para desarrollar una Planificacin Temporal del proyecto, se debe distribuir un conjunto de tareas a lo larga de la duracin del proyecto. El conjunto de tareas variar dependiendo del tipo de proyecto. El propsito de controlar un proyecto es monitorear su progreso segn un plan, detectando desviaciones si las hay. Al planificar se debe ver como se relacionan el tiempo y el esfuerzo humano, como se divide el trabajo, que acciones son paralelas, como representar la agenda, etc. Para mejorar el control se divide el objetivo en submetas. Identificar las submetas permite asignar estimaciones, responsabilidades, fechas de inicio y fin, establecer la red de tareas. etc., estableciendo un calendario. Hay tcnicas para ayudar a establecer estos calendarios como son los diagramas de Gantt y PERT. La tcnica de evaluacin y revisin de programas (Pert) y el mtodo de camino crtico (CPM) son dos mtodos de planificacin temporal de proyectos que pueden aplicarse al desarrollo de software. Ambas tcnicas desarrollan una descripcin de la red de tareas del proyecto, es decir una representacin grfica o tabular de las tareas que deben acontecerse desde el principio hasta el final del proyecto. La red se define desarrollando una red de tareas asociadas con el proyecto y una lista de ordenamientos que indica en que orden debe ir cada tarea. El camino crtico se puede definir como la cadena de tareas que determina la duracin del proyecto. Tanto Pert como CPM permiten determinar el camino crtico, establecer las dimensiones de tiempo ms probables para las tareas individuales, aplicando modelos estadsticos y calcular los tiempos lmites de cada tarea, estimando el tiempo total del proyecto. Las limitaciones de tiempo que pueden discernirse de una red Pert o CPM pueden ser: Tiempo Temprano: Lo antes posible que se puede comenzar una tarea cuando todas las tareas precedentes se terminan con el mnimo de tiempo posible. Tiempo Tardo: Lo ms tarde que se puede iniciar la tarea sin que se retrase el tiempo mnimo de finalizacin del proyecto. Fecha ms Temprana de Finalizacin: Es la suma del tiempo temprano de la tarea ms la duracin de la tarea. Fecha Lmite de Finalizacin: Es el tiempo tardo de tarea ms la duracin de la tarea. Margen Total: La cantidad de tiempo extra o atrasos permitidos en la planificacin temporal de las tareas, de manera que el camino crtico de la red se mantenga conforme con la planificacin temporal.
25
MTODO PERT 1. Establecer la lista de tareas. 2. Construir una red (grafo dirigido). Nodo: inicio y fin de cada tarea.
i, j: acontecimientos t: tarea
t0i tiempo temprano: Es el mayor valor que aparece en las puntas de las flechas que llegan a ese nodo, es la suma de t0 del nodo anterior ms la duracin de la tarea. t1i tiempo tardo: Se calcula como el menor valor de cada una de las flechas que de l parten. 4. Calcular el camino crtico. El camino crtico lo forman las tareas crticas o nodos crticos. Nodo crtico: cuando el tiempo temprano es igual al tiempo tardo (t0i = t1i). No hay circuitos en el grafo y todos los nodos, excepto el primero y el final deben tener una tarea de la cul inicio o fin de duracin. Ej.: pg. 68 carpeta. Se empieza con los que no tienen ninguna dependencia, se calcula primero la fecha temprana, en cada uno de los nodos la duracin de la tarea. El nmero (Nro.) indica que vamos a finalizar en el instante nmero y t0i = t1i indica que no vamos a postergar su finalizacin.
GRFICO DE GANTT Es un grfico de tiempo que Permite establecer un calendario de las actividades o tareas. Tambin se pueden usar para la asignacin de recursos. 1. Cada tarea tiene como entrada el esfuerzo, la duracin y la fecha de inicio. Adems se asignan las tareas a individuos especficos. Como consecuencia de esta entrada se genera un grfico de tiempo, que permite vitalizar el desarrollo del proyecto, la concurrencia de tareas y las submetas importantes.
26
7. Planificacin Organizativa
Organizacin de las personas que estn involucradas en el desarrollo del proyecto. ORGANIZACIN DEL PROYECTO: El proceso de la direccin denota el influjo interpersonal mediante el cual los gerentes o directores se comunican con sus subalternos para la ejecucin de un trabajo. No existe una estructura organizacional perfecta para manejar los distintos tipos de proyectos. Existe una variada gama de estructuras organizacionales: Organizacin Funcional: Es la forma de organizacin ms comn y se basa en la estructura jerrquica bsica. Esta organizacin generalmente se descompone en varias unidades funcionales (equipos) diferentes, distribuyendo las tareas. La razn de ser de esta estructura radica en las teoras de administracin basadas en la especializacin, las cuales consideran que es ms fcil dirigir a especialistas si estos son agrupados segn su especialidad y el jefe de departamento tiene conocimientos de esa disciplina en particular. Este tipo de organizacin posee ventajas que descansan sobre su centralizacin de recursos similares, ya que, por ejemplo, brinda caminos de integracin claros y bien definidos para especialistas jvenes y adems, la ayuda mutua es fcilmente encontrada gracias a la proximidad fsica. Sin embargo, este tipo de organizacin posee debilidades. Por ejemplo, cuando se trabaja en proyectos mltiples, generalmente surgen problemas por el uso de los recursos. Otro ejemplo a citar es el de que cada departamento funcional pone nfasis en su especialidad ms que en los objetivos del proyecto. Pese a esto, la mayora de las compaas usan este tipo de organizacin no slo para sus proyectos, sino para todas sus actividades. Organizacin por Proyecto: Representa el opuesto a la organizacin funcional. El mismo equipo de personas realiza todo el desarrollo desde el anlisis hasta el mantenimiento. En una organizacin de proyecto, todos los recursos necesarios para realizar un proyecto son separados de sus unidades funcionales regulares y se renen como una unidad independiente de trabajo dirigida por un jefe de proyecto. Al jefe de proyecto se le concede una amplia autoridad sobre los recursos del proyecto y pueden adquirir nuevos recursos ya sea dentro o fuera de la organizacin. Todo el personal del proyecto esta bajo la autoridad del jefe de proyecto por el periodo que el proyecto dure. Las ventajas de este tipo de organizacin vienen de su objetivo nico y su unidad de comando. Se desarrolla un verdadero espritu de equipo bajo el claro entendimiento de, y enfocado a, un objetivo nico. La comunicacin informal es efectiva en un equipo fuertemente enlazado, y el director de proyecto tiene todos los recursos bajo su disposicin. Sin embargo, la organizacin de proyecto no es la solucin perfecta para todos los problemas de la direccin de proyectos, ya que por lo general, las instalaciones se duplican y los recursos son utilizados de forma ineficiente. Otro problema serio radica en que se produce inestabilidad laboral luego de terminado el proyecto temporal. Organizacin Matricial: varios equipos de personas lleva a cabo distintas tareas, pero cada equipo tiene un coordinador que controla el equipo y hay un jefe de todo el proyecto. La organizacin de matriz es una estructura multidimensional que trata de maximizar los puntos fuertes y minimizar los dbiles tanto de la estructura funcional como la de proyectos. Combina la estructura jerrquica vertical estandard con una estructura lateral u horizontal sobrepuesta de un coordinador de proyecto. Los mayores beneficios de la estructura de matriz son el balance de objetivos, la coordinacin a travs de las lneas de los departamentos funcionales, y la visibilidad de los objetivos del proyecto a travs de la oficina del coordinador de proyecto. La mayor desventaja es que el hombre en el medio trabaja para dos jefes. Verticalmente, responde al jefe del departamento funcional. Horizontalmente, responde al coordinador de proyecto o jefe de proyecto. En una situacin de conflicto puede quedar atrapado en el medio. El director de proyecto a menudo siente que no posee la autoridad suficiente sobre los departamentos funcionales. Por otro lado, el jefe del departamento funcional a menudo siente que el coordinador de proyecto esta interviniendo en su territorio. La eleccin final de la Estructura de Organizacin deber venir luego de considerar varios factores de la naturaleza de la tarea a realizar, las necesidades de la organizacin y el ambiente del proyecto. Es tambin posible ocupar las tres estructuras en una misma compaa, en diferentes proyectos. Tambin todas estas estructuras pueden ser utilizadas en un mismo proyecto en diferentes niveles por ejemplo, una organizacin global de matriz con estructura funcional en ingeniera y una organizacin de proyecto dentro de otra sub-rea funcional. Aunque hay argumentos a favor y en contra de cada alternativa, la opcin general cada vez se inclina ms hacia la organizacin en forma matricial, vislumbrndose como la ms productiva.
27
ORGANIZACIN DE GRUPO: Se refiere a la organizacin interna de los grupos de trabajo. Democrtico: no hay un jefe general, todos participan de la toma de decisiones. Con jerarqua: existe una cabeza conductora. Los equipos pueden estar asesorados por uno o ms especialistas, por plantillas de soporte (ejecutivos) y por un bibliotecario de software.
SEGUIMIENTO Y CONTROL: Quien controla que el proyecto se cumpla. Interno: realizado por las personas que hacen el desarrollo. Externo: auditorias o empresas que realizan la verificacin.
28
29
Construccin de Prototipos.
En muchos casos no es posible especificar completamente un problema en una etapa tan temprana. La construccin de prototipos ofrece un mtodo alternativo que da como resultado un modelo ejecutable del programa desde el cual pueden refinarse los requerimientos. Para construir los prototipos se aplican los siguientes pasos: 1) Evaluar las peticiones del software para determinar si el software a desarrollar es un buen candidato para la construccin de un prototipo. Los factores para saber si es un buen candidato son: rea de aplicacin, complejidad de aplicacin, caractersticas del cliente y del proyecto. Es esencial que el cliente participe en la evaluacin y refinamiento del prototipo y que sea capaz de tomar decisiones de requerimiento de forma oportuna. 2) Desarrollar una representacin abreviada de los requerimientos. 3) Crear una especificacin de diseo abreviada para el prototipo, luego de revisar la representacin de requerimientos. 4) Construir el prototipo, probar y refinar. 5) Una vez probado el prototipo, se presenta al cliente. El cliente conduce la prueba y sugiere modificaciones. 6) Modificaciones: los pasos 4 y 5 se repiten hasta que el prototipo haya evolucionado hacia el sistema de produccin, reuniendo todos los requerimientos del cliente y se perfeccionen sus errores o falencias. Mtodos y herramientas para la construccin. Para que la construccin de prototipos sea efectiva, un prototipo debe desarrollarse rpidamente, de forma que el cliente pueda comprobar los resultados y recomendar cambios. Para conseguir una construccin rpida, existen tres clases genricas de mtodos y herramientas: TCNICAS DE CUARTA GENERACIN: son ideales debido a que facilitan cdigo ejecutable rpidamente. COMPONENTES DE SOFTWARE REUSABLES: ensamblar en lugar de construir el prototipo, usando componentes existentes. ESPECIFICACIN FORMAL: son lenguajes que facilitan al analista crear interactivamente una especificacin. Llaman a herramientas automticas que traducen especificaciones en cdigo ejecutable y facilitan al cliente utilizar este cdigo para refinar los requerimientos formales.
30
Caractersticas de la Especificacin.
La forma de especificar tiene mucho que ver con la calidad de la solucin. Puede ser en papel (DFD), ejecutable (prototipo) o formal (lenguaje formal). Total y Completa. Consistente. Sin ambigedades. Que y no como. Funcionalidad. Verificable. Modificable. Formal. Refleje Dinamismo. Representacin Adecuada del Problema. Por niveles. Notacin Consistente.
Ventajas: 1. Desarrollar una especificacin formal permite un buen entendimiento de los requerimientos del software y proporciona la base para un diseo ms confiable del software ayudando a reducir errores y omisiones. 2. Como las especificaciones formales estn compuestas por entidades matemticas, pueden analizarse usando mtodos matemticos, por lo que puede probarse consistencia y completitud, as como demostrar que la implementacin se corresponde a la especificacin. 3. Pueden procesarse automticamente usando herramientas que ayuden a desarrollar, entender y depurarlas. Las especificaciones pueden ayudar a definir los casos de prueba en la verificacin, de hecho se inici su estudio para apoyar la verificacin de programas. Dependiendo del lenguaje formal que se use, se puede construir un prototipo.
31
Razones por las que no se usan mucho: 1. No se adoptan nuevas tcnicas que no se este claro que reduzcan costos. 2. Muchos desarrolladores no han sido entrenados en su uso, en matemticas o lgica. 3. No se esta familiarizado con esas tcnicas. 4. No son fciles de usar para componentes interactivos de interfaces, procesamiento paralelo o sistemas dirigidos por interrupciones. 5. Hay pocos sistemas especificados formalmente. 6. Mucho del esfuerzo de investigacin se ha dedicado a notaciones y tcnicas ms que en herramientas de soporte. 7. Los que desarrollan especificaciones formales no entienden a los que hacen ingeniera de software prctica. En general hay mtodos formales maduros para sistemas secuenciales, hay avances en concurrencia que requieren ms refinamiento.
Existen dos tcnicas: Relacionales: se basan en definir las entidades y los atributos. Orientadas a Estados: se basan en describir los estados de las entidades en un momento dado. Relacionales. Ecuaciones implcitas: establecen las propiedades de una solucin sin establecer el mtodo para resolverlo. Ej.: M * M = I (dice qu voy a hacer y no como). Relaciones recurrentes: se utiliza para especificar funciones recurrentes, para describir el valor de una funcin en funcin de otros valores de la misma funcin. Ej. : Fibonacci f(0) = 0; f(1) = 1; f(n) = f(n 1) + f(n 2) con n > 1. Axiomas algebraicos: establecen las propiedades de una funcin definiendo un conjunto de axiomas y tambin demuestran teoremas por medio de los axiomas. Una especificacin algebraica es una tcnica en la que un objeto o tipo de datos se especifica en trminos de las operaciones definidas en este tipo (el lgebra). Este estilo de especificacin esta basado en el uso del lgebra y definen a un sistema como un lgebra heterognea, por ejemplo, una coleccin de conjuntos diferentes que tienen a un conjunto de operaciones definidas. Hay varias notaciones para especificaciones algebraicas, todas con caractersticas comunes. Una caracterstica importante que debe cumplir cualquier lenguaje de especificacin formal y en particular las algebraicas es promover la modularidad. a) Sintaxis de operadores: (ej. : pila) nuevo() pila tope(pila) elem pone(pila, elem) pila vaco(pila) V o F extrae(pila) pila Axiomas: (relacin entre los operadores) vaco(nuevo) = V tope(nuevo) = error vaco(pone(pila, elem)) = F extrae(pone(pila, elem)) = pila extrae(nuevo) = error tope(pone(pila, elem)) = elem b) Teorema: reemplazo (pila, elem) = error, si vaco(pila) = V o pone(extrae(pila), elem) Expresiones regulares: se basan en la descripcin de un alfabeto y reglas sobre dicho alfabeto. Ej. : tomos = a, b, c (componentes del alfabeto) alternacin a|b = {a, b} (elige una de las dos) composicin (a b) = {a b} iteracin (a)* = {e, a, aa, aaa,...} (a)+ = {a, aa, aaa,...} = (a)* - e
32
Orientadas a estados. El estado siguiente se obtiene aplicndole un estmulo al estado anterior. Tablas de Decisin: Trasladan las condiciones y acciones descriptas en un texto narrativo del procesamiento, a una forma tabular. Permiten al mdulo evaluar una combinacin compleja de condiciones y seleccionar las acciones apropiadas basndose en esas condiciones. Las reglas son 2n, donde n es el nmero de condiciones. Las columnas son reglas de decisin. Regla 1 Especificacin Condicin 1 de Condicin 2 Condiciones Condicin k (V,F) Especificacin Accin 1 de Acciones de Accin 2 (X) Accin t Regla 2 Especificaci n de Condiciones (V,F) Especificaci n de Acciones de (X) Especificacin de Condiciones (V,F) Especificacin de Acciones de (X) Regla n Especificaci n de Condiciones (V,F) Especificaci n de Acciones de (X)
Una tablas es completa si para cada posible decisin hay una accin, no se deja ninguna regla sin contemplar. Una tabla es incompleta en caso contrario. Una tabla es ambigua o contradictoria si para dos reglas iguales tenemos dos acciones distintas (contradictoria) y cuando dos columnas de decisin dicen lo mismo (redundante). Para desarrollar una tabla de decisin se aplican los siguientes pasos: 1. Hacer una lista de todas las acciones que pueden asociarse con un procedimiento especfico mdulo. 2. Hacer una lista de todas las condiciones o decisiones tomadas durante la ejecucin del procedimiento. 3. Asociar conjuntos especficos de condiciones con acciones especficas, eliminando combinaciones imposibles de condiciones; alternativamente, desarrollar cualquier permutacin posible de combinaciones. 4. Definir reglas indicando que accin o acciones ocurren para un conjunto de condiciones. Ejemplo: Sistemas de facturacin de un servicio pblico. Si la cuenta del cliente se factura usando un mtodo de tarifacin fijo, se establece un cargo mensual mnimo para consumos de 100 kWh (kilowatios-hora). En los dems casos, la facturacin por computadora aplica la tarifa A. Sin embargo, si la cuenta se factura usando un mtodo de facturacin variable, se aplicar la tarifa A para consumos por debajo de 100 kWh, con un consumo adicional facturado de acuerdo con la tarifa B. 1 V F V F X 2 V F F V X 3 F V V F X X X 4 F V F V 5 F F
Cuenta de Tarifa Fija Cuenta de Tarifa Variable Consumo < 100 KWH Consumo >= 100 KWH Cargo Mensual Mnimo Facturacin Tarifa A Facturacin Tarifa B Otro Tratamiento
33
Tablas y Diagramas de Transicin: El Diagrama de Transicin de Estados (DTE) representa el comportamiento de un sistema que muestra los estados y los sucesos que hacen que el sistema cambie de estado. En lugar de un diagrama se puede usar una representacin tabular. Adems el DTE indica que acciones (por ejemplo, activacin de procesos) se llevan a cabo como consecuencia de un suceso determinado. Un estado es un modo observable de comportamiento. Un DTE indica como pasa un sistema de un estado a otro. Se representan los estados de E/S posibles y en la tabla se refleja cul es el estado resultante al aplicar cierta entrada a un estado. Ej. : Estado Actual
S0 S1
Entrada a
S0 S1
a b
S1 S0 S0
a b b
S1
Ej.: Se reciben telegramas que comienzan con INTEL y terminan con FINTEL. Cada telegrama est formado por frases, cada frase est compuesta por palabras y termina con la palabra STOP. Al terminar cada frase hay que imprimirla.
Palabras
INTEL
STOP
Recibir telegrama
Imprimir frase
Mecanismos de Estados Finitos: Un Mecanismo de Estado Finito combina los DFD, las expresiones regulares (para flujos de datos) y las tablas de transicin para realizar la descripcin ms detallada de los procesos del DFD incluyendo los distintos estados por los que puede pasar cada proceso. Los estados de cada proceso dependen de los datos de entrada del mismo.
34
Redes de Petri: Se disearon para especificar y modelizar sistemas con componentes concurrentes o que requieren paralelismo, sincronizacin, etc., sobre todo sistemas de tiempo real. Tienen dos elementos fundamentales: - Eventos: actividades que estoy modelizando. - Condiciones: precondiciones o postcondiciones para esos eventos. De la validez o no de las precondiciones depende la ejecucin de la actividad para que se cumplan las postcondiciones. En trminos formales se define como una cuaterna: C = (lugares, transiciones, arcos, tokens) Lugares: condiciones (pre/post). Se definen como un conjunto {P1,..., Pn}. Representadas grficamente por crculos. Transiciones: tareas {t1,..., tn}. Representadas grficamente con una barra. Arcos: relaciones entre condiciones y tareas. {(Pi, tj),..., (tk, P1)}. Conectan Lugares y Transiciones. precond. para tj postcond. para tk Tokens: marcaciones en los lugares o condiciones {M(Pi) = x}, donde x es la cantidad de Tokens o marcaciones en los lugares. Para habilitar las transiciones: una transicin est habilitada cuando cada lugar (Pi) tiene al menos tantos tokens como arcos a la transicin . Cuando disparo una transicin habilitada: 1. Remuevo los tokens de lugares de entrada (Precondiciones) 2. Distribuyo tokens en lugares de salida (Postcondiciones). 3. Cambio la marca. Ej. : 1 token en P1 puedo habilitar t1, significa pasar un token a P2, P3 y P4 puedo habilitar t2, esto implica poner un token en P5.
Expresin de paralelismo: Esto implica que se tienen que ejecutar en forma paralela para poder llegar al final. Empiezan y terminan juntos.
35
Expresin de exclusin mutua: P1 t1 P2 t2 P3 Puedo disparar t1 o t2. Pero s primero ejecuto una, despus la otra ya no la podr ejecutar.
Condicin de bloqueo: P0 t1 1 P1 0 0 P2 t2 P3 1 t1 y t2 estn bloqueados pues para para poder disparar t1 necesito disparar t2 pero para t2 tengo que disparar t1. no lo puedo resolver.
36
Redes de Petri Ejemplo C = (P, T, I, O) P = {p1, p2, p3, p4, p5} T = {t1, t2, t3, t4} I (t1) = {p1} O (t1) = {p2, p3, p5} I (t2) = {p2, p3, p5} O (t2) = {p5} I (t3) = {p3} O (t3) = {p4} I (t4) = {p4} O (t4) = {p2, p3}
Anlisis de Redes de Petri Permiten evaluar el modelo Podemos verificar Ausencia de deadlock Alcanzabilidad Seguridad Ejemplo: Fbrica y Pedidos La fbrica espera hasta un pedido, lo produce y lo enva para su entrega. Las condiciones son: A. Fbrica esperando B. Pedido esperando C. Fbrica trabajando D. Pedido completo Las Eventos son: 1. Llega un pedido 2. La fbrica comienza con el pedido 3. La fbrica termina con el pedido 4. El pedido es enviado para su entrega Precondiciones & Postcondiciones: Eventos 1 2 3 4 Condiciones -> modelamos con sitios Eventos -> modelamos con transiciones Precondiciones -> Entradas a transiciones Postcondiciones -> Salidas de transiciones Grfico Precondiciones ninguna a, b c d Postcondiciones b c d, a ninguna
37
Entidad externa
Inf. de e/
Inf. de s/
Entidad externa
Se puede usar el diagrama de flujo de datos para representar un sistema o un software a cualquier nivel de abstraccin. De hecho, los DFDs pueden ser refinados en niveles que representan un mayor flujo de la informacin y un mayor detalle funcional. Un DFD de nivel 0 tambin se denomina modelo fundamental del sistema o modelo de contexto y representa el elemento de software completo como una sola burbuja con datos de entrada y salida representados por flechas de entrada y salida respectivamente. A partir del DFD de Nivel 0 para mostrar ms detalle aparecen representados procesos (burbujas) y caminos de flujo de informacin adicionales. Cada uno de los procesos representados en el nivel 1 es una subfuncin del sistema general en el modelo del contexto. Notacin bsica. Entidad externa: un productor o consumidor de informacin que reside fuera de los lmites del sistema. Funcin: un transformador de informacin que reside dentro de los lmites del sistema. es lo que determina la funcin especfica Flujo de datos: un elemento o una coleccin de elementos. La cabeza de la flecha indica la direccin del flujo de datos. Archivo: un depsito de datos puede ser tan sencillo como un buffer, una cola o tan sofisticado como una base de datos relacional. IDENT Desc.
38
Flujos permitidos. Funcin Archivo. Funcin Funcin. Funcin Entidad externa. Archivo Entidad externa Es importante sealar que el diagrama no proporciona ninguna indicacin explcita de la secuencia de procesamiento. Podemos refinar cada una de las burbujas en distintos niveles para mostrar un mayor detalle. Ej. :
NIVEL N A F V A F1 W F3 Y Z F4 F5 B F2 X B
Se debe mantener la continuidad del flujo de informacin, es decir que la entrada y la salida de cada refinamiento deben ser las mismas. La notacin bsica que se usa para desarrollar el DFD no es en si misma suficiente para describir los requisitos. Para responder a esto se utiliza el diccionario de datos. En el nivel 0 es el nico nivel que se pueden pasar flujos sin nombrarlos. Diccionario de datos. Un anlisis de dominio de informacin puede ser incompleto si solo se considera el flujo de datos. Como cada flecha del DFD puede representar ms de un elemento de informacin, el analista debe disponer de algn mtodo para representar el contenido de dichas flechas, este es el diccionario de datos. Define los elementos de informacin sin ambigedades, puede dar informacin sobre la funcin, la cual no puede ser inmediatamente obvia a partir de un examen del DFD. El diccionario de datos se expande hasta que todos los datos compuestos han sido representados como elementales o son trminos que pueden ser bien conocidos. Estructuras: Funcionales: o Nombre o Descripcin(referencia a lo que hace) o Entrada o Salida
Archivos: o Descripcin o Nombre o Contenido o Flujo de datos de E/S Datos Elementales: o Nombre o Descripcin o Alfanumrico o Numrico
Flujo de Datos: o Nombre o Fuente o Destino o Descripcin o Estructura de datos con que hice el flujo o Volumen de informacin(estimacin de cuantos hace en el da) Estructura: o Nombre o Descripcin o Descripcin de campos o Flujos relacionados o Volumen
39
40
Metodologa de Jackson. Primero identifico: - Entidades (analizando los sustantivos) - Acciones (analizando los verbos) 1. Modelar el problema especificando las estructuras de datos de entrada y salida.
SECUENCIA SELECCIN ITERACIN
2. Identificar puntos de correspondencia entre rboles de entrada y salida y obtener el modelo estructural. 3. Expandir el modelo estructural a un diseo detallado. Hacer lista de operaciones. Asociar operaciones con la estructura del programa. Desarrollar pseudo cdigo.
41
Ejemplo: 1. Archivo de entrada dto. Especialidad nombre 01 perforaciones Juan 01 perforaciones Jos 01 perforaciones NN 01 albail NN 01 albail NN 01 pintor NN 02 albail NN 02 soldadura NN
iteracin
Reg. de Empl. *
Dto.
Espec.
Nombre
Dto. Reporte: Dto. Espec. Cant. 01 perf. 3 01 albail 2 01 pintor 1 02 albail 1 02 soldador 1
Espec.
Cant.
1 2
3
Procesar titulo
9 10 8
4 5 6 7 3
Imprimir lnea
3. Expandir: Listado de operaciones 1 abrir archivos de empleados. 2 imprimir ttulo 3 leer registro 4 cantidad empleados = 0 5 dto. actual = dto. 6 esp. actual = esp. 7 cant. emp = cant. emp. + 1 8 imprimir lnea 9 cerrar archivo 10 terminar
42
Diagramas de Entidad Relacin (DER). Es una notacin grfica para modelar datos. Es un modelo de red que describe con un alto nivel de abstraccin la distribucin de datos almacenados en un sistema. Es una herramienta efectiva de modelado de datos para comunicarse con los usuarios ejecutivos de mayor nivel de una organizacin o el grupo de administracin de bases de datos. Los componentes de un DER son: Entidades: objetos (concretos o conceptuales) de la aplicacin. Las entidades del mismo tipo se agrupan en un conjunto de entidades. Relaciones: asociaciones entre una o ms entidades. Las relaciones se definen en funcin del grado, cardinalidad y dependencia de existencia. Atributos: describen propiedades de las entidades y relaciones. Son identificadores (sirven como clave) o descriptores. De acuerdo a su grado las relaciones pueden ser: unarias, binarias, ternarias o n-rias. La cardinalidad de una relacin puede ser: N:N de muchos a muchos 1:N uno a muchos 1:1 uno a uno La cardinalidad puede ser mandataria u opcional. A las entidades que no tienen clave propia y no tienen existencia propia se las denomina entidades dbiles. Generalizacin: En el DER es posible establecer jerarquas de generalizacin entre las entidades. Una entidad E es una generalizacin de un grupo de entidades E1...En si cada objeto de E1...En es tambin un objeto de E. En la generalizacin se utilizan los conceptos de herencia. Especializacin: En una especializacin existen entidades del super-tipo que no estn en los subtipos. Tambin existe el concepto de herencia.
43
44
Diseo.
Es el proceso de aplicar distintas tcnicas y principios con el propsito de definir el sistema con los suficientes detalles para permitir su realizacin fsica. Usando una de las distintas metodologas de diseo se realiza (desde el punto de vista tcnico) el diseo de datos, arquitectnico y el diseo procedimental. Diseo de datos: transforma el modelo del campo de informacin creado durante el anlisis, en las estructuras de datos que se van a requerir para implementar el software. Diseo arquitectnico: define las relaciones entre los principales elementos estructurales del programa. Diseo procedimental: transforma los elementos estructurales en una descripcin procedimental. Es aqu donde se toman decisiones que afectaran finalmente al xito de la implementacin del programa y con igual importancia a la facilidad de mantenimiento. Sin diseo nos arriesgamos a construir un sistema inestable, un sistema que fallar cuando se realicen pequeos cambios, que puede ser difcil de probar y cuya calidad puede no ser evaluada ms tarde. Desde el punto de vista de gestin de proyecto el diseo de software se realiza en dos pasos: Diseo preliminar: involucra el diseo de datos y arquitectnico, se refiere a la transformacin de los requerimientos de datos y arquitectura de software (se realiza un documento de diseo preliminar). Diseo detallado: involucra nuevamente el diseo de datos, pero ahora en detalle, aqu el refinamiento de la representacin arquitectnica conduce a una estructura de datos detallada y a representaciones algortmicas del software (diseo procedimental).
45
Fundamentos del diseo. proporcionan la base necesaria para que funcione correctamente.
Refinamiento: la arquitectura de un programa se desarrolla en niveles sucesivos de refinamientos de los detalles procedimentales. Se desarrolla una jerarqua descomponiendo una declaracin de una funcin muy grande de una forma sucesiva hasta que alcancen las sentencias del lenguaje del programa. El proceso de refinamiento es anlogo al usado en el anlisis de requerimientos. La diferencia est en el nivel de detalle, no en el mtodo. Arquitectura del software: se refiere a dos caractersticas importantes de los programas: Estructura jerrquica de los mdulos. Estructura de los datos. La arquitectura del software se obtiene mediante un proceso de particin, que relaciona los elementos de una solucin de software como parte de un problema del mundo real definido en anlisis de requisitos. Cada mtodo de diseo da como resultado una estructura distinta. Modularidad: el software se divide en elementos con nombres y direcciones separados, llamados mdulos, que se integran para satisfacer los requerimientos del problema. Es ms fcil resolver un problema complejo cuando se lo parte en trozos manejables. El esfuerzo para desarrollar un mdulo individual decrece conforme el nmero de mdulos se incrementa, pero aumenta el esfuerzo asociado con las interfaces entre ellos. La modularidad mejora la calidad del diseo y a su vez facilita la implementacin, depuracin, pruebas, documentacin y mantenimiento del producto. Abstraccin: cuando se considera una solucin modular a cualquier problema pueden formarse muchos niveles de abstraccin. En el nivel superior de abstraccin se establece una solucin en trminos amplios, en los niveles inferiores se toma orientacin ms detallada y en el nivel inferior se establece la solucin de forma que pueda implementarse directamente. Hay abstraccin de datos (coleccin de datos que describe un objeto) y de procedimientos (determina la secuencia de instrucciones que tienen una funcin limitada y especfica) y de control (al igual que la procedimental y de datos implica un mecanismo de control del programa sin especificar los detalles internos). Ocultamiento de informacin: oculta a otros mdulos los detalles de implementacin, mostrando solo las interfaces. El ocultamiento implica que una modularidad efectiva pueda lograrse definiendo un conjunto de mdulos independientes que se comuniquen con los otros mediante la informacin necesaria para realizar la funcin del software. Impide que se propaguen errores improductivos inadvertidamente. Independencia funcional: Es una derivacin directa del concepto de modularidad y de los conceptos de abstraccin y ocultamiento. Se trata de disear software de forma que cada mdulo se centre en una subfuncin especfica de los requisitos y tenga una interfaz sencilla, cuando se ve desde otras partes de la estructura del software.La independencia funcional se mide con dos criterios: cohesin y acoplamiento. COHESIN:
ALTA
SI
Funcin nica ?
NO Relacin
BAJA
Funcional: cada mdulo ejecuta una funcin. Secuencial: la salida de una tarea es la entrada de otra en el mismo mdulo. Por eso importa la Relacin secuencia, la forma en que las por tareas estn asignadas. datos Comunicacional: abarca mdulos cuyas tareas realizan actividades sobre una misma estructura de datos. de Procedimiento: son mdulos cuyas actividades estn Relacin relacionadas por el control y por deben ejecutarse en un orden control especfico. Temporal: un mdulo contiene tareas que estn relacionadas porque se ejecutan al mismo tiempo. Lgica: son mdulos que tienen tareas Ni datos lgicamente relacionadas (ej.: Ni control conjunto de tareas de entrada). Coincidental: segmentacin arbitraria del cdigo, un mdulo que realiza tareas debidamente relacionadas ente si.
46
Lo importante es intentar conseguir una alta cohesin y saber reconocer la baja cohesin, de forma que se pueda modificar el diseo para obtener mayor independencia funcional. ACOPLAMIENTO: El acoplamiento depende de la complejidad de las interfaces entre los mdulos, del punto en que se hace una entrada o referencia aun mdulo y de los datos que pasan a travs de la interfaz. En el diseo de software buscamos el ms bajo acoplamiento posible. El acoplamiento es la interdependencia entre los mdulos.
BAJO
ALTO
1) Sin acoplamiento 2) De datos: hay relacin entre los mdulos por el pasaje de datos. 3) De estructura de datos: ambos mdulos conocen la misma estructura. 4) De control: se pasan datos de control, son aquellos datos que significan algn tipo de evaluacin en el mdulo receptor. 5) Externo: se refiere a mdulos con interface en el mundo exterior (perifricos). 6) Globales o por reas comunes: distintos mdulos acceden al mismo conjunto de datos. 7) Por contenido: un mdulo utiliza informacin de datos o control contenida dentro de otro mdulo.
Diseo de Datos.
Es la primera y quizs la ms importante de las tres actividades de diseo. El impacto de la estructura de datos sobre la estructura del programa y la complejidad procedimental hace que el diseo de datos tenga una profunda influencia en la calidad del software. Los datos bien diseados conducen a una mejor estructura de programa, modularidad y reduccin de la complejidad procedimental. PRINCIPIOS: 1) Aplicar metodologas de anlisis de datos (Se deben desarrollar y revisar las representaciones de flujos y contenido de datos.). 2) Identificar todas las estructuras de datos y las operaciones que se han de realizar sobre estas. 3) Usar diccionario de datos (para definir el diseo de los datos y el software). 4) Refinar el diseo (obtener una estructura de datos ms detallada a medida que se avanza en el refinamiento). 5) Ocultar la representacin de la estructura de datos. 6) Desarrollar bibliotecas de estructuras de datos y operaciones.
Diseo Arquitectnico.
El objetivo principal del diseo arquitectnico es desarrollar una estructura de programa modular y representar las relaciones de control entre los mdulos. Adems el diseo arquitectnico mezcla la estructura del programa y la estructura de datos y define las interfaces que facilitan el flujo de los datos a lo largo del programa (se hace la carta de estructura derivada del DFD).
Diseo de la Interfaz.
El Diseo de Interfaz se concentra en tres reas importantes: 1. El diseo de interfaces entre los mdulos de software. 2. El diseo de interfaces entre el software y otros productores y consumidores no humanos de informacin. 3. Entre el hombre y la computadora.
47
Diagrama de Nassi Schneiderman: Es un diagrama de cajas, surgi del deseo de desarrollar una representacin del diseo procedimental que no permitiera la violacin de las construcciones estructuradas.
TABULARES: Tablas de decisin: Dan una herramienta que traslada las acciones y condiciones (descriptas en un texto narrativo del procesamiento) a una forma tabular. TEXTUALES: PDL: (lenguaje de diseo de programas o lenguaje de pseudo cdigo) A primera vista se parece a Pascal o Ada, la diferencia es que se usa texto narrativo insertado directamente dentro de la secuencia del lenguaje de diseo de programas.
48
Metodologas de Diseo.
Diseo orientado al flujo de datos.
Este diseo permite una cmoda transicin de la informacin (por ejemplo, el DFD contenido en la especificacin de requisitos) a una descripcin de diseo de estructura del programa. Se realiza como parte de un proceso de 5 pasos: 1) Establecer el tipo de flujo de informacin. 2) Determinar los lmites del flujo. 3) Convertir el DFD en la estructura del programa. 4) Definir la estructura de control mediante factorizacin. 5) Refinar la estructura. El tipo de flujo s lo que determina el mtodo de conversin requerido en el paso 3. Hay dos tipos de flujos: de transformacin y de transaccin. Flujo de Transformacin. La informacin entra al sistema mediante caminos que transforman los datos externos a una forma interna y se identifica como flujo entrante. En el interior del software se produce una transicin. Los datos entrantes pasan a travs del centro de transformacin movindose a lo largo de caminos que conducen ahora hacia la salida.
Flujo de Entrada
Centro de transformacin
Flujo de salida
ANLISIS DE TRANSFORMACIN: Es un conjunto de pasos que permiten a un DFD, con caractersticas de flujo de transformacin convertirse en una carta de estructura. 1. Revisar el DFD: nivel 0 del DFD e informacin complementaria. 2. Refinar el DFD: se examinan los siguientes niveles para obtener ms niveles. 3. Determinar tipo de flujo: el diseador selecciona una caracterstica global del flujo basndose en la naturaleza prevaleciente del DFD. 4. Identificar el centro de transformacin: de esta manera se especifican los lmites del flujo de llegada y salida (que estn abiertos a interpretaciones). 5. Realizar el primer nivel de factorizacin: Flujo de Entrada Transformacin Flujo de salida
6. Realizar el segundo nivel de factorizacin: se desarrollan los mdulos de nivel inferior. 7. Se refina la estructura usando medidas heursticas de diseo: con los dos pasos anteriores obtuve a partir del DFD una carta de estructura, ahora la perfecciono usando criterios para el buen diseo.
49
Flujo de Transaccin. El flujo de transaccin se caracteriza por el movimiento de datos a travs de un camino de llegada que convierte la informacin del mundo exterior en una transaccin. Se evala la transaccin y de acuerdo con su valor el flujo sigue por uno de los muchos caminos de accin. El centro del flujo de informacin desde el que emanan los caminos de accin se denomina Centro de Transaccin. La funcin decide a que mdulo mandar la informacin. Hay que tener en cuenta que en el DFD de un gran sistema, pueden estar presentes los dos tipos , de transformacin y de transaccin. Por ejemplo, dentro de un flujo de transaccin, el flujo de la informacin a travs de un camino de accin puede tener un flujo de transformacin. ANLISIS DE TRANSACCIN: Los pasos en el anlisis de transaccin son similares y en algunos casos idnticos a los pasos para el anlisis de transformaciones. La principal diferencia se refiere a la conversin de un DFD en carta de estructura. 1. Revisar el DFD. 2. Refinar el DFD. 3. Identificar tipo de flujo. 4. Identificar el centro de transaccin y las caractersticas del flujo de cada camino de accin.
5.
Transformar el DFD en una estructura de software adecuada al procesamiento de transacciones. (Factorizar Transaccin, primer nivel)
6. Factorizar y refinar la estructura de transacciones y la estructura de cada camino de accin (Factorizar caminos de accin, segundo nivel).
7.
Dato transferido
Relacin de control
Seleccin
Mdulo E/S
Iteracin
50
51
MANEJO DE E/S: transferencia de datos y tiempo invertido. Rendimiento dispositivos. Transferencia Tamao de buffers. Bus de datos. ASIGNACIN DE RECURSOS Y MANEJO DE PRIORIDADES. SINCRONIZACIN DE TAREAS Y COMUNICACIN ENTRE TAREAS: un sistema multitarea debe suministrar un mecanismo por el que las tareas se pasan informacin unas a otras, as como para asegurar su sincronizacin. Se utilizan para esto: semforos, reas compartidas, mensajes, tcnicas cclicas.
52
Mtodo Ward. El mtodo de diseo Ward comienza con la aplicacin de los principios fundamentales de anlisis de software aplicado en el contexto de la notacin de flujo de datos. Se crean los DFDs, se define el correspondiente diccionario de datos y se establecen las interfaces entre las principales funciones del sistema. Anlisis y diseo estructurado + conexin con el mundo real + mecanismo para representar comunicacin y sincronizacin de tareas + representacin de la dependencia de estados. Para hacer la conexin con el mundo real, al DFD agregamos: DESCRIPCIN FLUJO DE CONTROL: Elemento de control o suceso: interrupciones. Toma un valor lgico o discreto.
PROCESOS DE CONTROL:
REPRESENTACIN seales o
burbujas que coordinan o sincronizan las actividades de otras burbujas. Acepta control como entrada y produce control como salida. ALMACN DE CONTROL: depsitos de elementos de control, que se guardan para ser utilizados por uno o ms procesos FLUJO DE DATOS CUASI CONTINUOS: Un objeto de datos que entra o sale de un proceso de una forma continua. PROCESO MLTIPLE: Mltiples ocurrencias equivalentes del mismo proceso.
53
Documentacin de Diseo.
En primer lugar se describe el Alcance del Diseo; la mayora de la informacin se obtiene de la Especificacin del Sistema y del modelo de anlisis (Especificacin de los Requisitos de Software). En segundo lugar se describe el Diseo Arquitectnico del Sistema, que indica como se ha obtenido la Arquitectura del Programa del Modelo de Anlisis. Se utilizan grficos para la representacin de la Estructura del Programa, como los Diagramas de Flujo de Datos, Cartas de Estructura, que junto con los conceptos de programacin estructurada, permite al diseador representar los detalles procedimentales, facilitando su traduccin al cdigo. En tercer lugar se describen detalladamente los Mdulos que componen el sistema, indicando de cada uno de ellos una descripcin del proceso, descripcin de la interfaz, lenguaje de diseo, mdulos que lo componen, estructuras de datos internas y por ultimo comentarios, restricciones y limitaciones. Luego se especifica una seccin de Diseo de Datos, que describe la estructura de los datos internos y externos. Y por ltimo, si es necesario se describe el Diseo de Interfaz, con una Especificacin de la Interfaz Hombre-Mquina y las Normas de Diseo utilizadas.
Prototipo de Documento de Diseo 1. AMBITO Objetivos Hardware, Software e Interfaces Humanas Funciones de Software Bases de Datos Definidas Externamente Restricciones y Limitaciones de Diseo 2. DOCUMENTO DE REFERENCIA Documento de Software Existente Documento del Sistema Referencia Tcnica 3. DESCRIPCIN DEL DISEO Descripcin de Datos (Flujo y Estructura) Estructura de Programa Derivado Interfaces Dentro de la Estructura 4. MDULOS Texto Explicativo Descripcin de la Interfaz Descripcin en Lenguaje de Diseo Mdulos Usados Organizacin de los Datos 5. ESTRUCTURA DE ARCHIVOS Y DATOS GLOBALES Estructura de Archivos Externos (Estructura Lgica, Descripcin Lgica de Registros y Mtodos de Acceso) Datos Globales Referencias Cruzadas Entre Archivos y Datos 6. PROVISIONES DE PRUEBAS Directrices Estrategias de Integracin 7. EMPAQUETAMIENTO Solapamiento del Programa Transferencia 8. APENDICE
54
55
VISIN DE LA INGENIERA DE SOFTWARE Se centra en la necesidad que puede tener un proyecto especfico de desarrollo de software. Facilidad de traduccin del diseo detallado al cdigo fuente. En teora la generacin del cdigo fuente a partir del diseo detallado debera ser algo directo. El grado de facilidad indica cmo se aproxima un lenguaje a la representacin del diseo. Eficiencia del compilador. Aunque los rpidos avances en velocidad de procesamiento y densidad de memoria han comenzado a disminuir la necesidad de un cdigo super eficiente muchas aplicaciones todava requieren programas rpidos y ajustados en memoria. Portabilidad del cdigo fuente. Capacidad de que el cdigo fuente sea transportado de un procesador a otro con ninguna o pocas modificaciones. Tambin la capacidad de permanecer inalterado cuando cambia su entorno de funcionamiento. Disponibilidad de herramientas de desarrollo. Que pueden acortar el tiempo requerido para la generacin del cdigo fuente y mejorar la calidad del cdigo. Tratar de tener la mayor cantidad de herramientas para escribir el cdigo. Facilidad de mantenimiento. Es crticamente importante para cualquier esfuerzo no trivial de desarrollo de software. El cdigo debe estar suficientemente documentado para que se pueda entender, ya que a partir de ah comienza su mantenimiento.
56
57
Clases de lenguajes.
PRIMERA GENERACIN: el cdigo de mquina y su equivalente ms humanamente legible, el lenguaje ensamblador, representan la primer generacin. Estos lenguajes dependientes de la mquina representan el menor grado de abstraccin. SEGUNDA GENERACIN: fue desarrollada afines de los 50 y principios de los 60 y han servido como base para los lenguajes modernos (tercera generacin). Ejemplos de ellos son: Fortran, Cobol, Basic y Algol. TERCERA GENERACIN: tambin llamados de programacin moderna o estructurada, estn caracterizados por sus potentes posibilidades procedimentales y de estructuracin de datos, pueden dividirse en dos categoras: De propsito general: PL/1, Pascal, Modula2, C y Ada. Lenguajes especializados: Lisp, Prolog (sistemas expertos), APL (para manejo de vectores y matrices), Forth, Smalltalk. CUARTA GENERACIN: combinan caractersticas procedurales y no procedurales, los podemos clasificar en: Lenguajes de peticin: asociados al uso de Bases de Datos, permiten al usuario manipular de forma sofisticada la informacin contenida en la base de datos previamente creada. Generadores de programas: son ms sofisticados que los anteriores, permiten al usuario crear programas en lenguajes de tercera generacin usando notablemente menos sentencias, son de muy alto nivel, hacen un fuerte uso de la abstraccin de datos y de procedimientos. La mayora es para desarrollos comerciales en Cobol. Otros L4G: Lenguajes de soporte a la toma de decisiones: permiten que los no programadores lleven a cabo una gran variedad de anlisis (hojas de clculo). Lenguajes de prototipos: asisten en la creacin de prototipos. Lenguajes de especificacin formal: se pueden considerar L4G si producen cdigo ejecutable.
58
Estilo de codificacin.
Los elementos de estilo incluyen la documentacin interna (nivel de cdigo fuente), los mtodos de declaracin de datos, la aproximacin a la construccin de sentencias y las tcnicas de E/S. DOCUMENTACIN DEL CDIGO La eleccin de los nombres para los identificadores (variables y etiquetas) es importante, estos deben ser mnemotcnicos. Un lenguaje que limita los nombres de los identificadores a unos pocos caracteres implcitamente limita la comprensin. COMENTARIOS: la posibilidad de expresar comentarios en lenguaje natural como parte del listado del cdigo fuente es algo que aparece en todos los lenguajes de propsito general. Hay dos categoras de comentarios: de prlogo(deben aparecer al principio de cada mdulo) y descriptivos(se incluyen por el cuerpo del cdigo y se usan para describir las funciones de procesamiento). ORGANIZACIN VISUAL DEL PROGRAMA: la identacin del cdigo fuente realza las construcciones lgicas y los bloques ayudando a la legibilidad. DECLARACIN DE DATOS Se pueden establecer varios mtodos para hacer ms compresibles los datos y ms fciles de manejar. El orden de las declaraciones de datos se debe estandarizar incluso aunque el lenguaje de programacin no tenga requerimientos especficos. Por ejemplo: conviene declarar mltiples variables en una sola sentencia, merece la pena ponerlas en orden alfabtico, etc. CONSTRUCCIN DE SENTENCIAS Cada sentencia debe ser simple y directa, muchos lenguajes permiten colocar varias en un mismo rengln, el ahorro de espacio que esto implica est difcilmente justificado por la pobre legibilidad del resultado. Las sentencias del cdigo fuente se pueden simplificar a: evitar el uso de complicadas comparaciones condicionales, eliminar las comparaciones con condiciones negativas, evitar grandes anidamientos y usar parntesis para expresiones lgicas o aritmtica. TCNICAS DE E/S El estilo variar de acuerdo al grado de interaccin humana. E/S ORIENTADA A LOTES (poca interaccin humana)sern deseables: Organizacin lgica de la entrada. Comprobacin de errores de E/S significativos. Buena recuperacin de errores de E/S. Formatos de informes de salida relacionados. E/S INTERACTIVA Entrada simple y dirigida. Extensa comprobacin y recuperacin de errores. Salida humanizada. Consistencia de formato de E/S. PRINCIPIOS GENERALES PARA LA E/S Hacer invisibles a los usuarios los aspectos internos de la computadora. Evitar que el usuario pueda hacer terminar anormalmente el programa. Advertir al usuario cuando una peticin puede traer consecuencias. Proporcionar asistencia interactiva. Adecuar los requerimientos de entrada a las posibilidades del usuario. Adecuar los mensajes de salida a las velocidades de los dispositivos de salida. Distinguir entre distintas clases de usuarios. Mantener tiempos de respuesta consistentes. Minimizar el trabajo extra del usuario en los casos de errores.
59
Eficiencia.
En primer lugar la eficiencia es un requerimiento de rendimiento y por lo tanto se debe establecer durante el anlisis de requerimientos del software. El software debe ser tan eficiente como se requiera y no como sea humanamente posible. En segundo lugar la eficiencia se incrementa con el buen diseo y en tercer lugar la eficiencia del cdigo y la simplicidad del cdigo van de la mano. En general no hay que sacrificar la claridad, la legibilidad o la correccin en aras de una mejora de eficiencia que no sea esencial. Eficiencia en el cdigo. La eficiencia del cdigo fuente est ligada a la eficiencia de los algoritmos definidos durante el diseo detallado. Sin embargo el estilo de codificacin puede afectar la velocidad de ejecucin y los requerimientos de memoria. En el paso del diseo detallado al cdigo debemos tener en cuenta este conjunto de directrices: Simplificar expresiones aritmticas y lgicas. Evaluar los bucles anidados intentando sacar fuera de ellos algunas sentencias. Evitar arreglos multidimensionales. Evitar el uso de punteros y listas complejas. No mezclar tipos de datos. Usar cuando sea posible aritmtica entera y expresiones booleanas. Eficiencia en memoria. Las restricciones de memoria en el mundo de las grandes computadoras son generalmente algo del pasado, la gestin de memoria virtual proporciona a las aplicaciones de software un espacio de direcciones lgicas enorme. Sin embargo, en las PC (microprocesadores) las restricciones de memoria son algo muy real. Si los requerimientos del sistema demandan minimizar la memoria se deben evaluar los compiladores de lenguajes de alto nivel y como ltimo recurso usar Assembler. Eficiencia de E/S. Debemos distinguir entre dos tipos de E/S: DIRIGIDA A LA PERSONA: se considera eficiente cuando la informacin se puede suministrar o comprender con el mnimo esfuerzo intelectual. DIRIGIDA A OTRO DISPOSITIVO: la eficiencia es interna, muy complicada, fuera de los alcances de la materia. Directrices para mejorar la E/S: Minimizar el nmero de peticiones. E/S con buffers para reducir el embotellamiento en la comunicacin. En memoria secundaria se debe seleccionar el mtodo de acceso ms simple dentro de lo aceptable y debe hacerse por bloques. Importante: super eficiencia en la E/S no vale la pena si no se puede comprender.
60
61
El grafo de flujo representa el flujo de control lgico. Cada nodo representa una o ms sentencias procedimentales. Un solo nodo puede corresponder a una secuencia de cuadros de proceso y a un rombo de decisin. Una arista debe terminar en un nodo, cuando contabilizamos las regiones se cuenta tambin la exterior. Cuando en el diseo procedural se encuentran condiciones compuestas (expresiones booleanas con los operadores and, or, etc.) el grafo se complica un poco, por ejemplo: If a or b then x else y endif a b y Un camino independiente es cualquier camino que introduce por lo menos un nuevo conjunto de sentencias de procesamiento o una condicin. En trminos del diagrama un camino independiente se debe mover por lo menos por una arista que no haya sido recorrida anteriormente. El conjunto de caminos bsicos no es nico, para saber el nmero de caminos independientes que hay que ejecutar para asegurar que todas las sentencias del programa se ejecuten por lo menos una vez, tenemos que calcular la complejidad ciclomtica, que se calcula de la siguiente forma: 1. Nmero de regiones. 2. Nmero de aristas nmero de nodos + 2. 3. Nmero de nodos predicados + 1. PASOS A SEGUIR 1. Usar el diseo o el cdigo para hacer el grafo de flujo. 2. Determinar la complejidad ciclomtica. 3. Determinar un conjunto bsico de caminos linealmente independientes. 4. Preparar los casos de prueba que fuercen la ejecucin de cada camino. x x
62
Matrices de grafos. Para desarrollar una herramienta de software que ayude en la prueba del camino bsico puede ser bastante til una estructura de datos denominada matriz de grafos. Es otra herramienta de software para esta prueba. Es una matriz cuadrada cuyas filas y columnas representan los nodos del grafo y cada entrada de la matriz representa la conexin entre los nodos. Si hay conexin ponemos en 1, sino un 0. La suma de las filas nos da el peso de enlace. Si el peso de enlace es mayor a 1 representa un nodo predicado. Ejemplo: 1 2 3 4 5 1 2 3 4 5 conexiones 1 1 a 1 1 1 a 2 2 0 3 3 d b 3 1 1 2 e 4 c f 4 1 1 2 5 R2 b 5 g e 5 1 1 2 f 4 R1 d Matriz de grafo Matriz de conexiones g R3 c 2 nodos predicados = 3 complejidad ciclomtica = 4 R1, R2, R3 y R4 = regiones
Prueba de Bucles. Se centra en la validez de la construccin de bucles se pueden definir cuatro clases diferentes de bucles. Simples Anidados Concatenados No estructurados
Adems del anlisis del camino bsico que mide todos los caminos de un bucle, se recomienda una lista de pruebas adicionales para cada clase de bucle. SIMPLE: sea n el nmero mximo de pasos permitidos por el bucle, se deben hacer estas pruebas: Saltar totalmente el bucle. Pasar una sola vez por el bucle. Pasar dos veces por el bucle. Hacer m pasos por el bucle donde m < n. Hacer n-1, n y n+1pasos por el bucle. ANIDADOS: Llevar a cabo las pruebas de bucle simples con el bucle ms interior manteniendo los exteriores con los valores mnimos en sus parmetros de iteracin. Progresar hacia fuera, llevando a cabo las pruebas para el siguiente bucle, pero manteniendo los ms externos en los valores mnimos y los dems bucles anidados (internos) con valores tpicos. CONCATENADOS: cuando los bucles son independientes se pueden probar independientemente como los simples, pero cuando existe dependencia entre ellos (por ejemplo si se usa un contador del bucle 1 como valor inicial del bucle 2) se recomienda hacer el tratamiento como los anidados. NO ESTRUCTURADOS: se deben redisear para ajustarlo a los requisitos de la programacin estructurada.
63
64
Estrategias de Prueba.
La prueba es realmente una serie de cuatro pasos que se llevan a cabo secuencialmente. Inicialmente la prueba se centra en cada mdulo individual asegurando que funciona como una unidad, de ah el nombre de prueba de unidad (orientada a la caja blanca). A continuacin se debe ensamblar o integrar los mdulos para formar el paquete de software completo, la prueba de integracin se dirige a todos los aspectos asociados con el doble problema de verificar y de construccin del programa. Finalmente se deben comprobar los criterios de validacin (establecidos durante la fase de definicin), en la prueba de validacin se usa exclusivamente pruebas de caja negra. El software una vez validado, se debe combinar con otros elementos del sistema (hardware gente, bases de datos), la prueba el sistema verifica que cada elemento encaja de forma adecuada. Cualquier estrategia de prueba debe incorporar la planificacin de la prueba, el diseo de casos de prueba, la ejecucin de pruebas y la recoleccin y evaluacin de los datos resultantes. Se han propuesto varias estrategias, todas ellas proporcionan al ingeniero de software una plantilla para la prueba y todas tienen las siguientes caractersticas generales: Comienza en el mdulo y trabaja hacia fuera, hacia la integracin del sistema completo. La lleva acabo el que desarrolla el software y (para grandes proyectos) un grupo de prueba independiente. La prueba y la depuracin son actividades diferentes, pero la depuracin puede entrar en cualquier estrategia de prueba.
Prueba de Unidad.
La prueba de unidad centra el proceso de verificacin del funcionamiento correcto en la menor unidad de diseo del software, el mdulo. Usando la descripcin del diseo detallado la prueba de unidad siempre est orientada a la caja blanca. Se puede realizar en paralelo para mltiples mdulos. El diseo de casos de prueba comienza una vez que se ha desarrollado, revisado y verificado en su sintaxis el cdigo fuente. Debido a que el mdulo no es un programa independiente se debe desarrollar para cada prueba de unidad un software que conduzca y/o resguarde.
Casos de prueba Conductor Mdulo a ser probado Resultados
Resguardo 1
Resguardo 2
Resguardo n
En la mayora de los casos un conductor es un programa principal que acepta los datos de los casos de prueba pasndolos al mdulo que debe ser probado e imprime los resultados relevantes. Los resguardos sirven para reemplazar a los mdulos subordinados al que estamos probando (es decir llamado por l). Los resguardos y conductores son software adicional. Si se mantiene simple el trabajo extra ser pequeo. Desgraciadamente muchos mdulos requieren un gran soporte de este software adicional. La prueba de unidad se simplifica cuando hay un alto grado de cohesin, si un mdulo se dirige solo a una funcin se reduce el nmero de casos de prueba.
65
Prueba de Integracin.
La prueba de integracin es una tcnica sistemtica para construir la estructura del programa mientras que al mismo tiempo se llevan a cabo pruebas para detectar errores asociados con la interaccin. A menudo hay una tendencia a la integracin no incremental, a construir el programa de un paso, todos los mdulos se combinan por anticipado y se prueba todo el programa en conjunto, esto normalmente lleva al caos. La integracin incremental es la anttesis de la anterior. El programa se va construyendo y probando en pequeos segmentos. La integracin incremental puede ser ascendente, descendente o una mezcla de ambas. INTEGRACIN DESCENDENTE Es una aproximacin incremental a la construccin de la estructura de programas. Se integran los mdulos comenzando con el mdulo de control principal y se van incorporando a la estructura los subordinados de alguna de estas dos formas: primero en profundidad o primero en anchura.
M1
M2
M3
R4
M5
M6
R7
Este esquema muestra una integracin descendiente primero en profundidad. Ahora le toca incorporar el mdulo 7, quien al integrarse puede necesitar de otros resguardos.
M8
El proceso de integracin lleva a cabo una serie de cinco pasos: 1. Se usa el mdulo de control principal como conductor de la prueba, disponiendo resguardos para todos los directamente subordinados a l. 2. Dependiendo de la aproximacin de integracin elegida (profundidad o anchura) se van sustituyndolos resguardos subordinados uno a uno por los mdulos reales. 3. Se llevan a cabo pruebas cada vez que se integra un mdulo. 4. Al terminar estas pruebas, se reemplaza otro resguardo con el mdulo real. 5. Se hace la prueba de regresin (o sea, todas o algunas de las pruebas anteriores) para asegurarnos de no haber introducido nuevos errores. El proceso contina desde el paso 2 hasta que se ha construido el programa. La estrategia de integracin descendente verifica los puntos de decisin o de control principales ms pronto en el proceso de prueba ( en una estructura de programa bien diseada la toma de decisiones est en los niveles superiores). Si se selecciona la integracin primero en profundidad, se puede ir implementando y demostrando las funciones completas del software, ya que vamos agarrando cada rama (subfuncin) y la vamos desarrollando completamente. La demostracin anticipada de las posibilidades funcionales es un generador de confianza tanto para el encargado del desarrollo como para el cliente. INTEGRACIN ASCENDENTE Empieza la construccin y la prueba con los mdulos atmicos (o sea con los mdulos de los niveles ms bajos de la estructura). Dado que los mdulos se integran de abajo hacia arriba los mdulos subordinados ya estn integrados por lo tanto no se necesitan resguardos. La integracin ascendente se puede implementar siguiendo los pasos: 1. Se combinan los mdulos de bajo nivel en grupos que realicen una subfuncin especfica del software. 2. Se describe u conductor para coordinar la entrada y la salida de los casos de prueba. 3. Se prueba el grupo. 4. Se eliminan los conductores y se combinan los grupos movindose hacia arriba por la estructura del programa.
66
COMENTARIOS SOBRE LA PRUEBA DE INTEGRACIN La principal desventaja de la aproximacin descendente es la necesidad de resguardos y las dificultades de prueba que pueden estar asociadas con ello. Los problemas asociados con los resguardos pueden quedar desplazados por la ventaja de poder probar de antemano las principales funciones de control. La principal desventaja de la aproximacin ascendente es que el programa como entidad no existe hasta que se ha aadido el ltimo mdulo. Este inconveniente se soslaya con la mayor facilidad de diseo de casos de prueba y con la falta de resguardos. En general el mejor compromiso puede ser una aproximacin combinada que use la descendente para los niveles superiores de la estructura del programa junto con la ascendente para los niveles subordinados. A medida que progrese la prueba de integracin, el encargado de la prueba debe identificar los mdulos crticos. Un mdulo crtico es aquel que tiene alguna de estas caractersticas: 1. Est dirigido a varios requerimientos. 2. Tiene un mayor nivel de control (alto en la carta de estructura). 3. Es complejo o propenso a errores. 4. Tiene requerimientos de rendimiento muy definidos. Los mdulos crticos deben ser probados lo antes posible adems las pruebas de regresin deben enfocarse sobre estos mdulos. DOCUMENTO DE ESPECIFICACIN DE LA PRUEBA DE INTEGRACIN 1. Alcance: resume las caractersticas que van a ser probadas. 2. Plan: describe la estrategia general para la integracin. a. Fases de prueba. b. Esquema. c. Software adicional. d. Entorno y recursos. 3. Procedimiento: se describe en forma detallada el procedimiento de prueba requerido para llevar a cabo el plan descrito anteriormente. a. Descripcin fase n: 1) Orden de integracin. 2) Propsito y mdulos a ser probados. 3) Herramientas o tcnicas especiales. 4) Descripcin de software adicional. 5) Datos de los casos de prueba. b. Resultados esperados. 4. Resultados Obtenidos. 5. Referencias. 6. Apndices.
67
Prueba de Validacin.
Tras la culminacin de la prueba de integracin, el software est completamente ensamblado como un paquete. La validacin se logra cuando el software funcione de acuerdo con las expectativas razonables del cliente. Las expectativas razonables estn definidas en la Especificacin de requerimientos del software. CRITERIOS PARA LA PRUEBA DE VALIDACIN: La validacin se consigue mediante una serie de pruebas de caja negra que demuestran la conformidad con los requerimientos. Se intenta asegurar que: Se satisfacen todos los requerimientos funcionales. Se alcanzan todos los requerimientos de rendimiento. La documentacin es correcta e inteligible. Se alcanzan otros requerimientos (portabilidad, compatibilidad, recuperacin de errores, facilidad de mantenimiento). Como resultado de la prueba de validacin puede descubrirse que existe una desviacin de las especificaciones y se crea una lista de deficiencias. Raramente estas desviaciones se pueden corregir antes de terminar el plan, a menudo es necesario negociar con el cliente un mtodo para resolver la deficiencia. PRUEBAS ALFA Y BETA: La mayora de los desarrolladores de software llevan a cabo un proceso denominado prueba alfa y beta para descubrir errores que slo el usuario final puede descubrir (se debe a que nosotros no podemos predecir cmo el cliente usar realmente el sistema). La prueba alfa es conducida por el cliente en el lugar de desarrollo. Se usa el software de forma natural, con el encargado del desarrollo supervisando al usuario y registrando errores y problemas de uso. Las pruebas alfa se llevan a cabo en un entorno controlado. La prueba beta se lleva a cabo en uno o ms lugares de clientes por los usuarios finales del software. A diferencia de la prueba alfa, el encargado del desarrollo no est presente. El cliente registra todos los problemas (reales o imaginarios) que encuentra durante la prueba beta e informa a intervalos regulares al equipo de desarrollo.
68
Depuracin.
La depuracin aparece como una consecuencia de una prueba efectiva. O sea, cuando un caso de prueba descubre un error, la depuracin es el proceso que resulta en la eliminacin del error. Lo difcil es encontrar la causa de ese error, para lo cual puede ser necesario volver a realizar otras pruebas. Una vez encontrada la causa se hacen correcciones para eliminar ese error. El proceso de depuracin comienza con la ejecucin de un caso de prueba, se evalan los resultados y s aparece una falta de correspondencia entre los esperados y los reales estamos ante la presencia de un sntoma de error. En el proceso de depuracin pueden pasar dos cosas: se encuentra la causa, se corrige y se elimina; o no se encuentra la causa, en este caso la persona que realiza la depuracin debe sospechar las causas, disear un nuevo caso de prueba que ayude a validar sus sospechas y se realizan nuevas pruebas. Varias caractersticas de los errores hacen que la depuracin se difcil: El sntoma y la causa pueden ser geogrficamente remotos entre s. El sntoma puede desaparecer (temporalmente) al corregir otros errores. El sntoma puede estar causado por un error humano difcil de descubrir. El sntoma puede aparecer de forma intermitente. CONSIDERACIONES PSICOLGICAS: Desgraciadamente todo parece indicar que la habilidad en la depuracin es un rasgo innato del ser humano. Se han detectado grandes variaciones en la destreza para la depuracin de distintos programadores con el mismo bagaje educativo y experimental. ENFOQUES DE LA DEPURACIN: En general existen tres enfoques: FUERZA BRUTA: la ms comn y menos eficiente, se hacen volcados de memoria y se escriben sentencias write por todo el programa. Confiamos en que en algn lugar de la gran cantidad de informacin generada encontraremos alguna pista que nos lleve a la causa del error. VUELTA ATRS: se puede usar con xito para pequeos programas. Partiendo del lugar donde se descubre el sntoma, se recorre hacia atrs (manualmente) el cdigo fuente hasta que se llega a la posicin del error. ELIMINACIN DE LA CAUSA: los datos relacionados con la ocurrencia del error son organizados para las posibles causas. Se llega a una hiptesis de causas y se usan los datos anteriores para probar o revocar la hiptesis.
69
UNIDAD N 8: Mantenimiento.
El software no trivial se debe mantener. El reconocimiento de este hecho es el primer paso hacia la disminucin de peso de una tarea que constituye del 50% al 70% del presupuesto de muchas grandes empresas de software. La fase de mantenimiento comienza antes de la distribucin del software y contina a lo largo de su vida til. Durante esta etapa se corrigen errores, se hacen adaptaciones y se implementan mejoras. Despus de la fase de desarrollo, se realiza una revisin de la configuracin para asegurar que toda la documentacin est disponible y es la adecuada para las tareas de mantenimiento a seguir, se establece una organizacin para el mantenimiento y se define un esquema para las modificaciones del sistema y los errores. Las tareas relacionadas con el mantenimiento del software dependen del tipo de mantenimiento a realizar. En todos los casos el mantenimiento del software incluye la configuracin entera (o sea, todos los documentos desarrollados en las fases de planificacin y desarrollo), y no solo el cdigo.
Tareas de mantenimiento.
ORGANIZACIN DEL MANTENIMIENTO: Raramente existe una organizacin formal, de modo que el mantenimiento se lleva a cabo como se puede. Un esquema de organizacin puede ser este.
FPM Peticin de mantenimiento FPM Controlador del mantenimiento Supervisor del sistema ICS
Equipo de mantenimiento
Las peticiones del mantenimiento se dirigen hacia un controlador del mantenimiento que remite cada peticin a un supervisor del sistema para que la evale. Una vez evaluado el controlador de mantenimiento debe determinar las acciones a realizar y las dirige al equipo de mantenimiento. La peticin de mantenimiento debe estar estandarizada. Normalmente el equipo de desarrollo genera un formulario de peticin de mantenimiento (FMP) que ha de rellenar el usuario que requiere mantenimiento, de la siguiente manera: Para peticiones de mantenimiento correctivo (por error) el FMP debe incluir una completa descripcin de las circunstancias que llevaron al error incluyendo datos de E/S. Para peticiones de mantenimiento perfectivo o ampliativo una breve descripcin de los cambios (especificacin de requerimientos abreviada). El FMP es un documento generado exteriormente, internamente la organizacin de desarrollo genera un informe de cambios del software (ICS) indicando: Esfuerzo requerido para los cambios. Naturaleza de las modificaciones. Prioridad de la peticin. Otros datos sobre las modificaciones. FLUJO DE SUCESOS: Se tratan de manera distinta los distintos tipos de mantenimientos. Una vez llegada la peticin de mantenimiento se evala al tipo. Si es por un error hay que evaluarlo de inmediato y determinar si es crtico o no, si es crtico hay que actuar de inmediato, sino se caracteriza por prioridad y se coloca en la cola de prioridades. Si el pedido es una mejora se evala, puesto que esta puede ser rechazada, si no lo es se caracteriza y coloca en la cola de prioridades.
70
Ciclo de mantenimiento.
ANLISIS: comprender el alcance y efecto de la modificacin y las restricciones. DISEO: redisear para incorporar los cambios. IMPLEMENTACIN: recodificacin, actualizacin de la documentacin interna del cdigo. ACTUALIZAR DOCUMENTACIN DE APOYO. DISTRIBUIR E INSTALAR LAS VERSIONES NUEVAS.
71
Facilidad de Mantenimiento.
La facilidad de mantenimiento se puede definir como la facilidad para comprender, corregir, adaptar y/o mejorar el software. En cada paso de la ingeniera del software se puede trabajar en miras a la facilidad del mantenimiento. En el anlisis: Sealar principios generales. Identificar posibles mejoras. Estimar recursos para mantenimiento (interno o externo). Especificar controles de calidad. Diseo arquitectnico: Claro. Modular. Fcil de modificar. Notacin estndar. Diseo detallado: Notacin para algoritmos, estructuras de datos e interfaces estndar. Especificar efectos colaterales. Especificar manejo de excepciones. Implementacin: Estructurar una entrada y una salida. Identacin. Comentarios. Codificacin simple y clara. Pruebas: Anotaciones sobre las partes del programa que puedan necesitar mantenimiento preventivo.
72
UNIDAD N 9: Calidad
Calidad de un producto o servicio es el conjunto de caractersticas que le confieren la capacidad de satisfacer las necesidades explcitas e implcitas del cliente (Definicin ISO). En el desarrollo de software se pueden encontrar dos tipos de calidad: Calidad de Diseo: Se refiere a las caractersticas que acompaan a los requisitos, las especificaciones y al diseo de sistema. El grado de materiales, tolerancias, y especificaciones de rendimiento, todos contribuyen a la calidad de diseo. Cuando se utilizan materiales de alto grado y se especifican tolerancias ms estrictas y niveles ms altos de rendimiento, la calidad de diseo de un producto aumenta, si el producto se fabrica de acuerdo con las especificaciones, pues usar el mejor material, el mejor equipo, absolutamente cero defectos, libre de errores, pero que no satisfaga las necesidades del cliente no se considera de alta calidad. Calidad de Concordancia: Es el grado de cumplimiento de las especificaciones de diseo durante su realizacin. Est centrado principalmente en la implementacin, si la implementacin sigue el diseo y el sistema resultante cumple los objetivos de requisitos y rendimiento, la calidad de concordancia es alta. Factores que determinan la calidad del software: Operacin del sistema: Correccin Fiabilidad Eficiencia Integridad Facilidad de uso Modificacin y revisin: Mantenimiento Flexibilidad Prueba Adaptacin: Probabilidad Rentabilidad Interaccin con otro sistema
Calidad Total
La Gestin Total de Calidad es un enfoque sistemtico de la eliminacin de las causas raz de defectos en productos, que se compone de cuatro pasos: 1. El primer paso se refiere a un sistema de mejora continua del proceso (Calidad Total). El objetivo es desarrollar un proceso que sea visible, repetible y medible (mensurable). 2. El segundo paso, invocado una vez que se ha alcanzado el primer paso, examina lo intangible que afecta al proceso y trabaja para optimizar su impacto en el proceso. El proceso de software se puede ver afectado por cambios reorganizativos (por ejemplo, cambios de turno). Puede ser que una estructura organizativa estable sea importante para mejorar la calidad del software. 3. El tercer paso se centra en el usuario del producto, en esencia, examinando la forma que el usuario aplica el producto. Esto conduce a la mejora en el producto mismo. 4. El cuarto paso est orientado a buscar la oportunidad en reas relacionadas, observando la utilizacin del producto en el mercado. Se puede ver como un intento de detectar productos nuevos y beneficiosos.
Control de Calidad
El Control de Calidad es una serie de inspecciones, revisiones y pruebas utilizados a lo largo del ciclo de desarrollo para asegurar que cada producto cumple con los requisitos que le han sido asignado, es decir, que los productos sean de calidad aceptable y cumplan con los criterios de completitud y correctitud establecidos.
Garanta de Calidad
El objetivo de la Garanta de Calidad es proporcionar los datos necesarios sobre la calidad del producto, y asegurar que la calidad de producto est cumpliendo los objetivos.
73
74
El Plan SQA
El Plan SQA describe las actividades de SQA para cada proyecto de software. En las secciones iniciales se describe el propsito y el alcance del documento e indican que actividades del proceso del software son abarcadas por la garanta de calidad. Se listan todos los documentos sealados en el Plan de SQA y se destacan todos los estndares aplicables. La seccin de gestin del plan describe la situacin de la SQA dentro de la estructura organizativa; las tareas y actividades de SQA y su emplazamiento a lo largo del proceso del software; y los papeles y responsabilidades organizativas relativas a la calidad del producto. La seccin de documentacin hace referencia cada uno de los productos de trabajo producidos como parte del proceso de software. Entre estos se incluyen: Documentos del Proyecto (por ejemplo, plan del proyecto) Modelos (por ejemplo, DERs, jerarquas de clases) Documentos Tcnicos (por ejemplo, especificaciones, planes de prueba) Documentos de Usuario (por ejemplo, archivos de ayuda) La seccin de estndares, prcticas y convenciones lista todos los estndares y prcticas que se aplican durante el proceso de software, por ejemplo estndares de documentos, estndares de comunicacin y directrices de revisin. Adems se listan todos los proyectos, procesos, y en algunos casos mtricas de productos, que se obtienen del proceso de ingeniera de software. La seccin de revisiones y auditorias del plan identifica las revisiones y auditorias que se van a llevar a cabo por el equipo de ingeniera de software, el grupo de SQA y el cliente. La seccin prueba hace referencia al plan y procedimientos de pruebas del software. Tambin define requisitos de mantenimiento de registros de prueba. La seccin de informacin sobre problemas y accin correctora define procedimientos para informar, hacer seguimientos y resolver errores y defectos, e identifica las responsabilidades organizativas para stas actividades. El resto del plan de SQA identifica las herramientas y mtodos que soportan actividades y tareas de SQA; hace referencia a los procedimientos de gestin de configuracin de software para controlar el cambio, define un enfoque de gestin de contratos; establece mtodos para reunir, salvaguardar y mantener todos los registros; se detallan los mtodos para identificar, evaluar, supervisar y controlar riesgos. Revisiones: PFR: Factibilidad del Producto. SRR: Requisitos del Software. PDR: Diseo Preliminar. CDR: Diseo Crtico. ATR: Prueba de Aceptacin. PRR: Revisin Final. Ventajas del SQA: Software con menos defectos. Mayor fiabilidad. Menor costo de mantenimiento. Costo total del ciclo disminuye. Problemas del SQA: Difcil en organizaciones pequeas. Representa cambios. Requiere gastos.
75
76
Estndares de Calidad
Un sistema de garanta de calidad se puede definir como la estructura organizativa, responsabilidades, procedimientos, procesos y recursos para implementar gestin de calidad. CMM En 1987 Watts Humphrey idea un Modelo de Maduracin de las Organizaciones por Niveles (Managing the Software Process). Es un modelo de calidad basado en el control estadstico de la calidad del proceso de desarrollo de software, desarrollado por el Software Engineering Institute (SEI) de la Universidad de Carnegie & Mellon. Este modelo de calidad se basa en un conjunto de funciones de Ingeniera de Software que deberan estar presentes conforme las organizaciones alcanzan diferentes niveles de madurez del proceso. Para determinar el estado actual de madurez del proceso se utiliza un cuestionario de evaluacin y un esquema de 5 grados, que determina la conformidad con el Modelo de Capacidad de Madurez (CMM)
Los cinco niveles definidos se obtienen como consecuencia de evaluar las respuestas del cuestionario de evaluacin basado en el CMM. Los resultados del cuestionario se filtran en un nico grado numrico que proporciona una indicacin de la madurez del proceso de una organizacin. Los cinco niveles que considera el CMM son: Nivel 1: Informal Proceso catico. No existen formalismos en los procedimientos, ni en la estimacin de costos, ni en la planificacin. La Gerencia no comprende los aspectos clave. Desafos Clave: o Gerenciamiento de proyectos. o Planificacin de Proyectos. o Aseguramiento de Calidad del Software. o Administracin de Configuraciones.
77
Nivel 2: Repetible Proceso centrado en el individuo. El proceso depende de los individuos. Dominio del proceso slo en proyectos similares. Ausencia de una estructura ordenada para el mejoramiento. Desafos Clave: o Capacitacin. o Actividades Tcnicas: Revisiones y Testing. o Focalizacin en el Proceso: Estndares y Grupos de Proceso. Nivel 3: Definido Proceso con metodologas comunes. Las mejoras son administradas por el grupo de proceso. Desafos Clave: o Procesos de anlisis y de mediciones. o Planes de calidad. Nivel 4: Gerenciado Proceso medido. Base de datos del proceso, para anlisis. Desafos Clave: o Cambios de tecnologas. o Prevencin de problemas Nivel 5: Optimizado Fuerte utilizacin de las mediciones para: Identificar elementos dbiles del proceso. Justificar cambios de tecnologa. Prevencin de defectos. Realimentar el proceso de mejoras. Desafos Clave: o Suavidad en la gestin del proceso. o Mantenimiento del nivel ptimo. En cada nivel del modelo se busca desarrollar en la organizacin las siguientes reas clave de resultados: Nivel 1: Inicial Compromiso con la calidad Nivel 2: Repetible Planeacin de Proyectos de Software Seguimiento del Proyecto de Software Administracin de Requerimientos Administracin de la Configuracin del Software Aseguramiento de la Calidad del Software Administracin de Subcontratos de Software Nivel 3: Definido Enfocamiento en el Proceso de la Organizacin Definicin del Proceso de la Organizacin Programa de Entrenamiento Administracin del Software Integrado Ingeniera de Producto de Software Coordinacin Intergrupal Revisiones entre Pares Nivel 4: Administrado Administracin Cuantitativa del Proceso Administracin de la Calidad del Software Nivel 5: Optimizado Prevencin de Defectos Administracin del Cambio Tecnolgico Administracin del Cambio del Proceso
78
ISO 9000 Para identificarse con uno de los modelos de sistema de garanta de calidad de ISO 9000, el sistema de calidad y las operaciones de una compaa son examinados minuciosamente por unos auditores externos para ajustarlo a los estndares y a la operacin efectiva. Despus de un registro correcto, la compaa recibe un certificado avalado por los auditores. Las auditorias de seguimiento cada 6 meses aseguran el ajuste continuado a los estndares. El enfoque de ISO en sistemas de garanta de calidad Los modelos de garanta de calidad ISO 9000 tratan la empresa como una red de procesos interconectados. Para que un sistema de calidad se ajuste a ISO, estos procesos deben afrontar reas identificadas en el estndar y se deben documentar y practicar como se ha descrito. Documentar un proceso ayuda a que una organizacin lo entienda, controle y mejore. ISO 9000 describe en trminos generales, los elementos de un sistema de garanta de calidad. Estos elementos incluyen la estructura organizativa, procedimientos, procesos y recursos necesarios para implementar la planificacin de la calidad, el control de la calidad, la garanta de calidad y la mejora de calidad. Sin embargo, ISO 9000 no describe como debera implementar una organizacin stos elementos del sistema de calidad. Por consiguiente, el reto se encuentra en disear e implementar un sistema de garanta de calidad que cumpla los estndares y acople los productos, servicios y cultura de la compaa. El estndar ISO 9001 ISO 9001 es el estndar de garanta de calidad que se aplica a la ingeniera del software. El estndar contiene 20 requisitos que deben estar presentes en un sistema de garanta de calidad efectiva. Como el estndar ISO 9001 es aplicable a todas las disciplinas de la ingeniera de software, se ha desarrollado un conjunto especial de directrices ISO (ISO 9000-3) para ayudar a interpretar el estndar para su uso en el proceso de software. Para que una organizacin de software se registre como ISO 9001, debe establecer normas y procedimientos que afronten los requisitos sealados a continuacin y que puedan demostrar que se estn cumpliendo: 1. Responsabilidad de la gestin 2. Sistemas de calidad 3. Revisin de contratos 4. Control de diseo 5. Control de datos y documentos 6. Compras 7. Control del producto suministrado por el cliente 8. Identificacin y posibilidad de seguimiento del producto 9. Control del proceso 10. Inspeccin y prueba 11. Control de inspeccin, medicin y equipo de pruebas 12. Inspeccin y estado de prueba 13. Control de producto no aceptado 14. Accin correctora y preventiva 15. Tratamiento, almacenamiento, empaquetamiento, preservacin y entrega 16. Control de registros de calidad 17. Auditorias internas de calidad 18. Formacin 19. Servicios 20. Tcnicas estadsticas
79
Una comparacin entre CMM e ISO 9001 El modelo de Capacidad y Madurez para Software (CMM) desarrollado por el Instituto para la Ingeniera de Software (SEI) y la serie de estndares ISO 9000, desarrollados por la Organizacin Internacional de Estndares, comparten su preocupacin por la calidad y la administracin del proceso. Ambos son impulsados por preocupaciones similares y estn intuitivamente correlacionados. El estndar especfico de la serie ISO 9000 concerniente a las organizaciones de software es ISO 9001. Algunas preguntas frecuentes sobre la relacin entre ISO 9001 y CMM son: A qu nivel del CMM puede considerar s e que una organizacin acata el ISO 9001? Puede una organizacin nivel 2 3 considerar s e conforme a ISO 9001? Deben basarse mis esfuerzos de administracin de calidad y mejor a de procesos en ISO 9001 o en CMM? El propsito de este trabajo es comparar el CMM con ISO 9001, identificar sus diferencias y similitudes, y responder esas preguntas. Administracin de la Responsabilidad ISO 9001 requiere que la poltica de calidad sea definida, documentada, entendida, implementada y mantenida; esas responsabilidades y las autoridades para toda la especificacin del personal para lograr y monitorear la calidad son definidas ; y los recursos internos par a verificacin son definidos y entrenados. Un administrador es designado par a asegurar que el programa de calidad es implementado y mantenido. En CMM, la administracin de responsabilidad para la poltica de calidad y las actividades de verificacin son dirigidas en principio por el Aseguramiento de Calidad de Software, aunque la Planeacin de Proyectos de Software y el Seguimiento y Vigilancia de Proyectos de Software tambin incluyen actividades que identifican responsabilidades. La administracin de responsabilidad, tanto en la alta direccin como a nivel de la administracin de proyectos, est contemplada por la Verificacin de la Implementacin. Ms genricamente, los asuntos de liderazgo son tratados por el aspecto de Compromiso con el Cumplimiento, y la estructura organizacional y asuntos de recursos son tratados en el aspecto de Capacidad para el Cumplimiento. Es posible argumentar que la poltica de calidad descrita por la Administracin de Calidad de Software en el nivel 4 es tambin tratada por esta clusula, pero en el nivel 4 la poltica de calidad es cuantitativa. ISO 9001 es algo ambiguo en la medicin del sistema de administracin de calidad. Sistema de Calidad ISO 9001 requiere que se documente el sistema de calidad, incluyendo procedimientos e instrucciones. ISO 9000-3 caracteriza el sistema de calidad como un proceso integrado a travs de todo el ciclo de desarrollo. Las actividades del sistema de calidad son tratadas por CMM, en principio, por el Aseguramiento de Calidad de Software. Los procedimientos que deben ser usados se distribuyen a lo largo de varias reas claves de proceso (KPA). Los procedimientos especficos y estndares que un proyecto de software deben usar son especificados en el Plan de Desarrollo de Software descrito por la Planeacin de Proyectos de Software. La conformidad con esos estndares y procedimientos es asegurada por el Aseguramiento de Calidad de Software y por las prcticas de auditoria dadas por la Verificacin de la Implementacin. La Ingeniera de Producto de Software requiere que s e definan las tareas de Ingeniera de Software, se integren y ejecuten consistentemente. Es posible argumentar correspondencia con la Definicin de Procesos Organizacionales, que describe estndares, procedimientos y descripciones de procesos a nivel Organizacional. Ciertamente contribuye a lograr esta clusula, pero los estndares y procedimientos pueden tratar s e a nivel de proyecto. ISO 9001 discute el sistema de calidad del proveedor, pero no discute la relacin entre el soporte organizacional y la implementacin del proyecto como lo hace el CMM. Revisin de Contratos ISO 9001 requiere que los contratos se revisen para determinar s i los requerimientos son adecuadamente definidos, estn de acuerdo con la oferta y si pueden ser implementados. La revisin de requerimientos del cliente se describe por CMM en la Administracin de Requerimientos. La organizacin de Software (proveedor) asegura que los requerimientos del sistema asignados al Software son documentados y revisados, y que los requerimientos faltantes o ambiguos son aclarados. Dado que CMM se restringe a la perspectiva del Software, los requerimientos del cliente como un todo estn ms all del alcance de esta KPA. La Planeacin de Proyectos de Software describe el desarrollo de una propuesta, una declaracin de trabajo y un plan de desarrollo de software. El CMM tambin especifica explcitamente la adquisicin de software a travs de subcontratacin de organizaciones de software, tal y como s e describe en la Administracin de Subcontratacin de Software. Los contratos pueden ser con un cliente o un subcontratista, esa distincin no se hace explcitamente en ISO 9001.
80
Control del Diseo ISO 9001 requiere que los procedimientos de control y verificacin del diseo se establezcan. Esto incluye planeacin de actividades de diseo, identificar entradas y salidas, verificar el diseo y controlar cambios al diseo. ISO 9000-3 elabora esta clusula basndose en los requerimientos del cliente, planeacin del desarrollo, planeacin de calidad, diseo e implementacin, pruebas y validacin, y administracin de la configuracin. En CMM, las actividades del ciclo de desarrollo de anlisis de requerimientos, diseo, codificacin y pruebas se describen por la Ingeniera de Producto de Software. La planeacin de estas actividades se describe en la Planeacin de Proyectos de Software. El seguimiento y Vigilancia del Proyecto describe el control de ese ciclo de desarrollo, y la Administracin de la Configuracin de Software describe la administracin de la configuracin de los productos de software generados por esas actividades. ISO 9001 requiere de mediciones para el control del diseo. Establece que el proveedor debe llevar a cabo revisiones para asegurar que los requerimientos se cumplen y que los mtodos de diseo se llevan a cabo correctamente. ISO 9001 permite flexibilidad en los controles especficos que se usan. En contraste, CMM implica un mecanismo especfico de control de calidad: las "peer reviews", que dan sopor te a los procesos a travs del ciclo de desarrollo, desde el anlisis de requerimientos hasta las pruebas. Control de Documentos ISO 9001 requiere que los productos adquiridos sean conformes a sus requerimientos especficos. Esto incluye la estimacin de subcontratistas potenciales y verificacin de productos adquiridos. En CMM, esto es abordado por la Administracin de Subcontratacin de Software. Identificacin y Rastreo del Producto ISO 9001 requiere que el producto sea identificable y rastreable durante todas las fases de produccin, entrega e instalacin. El CMM cubre esta clusula primeramente en la Administracin de Configuracin de Software, pero la Ingeniera de Productos de Software establece necesidades especficas de consistencia y rastreabilidad entre los trabajos de produccin de software. Inspeccin y Pruebas ISO 9001 requiere que los materiales entrantes sean inspeccionados y verificados antes de usar los y que se lleven a cabo inspecciones y pruebas dentro del proceso. Inspeccin final y pruebas son llevadas a cabo antes de liberar el producto terminado. Se guardan registros de las inspecciones y pruebas. Los asuntos concernientes a la inspeccin de materiales de entrada en CMM son tratados por la Ingeniera de Producto de Software. Las inspecciones dentro del proceso se llevan a cabo mediante las "peer reviews". Inspeccin, medicin y prueba de equipos ISO 9001 requiere que el equipo usado para demostrar conformidad debe ser controlado, calibrado y mantenido. Cuando se usa Hardware o Software de prueba, se checa antes de usar lo, y es revisado a intervalos prescritos. ISO 9000-3 aclara esta clusula con clusulas sobre validacin y pruebas, reglas, prcticas, convenciones, herramientas y tcnicas. Esta clusula es genricamente abordada en CMM bajo las prcticas de prueba en la Ingeniera de Productos de Software. Control de Productos no conformes ISO 9001 requiere el control de productos no conformes par a prevenir su uso o instalacin inadvertida. ISO 9000-3 mapea este concepto a clusulas de diseo e implementacin; pruebas y validacin; replicacin, entrega e instalacin; configuracin y administracin. La no conformidad del producto no est especficamente abordada por CMM. La administracin de la configuracin de software aborda el estatus de los artculos que contengan defectos conocidos an no arreglados. Acciones Correctivas ISO 9001 requiere que las causas de no conformidad de los productos se identifiquen. Las causas potenciales de no conformidad son eliminadas; los procesos cambian como resultado de las acciones correctivas. Una lectura literal de esta clusula implica muchas prcticas de Prevencin de Defectos. Est clusula es conducida por las quejas de los clientes.
81
Manejo, Almacenamiento, Empaque y Entrega ISO 9001 requiere que los procedimientos de manejo, almacenamiento, empaque y entrega sean establecidos y mantenidos. ISO 9000-3 mapea estas clusulas en aceptacin, replicacin, entrega e instalacin. Replicacin, entrega e instalacin no son cubiertos por el CMM. Las pruebas de aceptacin se tratan en la Ingeniera de Productos de Software y el la Administracin de Configuracin de Software. Entrega e instalacin del producto, de cualquier manera, no estn descritos en CMM. Registros de Calidad ISO 9001 requiere que se recolecten y mantengan registros de calidad. Las prcticas que definen los registros de calidad son distribuidas en CMM a travs de muchas actividades. Especficamente pertinentes a esta clusula son las pruebas y "peer reviews" en la Ingeniera de Producto de Software. Auditorias de Calidad Internas ISO 9001 requiere que las auditorias sean planeadas y ejecutadas. El resultado de las auditorias se comunica a la administracin, y las deficiencias encontradas se corrigen. El proceso de auditoria es descrito por el Aseguramiento de Calidad de Software. Las auditorias especficas en CMM se encuentran en las prcticas de auditoria en la Verificacin de la Implementacin. Entrenamiento ISO 9001 requiere que las necesidades de entrenamiento se identifiquen y que el entrenamiento se lleve a cabo, dado que ciertas tareas requieren de personal calificado. Registros del entrenamiento son mantenidos. Las necesidades especficas de entrenamiento en CMM son identificadas en las prcticas de orientacin y entrenamiento que se encuentran en la Capacidad para Ejecucin. La infraestructura general de entrenamiento se describe en el Programa de Entrenamiento. Servicio ISO 9001 requiere que las actividades de ser vicio se ejecuten tal y como se especificaron. ISO 9000-3 aborda esta clusula como mantenimiento. Aunque CMM est pensado para ser aplicado en ambientes tanto de desarrollo como de mantenimiento de Software, las prcticas en CMM no estn directamente relacionadas con loas aspectos nicos que caracterizan el ambiente de mantenimiento. El mantenimiento est embebido a travs de las prcticas del CMM, y deben ser apropiadamente interpretadas en los contextos de desarrollo o mantenimiento. Tcnicas Estadsticas ISO 9001 establece que, cuando sea posible, se deben identificar y usar tcnicas estadsticas adecuadas para verificar qu tan aceptable es la capacidad del proceso y las caractersticas del producto. ISO 9000-3 simplemente caracteriza esta clusula como mediciones. Las prcticas que describen las mediciones en CMM se distribuyen a travs de varias KPA. Las mediciones del producto son tpicamente incorporadas a las prcticas de Actividades Ejecutadas, y las mediciones del proceso son descritas por la Medicin y Anlisis. La definicin de procesos organizacionales describe que el establecimiento de una base de datos que contenga datos de productos y del proceso.
82
Contrastando ISO 9001 y CMM La mayor diferencia entre estos documentos es el nfasis que pone CMM en la mejor a continua del proceso. ISO 9001 establece los criterios mnimos par a un sistema de calidad aceptable. Debe notar se que CMM se enfoca estrictamente en Software, mientras que ISO 9001 tiene un alcance mucho mayor: hardware, software, materiales procesados y servicios. La mayor similitud es que tanto CMM como ISO 9001, en ltima instancia, se fundamentan en Di lo que haces, has lo que dices. La premisa fundamental de ISO 9001 es que cada proceso importante debe ser documentado y cada producto ser probado por medio de una actividad de control de calidad. ISO 9001 requiere que la documentacin contenga instrucciones de qu se debe hacer y cmo se debe hacer. CMM comparte este nfasis en los procesos que son documentados y prcticas que se ejecutan tal y como se documentaron. Una comparacin preliminar de los conceptos de ISO 9001 y CMM podra sugerir que una organizacin certificada en ISO 9001 se encontrara en un nivel de madurez 3 4. En realidad, hay organizaciones de nivel 1 certificadas. Una razn es la variabilidad de la interpretacin. Dado el alto nivel de abstraccin en ISO 9001, es poco claro qu grado de sofisticacin es requerido por una auditoria. El lograr el nivel 2 implica dominar las KPA del nivel 2. Estas KPA de nivel 2 estn fuertemente relacionadas con ISO 9001, por lo tanto, una organizacin que obtiene y mantiene una certificacin ISO 9001 debera estar cerca del nivel 2. Aunque hay asuntos especficos que no se tratan adecuadamente en CMM, en general se puede decir que los requerimientos de ISO 9001 estn contemplados por el CMM. Es cierto que sujetar se a CMM puede ayudar a una organizacin a preparar se para una auditoria de ISO 9001. Aunque ambos enfoques pueden usarse para estructurar un programa de mejora de procesos, la gua ms detallada y la mayor profundidad par a las organizaciones de software dada por CMM sugiere que es la mejor opcin.
83
La mayor parte de las herramientas CASE que se utilizan en la actualidad no han sido construas empleando los bloques de construccin CASE. Algunas herramientas CASE siguen siendo soluciones puntuales que prestan apoyo a una actividad concreta (como por ejemplo: anlisis y modelado), las cuales no se comunican directamente con otras; no estn unidas a una Base de Datos de Proyecto y no forma parte de un entorno integrado ( I-CASE ).
84
Herramientas CASE
Las herramientas CASE se pueden clasificar: por su funcin, por su papel como instrumentos para administradores o personal tcnicos, por su utilizacin en los distintos pasos del proceso de ingeniera de software, por la arquitectura de entorno (hardware y software) que les presta su apoyo, o incluso por su origen o su costo. La clasificacin siguiente utiliza como criterio principal la funcin. 1. -Herramientas de Ingeniera de la Informacin Al modelar los requisitos de informacin estratgica de una organizacin, las herramientas de la ingeniera de la informacin proporcionan un metamodelo del cual se derivan sistemas de informacin especficos. 2. -Modelado de Procesos y Herramientas de Administracin Se utilizan para representar los elementos claves del proceso de modo que sea posible entenderlo mejor. Tambin se denominan herramientas de tecnologa de proceso. 3. -Herramientas de Planificacin de Proyecto Las herramientas de sta categora se concentran en dos reas primordiales: estimacin de esfuerzo de proceso y de coste de software, y planificacin de proyecto. Las herramientas de estimacin calculan el esfuerzo estimado, la duracin del proyecto y el nmero recomendado de personas empleando una o ms tcnicas de descomposicin. Las herramientas de planificacin de proyectos capacitan al administrador para definir todas las tareas del proyecto, para crear una red de tareas, para representar las interdependencias entre tareas y para modelar la cantidad de paralelismo que sea posible para ese proyecto. 4. -Herramientas de Anlisis de Riesgo Capacitan al administrador del proyecto para construir una tabla de riesgos, proporcionando una gua detalladas en la identificacin y anlisis de riesgos. 5. -Herramientas de Administracin de Proyectos Se utilizan para realizar un seguimiento y monitorizacin de forma continua de la planificacin del proyecto y el plan del proyecto. 6. -Herramientas de Seguimientos de Requisitos El objetivo es proporcionar un enfoque sistemtico para el aislamiento de requisitos en el desarrollo de grandes sistemas. 7. -Herramientas de Mtricas y Gestin Las herramientas orientadas a la administracin capturan mtricas especficas del proyecto (por ejemplo, LDC/persona/mes, defectos por puntos de funcin) que proporcionan una indicacin global de productividad o de calidad. 8. -Herramientas de Documentacin Son herramientas de produccin de documentos y de autoedicin. 9.Herramientas de Software de Sistema CASE es una tecnologa de estaciones de trabajo. Por tanto, el entorno CASE debe adaptarse a un software de sistema en red de alta calidad, al correo electrnico, a los boletines electrnicos y a otras capacidades de comunicacin. 10.Herramientas de Control de Calidad Son herramientas mtricas que hacen una auditoria del cdigo fuente para determinar si se ajusta o no a ciertos estndares del lenguaje. 11.Herramientas de Gestin de Base de Datos Mantienen la base de datos del proyecto.
La Gestin de Configuracin de Software (GCS) se encuentra en el ncleo de todos los entornos CASE. Las herramientas pueden ofrecer su asistencia en las 5 tareas principales de GCS: identificacin, control de versiones, control de cambios, auditoria y contabilidad de estados. 13.-Herramientas de Anlisis y Diseo Capacitan al ingeniero de software para crear modelos del sistema. Los modelos contienen una representacin de los datos, de la funcin y del comportamiento (en el nivel de anlisis), as como caracterizaciones del diseo de datos, arquitectura, procedimientos e interfaz. 14.-Herramientas PRO/SIM Son herramientas de prototipos y simulacin, proporcionan la capacidad de predecir el comportamiento de un sistema en tiempo real antes de llegar a contruirlo. 15.-Herramientas de Desarrollo y Diseo de Interfaz Son herramientas de generacin de prototipos de interfaz que permiten una rpida creacin en pantalla de sofisticadas interfaces de usuarios. 16.-Herramientas de Generacin de Prototipos Permiten la creacin de un diseo de datos, acoplado con las disposiciones de la pantalla y de los informes simultneamente. 17.-Herramientas de Programacin La categora de herramientas de programacin abarca los compiladores, editores y depuradores que estn disponibles para prestar su apoyo en la mayora de los lenguajes de programacin convencionales. Adems, los entornos de programacin orientados a objetos, los lenguajes de cuarta generacin, los entornos de programacin grfica, los generadores de aplicaciones y los lenguajes de consulta de base de datos residen tambin en esta categora. 18.-Herramientas de Integracin y Comprobacin de Software Existen las siguientes categoras de herramientas de integracin y comprobacin: Adquisicin de datos: herramientas que adquieren datos que se utilizarn durante la comprobacin. Medida esttica: herramientas que analizan el cdigo fuente sin ejecutar casos de prueba. Medida dinmica: herramientas que analizan el cdigo fuente durante la ejecucin. Simulacin: herramientas que simulas las funciones del hardware o de otros elementos externos. Administracin de comprobaciones: herramientas que prestan su asistencia en la planificacin, desarrollo y control de las comprobaciones. Herramientas de funcionalidad cruzada: se trata de herramientas que cruzan los lmites de las categoras anteriores. 19.-Herramientas de Anlisis Esttico Prestan su asistencia al ingeniero de software a efectos de derivar casos de prueba. 20.-Herramientas de Depuracin Interactan con un programa que se est ejecutando (Debug). 21.-Herramientas de Comprobacin Cliente Servidor Realizan comprobaciones especializadas en las comunicaciones en red para el cliente y el servidor. 22.-Herramientas de Reingeniera Las herramientas de estas categoras se pueden subdividir en las funciones siguientes: Herramientas de ingeniera inversa para producir especificaciones. Herramientas de reestructuracin y anlisis de cdigo. Herramientas de reingeniera para sistemas en lnea.
86
87
88
Lneas Base Una lnea base es un concepto de gestin de configuracin del software que ayuda a controlar los cambios. Una lnea base se define como una especificacin o producto que se ha revisado formalmente y sobre los que se ha llegado a un acuerdo, y que de ah en adelante sirve como base para un desarrollo posterior y que puede cambiarse solamente a travs de procedimientos formales de control de cambios. Antes de que un ECS se convierta en una lnea base, los cambios sobre ese ECS se pueden llevar a cabo rpida e informalmente. Una vez que se establece una lnea base, se pueden llevar a cabo los cambios, pero se debe aplicar un procedimiento formal para evaluar y verificar cada cambio. En el contexto de la ingeniera de software, definimos una lnea base como un punto de referencia en el desarrollo del software que queda marcado por el envo de uno o ms elementos de configuracin de software y la aprobacin del ECS obtenido mediante una revisin tcnica formal. Aunque se pueden definir las lneas base con cualquier nivel de detalle, las lneas base ms comunes en la ingeniera de software son:
Los ECS producidos por la ingeniera del software se revisan y una vez aprobados se colocan en una base de datos de proyecto, y se convierten en una lnea base del proyecto. Cuando del equipo de ingeniera de software quiere hacer modificaciones en un ECS de lnea base puede hacerlo slo si se siguen los controles de GCS.
El Proceso de GCS
La responsabilidad principal del GCS es el control de cambios. Sin embargo, tambin es responsable de la identificacin de los ECS individuales y de las distintas versiones del software, de las auditorias de la configuracin del software y de la generacin de informes sobre todos los cambios realizados en la configuracin.
89
Control de Versiones
El control de versiones combina procedimientos y herramientas para gestionar las versiones de los objetos de configuracin creadas durante el proceso de ingeniera de software. La gestin de configuracin permite a un usuario especificar configuraciones alternativas del sistema de software mediante la seleccin de las versiones adecuadas. Esto se puede gestionar asociando atributos a cada versin del software y permitiendo luego especificar (y construir) una configuracin describiendo el conjunto de atributos deseado. Los atributos que se mencionan pueden ser tan sencillos como un nmero especfico de versin asociado a cada objeto o tan complejo como una cadena de variables lgicas (indicadores) que especifiquen tipos de cambios funcionales aplicados al sistema. Una representacin de las diferentes versiones de un sistema es el grafo de evolucin. Cada nodo del grafo es un nodo agregado, es decir, una versin completa del software. Cada versin del software es una coleccin de ECS y cada versin puede estar compuesta de diferentes variantes.
Control de Cambios
El control de cambios combina los procedimientos humanos y las herramientas automticas para proporcionar un mecanismo para el control del cambio. Se hace una peticin de cambio y se evala para calcular el esfuerzo tcnico, los posibles efectos secundarios, el impacto global sobre otras funciones del sistema y los costes estimados. Los resultados de la evaluacin se presentan como un informe de cambios a la autoridad de control de cambios (ACC). Un ACC es una persona o grupo que toma la decisin final del estado y la prioridad del cambio. Para cada cambio aprobado se genera una orden de cambio de ingeniera (OCI). La OCI describe el cambio a realizar, las restricciones que se deben respetar y los criterios de revisin y auditoria. El objeto a cambiar es dado de baja de la base de datos del proyecto; se realiza el cambio y se aplican las adecuadas actividades de SQA. Luego, el objeto es dado de alta en la base de datos y se usan los mecanismos de control de versin apropiados para crear la siguiente versin del software. Los procesos de alta y baja implementan dos elementos importantes del control de cambio: Control de Acceso: Gobierna el derecho de los ingenieros del software a acceder y modificar objetos de configuracin concretos. Control de Sincronizacin: Asegura que los cambios en paralelo, realizados por personas diferentes no se sobrescriben mutuamente.
Estndares de GCS
Toda organizacin debe implementar un GCS, como el de lnea base, o implementar uno propio para la empresa, que debe ser un estndar para todos los proyectos dentro de la organizacin.
90