Uno de los problemas fundamentales del
software y la computación
Refiere la especificación de la estructura del sistema, entendida
como la organización de componentes y relaciones entre ellos;
los requerimientos que debe satisfacer el sistema y las
restricciones a las que está sujeto, así como las propiedades no
funcionales del sistema y su impacto sobre la calidad del
mismo; las reglas y decisiones de diseño que gobiernan esta
estructura y los argumentos que justifican las decisiones
tomadas.
Importancia
Antecedentes
Edsger Dijkstra, propuso que se establezca una
estructuración correcta de los sistemas de
software antes de lanzarse a programar,
escribiendo código de cualquier manera.
P. I. Sharp... “Lo que sucede es que las especificaciones de
software se consideran especificaciones funcionales. Sólo
hablamos sobre lo que queremos que haga el programa.”
David Parnas: “ ... las decisiones tempranas de
desarrollo serían las que probablemente permanecerían
invariantes en el desarrollo ulterior de una solución.”
Estas “decisiones tempranas” constituyen lo que hoy
se conoce como “decisiones arquitectónicas”.
Perry y Wolf modelo para la arquitectura de
software que consiste en tres componentes:
elementos, forma y razón (rationale)
Componentes
Elementos
Forma
Razón
Caracteristicas
Nivel del diseño de software donde
se definen la estructura y
propiedades globales del sistema.
Incluye modelos, lenguajes y herramientas
para la descripción y desarrollo práctico
de arquitecturas de software.
Objetivos
Comprender (abstracción) y
mejorar la estructura de las
aplicaciones complejas.
Planificar la evolución de la
aplicación, identificando las
partes mutables e inmutables
de la misma, así como los
costos de los posibles cambios.
Reutilizar dicha estructura
(o partes de ella) para
resolver problemas
similares.