Definiciones de Arquitectura
Publicado por Miguel Gonzalez en 3 Septiembre 2009
Tratare de enunciar las lineas que encierran mejor el concepto de arquitectura que comparto.
Según Kruchten, Booch, Bittner, y Reitman la arquitectura abarca un conjunto de decisiones importantes sobre el sistema de software de una organizacion. Estas decisiones comprenden:
– Elementos estructurales y sus interfaces.
– La colaboración entre ellos.
– La composición de estos elementos estructurales y de comportamiento dentro de subsistemas mas grandes.
– El estilo arquitectónico que guia a la organizacion.
Según Fowler este delinea algunos temas comunes como por ejemplo:
– Dentro de la arquitectura deben estar las decisiones del mas alto nivel.
– Dentro de un sistema pueden convivir múltiples arquitecturas.
– Y que las decisiones de arquitectura son duras al cambio.
Bass, Clements y Kazman dicen mas o menos lo mismo son grandes elementos estructurales que se relacionan entre si a través de sus interfaces publicas.
Por que necesitamos la arquitectura? Por que sin ella estamos destinados al fracaso, por lo menos en la mayoria de los casos pienso yo.
Las preguntas que validan este hecho son bastantes claras:
- Como se implementara la aplicacion en producción?
- Como estaran usando los usuarios la aplicacion?
- Cuales son los requerimientos atributos de calidad, tal como seguridad, desempeño, concurrencia, internacializacion, y configuracion?
- Cuales son las tendencias que deberian impactaren la aplicacion ahora o despues que sido implementada?
Arquitectura vs Diseño: Aqui se vuelve a repetir que los componentes de alto nivel junto con las relaciones entre sus interfaces es la vista arqsuitectonica del sistema y que una vista mas detallada pertence al diseño.
Usuario, negocio y objetivo del sistema: Son los actores que deben tenerse en consideracion en la arquitectura del sistema y la medicion del exito en cada una de ellas.
Objetivos de la arquitectura: Busca crear un puente entre los requerimientos del negocio y los tecnicos, comprendiendo los casos de uso para poderlos implementarlos en el software. Descubrir los requerimientos que impactaran en la estructura del sistema. Busca ser lo suficientemente flexible para afrontar los cambios en el transcurrir del tiempo y sobre todo un balance entre los requerimientos funcionales y los atributos de calidad (tal como desempenio, seguridad, mantenibilidad, interoperatibilidad, escabilidad, etc.).
Lineas base de Arquitectura
Del enfoque a la arquitectura dice el texto que lo primero que hay que definir es el tipo de aplicacion, el estilo y lo concerniente a la transversalidad (tal como lo muestra el grafico).
Los tipos de aplicaciones son variadas, pueden ser en un entorno mobile, sobre clientes ricos en web o de escritorio, del tipo servicios, cliente-servidor, etc.
La estrategia de implementacion esta claro que es regida por las restricciones que podemos encontrar en las politicas de la organizacion en cuanto a la seguridad, infrastructura, tecnologia, tipo de redes a utilizar, protocolos, etc. (es como si puseramos a schumacher a correr en el TC2000 tendria que acomodarse un poquito, no?).
En cuanto al estilo de arquitectura hay varios factores que inciden en la eleccion de cada una, la experiencia de nuestros desarrolladores, la capacidad de infrastura de la organizacion. Lo mismo se puede decir de las tecnologias de que seeccionar todo esta atado a las posibilidades que podemos encontrar en la organizacion donde debemos desempenarnos.
Los atributos de calidad son varios, desempenio, seguridad, mantenibilidad, interoperatibilidad, escabilidad, pero podemos usar solo algunos de ellos deacuerdo de las necesidades del proyecto o buscar un equilibrio entre aquellos que generen conflicto entre ellos como es el ejemplo de performance y seguridad.
Casi por razones de tiempo en mi caso hay que negociar cuantas fichas vamos a poner en cada y asi poder llegar a la fecha de entrega que tanto preocupa al cliente.
Las funciones trasnversales enumeradas son las que existen en casi todos los proyectos. Estas son: Autenticacion, Autorizacion, Caching, Comunicacion, manejo de excepciones y logging.
Principios claves de la arquitectura
- Construir para el cambio
- Analisis del modelo y reduccion del riego
- Uso de herramientas de comunicacion y colaboracion
- Identificar las decisiones claves de ingenieria (cuadro de la guia)
Fuente: patterns & practices Application Architecture Guide 2.0