Portada » Informática » Patrones de diseño y estrategia de prototipado
[ap] Según el libro de patrones de diseño gamma y otros los, patrones ayudan a…
*Encontrar los objetos apropiados: Lo más complicado del diseño orientado a objetos es descomponer un sistema en objetos, esto es difícil porque entran en juego muchos factores: encapsulamiento, granularidad, dependencia, flexibilidad, rendimiento, reutilización, etc. Muchos objetos de un diseño proceden del modelo de análisis. Pero los diseños orientados a objetos suelen acabar teniendo clases que no tienen su equivalente en el mundo real. Algunas de ellos son de bajo nivel como los arrays, otras son de mucho más alto nivel, estas son clases de fabricación pura.
*Determinar la granularidad de los objetos: Los objetos pueden variar enormemente de tamaño y número, pueden representar cualquier cosa. Es por ello que la granularidad hace referencia al tamaño, donde a través de los patrones podemos determinar el tamaño de sus datos.
*Especificar las interfaces de los objetos: Cada operación declarada por un objeto especifica el nombre de la operación, los objetos que toma como parámetros y el valor de retorno de la operación. Esto se lo conoce como signatura o firma. Al conjunto de todas las firmas definidas por las operaciones de un objeto se le denomina interfaz del objeto. Dicha interfaz caracteriza el conjunto de peticiones que se puede enviar al objeto. Las interfaces son fundamentales en el diseño orientado a objetos, ya que los objetos sólo se conocen a través de su interfaz. La interfaz de un objeto no dice nada acerca de su implementación.
*Especificar las implementaciones de los objetos: La implementación de un objeto queda definida por su clase. La clase especifica los datos, la representación interna del objeto y define las operaciones que puede realizar. Definimos implementaciones a partir de otras (herencia).
*Favorecer reutilización: Los patrones proveen mecanismos para facilitar el reusó del código y de esta manera garantizar el principio de diseño. Es importante que se favorezca el reusó, ya que de otra manera, podrían haber errores de inconsistencias en los software, lo que haría mucho mas difícil la tarea de modificarlo y corregir los errores.
*Diseñar para el cambio: La clave para maximizar la reutilización reside en anticipar nuevos requerimientos y cambios en los requerimientos existentes, y en diseñar los sistemas de manera que puedan evolucionar en consecuencia. Un diseño que no tenga en cuenta el cambio sufre el riesgo de tener que ser rediseñado por completo en el futuro. Los patrones de diseño ayudan a evitar esto al asegurar que un sistema pueda cambiar de formas concretas.
[ap] Estrategia de prototipado
*Elección en el ciclo de vida del software que se toma cuando debemos implementar un sistema complejo, con dominio con no familiar o que utilice tecnología desconocida.
*Además de usar prototipos en la validación de requerimientos, se utilizan los prototipos en el diseño y en la implementación.
Prototipo: versión del producto no realizada completamente, sirve para comprender mejor el problema y sus posibles soluciones.
Características: Funcionalidad limitada. *No fiable. *Pocos días de desarrollo. *El prototipo cuesta aproximadamente el 10 % del presupuesto del proyecto.
Usos del prototipo: *Ayuda al cliente a establecer claramente sus requisitos. *Ayuda a desarrolladores a: **Mejorar el producto. **Validar correcciones. **Anticipar problemas de diseño e implementación. **Examinar vialidad y utilidad de la aplicación.
Los prototipos SIEMPRE son importantes, pero son esenciales cuando el dominio es muy complicado, cuando el costo de rechazo por parte de los usuarios por no cumplir las expectativas es muy alto, cuando se tiene que evaluar cómo va a impactar el sistema en la organización y en sus usuarios y cuando se usan nuevos métodos, técnicas y tecnologías.
Beneficios: *Aumentar productividad. *Planificar desarrollo. *Entusiasmo de los usuarios.
Según su propósito: *Prototipado de interfaz de usuario (modelo de pantallas). *Prototipado funcional: implementan algunas funciones a medida que se comprueban que son apropiadas, se corrigen, se refinan y se añaden nuevas. *Prototipos arquitectónicos: para evaluar decisiones arquitectónicas de infraestructura, tecnología e integración. *Modelos de rendimiento: evalúan el rendimiento de la aplicación (no sirve al análisis de requisitos).
Según su utilidad: *Desechable: **Se realiza el análisis y validación de requerimientos. Una vez claros los requerimientos el prototipo es desechado. **Se ocasionan problemas si el prototipo no se desecha y se convierte en el sistema final. *Evolutivo:**Comienza brindando requisitos fundamentales o más conocidos, a medida que se descubren nuevos requisitos se añaden al mismo hasta llegar al software completamente funcional.
Criticas/Riesgos: *El cliente cree que es el sistema funcional. *Difícil de administrar. *Alto costo.