Tipos, bloques, procedimientos. Tipos de datos abstractos… Objetos: datos + comportamiento.
Conceptos aplicados siempre: Abstracción, encapsulamiento & Modularidad.
Evolución del perfil Antes, el programador => un ermitaño, programaba en el sótano. Hoy, ya es un ingeniero de SW:
Trabajo en grupo Buen manejo de relaciones interpersonales. Comunicación
Gráficamente Antes
En la actualidad
De todas maneras…. Se encapsula correctamente la funcionalidad del sistema. ¿Pero qué ocurre con los conceptos no funcionales ….? Sincronización, logging, manejo de errores, profiling, etc => no se encapsulan correctamente y quedan esparcidos por todo el sistema. Se denominan conceptos entrecruzados
Ejemplo 1 ? Conceptos entrecruzados
… }
(Gp:) Clase Socio { …..
}
(Gp:) Clase Alquiler {…..
}
* Errores
Análisis Ejemplo Funcionalida básica: OK. Libros, Socios, Alquileres. ¿Qué pasa con el manejo de errores y de seguridad? Se esparcen por todo el sistema, creando dos problemas: Code Tangling & Code Scaterring
Problemas Baja correspondencia. Menor Productividad. Menor Reuso. Baja calidad del código. Evolución dificultosa.
Tiranía de la descomposición dominante Supongamos el siguiente modelo:
Descomponer por forma, por color, por tamaño. Nos vemos obligados a elegir un modelo como principal.
Distintos Modelos Ordenado por Forma Ordenado por Color
Jerarquía Color-Forma Nos vemos obligados a elegir un modelo como principal. En este caso: color, y luego forma
Página siguiente |