Archive

Archive for the ‘Analisis y Diseño I’ Category

Proceso Unificado de Rational

June 16, 2007 luistejada Leave a comment

Proceso Unificado de Rational

El Proceso Unificado de Rational (RUP, el original inglés Rational Unified Process) es un proceso de desarrollo de software y junto con el Lenguaje Unificado de Modelado UML, constituye la metodología estándar más utilizada para el análisis, implementación y documentación de sistemas orientados a objetos. RUP fue creado por Rational software, filial IBM. RUP está basado en el seguimiento de una serie de normas o “mejores prácticas” aplicadas a cuatro etapas del desarrollo software: iniciación, elaboración, construcción y transición.

Características esenciales

Los autores de RUP destacan que el proceso de software propuesto por RUP tiene tres características esenciales: está dirigido por los Casos de Uso, está centrado en la arquitectura, y es iterativo e incremental.

RUP identifica 6 best practices con las que define una forma efectiva de trabajar para los equipos de desarrollo de software.

Gestión de requisitos

RUP brinda una guía para encontrar, organizar, documentar, y seguir los cambios de los requisitos funcionales y restricciones. Utiliza una notación de Caso de Uso y escenarios para representar los requisitos.

Desarrollo de software iterativo

Desarrollo del producto mediante iteraciones con hitos bien definidos, en las cuales se repiten las actividades pero con distinto énfasis, según la fase del proyecto.

Desarrollo basado en componentes

La creación de sistemas intensivos en software requiere dividir el sistema en componentes con interfaces bien definidas, que posteriormente serán ensamblados para generar el sistema. Esta característica en un proceso de desarrollo permite que el sistema se vaya creando a medida que se obtienen o se desarrollan sus componentes.

Modelado visual (usando UML)

UML es un lenguaje para visualizar, especificar, construir y documentar los artefactos de un sistema software. Es un estándar de la OMG. Utilizar herramientas de modelado visual facilita la gestión de dichos modelos, permitiendo ocultar o exponer detalles cuando sea necesario. El modelado visual también ayuda a mantener la consistencia entre los artefactos del sistema: requisitos, diseños e implementaciones. En resumen, el modelado visual ayuda a mejorar la capacidad del equipo para gestionar la complejidad del software.

Verificación continua de la calidad

Es importante que la calidad de todos los artefactos se evalúe en varios puntos durante el proceso de desarrollo, especialmente al final de cada iteración. En esta verificación las pruebas juegan un papel fundamental y se integran a lo largo de todo el proceso. Para todos los artefactos no ejecutables las revisiones e inspecciones también deben ser continuas.


Gestión de los cambios

El cambio es un factor de riesgo crítico en los proyectos de software. Los artefactos software cambian no sólo debido a acciones de mantenimiento posteriores a la entrega del producto, sino que durante el proceso de desarrollo, especialmente importantes por su posible impacto son los cambios en los requisitos. Por otra parte, otro gran desafío que debe abordarse es la construcción de software con la participación de múltiples desarrolladores, posiblemente distribuidos geográficamente, trabajando a la vez en una release, y quizás en distintas plataformas. La ausencia de disciplina rápidamente conduciría al caos. La Gestión de Cambios y de Configuración es la disciplina de RUP encargada de este aspecto.

Ciclo de vida.

El ciclo de vida RUP es una implementación del Desarrollo en espiral. Fue creado ensamblando los elementos en secuencias semi-ordenadas. El ciclo de vida organiza las tareas en fases e iteraciones.

El RUP divide el proceso de desarrollo en ciclos, teniendo un producto final al final de cada ciclo, cada ciclo se divide en fases que finalizan con un hito donde se debe tomar una decisión importante:

 

  • Concepción: se hace un plan de fases, se identifican los principales casos de uso y se identifican los riesgos
  • Elaboración: se hace un plan de proyecto, se completan los casos de uso y se eliminan los riesgos
  • Construcción: se concentra en la elaboración de un producto totalmente operativo y eficiente y el manual de usuario
  • Implementación: se Instala el producto en el cliente y se entrena a los usuarios. Como consecuencia de esto suelen surgir nuevos requisitos a ser analizados.

La duración y esfuerzo dedicado en cada fase es variable dependiendo de las características del proyecto.

Concepcion

Elaboración

Construcción

Implementacion

El Proceso Unificado se enfocn en la arquitectura como el centro del desarrollo para asegurar que el desarrollo basado en componentes sea clave para un alto nivel de reuso. Se considera que hay cuatro perspectivas de arquitectura que cumplen los requerimientos de una empresa:

  • Arquitectura de Negocios – Describe como opera un negocio. Desarrolla una imagen clara de los procesos de flujo de trabajo de la organización y de cómo son apoyados por una infraestructura tecnológica basada en servicios.
  • Arquitectura de Aplicación – Adopta un modelo de aplicación de toda la empresa para diseñar y desarrollar sistemas de negocios que puedan compartir un conjunto de componentes back-end de alto valor.
  • Arquitectura de Información – Define qué información es necesaria para apoyar el proceso de negocios y como poner esa información eficientemente en manos de quienes que la necesitan sin crear islas de datos inaccesibles ni sistemas redundantes.
  • Arquitectura Tecnológica – Define los estándares y guías para la adquisición y despliegue de herramientas, bloques de construcción de aplicaciones, servicios de infraestructura, componentes de conectividad de red y plataformas cliente servidor.

El Proceso Unificado es un proceso porque “define quién está haciendo qué, cuándo lo hacer y cómo alcanzar cierto objetivo, en este caso el desarrollo de software”. Los conceptos clave del Proceso Unificado son:

Fase e iteraciones

¿Cuándo se hace?

Flujos de trabajo de procesos (actividades y pasos)

¿Qué se está haciendo?

Artefactos (modelos, reportes, documentos)

¿Qué se produjo?

Trabajador: un arquitecto

¿Quién lo hace?)

Una configuración RUP para proyecto pequeño

 

En este apartado se describe una posible configuración de RUP para un proyecto pequeño. Por las características del proyecto, se han incluido muy pocos artefactos, roles y actividades de la metodología, manteniendo los más esenciales. Dicha configuración está basada en la siguiente selección de artefactos:

Entregables del proyecto

A continuación se describen brevemente cada uno de los artefactos que se generarán y usarán durante el proyecto.

 

1. Flujos de Trabajo

Se utilizarán Diagramas de Actividad para modelar los Flujos de Trabajo (workflows) del área problema, tanto los actuales (previos a la implantación de nuevo sistema) como los propuestos, que serán soportados por el sistema desarrollado.

2. Características del Producto Software

Es una lista de las características principales del producto, deseables desde una perspectiva de las necesidades del cliente.

3. Glosario

Es un documento que define los principales términos usados en el proyecto. Permite establecer una terminología consensuada.

4. Modelo de Casos de Uso

El modelo de Casos de Uso presenta la funcionalidad del sistema y los actores que hacen uso de ella. Se representa mediante Diagramas de Casos de Uso.

5. Especificaciones de Casos de Uso

Para los casos de uso que lo requieran (cuya funcionalidad no sea evidente o que no baste con una simple descripción narrativa) se realiza una descripción detallada utilizando una plantilla de documento, donde se incluyen: precondiciones, postcondiciones, flujo de eventos, requisitos no-funcionales asociados.

6. Modelo de Análisis y Diseño

Este modelo establece la realización de los casos de uso en clases y pasando desde una representación en términos de análisis (sin incluir aspectos de implementación) hacia una de diseño (incluyendo una orientación hacia el entorno de implementación). Está constituido esencialmente por un Diagrama de Clases y algunos Diagramas de Estados para las clases que lo requieran.

7. Modelo Lógico Relacional

Previendo que la persistencia de la información del sistema será soportada por una base de datos relacional, este modelo describe la representación lógica de los datos persistentes, de acuerdo con el enfoque para modelado relacional de datos. Para expresar este modelo se utiliza un Diagrama de Tablas donde se muestran las tablas, claves, etc.

8. Modelo de Implementación

Este modelo es una colección de componentes y los subsistemas que los contienen. Estos componentes incluyen: ficheros ejecutables, ficheros de código fuente, y todo otro tipo de ficheros necesarios para la implantación y despliegue del sistema.

9. Modelo de Pruebas

Para cada Caso de Uso se establecen pruebas de Aceptación que validarán la correcta implementación del Caso de Uso. Cada prueba es especificada mediante un documento que establece las condiciones de ejecución, las entradas de la prueba, y los resultados esperados.

10. Manual de Instalación

Este documento incluye las instrucciones para realizar la instalación del producto.

11. Material de Usuario

Corresponde a un conjunto de documentos y facilidades de uso del sistema.

12. Producto

Todos los ficheros fuente y ejecutable del producto.

Categories: Analisis y Diseño I

Herramientas asistidas por computadora para el desarrollo de sistemas

May 29, 2007 luistejada 1 comment

Tema 6.
Herramientas asistidas por computadora para el desarrollo de sistemas.

Una herramienta es cualquier dispositivo que, cuando se emplea en forma apropiada, mejora el desempeño de una tarea.

Importancia de las herramientas en el desarrollo de sistemas.

• Mejora la productividad del analista
• Mejora la eficiencia
• Mejora la calidad del sistema de información

Mejora la productividad.

Se pueden realizar las mismas actividades de desarrollo en un tiempo mejor que el que se necesita cuando no se utilizan las herramientas.

El uso de herramientas contribuye a mejorar la calidad de la productividad de una tarea.

Ejemplo: A un carpintero se le hiciera más difícil poner los clavos con piedras o palos en lugar de usar un martillo.

Las herramientas aumentan la productividad del analista al disminuirla cantidad de tiempo necesario para documentar, analizar y desarrollar sistemas de información.

Mejora la eficiencia.

Las herramientas ayudan a mejorar la forma en que se va a realizar una tarea.

Ejemplo: Para poner un tornillo no se utilizaría el martillo, se buscaría una herramienta que le permita realizar esta tarea más eficientemente, en este caso un destornillador.

Las decisiones eficientes con respecto a la herramienta ahorran recursos:
Personal, tiempo y dinero.

Mejora la calidad del sistema de información.

Cuando las herramientas mejoran los procesos, por lo general también ocurre lo mismo con los resultados.

Ejemplo: Cuando los carpinteros acaban una construcción si se utilizaron las herramientas adecuadas, las esquinas tienen ángulos rectos y los marcos de ventana bien hechos.

Beneficios de las herramientas asistidas por computadora.

La automatización mejora los beneficios obtenidos con las herramientas. Disminuye el tiempo necesario para llevar a cabo las tareas, se reduce la intensidad del trabajo, y el seguimiento de todos los procedimientos se lleva a cabo de manera consistente; también se capturan los datos que describen el sistema para tenerlos almacenados en un formato que pueda leer una computadora.

Disminución de tiempo

Las herramientas ayudan a disminuir el tiempo en que se realizan las tareas, todo esto es posible si el analista esta bien entrenado para el uso de la herramienta que se utiliza.

Automatización de tareas tediosas.

Los diagramas de flujo de datos son parte esencial del método de análisis estructurado y es una tarea que consume mucho tiempo. Con herramientas automatizadas esta tarea se vuelve menos tediosa ya que se pueden generar los dibujos a partir de un software.

Garantizar la consistencia de los procedimientos.

Cuando los procedimientos forman parte del software, se realizan de forma mas consistentes, se convierten en una rutina y las reglas se pueden aplicar en forma consistente y exacta.

Clasificación de herramientas automatizadas.

Las herramientas automatizadas se agrupan en tres categorías:

• Front-end
• Back-end
• Integrales

Herramientas de tipo front-end.

Las herramientas de tipo front-end automatizan las primeras actividades del proceso de desarrollo de sistemas: análisis de requerimientos y diseño lógico.

Herramientas de tipo back-end.

Las herramientas de tipo back-end tienen como finalidad ayudar al analista a formular la lógica del programa, los algoritmos de procesamiento y la descripción física de datos, también ayudan a la interacción con los dispositivos (para entrada y salida), etc. Dado que su empleo esta destinado al desarrollo de software, este tipo de herramientas también se conoce como herramientas para programación asistida por computadora.

Herramientas integrales.

Las actividades de análisis abordan los detalles de alto nivel mientras que las actividades de desarrollo dan mayor importancia a los detalles de bajo nivel.

Las especificaciones de alto nivel describen requerimientos del usuario, como entradas, salidas y expectativas de funcionamiento.

Las especificaciones de bajo nivel indican la forma en que serán satisfechos estos requerimientos por medio de detalles que son específicos de la computadora.

Las herramientas integrales proporcionan un ambiente que automatiza tareas clave a lo largo de todo el ciclo de vida de la aplicación, no solo el proceso de desarrollo. Si bien estas herramientas incluyen facilidades para manejar aspectos de análisis y desarrollo, también facilitan el diseño, administración y mantenimiento del código. Asimismo, brindan un ambiente eficiente para crea, almacenar, manipular, administrar y documentar sistemas.

Herramientas asistidas por computadora para la ingeniería de sistemas (CASE).

Las siglas CASE se emplean con bastante frecuencia en la comunidad de sistemas de información para denotar la ingeniería de sistemas asistida por computadora o la ingeniería de software asistida por computadora.

Componentes de CASE.

Las herramientas de tipo CASE incluyen los siguientes cinco componentes:

• Herramientas para diagramación
• Un deposito de información
• Generadores de interfaces
• Generadores de código
• Herramientas de administración

Herramientas para diagramación

Las herramientas para diagramación dan soporte al análisis y documentación de los requerimientos de una aplicación.

Estas herramientas ofrecen la capacidad de dibujar diagramas y cartas, además de guardar los detalles en forma interna.

Deposito 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.

Generador de interfaces

Las interfaces 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.

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.

Herramientas de administración.

Los sistemas CASE ayudan a los gerentes de desarrollo a calendarizar las actividades de análisis y diseño así como la asignación de recursos a las diferentes actividades del proyecto.

Algunas herramientas CASE para administración permiten que los gerentes de proyecto especifiquen elementos de su propia elección.

Integración de herramientas en CASE

CASE incorpora varias herramientas que pueden considerarse por separado, como elementos discretos, o como parte de un sistema, un grupo de herramientas.

La integración de herramientas ocurre en tres formas:

• Creación de una interface para desarrollo uniforme o adaptable
• Proporcionar la facilidad para transferir datos entre las herramientas
• Unir las actividades de desarrollo

Interface uniforme.

Una interface uniforme significa que todas las herramientas en el sistema CASE son actividades de la misma manera y desde un lugar común en el sistema.

Facilidad para la transferencia de datos.

La facilidad para la transferencia de datos significa que los detalles desarrollados con una herramienta pueden estar disponibles para otras.

El diccionario de datos es el elemento crítico que hace posible la transferencia de datos entre las herramientas distintas.
Unir de las actividades de desarrollo.

La facilidad para transferir datos y la unión de las fases de desarrollo se encuentran relacionadas, ya que se pueden utilizar una y otra vez los datos transferidos entre herramientas a través de todo el proceso de desarrollo.

Uso de una herramienta CASE.

Operaciones iniciales

Los sistemas CASE almacenan información por proyecto. Cada aplicación de sistemas de información es considerada como un proyecto.

La información que describe cada aplicación se mantiene por separado de la de otros proyectos.

Menú principal de funciones

El menú principal presenta los nombres de las siete funciones mas importantes de Excelerator: graficas, XLDiccionario, pantallas y reportes, documentación, análisis, interfases y utilerías.

Dibujo de diagramas de flujo de datos.

Cuando se selecciona la función de graficas, aparece otro menú que muestra las opciones disponibles para el analista. Los diagramas de flujo de datos son uno de los muchos tipos de diagramas y cartas disponibles en el menú de graficas.

Diccionario por proyecto.

A medida que se formulan las especificaciones y la documentación, toda la información con respecto al proyecto se acumula en el diccionario de datos que Excelerator mantiene para dicho proyecto.

El diccionario guarda los siguientes tipos de información:

• Registro y elementos.
Detalles de elementos dato y registros.
• Datos
Detalles relacionados con almacenes y flujos de datos, etc. También se incluyen tablas de códigos definidos por el usuario junto con su significado así como el uso de otros nombres (alias).
• Procesos
Procesos, funciones y módulos del sistema.
• Graficas
Diagramas de flujo de datos, graficas estructuradas, diagramas para modelos de datos, diagramas estructurados, diagramas de relación entre entidades y graficas de presentación.
• Pantallas e informes.
Definiciones y composición del diseño de los informes, diseños de pantallas y formas para la entrada de datos. También es posible preparar informes relacionados con la entrada de datos en pantalla.
• Entidades de otro tipo.
Informes de las especificaciones contenidas en el diccionario, listados de entidades, nombres de usuarios y descripciones de documentos.

Pantallas e informes.

El diseño de una pantalla comienza con una pantalla de presentación visual en limpio. Al mover el cursor por toda la pantalla, quizás con las teclas con flechas que aparecen en el teclado, el usuario puede especificar las posiciones donde desea que aparezcan letreros, campos para entradas y salidas, encabezados y títulos.

Herramientas para análisis y documentación

Excelerator ofrece características tales como un conjunto de reportes que validan las descripciones del sistema.

Utilerías.

La información utilizada por el sistema Excelerator se encuentra descrita por las funciones de utilería. Las utilerías proporcionan funciones de respaldo y recuperación. Con ellas es posible copiar o volver a crear una parte do todo el diccionario del proyecto a partir de una copia de respaldo.

Evaluación de CASE.

Beneficios de CASE.

Entre los beneficios ofrecidos por la tecnología CASE se encuentran los siguientes:

• Facilidad para llevar a cabo la tarea de revisión de especificaciones del sistema así como de representaciones graficas (lo que aumenta la posibilidad de realizar la tarea).
• Facilidad para desarrollar prototipos de sistemas por medio de la capacidad para cambiar especificaciones y, por otro lado, para determinar el efecto que sobre el desempeño del sistema tendrían otras alternativas.
• Generación de código.
• Soporte para mantenimiento como resultado de haber guardado las especificaciones del sistema en un depósito central de información.
• Aumentar las posibilidades de satisfacer los requerimientos del usuario.

Facilidad para la revisión de aplicaciones.

Las herramientas CASE proporcionan un beneficio substancial para las organizaciones al facilitar la revisión de las aplicaciones. Contar con un deposito central, agiliza el proceso de revisión ya que este proporciona bases para las definiciones y estándares para los datos.

Soporte para el desarrollo de prototipos de sistemas.

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 ser generado al inducir la actividad de generación después de cambiar las especificaciones o requerimientos.

Generación de código

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. Esto asegura la estructura estándar y consistente para el programa y disminuye la ocurrencia de varios tipos de errores, mejorando de esta manera la calidad.

Mejora en la habilidad para satisfacer los requerimientos del usuario.

Conocer las necesidades de los usuarios es importante en el éxito del sistema ya que mejora la calidad en su desarrollo.

Soporte iterativo para el proceso de desarrollo.

La experiencia ha demostrado que el desarrollo de sistemas es un proceso iterativo. Los analistas repasan y revisan los detalles del sistema con mayor frecuencia y en forma mas consistente.

Debilidades de CASE

Confiabilidad en los métodos estructurados

Muchas herramientas CASE están construidas teniendo como 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.

Falta de niveles estándar para el soporte de la metodología

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 definan sus propias metodologías, reglas y estándares
• Soportan una metodología
• Soportan las metodologías mas diseminadas

Las herramientas que proporcionan un soporte limitado a una sola metodología pueden forzar el uso riguroso de reglas, procedimientos y estándares de esta, además brindan ayuda sensible al contexto y bases de conocimiento que ofrecen asistencia experta. Sin embargo, entre mas metodologías soporte una herramienta, existe la posibilidad cada vez mayor de que la seguridad y ayuda que esta ofrece sea menor.

Conflictos en el uso de los diagramas

Algunas herramientas son exclusivamente para graficas, 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.

Diagramas no utilizados

Los investigadores han encontrado que, en algunos casos, las herramientas graficas, automatizada o manuales, no se emplean del todo. O no se utilizan de la forma en que se deberían utilizar.

Función limitada

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

La mayor parte de productos CASE describe pero no analiza. De poca ayuda es proporcionar una regla de inclusión en los 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 críticas.

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. Pero 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.

Categories: Analisis y Diseño I

Ingenieria de Software

La Ingeniería de software es la rama de la ingeniería que crea y mantiene las aplicaciones de software aplicando tecnologías y prácticas de las ciencias computacionales, manejo de proyectos, ingeniería, el ámbito de la aplicación, y otros campos.

Los ingenieros de software deberán comprometerse a convertir el análisis, especificación, diseño, implementación, pruebas y mantenimiento de software en una profesión respetada y benéfica. De acuerdo a su compromiso con la salud, seguridad y bienestar social, los ingenieros de software deberán sujetarse a los ocho principios siguientes:

  1. Sociedad. Los ingenieros de software actuarán en forma congruente con el interés social.
  2. Cliente. y empresario. Los ingenieros de software actuarán de manera que se concilien los mejores intereses de sus clientes y empresarios, congruentemente con el interés social.
  3. Producto. Los ingenieros de software asegurarán que sus productos y modificaciones correspondientes cumplen los estándares profesionales más altos posibles.
  4. Juicio. Los ingenieros de software mantendrán integridad e independencia en su juicio profesional.
  5. Administración. Los ingenieros de software gerentes y líderes promoverán y se suscribirán a un enfoque ético en la administración del desarrollo y mantenimiento de software.
  6. Profesión. Los ingenieros de software incrementarán la integridad y reputación de la profesión congruentemente con el interés social.
  7. Colegas. Los ingenieros de software apoyarán y serán justos con sus colegas.
  8. Personal. Los ingenieros de software participarán toda su vida en el aprendizaje relacionado con la práctica de su profesión y promoverán un enfoque ético en la práctica de la profesión.

Objetivos de los proyectos de sistemas

Para que los objetivos se cumplan las empresas emprenden proyectos por las siguientes razones: “Las cuatro C “

- Capacidad

Los sistemas de información mejoran esta capacidad en tres formas.

* Aumentan la velocidad de procesamiento.

*Aumento en el volumen.

* Recuperación más rápida de la información.

- Costo

* Vigilancia de los costos.

* Reducción de costos.

- Control

*Mayor seguridad de información.

*Menor margen de error. (mejora de la exactitud y la consistencia)

- Comunicación

* Interconexión. ( aumento en la comunicación)

* Integración de áreas en las empresas.

Categories: Analisis y Diseño I