UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS CAMBIOS EN EL ANALISIS DE SISTEMAS............................2 EL MOVIMIENTO HACIA EL ANALISIS ESTRUCUTRADO ...................................................2 EL SURGIMIENTO DE LAS HERRAMIENTAS AUTOMATIZADAS DE ANALISIS ...........................3 EL USO DE PROTOTIPOS ...............................3 ENFOQUE PARA EL DESARROLLO DE PROTOTIPOS .............................................5 HERRAMIENTAS DE MODELADO ..........................................9 DIAGRAMA DE FLUJO DE DATOS ..............................11 EL DICCIONARIO DE DATOS .......................................12 ESPECIFICACIONES DE PROCESO ............................15 LENGUAJE ESTRUCTURADO .............................15 PRE/POST CONDICIONES ....................................16 TABLAS DE DECISION .........................................17 DIAGRAMA DE ENTIDAD RELACION ..........................18 DIAGRAMA DE TRANSICION DE ESTADOS ...............19 BALANCEO DE MODELOS ...........................................22 HERRAMIENTAS ADICIONALES DE MODELADO ................24 INGENIERIA DE SOFTWARE ..................................................26 HERRAMIENTAS CASE ..........................................................32 1 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS CAMBIOS EN EL ANALISIS DE SISTEMAS EL MOVIMIENTO HACIA EL ANALISIS ESTRUCTURADO Hasta fines de los años 70, el analista escribía lo que entendía de los requerimientos del usuario en un enorme documento que consistía primariamente en una narrativa. Los primeros autores de textos de análisis estructurado señalaron que estos pesados tomos (a menudo conocidos como especificación funcional) se veían afectados por diversos problemas importantes: Eran monolíticos: había que leer completamente la especificación, de principio a fin, para poder entenderla. Es una falla importante, pues existen muchas situaciones en las que el analista quisiera leer y comprender una parte de la especificación sin tener que leer necesariamente las demás. Eran redundantes: a menudo se repetía la misma información en diversas partes del documento. El problema con esto es que si se tenían que hacer cambios en los aspectos de los requerimientos, el cambio debía reflejarse en varias partes del documento (hoy sería un problema mucho menor). Eran ambiguas: el reporte detallado de los requerimientos podía ser (y a menudo era) interpretado de diferente manera por el usuario, el analista, el diseñador y el programador. Eran imposibles de mantener: por todas las razones descriptas anteriormente, la especificación funcional era casi obsoleta para cuando llegaba el final del proceso de desarrollo del sistema (es decir cuando el sistema se ponía en operación), y a menudo era obsoleto para el final de la fase de análisis. Esto significa que la mayoría de los sistemas que se desarrollaron durante décadas pasadas no tienen definiciones actualizadas de las políticas de negocios que se supone que llevan a cabo. Mientras se debatían todos estos problemas, ya se estaba adaptando un conjunto complementario de ideas en el área de programación y diseño, normalmente conocidas como diseño y programación estructurados, que prometían grandes mejoras en la organización, codificación, prueba y mantenimiento de los programas de computadora. Como resultado ha habido un movimiento gradual (ya que aceptarlo le ha llevado a la profesión de desarrollo de sistema varios años) tendiente a hacer especificaciones funcionales que sean: Gráficas: compuestas de una variedad de diagramas, apoyadas con material textual detallado que sirve de referencia más que como cuerpo principal de la especificación. Particionadas: de tal manera que se puedan leer independientemente porciones individuales de la especificación. 2 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Mínimamente redundantes: de tal manera que los cambios en los requerimientos del usuario puedan incorporarse normalmente en sólo una parte de la especificación. Este enfoque que se conoce como estructurado, se utiliza ahora en la mayoría de las organizaciones de desarrollo de sistemas orientados a los negocios, al igual que en gran número de las orientadas hacia la ingeniería. EL SURGIMIENTO DE HERRAMIENTAS AUTOMATIZADAS DE ANÁLISIS En un sistema muy grande puede haber 50, 100 o más diagramas de flujo de datos, diversos diagramas de entidad-relación y, potencialmente, varios diagramas de transición de estados; por lo que la cantidad de trabajo manual puede ser en verdad intimidante. Además del trabajo que se necesita para crear y mantener los diagramas, el análisis estructurado clásico requiere de una gran cantidad de trabajos para verificar los diagramas con el fin de asegurar que sean consistentes y estén completos; debido a que esta labor es detallada y aburrida, tiende a estar plagada de errores. En consecuencia, no se encontraban muchos de los errores de especificación que se debieran haber encontrado. Muchos de estos problemas se pueden resolver con apoyo automatizado adecuado. Esto era bien conocido aun desde que por primera vez se introdujo el análisis estructurado clásico, pero el costo de la automatización estaba por encima de las posibilidades económicas de la mayoría de las organizaciones. Sin embargo, el desarrollo de poderosas estaciones de trabajo gráficas llevó a que varios proveedores ofrezcan productos (normalmente basados en PC) que dibujan diagramas de flujo de datos y otros, además de llevar a cabo una variedad de labores de revisión de errores. Esto lleva primordialmente a un nivel más elevado de calidad en los modelos de sistemas producidos. También, de manera secundaria, hará a modelos gráficos del sistema visualmente más atractivos. En la medida en que los conceptos de revisión de errores sean automatizados, podrán eliminar problemas de productividad, confiabilidad y en la medida en que las herramientas de Ingeniería de software auxiliada por computadora (CASE) comiencen a generar programas directamente desde las especificaciones, también incluso se reducirá la necesidad de programadores. EL USO DE PROTOTIPOS Algunos usuarios tienen dificultades al tratar con los modelos gráficos del análisis estructurado y prefieren alguna otra forma de modelar los requerimientos y comportamientos del sistema. Las herramientas de generación de prototipos se han considerado como una alternativa al análisis estructurado para tales usuarios. Existe otra razón de la popularidad de los prototipos, y es que se considera que el análisis estructurado clásico consume demasiado 3 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS tiempo; para cuando concluye la fase de análisis, el usuario habrá olvidado para qué quería en un principio el sistema. Esto suele ser resultado de alguno de los siguientes problemas: El equipo encargado del proyecto tardó demasiado en desarrollar modelos del sistema actual y luego se tuvo que tardar aún más modelando el nuevo. La organización invirtió previamente poco o nada de tiempo, en hacer análisis, pues prefirió codificar lo antes posible. El trabajo de análisis pudiere parecerles improductivo. Los primeros proyectos que se han realizado utilizando el análisis estructurado pudieron consumir más tiempo de lo normal, pues los analistas están aprendiendo nuevas técnicas y discutiendo respecto a la mejor forma de aplicar dichas técnicas. Las herramientas de generación de prototipos (herramientas de software que permiten al analista construir un simulacro del sistema) se ven por ello como una solución efectiva a estos problemas. También el uso de prototipos tiende a concentrarse en el aspecto de la interfaz humana en los proyectos de desarrollo de sistemas. El desarrollo de prototipos es una metodología valiosa para identificar con rapidez, las necesidades particulares de información del usuario. Existen cuatro enfoques en el desarrollo de prototipos. El desarrollo efectivo de prototipos debería efectuarse en las primeras etapas del ciclo de vida del desarrollo de sistemas, durante la fase de establecimiento de los requerimientos de información. Sin embargo, el desarrollo de prototipos es una técnica compleja que requiere del conocimiento cabal del ciclo de vida del desarrollo de sistemas antes de llegar a implantarlo con éxito. El desarrollo de prototipos es muy relevante como técnica de obtención de información. Cuando se piensa de ésta manera en el desarrollo de prototipos, el analista de sistemas tiene la posibilidad de detectar las reacciones iniciales de los usuarios y de la gerencia hacia el prototipo; las sugerencias del usuario sobre las modificaciones al sistema bajo desarrollo o depuración si éste ya fue presentado; las posibles innovaciones para él, y los planes de revisión para aquellas áreas del sistema que quieran implantarse primero o las áreas de la organización que deberán considerarse próximamente. Reacciones iniciales del usuario De manera simultánea a la presentación del prototipo de un sistema de información que hace como analista de sistemas, también estará interesado en enterarse de las reacciones de los usuarios y de la gerencia ante este prototipo. Le interesará saber con detalle, cómo reaccionan al trabajar con el prototipo, y qué tan inconveniente es el acoplamiento entre las necesidades planteadas, y las características modeladas en el sistema. Estas reacciones se obtienen por medio de la observación, la evaluación y las hojas de retroalimentación. Cada una de ellas plasmará la opinión de las personas acerca del prototipo, 4 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS conforme se relacionan con él. A través de la recopilación de tales reacciones, el analista irá descubriendo nuevas perspectivas del prototipo, incluso si los usuarios se encuentran satisfechos con él y si habrá dificultades para vender o implantar el sistema. Sugerencias del usuario Al presentar un prototipo, el analista también se encuentra interesado en las sugerencias de los usuarios y de la gerencia acerca de su refinamiento o modificación. Conforme vayan trabajando en el prototipo, por un período específico, se irán recopilando sus sugerencias. El tiempo y dedicación que el usuario otorga al prototipo, indica su interés hacia el proyecto de sistemas. Las sugerencias son fruto de la relación de los usuarios con el prototipo, asimismo, el reflejo de ellos sobre la misma. Las sugerencias que aporta el usuario deben indicar al analista por qué caminos dirigirse para refinar el prototipo, modificarlo o depurarlo, de forma tal que satisfaga mejor las necesidades de los usuarios. Innovaciones Las innovaciones del prototipo forman parte de la información que se encuentra indagando el equipo de analistas de sistemas. Las innovaciones son aquellas características nuevas del sistema, que no fueron contempladas previamente a la interacción con el prototipo. Van más allá de las características que fueron consideradas para el prototipo actual, al incorporarle algo más que es innovador. Planes de revisión Los prototipos prevén el sistema futuro. Los planes de revisión permiten identificar las prioridades que deberán considerarse próximamente para el desarrollo del prototipo. En las situaciones donde se encuentran involucradas muchas áreas de la organización, los planes de revisión permiten determinar cuáles serán las siguientes áreas a considerar. La información que se obtiene con el uso de prototipos permite al analista establecer prioridades y reorientar sus planes de una manera menos costosa y con un mínimo de contratiempos. Por ello es que van de la mano el desarrollo de prototipos y la planificación. ENFOQUE PARA EL DESARROLLO DE LOS PROTOTIPOS Tipos de prototipos La palabra prototipo se utiliza de muchas maneras diferentes. Antes de intentar sintetizar todas éstas connotaciones en una sola definición, o tratar de establecer un solo enfoque correcto para el tópico controvertido del desarrollo de prototipos, trataremos de ilustrar la manera por la cual las diferentes concepciones del prototipo pueden aplicarse de manera práctica a situaciones particulares. 5 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Consideraremos las cuatro definiciones que son más comunes para el desarrollo de prototipos. Prototipos de remiendo La primera clase de prototipos tiene que ver con la construcción de un sistema que si bien funciona, se encuentra remendado o parchado. En ingeniería a éste concepto se lo denomina tableta de prototipo, en donde se desarrolla un circuito integrado mediante un modelo operable de elementos sobrepuestos aún no definitivos. Un ejemplo en los sistemas de información es la creación de un modelo operable, el cual cuenta con todas sus características necesarias aunque pudiera ser ineficiente. En éste caso de prototipos, los usuarios se relacionan con el sistema, adaptándose a las interfases y a los tipos de salidas disponibles. Sin embargo, los procesos de recuperación y almacenamiento de información son ineficientes, ya que los programas se escribieron de manera apresurada con el fin exclusivo de que fueran operativos, aunque no eficientes. Otro tipo de prototipos para sobreponer, podría ser aquel sistema de información que cuente con todas las características propuestas, pero que en realidad sea un modelo básico, que eventualmente será perfeccionado. Modelo a escala no funcional La segunda concepción que consideramos en el desarrollo de prototipos es la de aquellos modelos no funcionales que se construyen a escala, con el objeto de evaluar ciertos aspectos de diseño. Un ejemplo de ello sería la construcción de un modelo de un automóvil a escala para evaluarlo en túneles de viento. Si bien el tamaño y la forma del auto es preciso, el vehículo no funciona. En éste caso sólo se incluyen las características esenciales del automóvil para la realización de las pruebas particulares. Un modelo no funcional de un sistema de información a escala podría ser aquel en el cual la codificación que se requiere es extensa en cantidad; y más bien, podría lograrse una idea de la utilidad del sistema, si en el prototipo funcionan únicamente los procesos de entrada y salida. En éste caso el procesamiento de información no es contemplado, por ser en sí costoso y requerir de tiempo. Sin embargo, la evaluación sobre la utilidad del sistema puede realizarse con base en el prototipo de las entradas y salidas. Primer modelo a escala completa Una tercera concepción en el desarrollo de prototipos implica crear un primer sistema a escala completa, llamado con frecuencia “piloto”. Un ejemplo de ello sería el desarrollo del prototipo del primer aeroplano de una serie. El prototipo es completamente funcional y es realización de lo que según el diseñador será una serie de aeroplanos con características idénticas a éste. Este tipo de prototipos es útil cuando se planea implantar el mismo sistema de información en varias instalaciones. Un modelo funcional a escala total permite una interacción realista con el sistema, reduciendo los costos de solución de cualquier problema que emerja con el nuevo sistema. 6 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Por ejemplo, cuando una cadena de tiendas de autoservicio piensa utilizar el mismo sistema computarizado para el control de envío de sus vendedores en todas sus sucursales, deberá instalarse un primer modelo a escala en uno de los almacenes, con el fin de solucionar cualquier problema que se presente, antes de implantarlo en las demás tiendas. Otro ejemplo típico lo tenemos en las instalaciones bancarias con la transferencia electrónica de fondos. En una o dos localidades se instalaría primero un modelo a escala completa del prototipo, y si tuviera éxito, se implantaría en todas las sucursales, con base en el patrón de uso y en otros elementos fundamentales. Un tercer ejemplo de éste tipo de prototipos sería un sistema regional de inventarios de sangre, el cual, al concluirse intentará administrar siete hospitales del área. Sin embargo, el prototipo es un modelo operativo a gran escala que se implanta a discreción en uno de los hospitales de la región, con miras a instalarlo en los hospitales restantes, una vez transcurrido el período de evaluación y verificación. Un modelo que cuenta con ciertas características esenciales Una cuarta concepción del prototipo contempla la construcción de un modelo funcional que incluya algunas, pero no todas las características que tendrá el sistema final. Una analogía sería un centro comercial inconcluso que abre provisionalmente sus puertas. En un centro comercial de éste tipo, se tienen las funciones esenciales, tales como la posibilidad de adquirir ciertos artículos, la existencia de restoranes de comida preparada y el estacionamiento; aunque no se ha ocupado por completo, ni se ofrecen todos los artículos que eventualmente se ofrecerán en la apertura formal. Con una visita inicial al centro comercial inconcluso es posible imaginar lo que éste tendrá en el futuro. Cuando los prototipos se desarrollan de ésta manera, se contemplan ciertas características esenciales, mas no todas. Por ejemplo, el menú que presentará un sistema en la pantalla, puede enumerar seis características: agregar un registro, actualizar un registro, eliminar un registro, búsqueda de un registro con base en una palabra clave, enumerar registros y otras clases de búsquedas. Sin embargo, en el prototipo, el usuario sólo dispone de tres de las seis funciones, de tal forma que él puede agregar un registro (característica 1), eliminarlo (característica 3), o desplegarlos (característica 5). Cuando se desarrollan éstos tipos de prototipos, el sistema se planifica con base en módulos, de tal forma que aquellas características que se aprobarán en el prototipo podrían incorporarse en un sistema final mayor, sin requerir de gran esfuerzo durante la conexión. Los prototipos desarrollados de ésta manera, operan como parte de sistemas actuales y no son sólo un parche como los hemos considerado en la primera definición de prototipos. Los prototipos como alternativa en el ciclo de vida del desarrollo de sistemas Ciertos analistas afirman que el desarrollo de prototipos debería considerarse como una alternativa en el ciclo de vida del desarrollo de sistemas. 7 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Las reservas que se tienen respecto al ciclo de desarrollo de sistemas se centra en dos preocupaciones relacionadas entre sí. La primera se debe al extenso tiempo que transcurre a lo largo del SDLC. Conforme el analista invierte más tiempo, el costo del sistema desarrollado se incrementa proporcionalmente. La segunda preocupación es que los requerimientos del usuario se van modificando a lo largo del tiempo. Estos evolucionan desde el momento en que se realiza el análisis de las necesidades del usuario hasta el momento que se concluye y se entrega el sistema. Debido a tal duración del ciclo, el sistema que resulte puede no llegar a satisfacer adecuadamente las necesidades de información del usuario. Tales preocupaciones se encuentran relacionadas, pues ambas se basan en el tiempo que se requiere para concluir el SDLC y en el problema que implica alejarse de las necesidades del usuario, durante las etapas subsecuentes del desarrollo. Si un sistema se desarrolla de manera aislada de los usuarios, puede no satisfacer sus expectativas. Como corolario al problema de distanciarse de los requerimientos evolutivos de información del usuario, se tiene que algunos no saben en realidad lo que quieren, sino hasta que ven algo tangible. Con frecuencia, en un SDLC tradicional es demasiado tarde para modificar un sistema no deseado, una vez que se ha entregado. Para resolver éstos inconvenientes, algunos analistas proponen que el desarrollo de prototipos sea una alternativa al SDLC. Cuando los prototipos se desarrollan de ésta manera, el analista reduce efectivamente el período que transcurre entre la indagación de los requerimientos de información y la entrega de un sistema funcional. Además, al diseñar prototipos, en lugar de apegarse al ciclo formal de desarrollo, pueden evitarse ciertos problemas concernientes a la identificación precisa de los requerimientos de información del usuario. Con un prototipo, el usuario puede ver en realidad lo que llegará a ser posible; y asimismo, cómo se traducen sus necesidades en hardware y software. Entre los inconvenientes de suplantar el SDLC con el desarrollo de prototipos se tiene que el S.I. puede conformarse de manera prematura. El uso de prototipos como alternativa puede inducir que ciertos grupos de usuarios lo acepten, a pesar de ser inadecuado para las necesidades globales del sistema. Los prototipos como complemento del ciclo de vida del desarrollo de sistemas Este enfoque consiste en desarrollar prototipos como parte del SDLC. Aquí se considera al desarrollo de prototipos como un método especializado para solucionar ciertos requerimientos de información del usuario. Los prototipos nos permiten hacer planteamientos de necesidades de información más allá de los verbales entregados por los usuarios. Cuando se hace uso de ellos, complementando las otras técnicas de recopilación de información, reforzamos el compromiso del analista para relacionarse con el usuario en cada una de las etapas de análisis y diseño de sistemas. 8 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS La determinación de los requerimientos de información puede satisfacerse con el desarrollo de prototipos, cuando éstos se incorporan al SDLC. El analista puede incorporar de manera activa al usuario en la determinación de sus requerimientos. Cuando el desarrollo de prototipos se añade al ciclo de desarrollo de sistemas, en lugar de desarrollarse en etapas discretas, cada una de las fases del SDLC se llevan a cabo en varias interacciones hasta que el analista y los usuarios acuerdan que el sistema está completo. Desventajas de los prototipos Como cualquier otra técnica de recopilación de información, los prototipos cuentan con varias desventajas. La primera es que su administración llega a ser difícil como un proyecto de desarrollo de prototipos, dentro de un gran esfuerzo de sistemas. Otra desventaja es que tanto los usuarios como los analistas pueden considerar el prototipo como un sistema concluido, cuando de hecho no lo es, y nunca se planteó como un sistema final. El analista necesita ponderar éstos inconvenientes contra las ventajas conocidas, al decidir si hace uso de los prototipos, cuándo desarrollarlos, y qué proporción del sistema será desarrollada como prototipo. HERRAMIENTAS DE MODELADO Importancia del uso de Herramientas de modelado. Gran parte de la labor del Analista involucra el Modelado del Sistema que desea el Usuario. Los Modelos del Análisis de Sistemas son “Modelos en Papel” del futuro sistema, es decir representaciones abstractas de lo que al final será una combinación de hardware y software de computadora. El término “Modelo” pudiera parecer algo formal y atemorizante pero representa un concepto que se maneja cotidianamente. Por ejemplo: Los mapas: Son modelos bidimensionales de nuestro mundo. Los globos terráqueos: Son modelos tridimensionales. Ahora ¿por qué construimos Modelos?. ¿Por qué no se construye simplemente el sistema mismo?. Las razones por las cuales el Analista hace uso de herramientas de Modelado son: Para concentrarse en las propiedades importantes del Sistema y al mismo tiempo restar atención a otras menos importantes. Para discutir cambios y correcciones de los requerimientos del Usuario, a bajo costo y con el riesgo mínimo; ya que si el Analista se da cuenta de que su comprensión de los requerimientos del Usuario no fue la correcta (o de que el Usuario cambió de parecer acerca de sus requerimientos) puede hacer cambios en el Modelo o desecharlo y hacer uno nuevo de ser necesario. Para verificar que el Analista comprende correctamente el ambiente del Usuario que lo haya respaldado con información documental para 9 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS que los diseñadores de Sistemas y los Programadores puedan construir el Sistema. Sin embargo, no todas las herramientas de Modelado cumplen con estos propósitos por ejemplo: una descripción narrativa de 500 páginas de los requerimientos del Usuario podría: • Contribuir a obscurecer todas las propiedades del Sistema. • Costar más en su elaboración que el Sistema mismo. • No verificar si el Analista comprendió o no las necesidades reales del Usuario. Cualquier herramienta de modelado que use debe tener las siguientes características: DEBE SER GRÁFICA, CON DETALLES TEXTUALES DE APOYO APROPIADOS: no es requisito usar gráficas, pero hay que tener en cuenta que “una imagen vale más que mil palabras”, una imagen bien escogida puede transmitir de manera concisa y compacta una gran cantidad de información. Se utilizan para identificar los componentes de un sistema y su interfaz, todos los demás detalles se presentan en documentos textuales de apoyo, especificaciones de proceso y el diccionario de datos. DEBE PERMITIR QUE EL SISTEMA SEA VISTO EN SEGMENTOS, EN FORMA DESCENDENTE: deben permitir mostrar partes individuales del sistema de manera independiente, junto con una forma sencilla de moverse de una parte a otra del modelo del sistema, de manera descendente un sistema de información proporciona un mecanismo conveniente para pasar tranquilamente de un nivel alto a uno bajo. DEBE TENER REDUNDANCIA MÍNIMA: importa esto porque es deseable mantenerlo en forma actualizada y precisa. Si el sistema cambia, entonces debe cambiar el modelo, si ha de tenerse actualizado, si cambia un aspecto local del sistema, preferiríamos cambiar sólo un aspecto local del modelo sin tener que cambiar algún otro. DEBE AYUDAR AL LECTOR A PREDECIR EL COMPORTAMIENTO DEL SISTEMA. DEBE SER TRANSPARENTE PARA EL LECTOR: un buen modelo debe ser tan fácil de leer que el lector no tenga que detenerse a pensar siquiera que se trata de la representación de un sistema y no del sistema mismo. Principales Tipos de Herramientas de Modelado: Existen varias herramientas de Modelado de Sistemas pero las mas importantes son las siguientes: • El Diagrama de Flujo de Datos. • El Diagrama de Entidad - Relación. • El Diagrama de Transición de Estados. 10 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS DIAGRAMA DE FLUJO DE DATOS Es una herramienta que permite visualizar un sistema como una red de procesos funcionales, conectados entre si por conductos y tanques de almacenamiento de datos. Componentes del DFD: PROCESO: Es equivalente a una FUNCIÓN o TRANSFORMACIÓN. Muestra una parte del sistema que convierte entradas en salidas. Se nombran mediante frases VERBO + OBJETO. Ej: VALIDAR PEDIDO. FLUJO: Describen el movimiento de paquetes o bloques de información de una parte del sistema a otra. Representan datos en Movimiento ( a diferencia de los Almacenes). Pueden representar también Materiales Físicos. ALMACÉN: Modela una colección de datos en reposo. Generalmente se nombran con el plural de las etiquetas de los paquetes que entran o salen de ellos. TERMINADOR: Representan entidades externas con las cuales el sistema se comunica. Suelen ser personas, grupos u otros departamentos de la empresa. Son externos al sistema que se está modelando. Las relaciones entre los terminadores no se muestran en el modelo del DFD. Guía para la construcción de un DFD: Reglas que ayudarán para no elaborar un DFD incompleto o lógicamente inconsistente y que se dibuje un DFD grato a la vista: • Escoger nombres con significado para los procesos, flujos, almacenes y terminadores: es importante etiquetar con precisión el proceso, de modo que quienes leen el DFD puedan confirmar que se trata de un modelo preciso. Si el proceso lo hace una sola persona se recomienda identificar el papel o función que la persona está representando y no su identidad o nombre (podría ser reemplazado, podría realizar diversas tareas en el sistema o puede atraer la atención hacia la manera en la que realiza la labor dada). • Numerar los procesos: es una forma conveniente de referirse a los procesos, no importa mucho cómo se haga esto, mientras haya constancia en la forma de aplicar los números. El modelo de DFD es una red asincrónica que se intercomunican. Pues se numeran los procesos para hacer referencia a los procesos de manera mas conveniente cuando se discute sobre un DFD ( decir burbuja 1 es más fácil que EDITAR TRANSACCIONES Y REPORTAR ERRORES), y es más importante el hecho de que los 11 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS números se convierten en base para la numeración jerárquica cuando se introduzcan los diagramas de flujo por niveles. • Redibujar el DFD tantas veces como sea necesario estéticamente: tendrá que dibujarse y volverse a dibujar, a menudo hasta 10 veces o más antes de ser técnicamente correcto, ser aceptable para el usuario y estar lo suficientemente bien dibujado como para que no sea embarazoso mostrarlo a la dirección de la organización. • Evite los DFD excesivamente complejos: esto significa que el diagrama debe ser fácilmente entendido, asimilado y placentero a la vista, una regla principal es que el DFD debe caber cómodamente en una hoja normal. • Asegurarse de que el DFD sea internamente consistente y que también lo sea con cualesquiera DFD relacionado con él: evitar burbujas que tengan entradas pero no salidas, evitar burbujas de generación espontánea, que tienen salidas sin tener entradas, tenga cuidado con los flujos y procesos no etiquetados, tenga cuidado con los almacenes de solo lectura o solo escritura (deben tener entrada tanto como salida, excepto los externos que sirven de interfaz entre el sistema y algún terminador externo). DFD por niveles: Es organizar el DFD global en una serie de niveles de modo que cada uno proporcione sucesivamente más detalles sobre una porción de l nivel anterior. El DFD del primer nivel consta sólo de una burbuja, que representa el sistema completo, los flujos de datos muestran las interfaces entre el sistema y los terminadores externos, junto con los almacenes externos que puedan haber. El DFD que sigue del diagrama de contexto se conoce como la figura 0, representa la vista de más alto nivel de las principales funciones del sistema, al igual que sus principales interfaces, cada una de estas burbujas debiera numerarse para una referencia conveniente, los números también sirven como una manera adecuada de relacionar una burbuja con el siguiente nivel del DFD que la describe más a fondo. Extensiones del DFD para sistemas de tiempo real: Se necesita alguna manera de modelar flujos de control, es decir señales o interrupciones, y se requiere una manera de mostrar procesos de control, este es, burbujas cuya única labor es coordinar y sincronizar las actividades de otras burbujas del DFD. Se muestran gráficamente con líneas punteadas en el DFD. EL DICCIONARIO DE DATOS El diccionario de datos es un listado organizado de todos los datos pertinentes al sistema, con definiciones precisas y rigurosas para que tanto el usuario como el análisis tengan un entendimiento común de 12 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS todas las entradas, salidas, componentes de almacenes y cálculos intermedios. • Define datos haciendo lo siguiente: • Describe el significado de los flujos y almacenes que se muestran en los DFD. • Describe la composición de agregados de paquetes de datos que se mueven a lo largo de los flujos, es decir paquetes complejos (domicilio de un cliente) que pueden descomponerse en unidades más elementales (ciudad, estado y código postal). • Describen la composición de los paquetes de datos en los almacenes. • Especifica los valores y unidades relevantes de piezas elementales de información en los flujos de datos y en los almacenes de datos. • Describe los detalles de las relaciones entre almacenes que se enfatizan en un diagrama de entedad-relación. La necesidad de la notación en el diccionario de datos: En la mayoría de los sistemas en los que se trabaja, los paquetes de datos o elementos de datos, serán lo suficientemente complejos como para necesitar describirlos en términos de otras cosas. Los elementos complejos de datos se definen en términos de elementos más sencillos, y los sencillos en términos de los valores y unidades legítimos que pueden asumir. Se vuelve algo tedioso describir la composición de los elementos de datos en una forma narrativa. Necesitamos una notación concisa y compacta (como los diccionarios normales de palabras ordinarias). Notación del diccionario de datos: Existen muchos esquemas, uno de los más comunes y que utiliza varios símbolos sencillos es: está compuesto de = y + ( ) optativo (puede estar presente o ausente) { } iteración [ ] seleccionar una de varias alternativas * * comentario @ identificador (campo clave) para un almacén separa opciones alternativas en la construcción | Ejemplos: nombre = titulo de cortesía + nombre + (segundo nombre) + apellido titulo de cortesía = [ Sr. | Srita. | Sra. | Dr. | Profesor ] nombre = { caracter legal} segundo nombre = { caracter legal} apellido = {caracter legal} caracter legal = [ A - Z | a - z | 0 - 9 | ‘ | - | | ] 13 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Para definir un dato se introduce con el símbolo = , y se lee se “define como o significa”. Por ejemplo: A= A+B, para definir por completo un dato, debe incluir el significado del dato dentro del contexto de la aplicación del este usuario, usando la notación * * ; debe incluir la composición del dato, si se compone de partes elementales con significado; también los valores que puede tomar el dato. Por ejemplo: peso = *peso del paciente al ser admitido al hospital* *unidades: Kilogramos; gama 1-200* estatura = *estatura del paciente al ser admitido al hospital* *unidades: centímetros; escala: 20-200* Hay términos que se definen solos, es decir , cuyos significado es universal para todos los sistemas de información, o que no se necesitan aclarar más, en estos casos no se necesita un comentario narrativo, se puede usar la notación * * para indicar sin comentarios cuando estos datos se definan solos. Por ejemplo: peso actual = ** *unidades: libras; escala: 1-400* sexo = ** *valores: [ M | F ]* La notación de iteración se usa para indicar la ocurrencia de un componente de un dato, se lee como cero o más ocurrencias de , en muchas ocasiones se querrá indicar los límites inferior y superior de la iteración. Es correcto especificar sólo el límite inferior, sólo el superior, ambos, o ninguno, esto se puede indicar así: a = 1 {b} ; a = {b} 10 ; a = 1 {b} 10 ; a = {b} . Otro ejemplo: solicitud = nombre del cliente + domicilio de envío + 1 { artículos } 10 El alias, es una alternativa de nombre para un dato, cuando se insiste en utilizar nombres distintos para decir lo mismo, el alias se incluye en el diccionario de datos para que esté completo, y se relaciona con nombres primarios u oficial del dato. Por ejemplo: comprador = * alias de cliente * Como mostrar el diccionario de datos: El diccionario de datos lo crea el analista durante el desarrollo del modelo del sistema, pero el usuario debe ser capaz del leerlo y entenderlo para poder verificar el modelo. “CONSTRUIR UN DICCIONARIO DE DATOS ES UNA DE LAS LABORES MÁS TEDIOSAS, Y LARGAS, DEL ANALISIS DE SISTEMAS. PERO TAMBIÉN ES UNA DE LAS MÁS IMPORTANTES: SIN UN DICCIONARIO FORMAL QUE DEFINA EL SIGNIFICADO DE LOS TÉRMINOS, NO SE PUEDE ESPERAR PRECISIÓN”. 14 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS ESPECIFICACIONES DE PROCESO Es la descripción de qué sucede en cada burbuja primitiva de nivel más bajo en un diagrama de flujo de datos. Define lo que debe hacerse para transformar entradas en salidas, es una descripción detallada de política de negocios del usuario que cada burbuja lleva a cabo. Existe una variedad de herramientas que podemos utilizar para producir una especificación de proceso: tablas de decisiones, lenguaje estructurado (español, inglés, etc.), pre/post - condiciones, diagramas de flujo, diagramas de Nasse / Shneiderman, etc. Se puede usar cualquier método mientras cumpla dos requisitos cruciales: La especificación del proceso debe expresarse de una manera que puedan verificar tanto el usuario como el analista. (razón pro la cual se evita el lenguaje narrativo ya que es ambiguo). El proceso debe especificarse en una forma que pueda ser comunicada efectivamente al público amplio que esté involucrado. Se puede agregar esta tercera : No debe imponer o implicar decisiones de diseño e implantación arbitrarias. El trabajo como analista consiste en destilar de esto la esencia de lo que se trate una política y no cómo se lleva a cabo hoy en día. Las especificaciones de proceso sólo se desarrollan para los procesos de más bajo nivel en un conjunto de diagramas por niveles en un DFD. Las tres herramientas principales de especificación de proceso son: Lenguaje estructurado (español, inglés, etc.) Pre/post condiciones Tablas de decisión Lenguaje estructurado: Es un subconjunto de todo el idioma con importantes restricciones sobre el tipo de frases que pueden utilizarse y la manera en que pueden juntarse dichas frases. Su propósito es hacer un balance razonable entre la precisión del lenguaje formal de programación y la informalidad del lenguaje cotidiano. Por ejemplo, una frase puede ser una ecuación algebraica como X = ( Y*Z ) / ( Q + 14 ) o una frase imperativa que consista en un verbo y un objeto como por ejemplo CALCULAR X = ( Y * Z ) / ( Q + 14 ). El lenguaje estructurado permite que se combinen frases en unas cuantas formas limitadas que se toman de las construcciones acostumbradas de la programación estructurada. La construcción SI-ENTONCES-OTRO se utiliza para describir frases alternativas que se deben realizar según el resultado de la decisión binaria. Ejemplo: SI condición-1 SI edad-del-cliente es mayor que 65 frase-1 OTRO fijar cuota a cuota-ancianos frase-2 OTRO FIN SI fijar cuota a cuota-normal FIN SI 15 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS La construcción CASO se utiliza par describir frases alternativas que se efectuarán basándose en los resultados de una decisión multivaluada. Ejemplo: HACER CASO HACER CASO CASO variable = valor-1 CASO edad-del-cliente < 13 frase-1 fijar cuota a cuota-niños CASO edad-del-cliente >12 y edad-del-cliente < 20 CASO variable = valor-n fijar cuota a cuota-adolescente CASO edad-del-cliente > 19 y edad-del-cliente < 65frase-n OTRO fijar cuota a cuota-adultos frase-n+1 OTRO fijar cuota a cuota-ancianos FIN CASO FIN CASO La construcción HACER-MIENTRAS se usa para describir una frase que deberá llevarse a cabo repetitivamente hasta que alguna condición booleana se haga verdadera. Ejemplo: HACER-MIENTRAS haya más artículos en el pedido-del-cliente precio-extendido = precio-unitario * cantidad-de-unidades FIN HACER HACER -MIENTRAS condición-1 frase-1 FIN HACER Otra estructura es REPITE-HASTA , que ejecuta una frase especificada por lo menos una vez antes de hacer una prueba para ver si debe repetirse. Ejemplo: REPITE frase-1 HASTA condición- Se pueden construir frases compuestas a partir de combinaciones de frases sencillas y las estructuras sencillas que se presentaron anteriormente. Pre/post condiciones: Son una manera conveniente de describir la función que debe realizar el proceso, sin decir mucho acerca del algoritmo o procedimiento que se utilizará, es un enfoque útil cuando: El usuario tiene tendencia a expresar la política llevada a cabo por la burbuja en términos de un algoritmo particular que ha estado utilizando durante décadas. El analista está razonablemente seguro de que existen muchos algoritmos distintos que podrían usarse. 16 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS El analista desea que el programador explore varios de estos algoritmos pero no quiere involucrarse personalmente con tales detalles y, sobre todo, no quiere enredarse en discusiones con el usuario acerca del mérito relativo de cada uno. Un ejemplo de especificaciones de proceso escritas con este enfoque es: ESPECIFICACIONES DE PROCESO 3.5: CALCULAR EL IMPUESTO SOBRE VENTAS Precondición 1 Ocurre DATOS-VENTA con TIPO-ITEM que corresponde con CATEGORIA-ITEM en CATEGORIAS-IMPUESTO Postcondición 1 IMPUESTO-SOBRE-VENTA se hace igual a MONTO-VENTA * IMPUESTO Precondición 2 Ocurre DATOS-VENTA con TIPO-ITEM que no concuerde con CATEGORÍA-ITEM en CATEGORIA-IMPUESTO Postcondición 2 Se genera MENSAJE-ERROR Las precondiciones describen todas las cosas, si hay, que deben darse antes de que el proceso pueda comenzar a ejecutarse. Describen lo siguiente: Qué entradas se encuentran disponibles Qué relación debe existir entre las entradas Qué relaciones deben existir entre entradas y almacenes de datos Qué relaciones deben existir entre almacenes o dentro de un almacén dado Las postcondiciones describen que debe darse cuando el proceso ha concluido. Describen lo siguientes: Las salidas que generará o producirá el proceso Las relaciones que existirán entre los valores de salida y los valores originales de entrada Las relaciones que existirán entre valores de salida y los valores en uno o varios de los almacenes Los cambios que se hayan dado en los almacenes Tablas de decisión: Si el proceso debe producir alguna salida o tomar alguna acción basada en decisiones complejas es preferible una tabla de decisiones, si las decisiones se basan en diversas variables distintas, por ejemplo: datos de entrada, y si dichas variables pueden tomar diversos valores, entonces la lógica expresada por el lenguaje estructurado o por las pre/post condiciones probablemente sea tan compleja que el usuario no la comprenderá. Una tabla de decisiones se crea listando todas las variables relevantes o entradas y todas las acciones relevantes en su lado izquierdo, las variables y acciones están separadas por una línea horizontal gruesa, a continuación se lista en columnas separadas cada combinación posible de valores de las variables, cada columna usualmente se 17 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS conoce como regla. Una regla describe una acción o acciones que deben llevarse a cabo para una combinación específica de valores de las variables. Edad > 21 Sexo Peso < 100 Medicamento 1 Medicamento 2 Medicamento 3 Ningún medicamento 1 Y M Y X 2 Y M N 3 Y F Y 4 Y F N X X 5 N M Y X X 6 N M N 7 N F Y X X 8 N F N X X X Deben discutirse cada regla con el usuario para asegurarse que se ha identificado la acción o acciones correctas para cada combinación de variables. La ventaja del enfoque de la tabla de decisiones es que el analista se puede concentrar en una regla a la vez, y también la tabla de decisiones tiene la ventaja de que no implica ninguna forma particular de implantación, o sea hay una tremenda libertad de elección en términos de estrategia de implantación. DIAGRAMAS DE ENTIDAD-RELACIÓN Es un modelo de red que describe con un alto nivel de abstracción la distribución de datos almacenados en un sistema. Es importante modelar los datos de un sistema porque las estructuras de datos y las relaciones pueden ser tan complejas que se deseara enfatizarlas y examinarlas independientemente del proceso que se llevará a cabo. Esto se da si mostramos el modelo del sistema a los usuarios ejecutivos de mayor nivel en una organización, quienes podrían no estar interesados en los detalles funcionales cotidianos del sistema, tales usuarios a menudo se preocupan más por los datos que se requieren para manejar su negocio, quién los tiene y quién tiene acceso a ellos. Los componentes de un DER: TIPOS DE OBJETOS: Representa una colección o conjunto de cosas cuyos miembros individuales: pueden identificarse de una manera única por algún medio; juegan un papel necesario dentro del sistema, pueden describirse por uno o mas datos. El objeto es algo material y el tipo de objeto es su representación en el sistema. Se denotan usando un Sustantivo Singular Ej: CLIENTE, COMPRA, ARTICULO, etc. RELACIONES: Representan conjunto de conexiones entre objetos. Cada instancia de la relación representa una asociación entre cero o más ocurrencias de un objeto y cero o más ocurrencias del otro. Una relación puede conectar dos o más instancias del mismo objeto. 18 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Ejemplo: CLIENTE Coloca PEDIDO Recibe FACTURA Genera EDITOR ORDEN DE COMPRA Recibe DIAGRAMA DE TRANSICIÓN DE ESTADOS Es el que enfatiza el comportamiento dependiente del tiempo del sistema (sistemas de tiempo-real). Notación de los DTE: Los principales componentes son Estados y Flechas que representan los Cambios de Estado. ESTADOS del sistema: Cada rectángulo representa un estado en el que se puede encontrar el sistema, un estado es un conjunto de circunstancias o atributos que caracterizan a una persona o cosas en un tiempo dado, forma de ser, condición. Los cambios de estados válidos se muestran conectando pares relevantes de estados con una flecha. Cualquier estado puede llevar un número arbitrario de estados sucesores. La mayoría de los sistemas tienen un estado inicial reconocible y un estado final reconocible. El estado inicial típicamente suele se el que se dibuja en la parte superior del diagrama (no es obligatorio que así sea) lo identifica la flecha “desnuda” no conectada a otro estado, el estado final suele ser el que se dibuja en la parte inferior pero tampoco eso es obligatorio, lo que lo identifica es la ausencia de una flecha que salga de él. Un sistema puede tener un solo estado inicial pero puede tener múltiples estados finales. Las condiciones que causan un cambio de estado y las acciones que el sistema toma cuando cambia se muestran junto a la flecha que conecta dos estados relacionados. Diagramas particionados: En un sistema complejo pueden haber docenas de estados distintos del sistema, tratar de ponerlos todos en un mismo diagrama sería difícil, si no imposible. Por lo tanto se puede usar las particiones con los DTE. 19 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Construcción del diagrama de transición de estados: Puede seguirse dos enfoques: • Se puede comenzar por identificar todos los posibles estados del sistema y representar cada uno por separado en una hoja de papel y luego se pueden explorar todas las conexiones con significado entre las cajas (cambios de estados). • Se puede comenzar por el estado inicial y luego metódicamente ir siguiendo un camino hasta el o los restantes, luego del o los estados secundarios, proseguir a los terciarios, etc. Cuando termine de construir el DTE preliminar deben seguirse las siguientes reglas de para verificar la consistencia: • ¿Se han definido todos los estados? • ¿Se pueden alcanzar todos los estados? ¿Se han definido estados que no tengan cominos que lleven a ellos? • ¿Se puede salir de todos los estados? no los finales pero todos los demás estados deben tener un sucesor. • En cada estado ¿el sistema responde adecuadamente a todas las condiciones posibles? ocurren condiciones normales, condiciones inesperadas. Ejemplo: Tarjeta Ingresada ESPERANDO TARJETA Solicita “Contraseña” Contraseña Ingresada ESPERANDO PASSWORD Cancela o Contraseña Erronea Solicita Selección Función Selección Extraccion Expulsion de Tarjeta ESPERANDO ELECCION Cancela Expulsion de Tarjeta EXTRACCION CONSULTAS DEPOSITOS Solicita Importe ESPERANDO IMPORTE Importe Ingresado Mensaje “Esperar” Cancela Operación DANDO EFECTIVO Borrado de Pantalla Efectivo Disponible Mensaje “Retirar” ESPERANDO EL RETIRO Ejectivo Retirado Borrado de Pantalla 20 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Relación del DTE con los demás componentes del modelo: El DTE puede usarse por si solo como herramienta de modelado. Sin embargo puede y en general debiera ser utilizado en conjunto con otras herramientas. El DTE representa una especificación de proceso para una burbuja de control en un DFD. El Diagrama de Estructuras El Analista de Sistema debe estar al tanto de que se utilizan muchas herramientas de modelado adicionales durante la creación de un sistema complejo. Por ejemplo, los diseñadores de Sistema suelen utilizar: • • • • • Diagramas de Flujo de Datos Diccionarios de Datos Especificaciones de Procesos Diagramas de Entidad – Relación y Diagramas de transición de Estados, Creados por el Analista para crear una arquitectura de software, es decir, una jerarquía de Módulos (los que a veces se conocen como subrutinas o procedimientos) para realizar los requerimientos del Sistema. Una herramienta gráfica de Modelado comúnmente utilizada para representar tal jerarquía de software es el Diagrama de Estructuras. En este diagrama, cada rectángulo representa un Módulo (por ejemplo una subrutina de FORTRAN, un procedimiento de Pascal o un párrafo o subprograma de Cobol). Las flechas que conectan los rectángulos representan las invocaciones de Módulos (por ejemplo, llamados de subrutinas o llamados de procedimientos). El Diagrama también muestra los parámetros de entrada que se le dan a cada módulo invocado y los parámetros de salida devueltos por cada módulo cuando termina su labor y le devuelve el control al que lo llama. A pesar de que el Diagrama de Estructuras es una herramienta excelente para los diseñadores de Sistemas, no es el tipo de modelo que normalmente se mostraría al Usuario, pues modela un aspecto de la implantación del Sistema, no de sus requerimientos. Dado que algunos Usuarios saben más que otros de computadoras, y algunos Usuarios desempeñan un papel más activo en los Proyectos de Desarrollo de Sistemas que otros. Si está trabajando con un Usuario que es miembro de tiempo completo del equipo del Proyecto, o tal vez incluso si es el jefe de Proyecto, y si es conocedor del diseño de Sistemas, no hay razón por la que no deba mostrarle un Diagrama de Estructuras. 21 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Sin embargo si el usuario sólo se interesa por describir qué tiene que hacer el Sistema, probablemente no le interese ver un diagrama que describa la organización de las subrutinas de FORTRAN que cubrirán dichos requisitos. BALANCEO DE MODELOS Una especificación estructurada se dice que está balanceada cuando todas las herramientas se han verificado entre si para asegurar su consistencia. Balanceo del DFD y el DD Las reglas son: • Cada flujo de datos (flechas del DFD) y cada almacén de datos deben estar definidos en el diccionario de datos. • De manera inversa, cada dato y cada almacén que se define en el diccionario de datos debe aparecer en alguna parte del DFD, si no es un fantasma (algo definido que no se usa). Esto significa desde luego que el analista debe revisar tanto el DFD como el diccionario cuidadosamente para asegurarse de que estén balanceados. Balanceo del DFD y la ESPECIFICACIÓN DE PROCESO Las reglas son: • Cada burbuja del DFD debe asociarse con un DFD de nivel inferior o con una especificación de procesos, pero no ambos, ya que el modelo sería innecesario, redundante. • Cada especificación de proceso debe tener una burbuja de nivel inferior asociada en el DFD. • Las entradas y salidas deben coincidir. En DFD y deben ser evidentes en las especificaciones de procesos. Estos comentarios se aplican específicamente a las burbujas de proceso, para las burbujas de control en un DFD corresponden los DTE. Balanceo de ESPECIFICACIONES DE PROCESO CON EL DFD y el DD Cada referencia de un dato en las especificaciones de proceso debe seguir una de las siguientes reglas: • Coincide con el nombre de un flujo de datos o almacén conectado a la burbuja descripta por la especificación de procesos, o • Es un terminador local, definido explícitamente en la especificación de proceso, o • Aparece como componente en una entrada del diccionario de datos par un flujo o almacén conectado con la burbuja. 22 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Balanceo del DD con el DFD y las ESPECIFICACIONES DEL PROCESO El DD es consistente si obedece la siguiente regla: • Cada entrada del diccionario de datos debe tener referencias en una especificación de proceso, un DFD, u otro DD. Balanceo del DER con el DFD y las ESPECIFICACIONES DE PROCESO El DER tiene una visión muy distinta que el DFD, pero deben darse una serie de relaciones para que el sistema sea global, completo, correcto y consistente: • Cada almacén del DFD debe corresponder con un tipo de objeto, una relación o una combinación de un tipo y una relación, es decir un tipo asociativo de objeto, en el DER. • Los nombres de objetos en el DER y los nombres de almacenes de datos en el DFD deben coincidir. • Las entradas del diccionario de datos deben aplicarse tanto al modelo del DFD como al de DER. Las reglas que aseguran que el DER sea consistente con la porción de especificaciones de proceso del modelo orientado a las funciones son: que el conjunto combinado de todas las especificaciones de proceso deben en su totalidad: Crear y eliminar instancias de cada tipo de objeto y relación que se muestra en el DER. Alguna burbuja del DFD define valores para cada dato asignado a cada instancia de cada tipo de objeto, y de algún proceso del DFD usa o lee valores de cada dato. Balanceo del DFD y el DTE Las reglas son: • Cada burbuja de control del DFD se asocia con un DTE como su especificación de proceso, de manera similar cada DTE en el modelo global del sistema debe asociarse con una burbuja o proceso de control del DFD. • Cada condición del DTE debe corresponder con un flujo de datos de entrada al proceso de control asociado con el DTE. (y al revés). • Cada acción en el DTE debe corresponder con un flujo de control de salida del proceso de control asociado con dicho diagrama. (y al revés). 23 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS HERRAMIENTAS ADICIONALES DE MODELADO Las herramientas de modelado deben ser suficientes para cualquier proyecto en el que trabaje. Sin embargo, debe también familiarizarse con algunas herramientas adicionales, que pueden ser las siguientes: • • • • • Diagrama de flujo y sus variantes. Diagrama de flujo de sistema. Diagramas HIPO y diagramas de estructura. Variantes de los diagramas de flujo de datos. Variantes de los diagramas de entidad-relación. Diagrama de flujo y sus variantes El diagrama clásico de flujo Es una de las primeras y más conocidas de las herramientas. Este tiene componentes como: El cuadro, que representa una instrucción ejecutable o una secuencia contigua de instrucciones de la computadora. El rombo representa una decisión. Las flechas que conectan los cuadros representan los flujos de control. Como puede verse, el diagrama de flujo permite representar gráficamente la lógica de procedimiento de un programa de computadora. Variantes de los diagramas de flujo Existen variantes que se deben conocer: • • • • Diagrama de Nassi-Shneiderman Diagrama de Ferstl Diagrama de Hamilton-Zeldin Diagrama de análisis de problemas Diagramas de Nassi-Shneiderman (diagramas de Chapin) Se introdujeron como forma de obligar a un enfoque estricto de programación estructurada. Es fácil de leer. Se podría argumentar que los diagramas de Nassi-Shneiderman son sólo declaraciones del lenguaje estructurado encerradas en cuadros. 24 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Obtener registro maestro Obtener registro de transacciones HACER MIENTRAS haya más transacciones O haya más registros maestros ¿maestro=transacción? Verdadero Falso Actualizar maestro Maestro < transacción Escribir maestro verdadero Falso Obtener nuevo maestro Escribir Imprimir error maestro Obtener nuevas Obtener Obtener transacciones maestro transacciones Cerrar archivo maestro Cerrar archivo de transacciones Diagrama de Ferstl En él se proporciona una descripción completa. Además de mostrar la lógica normal y secuencial del programa, el diagrama de Ferstl puede Intercambiar usarse para mostrar procesos en paralelo ARTÍCULOS NEXCH=NEXCH+1 NEXCH=0 ARTÍCULO (I) >ARTÍCULO (I+1) Ordenar arreglos de artículos NEXCH=0 I=número De ARTÍCULOS Menos 1 Diagrama de Hamilton-Zeldin Los rectángulos tienen el mismo significado que los diagramas de flujo ANSI: una declaración ejecutable o un grupo de declaraciones ejecutables contiguas. Un pentágono alargado se usa para mostrar tanto las declaraciones SI como las iteraciones HACER-MIENTRAS/ REPITE-HASTA. Diagramas de análisis de problemas (PAD) Son una representación bidimensional y arborescente de la lógica de programas. Los PAD se leen de arriba abajo, y las construcciones SI se muestran de izquierda a derecha. Un PAD también puede mostrar procesos en paralelo, también usa una combinación de despliegue vertical de flujo secuencial con despliegue horizontal de niveles. 25 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS INGENIERÍA DEL SOFTWARE El desarrollo de sistemas de software complejos no es una actividad trivial, que pueda abordarse sin una preparación previa. El considerar que un proyecto de desarrollo de software podía abordarse como cualquier otro ha llevado a una serie de problemas que limitan nuestra capacidad de aprovechar los recursos que el hardware pone a nuestra disposición. Los problemas tradicionales en el desarrollo de software no van a desaparecer de la noche a la mañana, pero identificarlos y conocer sus causas es el único método que nos puede llevar hacia su solución. No existe una fórmula mágica para solucionar estos problemas, pero combinando métodos aplicables a cada una de las fases del desarrollo de software, construyendo herramientas para automatizar estos métodos, utilizando técnicas para garantizar la calidad de los productos desarrollados y coordinando todas las personas involucradas en el desarrollo de un proyecto, podremos avanzar mucho en la solución de estos problemas. De ello se encarga la disciplina llamada Ingeniería del Software. Una de las primeras definiciones que se dio de la ingeniería del software es la siguiente: El establecimiento y uso de principios de ingeniería robustos, orientados a obtener software económico, que sea fiable y funcione de manera eficiente sobre máquinas reales. La ingeniería del software abarca un conjunto de tres elementos clave: métodos, herramientas y procedimientos, que faciliten al gestor el control el proceso de desarrollo y suministren a los implementadores bases para construir de forma productiva software de alta calidad. Los métodos indican cómo construir técnicamente el software, y abarcan una amplia serie de tareas que incluyen la planificación y estimación de proyectos, el análisis de requisitos, el diseño de estructuras de datos, programas y procedimientos, la codificación, las pruebas y el mantenimiento. Los métodos introducen frecuentemente una notación específica para la tarea en cuestión y una serie de criterios de calidad. Las herramientas proporcionan un soporte automático o semiautomático para utilizar los métodos. Existen herramientas automatizadas para cada una de las fases vistas anteriormente, y sistemas que integran las herramientas de cada fase de forma que sirven para todo el proceso de desarrollo. Estas herramientas se denominan CASE (Computer Assisted Software Engineering). Los procedimientos definen la secuencia en que se aplican los métodos, los documentos que se requieren, los controles que permiten asegurar la calidad y las directrices que permiten a los gestores evaluar los progresos. 26 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Concepto de ciclo de vida. Por ciclo de vida, se entiende la sucesión de etapas por las que pasa el software desde que un nuevo proyecto es concebido hasta que se deja de usar. Cada una de estas etapas lleva asociada una serie de tareas que deben realizarse, y una serie de documentos (en sentido amplio: software) que serán la salida de cada una de estas fases y servirán de entrada en la fase siguiente. Existen diversos modelos de ciclo de vida, es decir, diversas formas de ver el proceso de desarrollo de software, y cada uno de ellos va asociado a un paradigma de la ingeniería del software, es decir, a una serie de métodos, herramientas y procedimientos que debemos usar a lo largo de un proyecto. En este tema veremos algunos de los principales modelos de ciclo de vida. La elección de un paradigma u otro se realiza de acuerdo con la naturaleza del proyecto y de la aplicación, los métodos a usar y los controles y entregas requeridos. El ciclo de vida en cascada (o ciclo de vida clásico). Este paradigma es el más antiguo de los empleados en la IS y se desarrolló a partir del ciclo convencional de una ingeniería. No hay que olvidar que la IS surgió como copia de otras ingenierías, especialmente de las del hardware, para dar solución a los problemas más comunes que aparecían al desarrollar sistemas de software complejos. Es un ciclo de vida en sentido amplio, que incluye no sólo las etapas de ingeniería sino toda la vida del producto: las pruebas, el uso (la vida útil del software) y el mantenimiento, hasta que llega el momento de sustituirlo. 27 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Ingeniería del Sistema Análisis Diseño Codificación Prueba Utilización Mantenimiento Sustitución El ciclo de vida en cascada exige un enfoque sistemático y secuencial del desarrollo de software, que comienza en el nivel de la ingeniería de sistemas y avanza a través de fases secuenciales sucesivas. Estas fases son las siguientes: Ingeniería y análisis del sistema. El software es siempre parte de un sistema mayor, por lo que siempre va a interrelacionarse con otros elementos, ya sea hardware, máquinas o personas. Por esto, el primer paso del ciclo de vida de un proyecto consiste en un análisis de las características y el comportamiento del sistema del cual el software va a formar parte. En el caso de que queramos construir un sistema nuevo, por ejemplo un sistema de control, deberemos analizar cuáles son los requisitos y la función del sistema, y luego asignaremos un subconjunto de estos requisitos al software. En el caso de un sistema ya existente (supongamos, por ejemplo, que queremos informatizar una empresa) deberemos analizar el funcionamiento de la misma, - las operaciones que se llevan a cabo en ella -, y asignaremos al software aquellas funciones que vamos a automatizar. La ingeniería del sistema comprende, por tanto, los requisitos globales a nivel del sistema, así como una cierta cantidad de análisis y de diseño a nivel superior, es decir sin entrar en mucho detalle. Análisis de requisitos del software. El análisis de requisitos debe ser más detallado para aquellos componentes del sistema que vamos a implementar mediante software. El ingeniero del software debe comprender cuáles son los datos que se van a manejar, cuál va a ser la función que tiene que cumplir el software, cuáles son los interfaces requeridos y cuál es el rendimiento que se espera lograr. Los requisitos, tanto del sistema como del software deben documentarse y revisarse con el cliente. 28 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Diseño. El diseño se aplica a cuatro características distintas del software: la estructura de los datos, la arquitectura de las aplicaciones, la estructura interna de los programas y las interfaces. El diseño es el proceso que traduce los requisitos en una representación del software de forma que pueda conocerse la arquitectura, funcionalidad e incluso la calidad del mismo antes de comenzar la codificación. Al igual que el análisis, el diseño debe documentarse y forma parte de la configuración del software (el control de configuraciones es lo que nos permite realizar cambios en el software de forma controlada y no traumática para el cliente). Codificación. La codificación consiste en la traducción del diseño a un formato que sea legible para la máquina. Si el diseño es lo suficientemente detallado, la codificación es relativamente sencilla, y puede hacerse al menos en parte - de forma automática, usando generadores de código. Podemos observar que estas primeras fases del ciclo de vida consisten básicamente en una traducción: en el análisis del sistema, los requisitos, la función y la estructura de este se traducen a un documento: el análisis del sistema que está formado en parte por diagramas y en parte por descripciones en lenguaje natural. En el análisis de requisitos se profundiza en el estudio del componente software del sistema y esto se traduce a un documento, también formado por diagramas y descripciones en lenguaje natural. En el diseño, los requisitos del software se traducen a una serie de diagramas que representan la estructura del sistema software, de sus datos, de sus programas y de sus interfaces. Por último, en la codificación se traducen estos diagramas de diseño a un lenguaje fuente, que luego se traduce - se compila - para obtener un programa ejecutable. Prueba. Una vez que ya tenemos el programa ejecutable, comienza la fase de pruebas. El objetivo es comprobar que no se hayan producido errores en alguna de las fases de traducción anteriores, especialmente en la codificación. Para ello deben probarse todas las sentencias, no sólo los casos normales y todos los módulos que forman parte del sistema. Utilización. Una vez superada la fase de pruebas, el software se entrega al cliente y comienza la vida útil del mismo. La fase de utilización se solapa con las posteriores - el mantenimiento y la sustitución - y dura hasta que el software, ya reemplazado por otro, deje de utilizarse. Mantenimiento. El software sufrirá cambios a lo largo de su vida útil. Estos cambios pueden ser debidos a tres causas: Que, durante la utilización, el cliente detecte errores en el software: los errores latentes. 29 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Que se produzcan cambios en alguno de los componentes del sistema informático: por ejemplo cambios en la máquina, en el sistema operativo o en los periféricos. Que el cliente requiera modificaciones funcionales (normalmente ampliaciones) no contempladas en el proyecto. En cualquier caso, el mantenimiento supone volver atrás en el ciclo de vida, a las etapas de codificación, diseño o análisis dependiendo de la magnitud del cambio. El modelo en cascada, a pesar de ser lineal, contiene flujos que permiten la vuelta atrás. Así, desde el mantenimiento se vuelve al análisis, el diseño o la codificación, y también desde cualquier fase se puede volver a la anterior si se detectan fallos. Estas vueltas atrás no son controladas, ni quedan explícitas en el modelo, y este es uno de los problemas que presenta este paradigma Sustitución. La vida del software no es ilimitada y cualquier aplicación, por buena que sea, acaba por ser sustituida por otra más amplia, más rápida o más bonita y fácil de usar. La sustitución de un software que está funcionando por otro que acaba de ser desarrollado es una tarea que hay que planificar cuidadosamente y que hay que llevar a cabo de forma organizada. Es conveniente realizarla por fases, si esto es posible, no sustituyendo todas las aplicaciones de golpe, puesto que la sustitución conlleva normalmente un aumento de trabajo para los usuarios, que tienen que acostumbrarse a las nuevas aplicaciones, y también para los implementadores, que tienen que corregir los errores que aparecen. Es necesario hacer un trasvase de la información que maneja el sistema viejo a la estructura y el formato requeridos por el nuevo. Además, es conveniente mantener los dos sistemas funcionando en paralelo durante algún tiempo para comprobar que el sistema nuevo funcione correctamente y para asegurarnos el funcionamiento normal de la empresa aún en el caso de que el sistema nuevo falle y tenga que volver a alguna de las fases de desarrollo. La sustitución implica el desarrollo de programas para la interconexión de ambos sistemas, el viejo y el nuevo, y para trasvasar la información entre ambos, evitando la duplicación del trabajo de las personas encargadas del proceso de datos, durante el tiempo en que ambos sistemas funcionen en paralelo. El ciclo de vida en cascada es el paradigma más antiguo, más conocido y más ampliamente usado en la IS. No obstante, ha sufrido diversas críticas, debido a los problemas que se plantean al intentar aplicarlo a determinadas situaciones. Entre estos problemas están: En realidad los proyectos no siguen un ciclo de vida estrictamente secuencial como propone el modelo. Siempre hay iteraciones. El ejemplo más típico es la fase de mantenimiento, que implica siempre volver a alguna de las fases anteriores, pero también es muy frecuente en que una fase, por ejemplo el diseño, se detecten errores que obliguen a volver a la fase anterior, el análisis. Es difícil que se puedan establecer inicialmente todos los requisitos del sistema. Normalmente los clientes no tienen conocimiento de la 30 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS importancia de la fase de análisis o bien no han pensado en todo detalle que es lo que quieren que haga el software. Los requisitos se van aclarando y refinando a lo largo de todo el proyecto, según se plantean dudas concretas en el diseño o la codificación. Sin embargo, el ciclo de vida clásico requiere la definición inicial de todos los requisitos y no es fácil acomodar en él las incertidumbres que suelen existir al comienzo de todos los proyectos. Hasta que se llega a la fase final del desarrollo: la codificación, no se dispone de una versión operativa del programa. Como la mayor parte de los errores se detectan cuando el cliente puede probar el programa no se detectan hasta el final del proyecto, cuando son más costosos de corregir y más prisa (y más presiones) hay por que el programa se ponga definitivamente en marcha. Todos estos problemas son reales, pero de todas formas es mucho mejor desarrollar software siguiendo el modelo de ciclo de vida en cascada que hacerlo sin ningún tipo de guías. Además, este modelo describe una serie de pasos genéricos que son aplicables a cualquier otro paradigma, refiriéndose la mayor parte de las críticas que recibe a su carácter secuencial. 31 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS HERRAMIENTAS CASE Para el desarrollo de sistemas, es decir: análisis, diseño e implementación de los sistemas de información los analistas de sistemas deben ser organizados, precisos y completar todo aquello que realicen. Para ello, en los últimos años han comenzado a utilizar herramientas de productividad creadas específicamente para mejorar sus tareas de rutina. A estos elementos se los denominan: “Tecnologías de Ambientes Integrados” también conocidos como Instrumentos C.A.S.E. (Computer Aided Software Engineering Tools). Los tres principales objetivos que el analista sigue al adoptar las tecnologías de ambiente integrados son: • Incrementar la productividad. • Comunicarse con mayor eficacia con los usuarios. • Integrar las actividades del Ciclo de Vida de Desarrollo de Sistemas, desde el principio hasta el final del ciclo. Incrementar la Productividad: Medir la productividad de un analista no es sencilla, en especial a corto plazo. Entonces mientras que las actividades del ciclo de vida se encuentren en progreso, puede medirse la productividad de los analistas examinando y comparando el tiempo requerido o programado para cada conjunto de actividades de un proyecto con el tiempo que realmente está invirtiendo el analista a través de la utilización de herramientas C.A.S.E. En consecuencia, cuando hablamos de la productividad, estamos hablando de una mejora medible en cantidad y calidad de los resultados que obtiene el analista con la ayuda de nuevas tecnologías, comparada con lo que pudiera haber ocurrido posiblemente con métodos alternativos. Por ejemplo, el Excelerator permite que el analista (o quien lo use) dibuje y modifique con facilidad los diagramas. Así el analista puede ser más productivo reduciendo el tiempo de dibujo manual como las repetidas correcciones que se realizan a los diagramas. Por otro lado, un paquete de instrumentos tal como el Excelerator también mejora la productividad de grupo, ya que permite que los analistas compartan sin contratiempos el trabajo con otros miembros del grupo. Los Instrumentos C.A.S.E. facilitan la interacción entre los miembros del grupo al permitir que la elaboración de diagramas sea un proceso dinámico e imperativo y proveen un registro del cambio de opinión de los grupos, con base en los diagramas de flujo. 32 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Mejoramiento de la Comunicación Analista-Usuario: Con el fin de que el sistema propuesto llegue a utilizarse, es esencial que exista una comunicación excelente entre analistas y los usuarios a lo largo del ciclo de desarrollo de sistemas. Y la forma en que los analistas pueden mejorar su comunicación con los usuarios es mediante el uso de diagramas generados por computadoras. Con el uso de pantallas los clientes pueden ver cómo los DFD u otros diagramas fueron concebidos o creados. Al observarlos pueden solicitar correcciones o cambios. Esto último podría requerir mucho más tiempo que por medio de un sistema manual porque las tareas manuales de dibujar, reproducir y distribuir toman mucho menos tiempo, pero tal forma no puede compartirse abiertamente con los usuarios. Integración de las Actividades del Ciclo de Vida: Las actividades de integración son importantes porque capacitan el analista para que pueda comprender lo que se encuentra dentro de la perspectiva del sistema. Esto le ayuda a asimilar adecuadamente un problema, como así también auxiliarlo a percatarse el impacto que genere cualquier cambio en el desarrollo del sistema. Las Herramientas C.A.S.E. son especialmente útiles cuando hay la necesidad de realizar iteraciones o repeticiones de retroalimentación y modificación a lo largo de una etapa particular del ciclo de vida. Etapas del Ciclo de Desarrollo de Instrumento CASE en cada una Sistemas. de las Etapas. Identificación de problemas, oportunidades y objetivos. Determinación de los requerimientos de información Inicio de la elaboración de diagramas del plan de proyecto. Organiza las actividades de captura de datos mediante el uso de prototipos. Análisis de las necesidades del Dibuja diagramas de flujo de sistema. datos, desarrollo del diccionario de datos. Diseño del Sistema Elabora pantallas e informes. recomendado. Desarrollo y documentación de Construye diagramas de software. estructuras y transfiere datos del diccionario de datos al código del programador. Pruebas y mantenimiento del Genera datos de prueba y sistema. verifica los datos de las pruebas. Implementación y evaluación del Uso de software de sistema. administración de proyectos para la evaluación. 33 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS El compromiso del usuario es sumamente importante durante todas las etapas. La integración de actividades a través del uso de las tecnologías de ambiente integrado también mejora la comprensión de los usuarios sobre cómo se encuentran relacionadas cada una de las etapas del ciclo de vida, así como su interdependencia. COMPONENTES DE CASE En general, las herramientas de tipo CASE incluyen los siguientes cinco componentes: herramientas pata diagramación, un depósito de información, generadores de interfases, generadores de código y herramientas de administración. Las actividades de alto nivel reciben la mayor importancia, aunque ya están apareciendo generadores de código de bajo nivel. Herramientas Para Diagramación. Las herramientas para diagramación dan soporte al análisis y documentación de los requerimientos de una aplicación. Por lo general, incluyen facilidades para producir diagramas de flujo de datos. Como el lector ya sabe, estas herramientas de alto nivel son esenciales para brindar apoyo a la metodología de análisis estructurado. Las herramientas CASE incorporan, de manera extensa, métodos propios del análisis estructurado. Estas herramientas ofrecen la capacidad de dibujar diagramas y cartas, además de guardar los detalles en forma interna. Cuando es necesario realizar cambios, la naturaleza de éstos se describe en el sistema, el cual puede entonces volver a dibujar todo el diagrama de manera automática. La capacidad para cambiar y volver a dibujar elimina una actividad que los analistas encuentran tediosa y poco deseable. Depósito Centralizado De Información. La captura, análisis, procesamiento y distribución de todos los sistemas de información es asistida por un depósito de información centralizado o diccionario de datos.(Se hará un uso intercambiable de los términos depósito de información y diccionario de datos, aunque los vendedores quizá utilicen uno u otro cuando anuncian sus productos.) El diccionario contiene detalles sobre los componentes del sistema, tales como datos, flujo de datos y procesos; asimismo, también incluye información que describe el volumen y frecuencia de cada una de las actividades. Aunque los diccionarios son diseñados para que el acceso a la información sea sencillo, también incluyen controles y medidas de protección que preservan la exactitud y consistencia de los detalles del sistema. El uso de: • Niveles de autorización, • Validación de procesos y • Procedimientos para verificar la consistencia de las descripciones, asegura que el acceso a las definiciones y las revisiones hechas a ellas en el depósito de información, ocurran 34 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS en forma apropiada establecidos. y acorde con procedimientos ya • Generador de Interfases. Las interfases con el sistema son los medios que permiten a los usuarios interactuar con una aplicación, ya sea para dar entrada a información y datos o para recibir información. Los generadores de interfases ofrecen la capacidad para preparar imitaciones y prototipos para las interfases con los usuarios. Por lo general, soportan la rápida creación de menús de demostración para el sistema, de pantallas de presentación y del formato de los informes. Los generadores de interfases son un elemento importante para el desarrollo de prototipos de aplicación, aunque también son de utilidad para los demás métodos de desarrollo. Generadores de Código. Los generadores de código automatizan la preparación de software. Estos incorporan métodos que permiten convertir las especificaciones del sistema en código ejecutable. La generación de código aún no ha sido perfeccionada. Los mejores generadores de código producen aproximadamente el 75% del código fuente de una aplicación. El resto debe ser escrito por los programadores. La codificación manual, que es el nombre que recibe este proceso, sigue siendo necesaria. Dado que las herramientas CASE son de propósito general, es decir no están limitadas a ciertas áreas especificas de aplicación como el control de procesos de manufactura, análisis de portafolios de Inversiones o administración de cuentas, resulta que el desafío le automatizar el proceso de generación de software es sustancial. Los mayores beneficios se obtienen cuando los generadores de código se encuentran integrados con un depósito central de información. Esta combinación alcanza el objetivo de crear un código que pueda volverse a emplear. Cuando las especificaciones cambian, se puede volver a generar el código al alimentar los detalles del diccionario de datos a través del generador de código. El contenido del diccionario puede emplearse de nuevo para preparar el código ejecutable. Herramientas de Administración. Los sistemas CASE también ayudan a los gerentes de proyecto a mantener la efectividad y eficiencia de todo el proceso de desarrollo de una aplicación. Este componente de CASE ayuda a los gerentes de desarrollo a calendarizar las actividades de análisis y diseño así como la asignación de recursos alas diferentes actividades del proyecto. Por ejemplo, algunos sistemas CASE soportan el seguimiento de los tiempos de desarrollo de un proyecto y los comparan con los ya planificados; también realizan la misma labor con la asignación de 35 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS tareas específicas al personal. Los calendarios e informes pueden preparase utilizando para ello los detalles contenidos en el diccionario de datos. Algunas herramientas CASE para administración permiten que los gerentes de proyecto especifiquen elementos de su propia elección. Por ejemplo, ellos pueden seleccionar los símbolos gráficos que desean para describir procesos, personas, departamentos, etc. Otros permiten definir metodologías de desarrollo propias, incluyendo las reglas de validación y los estándares para datos y nombres de procedimientos. Sin embargo, la mayor parte de los sistemas CASE depende en gran medida de la notación, principios y prácticas del método de análisis estructurado. Como cualquier tecnología nueva, la adopción de las herramientas C.A.S.E. tiene Ventajas y Desventajas. Beneficios de Usar Herramientas CASE. Facilidad para la revisión de aplicaciones: La experiencia muestra que una vez que las aplicaciones se implantan, se emplean por mucho tiempo. Las herramientas CASE proporcionan un beneficio substancial para las organizaciones al facilitar la revisión de las aplicaciones. Contar con un depósito central, agiliza el proceso de revisión ya que éste proporciona bases para las definiciones y estándares para los datos. Las capacidades de generación interna, si se encuentran presentes, contribuyen a modificar el sistema por medio de cambios en las especificaciones más que por ajustes al código fuente. Soporte para el desarrollo de prototipos de sistemas: En general, el desarrollo de prototipos de aplicaciones toma varias formas. En ocasiones se desarrollan diseños para pantallas y reportes con la finalidad de mostrar la organización y composición de datos, encabezados y mensajes. Los ajustes necesarios al diseño se hacen con rapidez para alterar la presentación y las características de la interaface. Sin embargo, no se prepara el código fuente, de naturaleza orientada hacia procedimientos, como una parte del prototipo. Como disyuntiva, el desarrollo de prototipos puede producir un sistema que funcione. Las características de entrada y salida son desarrollados junto con el código orientado hacia los procedimientos y los archivos de datos. Muchas herramientas CASE soportan las primeras etapas del desarrollo de un prototipo. Muy pocas brindan apoyo durante todo el proceso de desarrollo del prototipo. Las que proporcionan la capacidad para generar el código soportan de hecho todo el proceso, ya que el código puede ser generado al inducir la actividad de generación después de cambiar las especificaciones o requerimientos. Generación de Código: Como ya se mencionó, algunas herramientas CASE tienen la capacidad de producir el código fuente. La ventaja más visible de esta característica es la disminución del tiempo necesario para preparar un programa. Sin embargo, la generación del código también asegura una estructura estándar y consistente para el 36 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS programa (lo que tiene gran influencia en el mantenimiento) y disminuye la ocurrencia de varios tipos de errores, mejorando de esta manera la calidad. Las características de la generación del código permiten volver a utilizar el software y las estructuras estándares para generar dicho código, así como el cambio de una especificación modular, lo que significa volver a generar el código y los enlaces con otros módulos. Ninguna de las herramientas que existen en el presente es capaz de generar un código completo en todos los dominios. Mejora en la habilidad para satisfacer los requerimientos del usuario: Es bien conocida la importancia de 'satisfacer los requerimientos del usuario, ya que esto guarda relación con el éxito del sistema. De manera similar, tener los requerimientos correctos mejora la calidad de las prácticas de desarrollo. Parece ser que las herramientas CASE disminuyen el tiempo de desarrollo, una característica que es importante para los usuarios. Las herramientas afectan la naturaleza y cantidad de interacción entre los encargados del desarrollo y el usuario. Las descripciones gráficas y los diagramas, así como los prototipos de reportes y la composición de las pantallas, contribuyen a un intercambio de ideas más efectivo. Soporte iterativo para el proceso de desarrollo: La experiencia ha demostrado que el desarrollo de sistemas es un proceso iterativo. Las herramientas CASE soportan pasos iterativos al eliminar el tedio manual de dibujar diagramas, elaborar catálogos y clasificar. Como resultado de esto, se anticipa que los analistas repasarán y revisarán los detalles del sistema con mayor frecuencia y en forma más consistente. Alcanzar una Ventaja Competitiva: Las Herramientas C.A.S.E. pueden proporcionar un nivel competitivo sobre otros que no los hubieran adoptado o que no hayan capitalizado por completo su potencial en productividad. Es decir, ganarles contratos de proyectos d sistemas a la competencia al demostrar que se tiene una mayor productividad. Estandarización de métodos internos y externos: A través de la estandarización en la elaboración de diagramas, los nuevos analistas de grupo se encuentran capacitados para comprender con rapidez el trabajo que se ha realizado en el sistema. Esto eliminará la necesidad de establecer primero qué técnica de elaboración de diagramas se empleó antes de llegar al contenido. También tienen una ventaja externa, ya que un analista que ha tenido experiencia en el uso de ciertos paquetes de Herramientas C.A.S.E., permitirá que el cliente cuente con una manera fácil de comunicarse. Viendo problemas viejos de nuevas maneras: Una ventaja de la utilización de las Herramientas C.A.S.E. es que crean un nuevo contexto para problemas viejos de tal forma que se estimula la creación de nuevas ideas. Por ejemplo: Cuando los diagramas de flujo pueden elaborarse con rapidez y luego corregirse, es más fácil comparar la conceptualización de los flujos de datos que se tenían con 37 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS anterioridad. Este tipo de tormenta de ideas gráficas sirve como catalizador para la creación de nuevas ideas. Adopción de la automatización como rutina: Cuando los analistas adoptan las Herramientas C.A.S.E. dan una gran paso hacia el mejoramiento de su credibilidad con sus clientes, ya que el analista muestra con su ejemplo que la automatización le confiere beneficios a los usuarios. E l uso de las Herramientas C.A.S.E. también sensibiliza a los analistas sobre los problemas que enfrentan los usuarios al tratar de utilizar instrumentos automatizados. Desventajas. Las herramientas CASE tienen puntos débiles significativos, que van desde la contabilidad en los métodos estructurados hasta su alcance limitado, los cuales amenazan con minar los beneficios potenciales descritos con anterioridad. Confiabilidad en los métodos estructurados. Muchas herramientas CASE están construidas teniendo corno base las metodologías del análisis estructurado y del ciclo de vida de desarrollo de sistemas. Por si sola, esta característica puede convertirse en la principal limitante ya que no todas las organizaciones emplean métodos de análisis estructurado. Los métodos estructurados, introducidos en la década de los setentas, fueron muy elogiados por su habilidad para mejorar la exactitud de los requerimientos específicos de las aplicaciones. El nivel de conocimiento de los métodos estructurados es alto entre los profesionales de sistemas de información de acuerdo con algunas estimaciones (Yourdon), casi el 90% de todos los analistas está familiarizado con estos métodos. Aproximadamente la mitad de todas las organizaciones en Estados Unidos han utilizado alguna vez estos métodos. A pesar de lo anterior, si la organización o el analista no utilizan los métodos propios del análisis estructurado y tampoco desean considerar su uso, entonces el valor de CASE disminuye. En algunos casos, los analistas evitan del todo emplear herramientas CASE. Falta de niveles estándar para el soporte de la metodología. Aún no aparece un conjunto "estándar" de herramientas CASE, Por tanto, se debe tener precaución al seleccionar una herramienta de este tipo. Existen dos significados para las palabras "soporte de la metodología". Una herramienta puede 1)dar soporte a los diagramas que emplea una metodología o 2) soportarlos e imponer la metodología, sus reglas y sus procesos. 38 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Las herramientas CASE que existen en el presente, tienen una de las siguientes características: • Son independientes de la metodología • Permiten que los usuarios definas sus propias metodologías, reglas y estándares • Soportan una metodología • Soportan las metodologías más diseminadas En todas ellas existen ciertos compromisos. Las herramientas que son independientes de la metodología, no pueden fomentar el uso de las reglas y estándares de la misma. Estas herramientas quizá proporcionen los componentes de una metodología (por ejemplo, diagramas de flujo de datos, un diccionario de datos y facilidades para la descripción de procesos), pero no el marco de referencia, reglas y procedimientos que en realidad constituyen el núcleo de la metodología. Aunque se pueden llevar a cabo acciones básicas para la validación de diseños y diagramas para detectar componentes faltantes, éstas son sólo funciones mecánicas. Por otra parte, esta clase de herramientas no puede proporcionar ayuda metodológica o pedir al usuario que realice tareas necesarias para la metodología que aún están sin terminar. Estas herramientas mejoran la productividad al efectuar tareas tediosas y de documentación, aunque ellas no puedan asegurar buenos resultados. Desde el punto de vista funcional, las capacidades que brindan para garantizar la calidad son mínimas. Las herramientas que proporcionan un soporte limitado a una sola metodología pueden forzar el uso riguroso de reglas, procedimientos y estándares de ésta; además brindan ayuda sensible al contexto y bases de conocimiento que ofrecen asistencia experta. Sin embargo, entre más metodologías soporte una herramienta, existe la posibilidad cada vez mayor de que la seguridad y ayuda que ésta ofrece sea menor. Conflictos en el uso de los diagramas. Las herramientas difieren en el uso que hacen de los diagramas. Algunas son herramientas exclusivamente para gráficas, que se abocan al dibujo de diagramas para el análisis de entrada y salida de datos. Este tipo de herramientas pueden restringir ya sea el proceso de desarrollo normal seguido por una organización o el estilo particular de trabajo de los analistas. Otros vendedores de herramientas consideran los diagramas como documentación y aceptan entradas por medio de formas o lenguajes de especificación y, en ocasiones, en forma gráfica. Por tanto, se debe tener cuidado cuando se selecciona una herramienta para apoyar los métodos existentes dentro de una organización. 39 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS Diagramas no utilizados. En general, los productos CASE emplean gráficas para modelar y generar informes sobre el análisis y desarrollo durante todo el proceso de desarrollo de sistemas. Una de las afirmaciones de los vendedores de herramientas es que las presentaciones gráficas y la documentación mejoran la comunicación entre los miembros del equipo de desarrollo, propician una calidad mayor de la entrada proporcionada por el cliente y mejoran la productividad de desarrollo de software. Sin embargo, los investigadores han encontrado que, en algunos casos, las herramientas gráficas, automatizados o manuales, no se emplean del todo. 0 tal vez no se utilicen en la forma en que deberían emplearse. Por otra parte, algunos analistas prefieren para algunas tareas un lenguaje estructurado o descriptivo. Muchos profesionales de los sistemas de información no hacen uso de herramientas gráficas en el desarrollo de software; más bien las emplean para automatizar la producción de informes y documentación del sistema, como los diagramas de flujo utilizados por los programadores para documentar un programa una vez terminado éste. Función limitada. Aunque una herramienta puede apoyar varias fases del ciclo de vida de desarrollo de sistemas o adaptarse a diferentes metodologías de desarrollo, por lo general su enfoque primario está dirigido hacia una fase o método específico. Por ejemplo, los encargados de desarrollar un nuevo producto pueden afirmar que éste apoya todo el proceso de análisis y diseño. Sin embargo, las capacidades de comprobación y verificación de errores del producto quizá sean más rigurosas ya sea en el área de análisis o en la de diseño, pero no en ambas. Algunos productos están dirigidos hacia el diseño de bases de datos para la organización y al desarrollo de aplicaciones que giren en torno a la base de datos, omitiendo el soporte para pantallas de presentación visual, los informes sobre requerimientos o las necesidades de seguridad. Algunos productos capaces de generar el código hacen mayor hincapié en el desarrollo de prototipos como el principal método de desarrollo de sistemas de información. Muchas herramientas para la fase de desarrollo recalcan el mantenimiento y la reestructuración del código, pero ofrecen un soporte débil durante la fase de análisis para la determinación y especificación de requerimientos. Alcance limitado. Aunque muchas herramientas basadas en computadora incluyen la capacidad de verificar las especificaciones para determinar su completez o consistencia, virtualmente no llevan a cabo ningún análisis de los requerimientos de la aplicación. Por tanto, el alcance de las actividades de desarrollo asociado con las herramientas existentes es bastante limitado. La mayor parte de productos CASE describe (documenta) pero no analiza. De poca ayuda es proporcionar una regla de inclusión en los 40 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS mejores enfoques y una regla de exclusión para los que son poco satisfactorios. No ofrecen o evalúan soluciones potenciales para los problemas relacionados con sistemas. Y tampoco existe una garantía clara para que dos analistas que utilicen los mismos métodos aplicados a información idéntica, formulen recomendaciones igualmente aceptables. Las tareas humanas siguen siendo criticas. La tecnología CASE ofrece herramientas que soportan las funciones de modelado, verificación, manejo de datos y de utilería que son necesarias para mejorar la productividad del desarrollo. Sin embargo, las herramientas deben estar en manos de personas con experiencia y deben "adaptarse" a la arquitectura de la información así como a las metodologías de desarrollo utilizadas por la organización. Por otra parte, las actividades criticas no son el desarrollo de gráficas que documenten al sistema existente sino que son aquellas tareas donde las personas interactuan entre sí: determinación y verificación de requerimientos con el usuario. A medida que sean automatizados las funciones de modelado y búsqueda de errores, la responsabilidad del éxito en un sistema de información caerá cada vez más sobre aquellos que especifican los requerimientos de información. Obtener y comprender los requerimientos son tareas realizadas por los seres humanos, y lo más probable es que se continúe de tal forma. Adaptación debido al rezago de integración. Una de las desventajas de la utilización de Instrumentos C.A.S.E. es que el ser relativamente nuevos, en ocasiones quedan cortos en las expectativas que crean. Esto es evidente en su incapacidad para auxiliar a los analistas para cubrir plenamente todas las actividades del ciclo de vida. Al decidir comprar un paquete comercial de automatización la decisión debe incluir la aceptación de que con el fin de integrarlo será necesario un buen esfuerzo de adaptación. Superación de puntos ciegos del desarrollador. Quienes desarrollan este tipo de tecnologías, tienen lagunas en términos de comprender con precisión lo que un analista o programador quisieran al utilizar el software. Por ejemplo: aunque el COBOL es el lenguaje de programación de mayor difusión en los negocios, los instrumentos C.A.S.E. no pueden producir estructuras utilizables por los programadores en COBOL. Cambios de métodos de trabajo. El cambio de tecnología implica también un cambio de los métodos de trabajo. Como se ha visto que la resistencia al cambio es pare de la naturaleza humana, nunca será fácil dejar atrás un antiguo método de trabajo por otro nuevo, incluso si los beneficios son claros a un nivel intelectual. 41 UNIDAD VI – METODOLOGIA ESTRUCTURADA DE DESARROLLO DE SISTEMAS La inversión en paquetes comerciales costosos. Los costos iniciales del software C.A.S.E. pueden ser significativos. Si es empleado por una empresa pequeña u otra que tiene dificultades para obtener utilidades, los costos iniciales de las Herramientas C.A.S.E. le harán reconsiderar su adquisición. Debe ponderarse los incrementos en productividad y para comunicarse mejor con otros analistas y usuarios finales. En general, las herramientas se clasifican en herramientas de alto nivel o “Upper Case”, que hacen referencia a las tareas de análisis y diseño, y herramientas de bajo nivel o “Lower Case”, que son aquellas que apoyan la conversión de los diseños en código para computadora. Las herramientas automatizadas se agrupan en tres categorías: herramientas de tipo front-end, herramientas de tipo back-end y herramientas integrales. Las herramientas de tipo front-end automatizan las primeras tareas del proceso de desarrollo de sistemas, incluidas el análisis de requerimientos y el diseño lógico. A menudo estas herramientas soportan la preparación de modelos gráficos, como diagramas de flujo de datos, que documentan procesos y actividades. Las herramientas de tipo back-end brindan apoyo en la formulación de la lógica del programa, de algoritmos de procesamiento y otros detalles relacionados con el procesamiento por computadora. En algunas ocasiones, estas herramientas se conocen como herramientas de programación asistidas por computadora, ya que ayudan a preparar el software para la computadora y el código del programa. Las herramientas integrales buscan enlazar las actividades de análisis y desarrollo en una forma que automatice todo el proceso de desarrollo de sistemas y, relacionado con esto, la vida de la aplicación. Las especificaciones de alto y bajo nivel clasifican la información recuperada durante las actividades de análisis y diseño. Dado que es común que exista una laguna entre las dos categorías de herramientas, el analista debe enlazar en forma manual las dos actividades. 42