Evolución del SW
Al principio, Codigo Spaghetti.
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 |