En el campo del software, la arquitectura nos identifica los elementos mas importantes de un sistema así como sus relaciones. Es decir nos da una vision global del sistema.
¿Por qué es esto importante? Porque necesitamos arquitectura para entender el sistema, organizar su desarrollo, plantear la reutilización del software y hacerlo evolucionar.
Cómo determinar los elementos que definen una arquitectura es dificil y muy importante.
Generalmente las metodologias de desarrollo indican principios para identificar y diseñar una arquitectura, aunque por ahora la ayuda real que ofrecen es muy limitada al basarse en principios muy genéricos. En este artículo describiremos algunas técnicas que nos pueden resultar muy útiles para la construcción de arquitecturas software.
Las arquitecturas software no responden únicamente a requisitos estructurales, sino que están relacionadas con aspectos de rendimiento, usabilidad, reutilización, restricciones económicas y tecnológicas, e incluso cuestiones estéticas.
Arquitecturas y Metodologías
Actualmente existen muchas metodologías de desarrollo de software, desde metodos muy 'pesados' y burocráticos, metodos ajustables al proyecto y a las condiciones de desarrollo, hasta metodos 'ligeros' que surgen como respuesta a los excesos 'formales' de otros metodos.
Evidentemente, partiendo de los principios de tantas y diversas metodologías es muy difícil sacar una visión unificada sobre el diseño arquitectónico. Sin embargo sí que podemos destacar una serie de elementos comunes en aquellas que más se centran en este tema.
Y ¿cuáles son esos elementos comunes? El primero es la existencia de una fase en la que se establece o diseña una arquitectura base y el segundo la altísima dependencia que definen entre los casos de uso y la arquitectura, definiendo un caso de uso como una interacción (secuencia de acciones) típica entre el usuario y el sistema.
Desde un punto de vista arquitectónico, no todos los casos de uso tienen la misma importancia, destacando aquellos que nos ayudan a mitigar los riesgos más importantes y sobre todo aquellos que representan la funcionalidad básica del sistema a construir.
Esta arquitectura base estará especificada por diagramas que muestren subsistemas, interfaces entre los mismos, diagramas de componentes, clases, descripciones diversas, y por el conjunto de casos de uso básicos.
Este conjunto de especificaciones nos permiten validar la arquitectura con los clientes y los desarrolladores, y asegurarnos que es adecuada para implementar la funcionalidad básica deseada.
A partir de aquí, lo normal sería desarrollar de forma iterativa el sistema hasta tenerlo funcionalmente completo.
Hasta aquí todo muy bonito y perfecto, verdad?? Ya sabemos lo útil que es una arquitectura software, pero ... seguimos sin tener ni idea de cómo diseñar una.
Tipos de sistemas
Una visión alternativa sería identificar el tipo de sistema que queremos construir. Todos sabemos que no hay dos aplicaciones iguales, pero que existen claros paralelismos entre las aplicaciones construidas para resolver problemas similares.
El fijarnos en aplicaciones del mismo tipo tiene muchas ventajas ya que nos ayuda a entender las necesidades del cliente y las soluciones ya encontradas por otros.
Mientras que usar una metodología tradicional de desarrollo:
* Te hace centrarte únicamente en parte del problema (el dominio del problema, sus requisitos y su microestructura), obviando cuestiones como rendimiento, seguridad, protocolos de comunicación, restricciones de hardware, software, y económicas, etc.
* Te proporciona una visión estrecha, ya que frecuentemente el cliente no expone adecuadamente todos sus requisitos porque no los conoce.
Imaginemos que estamos desarrollando un portal web. La experiencia nos dice que a partir de cierto número de páginas, es útil desarrollar un sistema basado en plantillas Xslt, por la disminucion de costes de mantenimiento que ello implica.
Esto es algo que ningun requisito funcional nos daría, y que probablemente tampoco surgiría de forma 'natural' en los modelos de diseño.
Usuarios que han visto este tema también han visto...
- La característica más importante para una interfaz de usuario exitosa
- Cómo crear un slogan para un logotipo
- Seguridad Web
- Navegar por Internet con seguridad
- Importancia de la Calidad de Diseño en nuestro Sitio
- Versión imprimible de este documento
- Enviar por e-mail este documento