lunes, 3 de diciembre de 2012

Herramientas CASE

-->
¿Qué son las Herramientas CASE?

Son conjunto de programas y ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los pasos del Ciclo de Vida de desarrollo de un Software. Como es sabido, los estados en el Ciclo de Vida de desarrollo de un Software son: Investigación Preliminar, Análisis, Diseño, Implementación e Instalación.

CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Computadora)

Las Herramientas CASE fueron desarrolladas para automatizar procesos y facilitar las tareas de coordinación de los eventos que necesitan ser mejorados en el ciclo de desarrollo de software. La mejor razón para la creación de estas herramientas fue el incremento en la velocidad de desarrollo de los sistemas. Por esto, las compañías pudieron desarrollar sistemas sin encarar el problema de tener cambios en las necesidades del negocio, antes de finalizar el proceso de desarrollo.

Las herramientas CASE también permiten a los analistas tener más tiempo para el análisis y diseño y minimizar el tiempo para codificar y probar.

La principal ventaja de la utilización de una herramienta CASE, es la mejora de la calidad de los desarrollos realizados y, en segundo término, el aumento de la productividad. La mejora de calidad se consigue reduciendo sustancialmente muchos de los problemas de análisis y diseño, inherentes a los proyectos de mediano y gran tamaño (lógica del diseño, coherencia, consolidación, etc.). La mejora de productividad se consigue a través de la automatización de determinadas tareas, como la generación de código y la reutilización de objetos o módulos.

Evolución de las Herramientas CASE

A inicios de los 80’s : Ayuda en la documentación por computadora.
Diagramación asistida por computadora.
Herramientas de análisis y diseño.

A mediados de los 80’s : Diseño automático de análisis y pruebas.
Repositorios automáticos de información de sistemas.

Al final de los 80’s : Generación automática de código desde
especificaciones de diseño.

A inicios de los 90’s : Metodología Inteligente.
Interface de Usuario reusable como una
metodología de desarrollo.

Las herramientas CASE, en función de las fases del ciclo de vida abarcadas, se pueden agrupar de la forma siguiente:

  1. Herramientas integradas, I-CASE (Integrated CASE, CASE integrado): abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Son llamadas también CASE workbench.

    1. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) o front-end, orientadas la automatización y soporte de las actividades desarrolladas durante las primeras fases del desarrollo: análisis y diseño.
3. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) o back-end, dirigidas
a las últimas fases del desarrollo: construcción e implantación.
    1. Juegos de herramientas o Tools-Case, son el tipo más simple de herramientas CASE.
      Automatizan una fase dentro del ciclo de vida. Dentro de este grupo se encontrarían las herramientas de reingeniería, orientadas a la fase de mantenimiento.

Tipo de
Case
Ventajas
Desventajas



I - CASE
  1. Integra el ciclo de vida.
  2. Permite lograr importantes mejoras de productividad a mediano no plazo.
  3. Permite eficiente soporte al mantenimiento de sistemas.
  4. Mantiene la consistencia de los sistemas a nivel corporativo.
1. No es tan eficiente para soluciones simples, sino para soluciones complejas.
2. Depende del hardware y del software.
3. Es costoso
UPPER CASE
1. Se utiliza en plataforma PC, es aplicable a diferentes entornos.
2. Meno costo.
1. Permite mejorar la calidad de los sistemas, pero no mejora la productividad.
2. No permite la integración del ciclo de vida.
LOWER CASE
1. Permite lograr importantes mejoras de productividad a corto plazo.
2. Permite un eficiente soporte al mantenimiento de sistemas.
1. No garantiza la consistencia de los resultado a nivel corporativo.
2. No garantiza la eficiencia del análisis y diseño.
3. No permite la integración del ciclo de vida.

clasificación, utilizando la funcionalidad como criterio principal, es la
siguiente:

♦ Herramientas de planificación de sistemas de gestión. Sirven para modelizar los requisitos de información estratégica de una organización. Proporcionan un "metamodelo" del cual se pueden obtener sistemas de información específicos. Su objetivo principal es ayudar a comprender mejor cómo se mueve la información entre las distintas unidades organizativas. Estas herramientas proporcionan una ayuda importante cuando se diseñan nuevas estrategias para los sistemas de información y cuando los métodos y sistemas actuales no satisfacen las necesidades de la organización. 

♦ Herramientas de análisis y diseño. Permiten al desarrollador crear un modelo del sistema que se va a construir y también la evaluación de la validez y consistencia de este modelo. Proporcionan un grado de confianza en la representación del análisis y ayudan a eliminar errores con anticipación.
    • Herramientas de análisis y diseño (Modelamiento).
    • Herramientas de creación de prototipos y de simulación.
    • Herramientas para el diseño y desarrollo de interfaces.
    • Máquinas de análisis y diseño (Modelamiento). 

♦ Herramientas de programación. Se engloban aquí los compiladores, los editores y los depuradores de los lenguajes de programación convencionales. Ejemplos de estas herramientas son:
    • Herramientas de codificación convencionales.
    • Herramientas de codificación de cuarta generación.
    • Herramientas de programación orientadas a los objetos. 

♦ Herramientas de integración y prueba: Sirven de ayuda a la adquisición, medición, simulación y prueba de los equipos lógicos desarrollados. Entre las más utilizadas están:
    • Herramientas de análisis estático.
    • Herramientas de codificación de cuarta generación.
    • Herramientas de programación orientadas a los objetos. 

♦ Herramientas de gestión de prototipos. Los prototipos son utilizados ampliamente en el desarrollo de aplicaciones, para la evaluación de especificaciones de un sistema de información, o para un mejor entendimiento de cómo los requisitos de un sistema de información se ajustan a los objetivos
perseguidos.
♦ Herramientas de mantenimiento: La categoría de herramientas de mantenimiento se puede subdividir en:
    • Herramientas de ingeniería inversa.
    • Herramientas de reestructuración y análisis de código.
    • Herramientas de reingeniería. 

♦ Herramientas de gestión de proyectos. La mayoría de las herramientas CASE de gestión de proyectos se centran en un elemento específico de la gestión del proyecto, en lugar de proporcionar un soporte global para la actividad de gestión. Utilizando un conjunto seleccionado de las mismas se puede: realizar estimaciones de esfuerzo, coste y duración, hacer un seguimiento continuo del proyecto, estimar la productividad y la calidad, etc.

Existen también herramientas que permiten al comprador del desarrollo de un sistema, hacer un seguimiento que va desde los requisitos del pliego de prescripciones técnicas inicial, hasta el trabajo de desarrollo que convierte estos requisitos en un producto final. Se incluyen dentro de las herramientas de control de proyectos las siguientes:
    • Herramientas de planificación de proyectos.
    • Herramientas de seguimiento de requisitos.
    • Herramientas de gestión y medida.
♦ Herramientas de soporte. Se engloban en esta categoría las herramientas que recogen las actividades aplicables en todo el proceso de desarrollo, como las que se relacionan a continuación:
    • Herramientas de documentación.
    • Herramientas para software de sistemas.
    • Herramientas de control de calidad.
    • Herramientas de bases de datos.

Componentes y funcionalidades de una herramienta CASE
A continuación se describen los principales componentes de una herramienta CASE
y sus funcionalidades.

Repositorio
Base de datos central de una herramienta CASE. El repositorio amplía el concepto de diccionario de datos para incluir toda la información que se va generando a lo largo del ciclo de vida del sistema, como por ejemplo: componentes de análisis y diseño (diagramas de flujo de datos, diagramas entidad-relación, esquemas de bases de datos, diseños de pantallas), estructuras de programas, algoritmos, etc. En algunas referencias se le denomina Diccionario de Recursos de Información. La mayoría de herramientas CASE poseen un repositorio propio o bien trabajan sobre un repositorio suministrado por otro fabricante o vendedor. Apoyándose en la existencia del repositorio se efectúan comprobaciones de integridad y consistencia: Que no existan datos no definidos.

1) Que no existan datos autodefinidos (datos que se emplean en una definición pero que no han sido definidos previamente).
2) Que todos los alias (referencias a un mismo dato empleando nombres distintos) sean correctos y estén actualizados. 

Las características más importantes de un repositorio son:
   • Tipo de información. Que contiene alguna metodología concreta, datos, gráficos, procesos, informes, modelos o reglas.
   • Tipo de controles. Si incorpora algún módulo de gestión de cambios, de mantenimiento de versiones, de acceso por clave, de redundancia de la información.
La gestión de cambios y el mantenimiento de versiones, ayudarán en el caso de que convivan diferentes versiones de la misma aplicación, o se tengan que realizar cambios en la versión en producción y en la de desarrollo, simultáneamente.
   • Tipo de actualización. Si los cambios en los elementos de análisis o diseño se ven reflejados en el repositorio en tiempo real o mediante un proceso por lotes (batch). Esto será importante en función a la necesidad de que los cambios sean visibles por todos los usuarios, en el acto.
   • Reutilización de módulos para otros diseños. El repositorio es la clave para identificar, localizar y extraer código para su reutilización.
  • Posibilidad de exportación e importación para extraer información del repositorio y tratarla con otra herramienta (formateo de documentos, mejora de presentación) o incorporar al repositorio, información generada por otros medios.
   • Interfases automáticas con otros repositorios o bases de datos externos.

Módulos de diagramación y modelización
Algunos de los diagramas y modelos utilizados con mayor frecuencia son:
  • Diagrama de flujo de datos.
  • Modelo entidad - interrelación.
  • Historia de la vida de las entidades.
  • Diagrama Estructura de datos.
  • Diagrama Estructura de cuadros.
  • Técnicas matriciales.

Algunas características referentes a los diagramas son:
   • Número máximo de niveles para poder soportar diseños complejos.
  • Número máximo de objetos que se pueden incluir para no encontrarse limitado en el diseño de grandes aplicaciones.
   • Número de diagramas distintos en pantalla o al mismo tiempo en diferentes
ventanas.
   • Dibujos en formato libre con la finalidad de añadir comentarios, dibujos,
información adicional para aclarar algún punto concreto del diseño.
   • Actualización del repositorio por cambios en los diagramas. Siempre resulta más
fácil modificar de forma gráfica un diseño y que los cambios queden reflejados
en el repositorio.

  • Control sobre el tamaño, fuente y emplazamiento de los textos en el diagrama.
   • Comparaciones entre gráficos de distintas versiones. De esta forma será más
fácil identificar qué diferencias existen entre las versiones.
   • Inclusión de pseudocódigo, que servirá de base a los programadores para
completar el desarrollo de la aplicación.
  • Posibilidad de deshacer el último cambio, facilitando que un error no conlleve
perder el trabajo realizado

Herramienta de prototipado
El objetivo principal de esta herramienta es poder mostrar al usuario, desde los momentos iniciales del diseño, el aspecto que tendrá la aplicación una vez desarrollada. Ello facilitará la aplicación de los cambios que se consideren necesarios, todavía en la fase de diseño. La herramienta será tanto más útil, cuanto más rápidamente permita la construcción del prototipo y por tanto antes, se consiga la implicación del usuario final en el diseño de la aplicación. Asimismo, es importante poder aprovechar como base el prototipo para la construcción del resto de la aplicación. Actualmente, es imprescindible utilizar productos que incorporen esta funcionalidad por la cambiante tecnología y
necesidades de los usuarios. Los prototipos han sido utilizados ampliamente en el desarrollo de sistemas tradicionales, ya que proporcionan una realimentación inmediata, que ayudan a determinar los requisitos del sistema. Las herramientas CASE están bien dotadas, en general, para crear prototipos con rapidez y seguridad.
Generador de código
Normalmente se suele utilizar sobre ordenadores personales o estaciones de trabajo, por lo que el paso posterior del código al host puede traer problemas, al tener que compilar en ambos entornos. 

Las características más importantes de los generadores de código son:
   • Lenguaje generado. Si se trata de un lenguaje estándar o un lenguaje
propietario.
  • Portabilidad del código generado. Capacidad para poder ejecutarlo en diferentes
plataformas físicas y/o lógicas.
  • Generación del esqueleto del programa o del programa completo. Si únicamente
genera el esqueleto será necesario completar el resto mediante programación.
  • Posibilidad de modificación del código generado. Suele ser necesario acceder
directamente al código generado para optimizarlo o completarlo.
  • Generación del código asociado a las pantallas e informes de la aplicación.
Mediante esta característica se obtendrá la interfase de usuario de la aplicación.

Módulo generador de documentación
El módulo generador de la documentación se alimenta del repositorio para transcribir las especificaciones allí contenidas. 

Algunas características de los generadores de documentación son:
  • Generación automática a partir de los datos del repositorio, sin necesidad de un esfuerzo adicional.
  • Combinación de información textual y gráfica, lo que hace más fácil su
comprensión.
  • Generación de referencias cruzadas. Con ello se podrá localizar fácilmente en qué partes de la aplicación se encuentra un determinado objeto o elemento, con el fin de analizar el impacto de un cambio o identificar los módulos afectados por un determinado error.
  • Ayuda de tratamiento de textos. Facilidad para la introducción de textos
complementarios a la documentación que se genera de forma automática.
  • Interfase con otras herramientas: procesadores de textos, editores gráficos, etc.

Ejemplos de Herramientas Case más
utilizadas.

ERwin
PLATINUM ERwin es una herramienta de diseño de base de datos. Brinda productividad en diseño, generación, y mantenimiento de aplicaciones. Desde un modelo lógico de los requerimientos de información, hasta el modelo físico perfeccionado para las características específicas de la base de datos diseñada, ERwin permite visualizar la estructura, los elementos importantes, y optimizar el diseño de la base de datos. Genera automáticamente las tablas y miles de líneas de stored procedure y triggers para los principales tipos de base de datos.

EasyCASE
EasyCASE Profesional - el centro de productos para procesos, modelamiento de datos y eventos, e Ingeniería de Base de Datos- es un producto para la generación de esquemas de base de datos e ingeniería reversa - trabaja para proveer una solución comprensible para el diseño, consistencia y documentación del sistema en conjunto. Esta herramienta permite automatizar las fases de análisis y diseño dentro del desarrollo de una aplicación, para poder crear las aplicaciones eficazmente - desde
procesamiento de transacciones a la aplicación de bases de datos de cliente/servidor, así como sistemas de tiempo real.

Oracle Designer
Oracle Designer es un juego de herramientas para guardar las definiciones que necesita el usuario y automatizar la construcción rápida de aplicaciones cliente/servidor flexibles y gráficas. Integrado con Oracle Developer, Oracle Designer provee una solución para desarrollar sistemas empresariales cliente/servidor de segunda generación. Sofisticadas aplicaciones cliente/servidor pueden ser 100% generadas usando la lógica de la aplicación y el módulo de componentes reusables. Oracle Designer también habilita la captura del diseño de sistemas existentes, salvaguardando la versión actual. Todos los datos ingresados por cualquier herramienta de Oracle Designer, en cualquier fase de desarrollo, se guardan en un repositorio central, habilitando el trabajo fácil del equipo y la dirección del proyecto. En el lado del Servidor, Oracle Designer soporta la definición, generación y captura de diseño de los siguientes tipos de bases de datos, por conexión nativa de Oracle y por conectividad ODBC :
• Oracle8, Oracle7
• Personal Oracle Lite
• Rdb
• ANSI 92
• DB2/2 and MVS
• Microsoft SQL Server
• Sybase

sábado, 24 de noviembre de 2012

Cliente-Servidor

Es una arquitectura basada en el principio clásico de divide y vencerás, donde el procesamiento se fracciona entre dos  entidades fundamentales denominadas cliente y servidor.


Surge en la década de los 80 como respuesta a la evolución del hardware en términos de redes, planteando un modelo versátil, modular basado en mensajes que permite incrementar la flexibilidad, la escalabilidad y la ínter-operación de los sistemas.


El cliente se define como el PROCESO que requiere un servicio en particular.
El servidor se define como el PROCESO que provee dicho servicio.
Debido a que clientes y servidores son conceptos a nivel software y no hardware, una misma máquina puede actuar como cliente y servidor al mismo tiempo.

VENTAJAS

1)Aprovecha mejor el ancho de banda
2)Aprovecha en mayor medida el hardware
3)Mayor seguridad y autonomía
4)Mejor manejo de la concurrencia
5)Permite que los clientes trabajen GUI mientras el servidor se centra en los procesos centrales


Ejemplo de un Cliente-Servidor






CLIENTE SERVIDOR MULTICAPA (Glosario)

CAPA: Conjunto de componentes de un aplicativo que se dedican a una labor en particular
CAPA DE PRESENTACIÓN (FrontEnd) : Todo aquello que se enfoca en la interacción con el usuario final.
REGLAS DEL NEGOCIO (Bussines rules) : Validaciones, restricciones, reglamentos, protocolos y normativas relativas a un dominio en particular.
CAPA LÓGICA (Middle Tier, Middleware) : Todo aquello que gestiona y hace valer las reglas del negocio.
CAPA DE ALMACENAMIENTO (BackEnd): Todos los elementos dedicados a la persistencia del sistema.

Ingeniería del Software

MVC: (Modelo vista controlador) Patrón de diseño que insta a desacoplar los elementos de presentación de los de lógica. Planteado inicialmente en SmallTalk.

PATRON OBSERVER: Patrón de diseño que plantea el desacoplamiento de presentación y lógica permitiendo múltiples vistas para una lógica en particular junto a la implementación de un método de notificación y actualización de vistas múltiples.

CLIENTE SERVIDOR DE 2 CAPAS

1) La primera capa encapsula la presentación y la lógica
2)La segunda gestiona el almacenamiento y puede almacenar parte de la lógica (Procedimientos almacenados, triggers).



CLIENTE SERVIDOR DE 2 CAPAS
Buen manejo de concurrencia hasta con 100 usuarios simultáneos aprox.
Protocolos propietarios pueden causar problemas de flexibilidad, portabilidad y escalabilidad.



CLIENTE SERVIDOR DE 3 CAPAS (Multicapa)

Agrega una capa intermedia (middle tier) que permite priorización y gestión de peticiones, gestión de balance, entre otros.  Buen manejo de concurrencia con miles de usuarios simultáneos. Protocolos estandarizados permiten gran flexibilidad, portabilidad y escalabilidad.



Ejemplo






RE INGENIERÍA

Es reconstruir. Creará un producto con una funcionalidad nueva, un mejor rendimiento y fiabilidad, y un mantenimiento mejorado. Eso es lo que llamamos re ingeniería.


¿Quién lo hace? 

A nivel de negocio, la re ingeniería es ejercida por especialistas de negocio (frecuentemente empresas de consultoría). A nivel de software, la re ingeniería es ejecutada por ingenieros del software.

¿ Por qué es importante? 

Vivimos en un mundo en constante cambio. Las demandas de funciones de negocios y de tecnología de información que las soportan están cambiando a un ritmo que impone mucha presión competitiva en todas las organizaciones comerciales. Tanto los negocios como el software que soportan (o es) el negocio deberán diseñarse una vez más para mantener el ritmo.

El proceso de re ingeniería del Software: 

1)Acompaña el análisis de inventarios. 
2)La reestructuración de documentos.
3)La ingeniería inversa.
4)La estructuración de programas y datos. 
5)La ingeniería directa.

REINGENIERIA DE PROCESOS DE NEGOCIOS.

La reingeniería constituye una recreación y reconfiguración de las actividades y procesos de la empresa, lo cual implica volver a crear y configurar de manera radical él o los sistemas de la compañía a los efectos de lograr incrementos significativos, y en un corto período de tiempo, en materia de rentabilidad, productividad, tiempo de respuesta, y calidad, lo cual implica la obtención de ventajas competitivas. Reingeniería es el rediseño rápido y radical de los procesos estratégicos de valor agregado y de los sistemas, las políticas y las estructuras organizacionales que los sustentan para optimizar los flujos de trabajo y la productividad de una organización.

Procesos de negocios:

Un proceso de negocio es un conjunto de tareas lógicamente relacionadas que se llevan a cabo para obtener un determinado resultado de negocio.

Reingeniería del Software:

Este escenario resulta sumamente conocido: Una aplicación ha dado servicio y ha cubierto las necesidades del negocio de una compañía durante diez o quince años. A lo largo de este tiempo, ha sido corregida, adaptada y mejorada muchas veces. Las personas se dedicaban a esta tarea con la mejor de sus intenciones, pero las prácticas de ingeniería del software buenas siempre se echaban a un lado (por la urgencia de otros problemas). Ahora la aplicación se ha vuelto inestable. Sigue funcionando, pero cada vez que intenta efectuar un cambio se producen efectos colaterales graves e inesperados.



Ingeniería web

Definición:

Es la aplicación de metodologías sistemáticas, disciplinadas y cuantifica bles al desarrollo eficiente, operación y evolución de aplicaciones de alta calidad en la World Wide Web.

Ingeniería web e ingeniería de software

Diferencias:
1) Implica una mezcla de publicación impresa y desarrollo de software, marketing e informática de comunicaciones internas y relaciones externas, y de arte y de tecnología. 
2) El desarrollo de un Webapps es un esfuerzo multidisciplinario debido al manejo de múltiples formatos, con una mezcla de atención social para saber su efecto ético y legal.

Similitudes:
1) Todas las actividades CGC (Control y garantía de calidad) de la ingeniería de software tradicional como son: establecimiento y supervision de estándares, revisiones técnicas formales, análisis, seguimientos y registros de informes, etc. Son igualmente aplicables a la ingeniería web.
2)  Sin embargo, en la web toma especial relevancia para valorar la calidad aspectos como: funcionalidad, usabilidad, fiabilidad, seguridad, eficiencia y mantenibilidad.

Atributos de las aplicaciones web 

1)El usuario puede acceder fácilmente a estas aplicaciones empleando un navegador web (cliente).
2)Si es por Internet, el usuario puede entrar desde cualquier lugar del mundo donde tenga un acceso a Internet.
3) Pueden existir miles de usuarios pero una única aplicación instalada en un servidor, por lo tanto se puede actualizar y mantener una única aplicación y todos sus usuarios verán los resultados inmediatamente. 
4)Emplean tecnologías como Java, JavaFX, JavaScript, DHTML, Flash, Ajax... que dan gran potencia a la interfaz de usuario.
5)Emplean tecnologías que permiten una gran portabilidad entre diferentes plataformas. Por ejemplo, una aplicación web flash podría ejecutarse en un dispositivo móvil, en una computadora con Windows, Linux u otro sistema, en una consola de videojuegos, etc. 

Modelo de proceso de la Ingeniería Web (I)

Características como inmediatez,  evolución y crecimiento continuos, nos llevan a un proceso incremental y
evolutivo, que permite que el usuario se involucre activamente, facilitando el desarrollo de productos que se
ajustan mucho lo que éste busca y necesita.

Modelo de proceso de la Ingeniería Web (II)


Modelos de proceso de la Ingeniería Web (III)

1)Formulación: identificación de metas y objetivos
2)Planificación: estimación de costes, evaluación de riesgos y
Planificación temporal del proyecto.
3)Análisis: establecimiento de requisitos
4)Ingeniería: dos grupos de tareas paralelas,
Técnicas (diseño arquitectónico, de navegación y de interfaz)
No técnicas (diseño del contenido y producción)
5)Generación de páginas y pruebas
El contenido se fusiona con los diseños arquitectónico, de navegación y de interfaz para elaborar páginas web ejecutables en HTML, JSP... 
Integración con el software intermedio (middleware) de componentes
6)Evaluación con el cliente: revisión de cada incremento y solicitud de cambios


Sala limpia

Enfoque de la ingeniería del software de sala limpia

Es un enfoque formal para el desarrollo del software, que pueda dar lugar a un software con una calidad notablemente alta. Emplea la especificación de estructura de cajas para el modelado de análisis y diseño, haciendo hincapié en la verificación de la corrección, más que en la comprobación, como mecanismo fundamental para encontrar y eliminar errores. Se aplica una comprobación estadística de uso para desarrollar la información relativa a la tasa de fallos necesaria para certificar la fiabilidad del producto software. La filosofía de sala limpia es un enfoque riguroso de la ingeniería del software. Se trata de un modelo del proceso del software que hace hincapié en la verificación matemática de la corrección, y en la certificación de la fiabilidad del software. El resultado final es una tasa de fallo extremadamente baja, que sería difícil o imposible de conseguir empleando métodos menos formales.

La estrategia de Sala Limpia

1) Usa una versión especial del modelo incremental de software.
2) Cuando se certifica cada incremento se integra al todo y la funcionalidad del sistema va creciendo.
3) Planificación de incrementos.
4) Recolección de requisitos.
5) Especificación de la estructura de cajas.

El proceso de Sala Limpia

1) Verificación de corrección.
2) Generación de código, inspección y verificación.
3) Planificación de la comprobación estadística
4) Certificación.

Se utilizan tres tipos de cajas para estudiar el sistema

1)Caja negra: Especifica el comportamiento del sistema, o de una parte de un sistema.
2)Caja de estado: Esta caja encapsula los datos de estados y de servicios de forma análoga a los objetos. En esta vista de especificación, se representan las entradas a la caja de estados y sus salidas.
3) Caja transparente: Las funciones de transición que están implicadas en la caja de estados se definen en la caja transparente.

La ingeniería del software de sala limpia se diferencia de otros métodos o paradigmas por las siguientes razones:

1) Hace uso explícito del control estadístico de calidad.
2) Verifica la especificación del diseño empleando una demostración de corrección basada en las matemáticas.
3) Hace mucho uso de la comprobación estadística de utilización para descubrir errores de especial incidencia.


domingo, 14 de octubre de 2012

Diagramas de un Sistema de planillas
Diagramas de contexto
Nivel 0



Diagrama nivel 1



Diagrama de estado


Diagrama de clases


Diagrama de colaboración




Diagrama de secuencia



Diagrama de componentes y despliegue



Diagramas de casos de uso





Calculo de las métricas orientadas al tamaño
Del sistema de planillas

El Sistema cuenta con:
·         Costo: U$ 8000.
·         LDC(líneas de código): 6000.
·         Equipo conformado: 4.
·         Periodo: 9 meses
Se emplearon 120 hojas de papel para documentación y se detectaron 60 errores.
Cálculos indicadores.
 Ø  Índice de productividad:  LDC/ (equipo*Periodo) = 6000/(4*9) = 166.6667.
 Ø  Índice de calidad: LDC /Errores = 6000/60 = 100 para un error.
 Ø  Índice de documentación: 100/6000 = 0.0166667.
Índice de costo: Costo/LDC = 8000/6000 = 1.3333.



Garantía de calidad

Definición:
Es una actividad de protección que se emplea en el desarrollo del software abarcando el análisis, diseño y control de código fuente, revisiones de código etc. La calidad es un patrón de acciones planificado y sistemático que se requieren para asegurar la calidad del software.
También es el grado de relación que tiene el producto para satisfacer las necesidades del usuario. Un software que cumple con todos los requisitos y necesidades del usuario, y que sus procesos se ejecuten correctamente nos indica que es de calidad.

Tipos de calidad.
 1) Calidad de diseño: Son el grado de materiales, tolerancia y las especificaciones del rendimiento, esto permite que la calidad del diseño aumente.
   2)    Calidad de Concordancia: Se cumplen las especificaciones del diseño, cuando mayor sea el grado de cumplimiento más alto será el nivel de calidad de concordancia, se centra principalmente en la implementación.

Estándar de calidad ISO 9001
  Es un conjunto de normas para la calidad y gestión, es cada vez el más importante estándar internacional, ha sido adoptado por más de 130 países alrededor del mundo, en la cual los usuarios pueden juzgar la competencia de un desarrollo de software.

¿Qué es gestión de calidad?
   Es aquello que la organización efectúa para:
·       ** Cumplir requisitos de los clientes.
·       **  Incrementar satisfacción de los clientes.
·       ** Cumplir requisitos legales o normativos.

Beneficios de tener un Sistema de gestión de calidad

  1)    Mayor satisfacción y lealtad de los clientes.
  2)    Mayor competitividad y utilidad.
  3)    Mayor motivación y moral de los empleados, ya que trabajan en forma más eficiente.
  4)    Ayuda a centrar la empresa sobre el problema de producir con calidad.
  5)    Mejora la competitividad en el mercado y la fiabilidad de los clientes.

Gestión de la configuración
(GCS)
·   *  Es una actividad de autoprotección que se aplica durante el proceso de desarrollo de      software.
·       *      Es un proceso de garantía de calidad de software.

¿Para qué sirven las actividades de GCS?
·        *  Para identificar los cambios.
·        * Controlar los cambios.
·        * Garantizar su adecuada implementación.
·        *  Informar del cambio a todos aquellos que puedan estar interesados.

                         ¿Cómo se distingue la GCS del mantenimiento?
  
   La GCS es un conjunto de actividades de seguimiento y control que comienzan cuando inicia el proyecto y termina solo cuando el software queda fuera de circulación.

Y el mantenimiento es un conjunto de actividades de IS que se producen después de que el software se haya entregado al cliente y este en funcionamiento.

                Necesidad de cambios de la gestión de configuración

·         Modificación de requisitos.
·         Cambio de prioridades.
·         Cambio de estructura del equipo.
·         Restricciones en presupuesto o planificación.
·         Errores.

Elementos de la GCS

    1)    ECS ( Información creada como parte del proceso de IS) se divide en:
1.1)       Material no ejecutable:
1.1.1)   Documentos de especificación.
1.1.2)   Documentos de diseños.
1.1.3)   Listados de software o datos.
1.1.4)   Manuales de usuarios.
1.2)       Material ejecutable:
1.2.1) Código ejecutable.
1.2.2) Resultado de pruebas.
1.2.3) Sistemas operativos, compiladores.
    2) Una línea base es un punto de referencia en el desarrollo del software que queda marcado por el envió de uno o más elementos de configuración del software y la aprobación del ECS obtenido mediante una RTE.

f