domingo, 3 de abril de 2016

Introducción al patrón Arquitectónico MVC - Parte I

MVC, son las siglas de modelo-vista-controlador (o en inglés, model-view-controller), que es uno de los tantos patrones de arquitectura de software.
Antes de abordar de lleno este patrón, vamos a intentar hacer una introducción a la arquitectura de software, desmembrándola de lo general hacia lo particular, para al fin llegar al detalle, procurando entender exactamente de que se trata, en el contexto adecuado.
Probablemente, este capítulo sea el más complejo (y mucho más extenso en relación al Capítulo I). Pero si quieres poder aplicar de forma decuada el patrón MVC, debes hacer el esfuerzo de seguirlo con especial interés y actitud “entuciasta”.

Introducción a la Arquitectura de Software
 
¿Qué es la arquitectura de software?
Es necesario aclarar, que no existe una definición única, exacta, abarcativa e inequívoca de “arquitectura de software”. La bibliografía sobre el tema es tan extensa como la cantidad de definiciones que en ella se puede encontrar. Por lo tanto trataré, no de definir la arquitectura de software, sino más bien, de introducir a un concepto simple y sencillo que permita comprender el punto de vista desde el cual, este libro abarca a la arquitectura de software pero, sin ánimo de que ello represente “una definición más”.
A grandes rasgos, puede decirse que “la Arquitectura de Software es la forma en la que se organizan los componentes de un sistema, interactúan y se relacionan entre sí y con el contexto, aplicando normas y principios de diseño y calidad, que fortalezcan y fomenten la usabilidad a la vez que dejan preparado el sistema, para su propia evolución”.
Tal vez estés pensando “...al fin y al cabo, me haz dado una definición más...”. La respuesta es sí. Probablemente no pude contenerme de hacerlo – no lo niego -. Pero, no debes tomar lo anterior como una definición, sino como la forma en la que en este libro, se abarca la arquitectura de software.

Tendencias de la Arquitectura de Software

Si bien no puede decirse o mejor dicho, no es muy académico decirlo, voy a tomarme el atrevimiento de mencionar solo dos tendencias arquitectónicas, claramente diferenciadas entre sí:

• La Arquitectura de Software Orientada a Objetos (como “ingeniría” de sistemas)
• La Arquitectura Estructurada (como “desarrollo” de una aplicación)

Como podemos ver, en este libro, es a la primera a la cual nos enfocamos.
A fin de satisfacer la inquietud de curiosos (y de paso, no ocultar que existen), voy a mencionar la existencia de otras dos corrientes: la arquitectura basada en patrones y la arquitectura basada en procesos y metodologías.
Personalmente, no las considero como cuatro corrientes ¿Por qué? Porque independientemente de cual te agrade más, si la AS orientada o objetos o la AS estructural, implican necesariamente dos corrientes que deben aplicarse de forma optativa (o utilizas una o la otra pero no las dos simultáneamente), mientras que la AS basada en patrones y la AS basada en procesos, pueden utilizarse como complemento de las dos primeras. Pero esto, es mera filosofía propia, con la cual, no he encontrado demasiado consenso. Pues no los aburriré con ello e iremos a lo práctico. 

Características de la Arquitectura de Software: Atributos de calidad
La Calidad del Software puede definirse como los atributos implícitamente requeridos en un sistema que deben ser satisfechos. Cuando estos atributos son satisfechos, puede decirse (aunque en forma objetable), que la calidad del software es satisfactoria.
Estos atributos, se gestan desde la arquitectura de software que se emplea, ya sea cumpliendo con aquellos requeridos durante la ejecución del software, como con aquellos que forman parte del proceso de desarrollo de éste.
Atributos de calidad que pueden observarse durante la ejecución del software

1. Disponibilidad de uso
2. Confidencialidad, puesto que se debe evitar el acceso no autorizado al sistema
3. Cumplimiento de la Funcionalidad requerida
4. Desempeño del sistema con respecto a factores tales como la capacidad de respuesta
5. Confiabilidad dada por la constancia operativa y permanente del sistema
6. Seguridad externa evitando la pérdida de información debido a errores del sistema
7. Seguridad interna siendo capaz de impedir ataques, usos no autorizados, etc. Atributos de calidad  inherentes al proceso de desarrollo del software
8. Capacidad de Configurabilidad que el sistema otorga al usuario a fin de realizar ciertos cambios
9. Integrabilidad de los módulos independientes del sistema
10. Integridad de la información asociada
11.Capacidad de Interoperar con otros sistemas (interoperabilidad)
12.Capacidad de permitir ser Modificable a futuro (modificabilidad)
13.Ser fácilmente Mantenible (mantenibilidad)
14.Capacidad de Portabilidad, es decir que pueda ser ejecutado en diversos ambientes tanto de software como de hardware
15.Tener una estructura que facilite la Reusabilidad de la misma en futuros sistemas
16.Mantener un diseño arquitectónico Escalable que permita su ampliación (escalabilidad)
17.Facilidad de ser Sometido a Pruebas que aseguren que el sistema falla cuando es lo que se espera (testeabilidad)

No hay comentarios.:

Publicar un comentario