33
Arquitectura de Software

Lab Software Architecture (in spanish)

Embed Size (px)

DESCRIPTION

Software Architecture introduction (in Spanish)

Citation preview

Page 1: Lab Software Architecture (in spanish)

Arquitectura de Software

Page 2: Lab Software Architecture (in spanish)

Antes…

• Qué haría usted si en una definición de la IEEE encuentra algo como esto: • “Arquitectura: No estamos

seguros, pero la reconocemos cuando vemos una”

• IEEE-1471-FAQ

Page 3: Lab Software Architecture (in spanish)

• Introducción • Definición de Arquitectura de Software • SW Architecture desde el RUP • SW Architecture desde un enfoque netamente SW

Architect • Funcionalidad • Atributos de calidad • Patrones y arquitecturas de referencia

• Cómo empezar en SW Architecture? • La estrategia Bass-Clements-Kazman

Page 4: Lab Software Architecture (in spanish)

Bibliografía • http://www.sei.cmu.edu/architecture/ • http://msdn.microsoft.com/en-

us/library/ff650706.aspx • http://www.softwarearchitectures.com • http://www.iasaglobal.org/iasa/default.asp • Software Architecture in Practice, Second Edition

By Len Bass, Paul Clements, Rick Kazman

• y muchas otras fuentes…

Page 5: Lab Software Architecture (in spanish)

• “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.”

SEI – Carnegie Mellon (Bass, Clements, Kazman. Software Architecture In Practice 2nd Edition) • “La Arquitectura de Software es la organización

fundamental de un sistema encarnada en sus componentes, las relaciones entre ellos y el ambiente y los principios que orientan su diseño y evolución.”

IEEE 1471-2000

Definición

Page 6: Lab Software Architecture (in spanish)

• The software architecture discipline is centered on the idea of reducing complexity through abstraction and separation of concerns. As a maturing discipline with no clear rules on the right way to architect it is still a composition of art and science.

• An architect must use judgment to decide on the level of detail that must be exposed or hidden in order to explain to various audiences how a system will address key business drivers.

Definición (Softwarerachitects.com)

Page 7: Lab Software Architecture (in spanish)

• Vista estructural de alto nivel. • Combinación de estilos para una solución. • Esencial para el éxito o el fracaso. • Quien busca el logro de los requisitos no

funcionales. • Una disciplina que provee un plan de diseño de un

sistema • Implica un propósito. • Una abstracción que ayuda en la gestión de la

complejidad de un sistema.

Sintetizando, la Arquitectura es (Lozano, 2009)

Page 8: Lab Software Architecture (in spanish)

• Software Architecture is “concerned with issues ... Beyond the algorithms and data structures of the computation.” [Garlan y Shaw]

• “Architecture is concerned with the selection of architectural elements, their interaction, and the constraints on those elements and their interactions Design is concerned with the modularization and detailed interfaces of the design elements, their algorithms and procedures, and the data types needed to support the architecture and to satisfy the requirements.” [Perry y Wolf]

Arquitectura vs Diseño

Page 9: Lab Software Architecture (in spanish)

• Software Architecture is “concerned with issues ... Beyond the algorithms and data structures of the computation.” [Garlan y Shaw]

• “Architecture is concerned with the selection of architectural elements, their interaction, and the constraints on those elements and their interactions Design is concerned with the modularization and detailed interfaces of the design elements, their algorithms and procedures, and the data types needed to support the architecture and to satisfy the requirements.” [Perry y Wolf]

Arquitectura vs Diseño

Page 10: Lab Software Architecture (in spanish)

Fuente: IBM Mastering OOAD w/ UML 2.0

Arquitectura vs Diseño según RUP

Page 11: Lab Software Architecture (in spanish)

Fuente: IBM Mastering OOAD w/ UML 2.0

Arquitectura vs Diseño según RUP

Page 12: Lab Software Architecture (in spanish)

Fuente: IBM Mastering OOAD w/ UML 2.0

Arquitectura vs Diseño según RUP

Page 13: Lab Software Architecture (in spanish)

Fuente: Lozano 2009

Entonces

Análisis de Requerimientos

Diseño de Software

Arquitectura de

Software

Page 14: Lab Software Architecture (in spanish)

• Igual en la academia que en la industria. • Madura. • DISEÑO CON UML. • Natural en el desarrollo basado en Componentes. • Algo vinculado con RUP o metodología. • Algo vinculado con la orientación a objetos.

Arquitectura NO es (Lozano, 2009)

Page 15: Lab Software Architecture (in spanish)

• Software Architecture • Enterprise Architecture • Infrastructure Architecture • Information Architecture • Business Architecture

Fuente: http://www.iasaglobal.org

Tipos de Arquitecturas acorde con IASA: the Global IT Architect Association

Page 16: Lab Software Architecture (in spanish)

• The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both.

• The term also refers to documentation of a system's software architecture. Documenting software architecture facilitates communication between stakeholders, documents early decisions about high-level design, and allows reuse of design components and patterns between projects.

Software Architecture

Page 17: Lab Software Architecture (in spanish)

• Communication among stakeholders. Software architecture represents a common abstraction of a system that most if not all of the system's stakeholders can use as a basis for mutual understanding, negotiation, consensus, and communication.

ARCHITECTURE IS THE VEHICLE FOR STAKEHOLDER COMMUNICATION

Why Is Software Architecture Important? (I) (Bass, Clements and Kazman)

Page 18: Lab Software Architecture (in spanish)

• Early design decisions. Software architecture manifests the earliest design decisions about a system, and these early bindings carry weight far out of proportion to their individual gravity with respect to the system's remaining development, its deployment, and its maintenance life. It is also the earliest point at which design decisions governing the system to be built can be analyzed.

Why Is Software Architecture Important? (II) (Bass, Clements and Kazman)

Page 19: Lab Software Architecture (in spanish)

• Transferable abstraction of a system. Software architecture constitutes a relatively small, intellectually graspable model for how a system is structured and how its elements work together, and this model is transferable across systems. In particular, it can be applied to other systems exhibiting similar quality attribute and functional requirements and can promote large-scale re-use.

Why Is Software Architecture Important? (III) (Bass, Clements and Kazman)

Page 20: Lab Software Architecture (in spanish)

• An enterprise architecture (EA) is a rigorous description of the structure of an enterprise, which comprise enterprise components (business entities), the externally visible properties of those components, and the relationships (e.g. the behavior) between them.

• EA describes the terminology, the composition of enterprise components, and their relationships with the external environment, and the guiding principles for the requirement, design, and evolution of an enterprise.

• This description is comprehensive, including enterprise goals, business process, roles, organizational structures, organizational behaviors, business information, software applications and computer systems.

Enterprise Architecture

Page 21: Lab Software Architecture (in spanish)

Ejemplo Arquitectura Empresarial

Fuente: http://sunilduttjha.files.wordpress.com/2012/02/16_changes.gif

Page 22: Lab Software Architecture (in spanish)

• A business architecture is a part of an enterprise architecture related to architectural organization of business, and the documents and diagrams that describe that architectural organization. People who help build business architecture are known as Business Architects

Business Architecture

Page 23: Lab Software Architecture (in spanish)

• It describes the structure and behavior of the technology infrastructure of an enterprise, solution or system.

• It covers the client and server nodes of the hardware configuration, the infrastructure applications that run on them, the infrastructure services they offer to applications, the protocols and networks that connect applications and nodes. It addresses issues such as performance and resilience, storage and backup.

Infrastructure Architecture

Page 24: Lab Software Architecture (in spanish)

• Information architecture (IA) is the art of expressing a model or concept of information used in activities that require explicit details of complex systems.

• Among these activities are library systems, Content Management Systems, web development, user interactions, database development, programming, technical writing, enterprise architecture, and critical system software design.

• Information architecture has somewhat different meanings in these different branches of IS or IT architecture. Most definitions have common qualities: a structural design of shared environments, methods of organizing and labeling websites, intranets, and online communities, and ways of bringing the principles of design and architecture to the digital landscape.

Information Architecture

Page 25: Lab Software Architecture (in spanish)

• http://prezi.com/aafmvya6bk7t/understanding-information-architecture/

• Resumen por Peter Morville.

Information Architecture

Page 26: Lab Software Architecture (in spanish)

Otras consideraciones (Bass, Clements, Kazman)

Page 27: Lab Software Architecture (in spanish)

Architecture Patterns

Buschman et al, Pattern-Oriented Software Architecture - A System of Patterns • Layers • Model-view-controller (MVC) • Pipes and Filters • Blackboards • C/S

Page 28: Lab Software Architecture (in spanish)

Fuente: IBM Mastering OOAD w/ UML 2.0

Antes de arrancar

Page 29: Lab Software Architecture (in spanish)

Cómo arranco con Arquitectura de SW?

Arquitectura de Software acorde con RUP

Page 30: Lab Software Architecture (in spanish)

Enfoque SW Architecture Pura (Bass, Clements, Kazman) What is functionality? • It is the ability of the system to do the work for which

it was intended.

• Functionality may be achieved through the use of any of a number of possible structures

• Functionality is largely independent of structure

Page 31: Lab Software Architecture (in spanish)

Enfoque SW Architecture Pura (Bass, Clements, Kazman) Quality Attributes (three classes:) • Qualities of the system. We will focus on

availability, modifiability, performance, security, testability, and usability.

• Business qualities (such as time to market) that are affected by the architecture.

• Qualities, such as conceptual integrity, that are about the architecture itself although they indirectly affect other qualities, such as modifiability.

Page 32: Lab Software Architecture (in spanish)

Enfoque SW Architecture Pura (Bass, Clements, Kazman) Quality Attributes? • Architecture is critical to the realization of many qualities of

interest in a system, and these qualities should be designed in and can be evaluated at the architectural level.

• Architecture, by itself, is unable to achieve qualities. It provides the foundation for achieving quality, but this foundation will be to no avail if attention is not paid to the details.

• Within complex systems, quality attributes can never be achieved in isolation. The achievement of any one will have an effect, sometimes positive and sometimes negative, on the achievement of others. For example, security and reliability often exist in a state of mutual tension

Page 33: Lab Software Architecture (in spanish)

Estrategia para arrancar de acuerdo con (Bass, Clements, Kazman) • QUALITY ATTRIBUTE SCENARIOS (Sección 4.3 - 4.5) • QUALITY ATTRIBUTE TACTICS (Capítulo 5)