2. Arquitectura del Software Según la IEEE Std 1471-2000 que reza así: “La Arquitectura del Software es la organización fundamental de un sistema formada por sus componentes, las relaciones entre ellos y el contexto en el que se implantarán, y los principios que orientan su diseño y evolución”. En un sentido amplio podríamos estar de acuerdo en que la Arquitectura del Software es el diseño de más alto nivel de la estructura de un sistema, programa o aplicación y tiene la responsabilidad de:
3. Definir los módulos principales Definir las responsabilidades que tendrá cada uno de estos módulos Definir la interacción que existirá entre dichos módulos: Control y flujo de datos Secuenciación de la información Protocolos de interacción y comunicación Ubicación en el hardware
4. El objetivo principal de la Arquitectura del Software es aportar elementos que ayuden a la toma de decisiones y, al mismo tiempo, proporcionar conceptos y un lenguaje común que permitan la comunicación entre los equipos que participen en un proyecto. No hay estándares en cuanto a la forma y lenguaje a utilizar en estos blueprints.
5. Quizá uno de los modelos más conocidos es el “4+1” de Philippe Kruchten, vinculado al Rational Unified Process (RUP), que define cuatro vistas diferentes: Vista lógica: describe el modelo de objetos. Vista de proceso: muestra la concurrencia y sincronía de los procesos. Vista física: muestra la ubicación del software en el hardware. Vista de desarrollo: describe la organización del entorno de desarrollo. Existe una quinta vista que consiste en una selección de casos de uso o de escenarios que los arquitectos pueden elaborar a partir de las cuatro vistas anteriores.
7. vista de proceso que muestra las relaciones entre las capas model, view y controller de la arquitectura MVC bajo J2EE.
8. Patrón de Diseño Singleton El patrón de diseño Singleton está pensado para restringir la creación de objetos de una clase determinada garantizando que sólo exista una instancia de dicha clase y proporcionar un punto de acceso global a ella.
9. Los Singletons normalmente se usan para proporcionar un punto de acceso global para un servicio. Los Singletons permiten limitar la creación de los objetos. Los Singletons promueven el acoplamiento fuerte entre clases. Los Singletons mantienen el estado hasta la finalización del programa.
10. EJEMPLO:Estructura de un diseño singleton publicclass Singleton {// Private constructor preventsinstantiationfromotherclassesprivate Singleton() {}/*** SingletonHolderisloadedonthefirstexecution of * Singleton.getInstance() orthefirstaccessto* SingletonHolder.INSTANCE, notbefore.*/privatestaticclassSingletonHolder { privatestatic final Singleton INSTANCE = new Singleton();}publicstatic Singleton getInstance() {returnSingletonHolder.INSTANCE;}}