lunes, 20 de mayo de 2013


4.1. Estrategias de diseño
Análisis del problema: da como resultado un modelo de objeto y una lista de operaciones.
• Diseño: da como resultado un modelo de objeto de código, un diagrama de dependencia de módulos y especificaciones de módulos.
• Implementación: da como resultado un código ejecutable.
Lo ideal sería que las pruebas se llevaran a cabo a medida que se realiza el proceso de desarrollo, de modo que los errores aparezcan lo antes posible. En un conocido estudio sobre proyectos desarrollados por TRW e IBM, Barry Boehm llegó a la conclusión de que el coste de corregir un error puede llegar a multiplicarse hasta por 1.000 cuando se detecta tardíamente. Hemos empleado el término "pruebas" exclusivamente para describir la evaluación de códigos, pero se pueden aplicar técnicas parecidas a descripciones de problemas y diseños cuando se han registrado en una notación que tenga asociada una semántica. (En mi grupo de trabajo hemos desarrollado una técnica de análisis para modelos de objetos). En este curso, el estudiante deberá basar su trabajo en la meticulosidad de las revisiones y en el uso de escenarios manuales para evaluar las descripciones y los diseños del problema.
Por lo que a probar las implementaciones se refiere, el estudiante debe marcarse como objetivo que las pruebas se realicen tan pronto como sea posible. La programación extrema
(XP), una metodología de desarrollo muy extendida en la actualidad, aboga por escribir las pruebas antes incluso de haber escrito el código al que se van a aplicar éstas. Se trata de una idea muy interesante, en primer lugar porque significa que es menos probable que una selección de pruebas quede expuesta a sufrir los mismos errores conceptuales que esas pruebas tratan precisamente de detectar. Además, estimula al usuario a pensar en las especificaciones por adelantado. Es un enfoque ambicioso, aunque no siempre factible.
En vez de probar el código de una manera ad hoc, es más conveniente crear una base sistemática de pruebas que no requieran la interacción del usuario para su ejecución y validación. Este sistema reporta numerosos beneficios: por ejemplo, permite, cuando se introducen cambios en un código, detectar rápidamente los nuevos errores que se han producido al volver a ejecutar estas "pruebas de regresión". Es aconsejable hacer un uso liberal de las certificaciones en tiempo de ejecución y comprobar las constantes de representación.

 4.2. Diseño de objetos
       Primero se empezaron a utilizar los lenguajes de programación estructurados, que permiten la descomposición modular de los programas; esto condujo a la adopción de técnicas de diseño estructuradas y de ahí se pasó al análisis estructurado.
       El paradigma orientado a objetos ha seguido el mismo camino: el uso de la Programación Orientada a Objetos (POO) ha modificado las técnicas de diseño para adaptarlas a los nuevos lenguajes y ahora se están empezando a utilizar técnicas de análisis basadas en esta nueva forma de desarrollar software.
       Reusabilidad: Los nuevos Sistemas OO pueden ser creados utilizando otros sistemas OO ya existentes.
       Extensibilidad: Los nuevos sistemas OO son fácilmente ampliables, sin tener que retocar los módulos empleados en su construcción.
Las características principales del enfoque orientado a objetos son, en primer lugar:
Identidad:
           Los datos se organizan en entidades discretas y distinguibles    llamadas objetos.
           Estos objetos pueden ser concretos o abstractos, pero cada objeto tiene su propia identidad.
 Dicho de otra forma: dos objetos son distintos incluso aún en el caso de que los valores de todos sus atributos coincidan.
 Dos manzanas pueden ser totalmente idénticas pero no por eso pierden su identidad: nos podemos comer una u otra.
Clasificación:
Los objetos que tengan los mismos atributos y comportamiento se agrupan en clases.
Todas las manzanas tienen una serie de atributos comunes: tamaño, peso, grado de maduración, y un comportamiento común: podemos coger una manzana, moverla o comerla.
Los valores de los atributos podrán ser distintos para cada una de ellas, pero todas comparten los mismos atributos y comportamiento (las operaciones que se pueden realizar sobre ellas).
 Una clase es una abstracción que describe propiedades (atributos y comportamiento) relevantes para una aplicación determinada, ignorando el resto.
       Fase Planificación y Especificación de Requerimientos
1.    Definir el Plan-Borrador.
2.    Crear el Informe de Investigación Preliminar.
3.    Definir los Requerimientos.
4.    Registrar Términos en el Glosario.
5.    Implementar un Prototipo. (opcional)
6.    Definir Casos de Uso (de alto nivel y esenciales).
7.    Definir el Modelo Conceptual-Borrador.
8.    Definir la Arquitectura del Sistema-Borrador.
9.    Refinar el Plan.
       Fase de Construcción: Análisis
1.    Definir Casos de Uso Esenciales en formato expandido.
2.    Refinar los Diagramas de Casos de Uso.
3.    Refinar el Modelo Conceptual.
4.    Refinar el Glosario.
5.    Definir los Diagramas de Secuencia del Sistema.
6.    Definir Diagramas de Estados. (opcional)
       Fase de Construcción: Diseño
1.    Definir los Casos de Uso Reales.
2.    Definir Informes e Interfaz de Usuario.
3.    Refinar la Arquitectura del Sistema.
4.    Definir los Diagramas de Interacción.
5.    Definir el Diagrama de Clases de Diseño.
6.    Definir el Esquema de Base de Datos.
7.    Fases de Implementación y Pruebas

4.3. Diseño de sistema

Enfoque clásico Desarrollo en cascada o ascendente
· Las fases se suceden en orden estrictamente secuencial
· Nada está hecho hasta que todo esté terminado
· Las fallas más triviales se encuentran al comienzo del período de prueba y las más graves al final
· La eliminación de fallas suele ser extremadamente difícil durante las últimas etapas de prueba del sistema

Enfoque estructurado Desarrollo descendente o iterativo
· Las actividades pueden desarrollarse en forma paralela con progresivos niveles de refinamiento
· Existe retroalimentación entre actividades
· Las fallas y desvíos se detectan y corrigen tempranamente

Actividades del Análisis / actividades del Diseño / actividades de Implementación.
La actividad de Análisis parte de los requerimientos observados durante el proceso de relevamiento y estudio del domino del problema y arroja como resultado lo QUE debe hacer el sistema para brindar una solución al problema del usuario, independientemente de la naturaleza de la tecnología que se use para su implementación. El análisis transforma las políticas del usuario y el esquema del proyecto en una especificación estructurada.
La actividad de Diseño se dedica a asignar porciones de la especificación estructurada resultante del proceso de análisis (también conocida como modelo esencial) a procesadores adecuados (sean máquinas o humanos), y a labores apropiadas (tareas, particiones, etc.) dentro de cada procesador. Dentro de cada labor, la actividad de diseño se dedica a la creación de una jerarquía apropiada de módulos de programas y de interfaces entre ellos, para implantar la especificación creada durante el análisis.
Además la actividad del diseño se ocupa de la transformación del modelo de datos de
entidad-relación en un diseño de base de datos.


  4.4. Revisión del diseño


Cuando el diseño se completa se mantienen reuniones con los clientes para revisarlo antes de avanzar al desarrollo.
El proceso de revisión se realiza en tres etapas en correspondencia con los pasos del proceso de diseño:
1.    Revisión del diseño preliminar.
2.    Revisión crítica del diseño.
3.    Revisión del diseño de programas.
Los clientes y usuarios se reúnen para validar el diseño conceptual.
Se asegura que todos los aspectos relativos a los requerimientos han sido apropiadamente contemplados en el diseño.
Se invita a participar a ciertas personas claves:
          Cliente (s), quien ayuda a definir los req. del sistema.
          Analista (s), quien colabora para definir los req. del sistema
          Usuario (s), potenciales del sistema.
          Diseñador (es) del sistema.
          Un moderador (solo coordina), un secretario (no se involucra).
          Otros desarrolladores (entregan perspectiva externa)
Se recomienda que el número de integrantes sea pequeño de modo que facilite las discusiones.
Durante la revisión se presenta a la audiencia el diseño conceptual. Al hacerlo, se demuestra que el sistema tiene la estructura requerida, las funciones y las características especificadas por los documentos de análisis.
Todos los participantes, en conjunto, verifican que el diseño propuesto incluya el hardware necesario, interfaces con otros sistemas, entradas y salidas.
Los clientes aprueban los diálogos y menús, los formatos de los informes y el tratamiento de defectos propuestos.
Realiza una revisión crítica del diseño, donde se presenta una vista general del diseño técnico.
Integrantes:
           Analista (s), quien colabora para definir los req. del sistema.
           Diseñador (es) del sistema.
           Un moderador (solo coordina), un secretario (no se involucra).
           Diseñador (es) de programas para este proyecto.
           Probador del sistema.
           Analista que escribirá la documentación del sistema.
           Otros desarrolladores (entregan perspectiva externa).
Este grupo es más técnico que el anterior. Ya que la revisión trata de aspectos técnicos.
El moderador conduce la reunión para que se traten dos puntos: si el diseño implementa todos los requerimientos y si es un diseño de calidad.
Usando diagramas, datos o ambas cosas, se explican las estrategias de diseño alternativa y como y porque se han tomado las principales decisiones de diseño.
Si se identifican problemas mayores el diseño se rehace.
Cuando el diseño técnico resulta satisfactorio, los diseñadores de programas estarán en posición de interpretarlo como el conjunto  de descripciones de diseño para los componentes reales, que deben ser codificados y probados.
Después de completar los diseños de programas, pero antes de comenzar la codificación, presentan sus planes.
Integrantes:
           Analista (s), que produjeran los req. del sistema.
           Diseñador (es) del sistema.
           Diseñador (es) del programa.
           Un moderador (solo coordina), un secretario (no se involucra).
           Diseñador (es) de programas para este proyecto.
           Probador del sistema.
           Analista que escribirá la documentación del sistema.
           Otros desarrolladores (entregan perspectiva externa).
Este proceso se centra en la detección de defectos más que en su corrección. Además se está evaluando el diseño no a los diseñadores.
El proceso beneficia a todos al encontrar defectos y problemas cuando aún son fáciles y poco costosos de corregir.

 4.5. Diagramas de secuencias del Diseño.


4.6. Herramientas CASE para el diseño

La herramienta CASE (Computer-Aided Systems Engineering ) cuyo significado en español es ingeniería de sistemas asistida por ordenador, es la aplicación de tecnología informática a las actividades, las técnicas y las metodologías propias de desarrollo de sistemas y al igual que las herramientas CAD (Diseño Asistido por Computadora) o CAM (Manufactura  Asistida por Computadora) su objetivo es acelerar el proceso para el que han sido diseñadas, en el caso de CASE para automatizar o apoyar una o más fases del ciclo de vida del desarrollo de sistemas. La primera herramienta CASE como hoy la conocemos fue Excelerator en 1984, era para PC. Actualmente la oferta de herramientas CASE es muy amplia y tenemos por ejemplo el EASYCASE o WINPROJECT.

La tecnología CASE supone la automatización del desarrollo del software, contribuyendo a mejorar la calidad y la productividad en el desarrollo de sistemas de información. Para mejorar la calidad y la productividad de los sistemas de información a la hora de construir software se plantean los siguientes objetivos:
•           Permitir la aplicación práctica de metodologías estructuradas, las cuales al ser realizadas con una herramienta conseguimos agilizar el trabajo.
•           Facilitar la realización de prototipos y el desarrollo conjunto de aplicaciones.
•           Simplificar el mantenimiento de los programas.
•           Mejorar y estandarizar la documentación.
•           Aumentar la portabilidad de las aplicaciones.
•           Facilitar la reutilización de componentes software.
•           Permitir un desarrollo y un refinamiento visual de las aplicaciones, mediante la utilización de gráficos.
Componentes de una herramienta CASE
De una forma esquemática podemos decir que una herramienta CASE se compone de los siguientes elementos:
•           Repositorio (diccionario) donde se almacenan los elementos definidos o creados por la herramienta, y cuya gestión se realiza mediante el apoyo de un Sistema de Gestión de Base de Datos (SGBD) o de un sistema de gestión de ficheros.
•           Metamodelo (no siempre visible), que constituye el marco para la definición de las técnicas y metodologías soportadas por la herramienta.
•           Carga o descarga de datos, son facilidades que permiten cargar el repertorio de la herramienta CASE con datos provenientes de otros sistemas, o bien generar a partir de la propia herramienta esquemas de base de datos, programas, etc. que pueden, a su vez, alimentar otros sistemas. Este elemento proporciona así un medio de comunicación con otras herramientas.
•           Comprobación de errores, facilidades que permiten llevar a cabo un análisis de la exactitud, integridad y consistencia de los esquemas generados por la herramienta.
•           Interfaz de usuario, que constará de editores de texto y herramientas de diseño gráfico que permitan, mediante la utilización de un sistema de ventanas, iconos y menús, con la ayuda del ratón, definir los diagramas, matrices, etc. que incluyen las distintas metodologías.




No hay comentarios:

Publicar un comentario