Fundamentos Esenciales del Diseño de Software: Interfaces, Cohesión y Relaciones OO
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 5,1 KB
Principios Fundamentales para el Diseño de Interfaces de Usuario (UI)
A continuación, se describen los principios esenciales que deben considerarse para el diseño efectivo de interfaces de usuario:
- Familiaridad del usuario: La interfaz debe utilizar términos y conceptos extraídos de la experiencia de las personas que más utilizan el sistema.
- Consistencia: La interfaz debe ser consistente, de modo que las operaciones comparables se activen de la misma forma.
- Mínima sorpresa: El comportamiento del sistema no debe provocar sorpresa a los usuarios.
-
Recuperabilidad: La interfaz debe incluir mecanismos que permitan a los usuarios recuperarse de los errores. Para ello se pueden utilizar recursos tales como:
- Confirmación de acciones destructivas.
- Recursos para deshacer (undo).
- Generación de puntos de control.
- Guía al usuario: Cuando ocurren errores, la interfaz debe proporcionar retroalimentación significativa y características de ayuda sensible al contexto (contextualizada).
- Diversidad de usuarios: La interfaz debe ofrecer características de interacción apropiadas para los diferentes tipos de usuarios del sistema.
Cohesión en el Diseño Orientado a Objetos (OO)
La cohesión mide la fuerza de las relaciones internas dentro de un módulo o clase. Un alto nivel de cohesión es deseable en el diseño OO, ya que implica que el módulo realiza una única tarea bien definida.
Niveles de Cohesión (De más deseable a menos deseable)
- Funcional
- Secuencial
- Comunicacional
- Procedural
- Temporal
- Lógico
- Coincidencial
Cohesión Funcional
Una ventana o conjunto de ventanas funcionalmente cohesivas maneja un evento a nivel de negocio (o una única responsabilidad bien definida).
Ventajas de la Cohesión Funcional
- Genera módulos eficientes y especializados que son menos complejos y, por lo tanto, más fáciles de usar.
- El código interno existe para ejecutar una sola idea, lo que facilita su comprensión y mantenimiento.
- El potencial de la reutilización se incrementa significativamente.
Desventajas de la Cohesión Funcional
Frecuentemente, incrementa la cantidad de ventanas de la interfaz, lo que requiere que el usuario navegue entre ellas para realizar el conjunto completo de tareas.
Cohesión Coincidental
La cohesión coincidental es simplemente caprichosa. Cualquier relación que se encuentre entre eventos en una ventana coincidentemente cohesiva existe solamente en la mente del programador que la creó. Este es el nivel de cohesión menos deseable.
Relaciones Clave en el Diseño Orientado a Objetos de Calidad
El uso adecuado de las relaciones de Realización, Herencia y Composición es fundamental para construir software OO de alta calidad, promoviendo la flexibilidad y el mantenimiento.
Herencia (Relación "Es un")
La herencia permite que una clase (subclase) adquiera propiedades y métodos de otra clase (superclase).
Ventajas de la Herencia
- Se define estáticamente en tiempo de compilación y es sencilla de usar, ya que está permitida directamente por el lenguaje de programación.
- Facilita la modificación de la implementación que está siendo utilizada.
Desventajas de la Herencia
- No se pueden cambiar las implementaciones heredadas de las clases padre en tiempo de ejecución, ya que la herencia se define en tiempo de compilación.
- Las clases padre suelen definir al menos parte de la representación física de sus subclases, lo que significa que la herencia "rompe el encapsulamiento".
Composición (Relación "Tiene un")
La composición implica que un objeto contiene referencias a otros objetos, delegando responsabilidades.
Ventajas de la Composición
- Se define dinámicamente en tiempo de ejecución a través de objetos que tienen referencias a otros objetos.
- Se accede a los objetos solamente a través de sus interfaces, por lo que no se rompe el encapsulamiento.
- Cualquier objeto puede ser reemplazado en tiempo de ejecución por otro, siempre que sean del mismo tipo (polimorfismo).
- Dado que la implementación de un objeto se escribe en términos de interfaces de otros objetos, las dependencias de implementación son notablemente menores.
Realización (Implementación de Interfaces)
La realización se utiliza cuando una clase implementa los métodos definidos en una interfaz o clase abstracta.
Ventajas de la Realización
- Los clientes no tienen que conocer los tipos específicos de los objetos que usan; basta con que se adhieran a la interfaz que esperan.
- Los clientes desconocen las clases concretas que implementan dichos objetos, solo conocen las clases abstractas o interfaces que definen el contrato.