Nivelatorio AES Retos de las aplicaciones empresariales • Incremento de la productividad del desarrollo • Responder al incremento de la demanda • Mantener el valor de los sistemas de información existentes • Mantener la seguridad de los sistemas Arquitectura de Software
Architecture is defined by the
recommended practice as the fundamental organization of a system, embodied in its components, their relationships to each other and the environment, and the principles governing its design and evolution. [ANSI/IEEE Std 1471-2000 ] Arquitectura de Software
The software architecture of a program
or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them. [L.Bass, P.Clements, R.Kazman, Software Architecture in Practice (2nd edition), Addison-Wesley 2003] Arquitectura de Software [Software architecture goes] beyond the algorithms and data structures of the computation; designing and specifying the overall system structure emerges as a new kind of problem. Structural issues include gross organization and global control structure; protocols for communication, synchronization, and data access; assignment of functionality to design elements; physical distribution; composition of design elements; scaling and performance; and selection among design alternatives. [D. Garlan, M. Shaw, An Introduction to Software Architecture, Advances in Software Engineering and Knowledge Engineering, Volume I, World Scientific, 1993] Define la estructura de un sistema Define la estructura de un sistema Define la comunicación entre componentes La arquitectura trata los requerimientos no fucionales • Restricciones técnicas • Restricciones de negocio • Atributos de calidad Arquitectura como una abstracción Justificando la necesidad de arquitactura de software Justificando la necesidad de arquitactura de software Justificando la necesidad de arquitactura de software Arquitectura como un factor para minimizar riesgos Objetivos de la arquitectura Rol del arquitecto Rol del arquitecto
• Enlace entre diferentes
stekeholders • Ingeniero de Software • Conocedor de tecnologia • Administrador de riesgos Tareas del arquitecto Responsabilidades del arquitecto Responsabilidades del arquitecto El arquitecto y su realación con otros miembros Arquitectura vs Diseño Arquitectura vs Diseño Principios de Arquitectura Entregables típicos del arquitecto Vistas de Arquitectura Vistas de Arquitectura Vistas de Arquitectura – Casos de Uso Vistas de Arquitectura – Casos de Uso Vistas de Arquitectura – Vista Lógica Vistas de Arquitectura – Vista Lógica Vistas de Arquitectura – Vista de Implementación Vistas de Arquitectura – Diagramas de Proceso Vistas de Arquitectura – Diagramas de Proceso Vistas de Arquitectura – Diagramas de Proceso Vistas de Arquitectura – Diagramas de Proceso Vistas de Arquitectura – Vista de despliegue Prototipo de arquitectura Flujo de trabajo para elaborar la arquitectura Seleccionar el tipo de arquitectura Tipos de arquitecturas de software Aplicaciones standalone Cliente-Servidor Aplicaciones N-Tier Aplicaciones N-Tier Web Aplicaciones N-Tier Empresariales Arquitecturas y tecnologías Títulos de arquitectos • Chief Architect: Typically a senior position who manages a team of architects within an organization. Operates at a broad, often organizational level, and coordinates efforts across system, applications, and product lines. Very experi- enced, with a rare combination of deep technical and business knowledge. • Product/Technical/Solution Architect: Typically someone who has progressed through the technical ranks and oversees the architectural design for a specific system or application. They have a deep knowledge of how some important piece of software really works. • Enterprise Architect: Typically a much less technical, more business-focus role. Enterprise architects use various business methods and tools to understand, document, and plan the structure of the major systems in an enterprise. Tecnologias de Middleware Objetos Distribuidos Message-Oriented Middleware Message-Oriented Middleware Message-Oriented Middleware Servidores de Aplicaciones Arquitectura orientada a servicios