SlideShare a Scribd company logo
1 of 24
Introdução à Arquitetura de Software
          Rodrigo Veiga – PUC-Rio
                05/04/2009
                                       1
Agenda
•   Arquitetura – Definição
•   Histórico
     – Evolução do Desenvolvimento
     – Trabalhos Pioneiros em Arquitetura de Software
     – Processo de Maturação
•   Conceitos
     –   Definição
     –   Termos Relacionados
     –   Conceitos errados
     –   Architectural Concerns
     –   Architectural Styles
•   Critérios para uma boa Arquitetura
•   O Papel de Arquiteto de Software
•   Arquitetura Hoje
•   Grupos e Sites sobre o assunto
•   Bibliografia


                                                        2
Arquitetura

• “The art or science of building”
  (Oxford Dictionary)


• “Is an imitation of Nature”
  (Vitruvius on Architecture)


• “Should have Beauty (Venustas),
  Firmness (Firmitas) and Utility (Utilitas)”
  (Vitruvius on Architecture)


• “Arte ou a técnica de projetar e edificar
  o ambiente habitado pelo ser humano”
  (Wikipedia)


                                                3
Arquitetura
• “Arte ou técnica de organizar e configurar
  espaços”
  (Wikipedia)


• “Se manifesta de duas formas: a atividade
  e o resultado físico”
  (Wikipedia)


• “Architecture defines the essential
  structure and organization of something
  abstracted in an appropriate pattern”
  (Rob Beckmann , Caro Systems)



                                               4
“Every thing has an architecture” (Grady Booch)
“In all disciplines, architecture provides a mean for solving a
common problem: assuring that a building, or bridge, or
composition, or book, or computer, or network, or system has
certain properties and behaviors when it has been built”
(Beautiful Architecture)
                                                                  5
Desenvolvimento de Software
Evolução ao longo das últimas décadas




       Extraído de: An Introduction to Software Architecture, David Garlan and Mary Shaw, 1994


                                                                                                 6
Arquitetura de Software

• Trabalhos Pioneiros
  – Edgar Dijkstra, 1968
     • A Case against the GO TO Statement
        – Não apenas programar uma solução satisfatória
        – Introduz a idéia de que “a layered system results in
          ease of development and maintenance”
  – Fred Brooks Jr., 1975
     • The Mythical Man-Month
        – “Every part must reflect the same philosophies and
          the same balancing of desiderata….Ease of
          use, then, dictates unity of design, conceptual
          integrity (Simplicity and Straightforwardness)”



                                                                 7
Arquitetura de Software

• Trabalhos Pioneiros
  – David Lorge Parnas, 1972:
     • On the Criteria to Be Used in Decomposing
       Systems into Modules
        – “Information Hiding as the basis of decomposition for ease
          of maintenance and reuse”
        – “The separation of Interface from implementation of
          components”

  – Wolfram Bartussek e David Lorge Parnas,
    1978:
     • Using Assertions About Traces to Write Abstract
       Specifications for Software Modules
        – Princípios para detecção e tratamento de erros
          (assertivas, exceções, etc)

                                                                   8
Arquitetura de Software
 Processo de Maturação da Arquitetura de Software




Extraído de: The Golden Age of Software Architecture, Mary Shaw and Paul Clements, 2006
                                                                                          9
Arquitetura de Software
• “Software architecture is what software architects do”
   (Kent Beck at OOPSLA 92)


• “Software Architecture is a game of trade-offs - a decision
  that improves one characteristic often diminishes another”
   (Beautiful Architecture)


• “Architecting software is different from physical systems”
   (Grady Booch)


• “A set of architectural (or design) elements that have a
  particular form” ou “Architecture = {elements, form,
  rationale}”
   (Perry and Wolf, 1992)




                                                                10
Arquitetura de Software
•   “A software system architecture comprises
     – A collection of software and system components, connections, and
       constraints
     – A collection of system stakeholders' need statements
     – A rationale which demonstrates that the components, connections, and
       constraints define a system that, if implemented, would satisfy the
       collection of system stakeholders' need statements”
     (Boehm et al., 1995)


• “Software architecture is 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”
    (IEEE 1471-2000)


• “Is a set of principal design decisions made about the system”
    (Software Architecture Foundations, Theory and Practice)
                                                                          11
Arquitetura de Software
• “Architecture establishes the context for design
  and implementation”
  (Grady Booch)




                            “Architectural decisions are the
                            most fundamental decisions;
                            changing them will have
                            significant ripple effects.”
                            (Grady Booch)


                                                               12
Arquitetura de Software
• Termos Relacionados
  – Components
     • “An architectural element that encapsulates a subset of
       system’s funcionality and/or data” (Software Architecture)
  – Connections
     • “An architectural element that effects and regulates interactions
       among components” (Software Architecture)
  – Stakeholders
     • “Is an individual, team, or organization with interests in a
       system (or part of it)” (Grady Booch)
  – Models
     • “Is a simplification of reality, created in order to better
       understand the system being created; a semantically closed
       abstraction of a system” (Grady Booch)
  – Views / Dimensions
     • “A view is a representation of a whole system from the
       perspective of a related set of concerns” (Grady Booch)

                                                                           13
Arquitetura de Software
• Termos Relacionados (cont.)
   – Concerns
       •   “Interests related with aspects that are important to one or
           more stakeholders” (Grady Booch)
   – Patterns
       •   “Is a kind of rule that states a problem to be solved and a
           solution to that problem” (Patterns of Software)
   – Architecture Erosion / Entropy
       •   “The consequences of actions that disorganizes a software
           architecture over time” (Stephen J. Mellor foreword to Beautiful
           Architecture)
   – Architecture Style
       •   “Style is the classification of an architecture according to those
           with similar patterns” (Grady Booch)
   – Reference Architecture
       •   “Is a set of principal design decisions that are simultaneously
           applicable to multiple related systems” (Software Architecture)

                                                                                14
Conceitos Errados sobre
   Arquitetura de Software
• “Architecture is just paper
• Architecture and design are the same things
• Architecture and infrastructure are the same
  things
• <my favorite technology> is the architecture
• A good architecture is the work of a single
  architect
• Architecture can be represented in a single
  blueprint (or is flat)
• Architecture is a science
• Architecture is an art”

                       (Handbook of Architecture, Grady Booch)
                                                                 15
Arquitetura de Software
• Architectural Concerns
(Adaptado de Beautiful Architecture e Patterns of Software)


                            Functionality

    Ecosystem                                            Usability

     Security                                           Modularity

                                                        Performance
  Habitability
                                                         Reusability

        Changeability
                                                  Scalability
          Reliability
                                                                       16
Arquitetura de Software
• Architectural Styles (Software Architecture)

     Language      • Main Program and Subrotines
 Influenced Styles • Object-Oriented

                   • Virtual Machines
     Layered
                   • Client-Server

                   • Batch-sequential
     Dataflow
                   • Pipe-and-filter

      Implicit     • Publish-subscribe
    Invocation     • Event-based


   Peer-To-Peer    • P2P




                                                   17
Critérios para uma boa Arquitetura
   “One fact in one place
   Automatic Propagation
   High Modularity
   Simplicity: Simple but not Simpler
   Versatility
   Conceptual Integrity / Resist Entropy
   Elegance (Doing the most with least)
   Use of Patterns
   Standard Compliance
   Habitability / Comprehensibility
   Productivity
   Interoperability”

(Adaptado de: Beautiful Architectures, Handbook of Architecture, Patterns of Software)

                                                                                    18
O Papel de Arquiteto de Software
 • Responsabilidades
   –   Responsável pela Arquitetura
   –   Manter a integridade da Arquitetura
   –   Definir e validá-la
   –   Facilitar a comunicação entre equipes
   –   Atuar como mentor dos times
 • Características
   –   Tem que ter flexibilidade / adaptabilidade
   –   Comunicação e Liderança
   –   Não deve impor as regras / Saber ouvir
   –   Visão holística
                     (Handbook of Software Architecture, Grady Booch)
                                                                   19
O Papel de Arquiteto de Software

• Maus hábitos
  –   Perfeccionismo
  –   Inflexibilidade
  –   Micromanagement
  –   Isolacionismo




                        (Software Architecture)

                                                  20
Arquitetura de Software Hoje
• Crescimento de ferramentas e mecanismos que
  ajudam a manter a integridade da Arquitetura
   – Model Driven Design
   – Menos código para implementar mais funcionalidades
• Maior interoperabilidade
   – Orientação a serviços
   – Utilização de Agentes
   – Cada vez mais sistemas heterogêneos (várias linguagens)
• Virtualização, Cloud Computing
• Processos
   – Arquitetura deixando de ser encarada como uma fase de
     projeto, mas como uma necessidade de ponta a ponta
• Web 2.0
   – Novos níveis de exigência
                                                               21
Grupos e Sites sobre o assunto

  –   Pangea (http://pangeanet.org)
  –   Highscalability (http://highscalability.com)
  –   Infoq (http://www.infoq.com)
  –   The Server Side
      (http://www.theserverside.com)




                                                     22
Referências
•   Diomidis Spinellis & Georgios ousios, Beautiful Architecture,
    O’Reilly 2009
•   Revista MundoJava, edições 15 e 25
•   Richard N. Taylor, Nenrad Medvidovic, Eric M. Dashofy, Software
    Architecture – Foundations, Theory and Practice, Wiley 2009
•   Richard P. Gabriel, Patterns of Software, 1996
•   Handbook of Software Architecture, Grady Booch, IBM
•   Mary Shaw and Paul Clements, The Golden Age of Software
    Architecture, 2006
•   Visão Geral de Arquitetura de Software, Marco Aurélio S. Mendes,
    Instituto GTI
•   David Garlan and Mary Shaw, An Introduction to Software
    Architecture, 1994
•   Dewayne E. Perry & Alexander L. Wolf, Foundations for the Study
    of Software Architecture, 1992
•   Ane Cristina Varoto, Visões em arquitetura de software, 2002

                                                                  23
Referências
•   Wikipedia
     – http://pt.wikipedia.org/wiki/Arquitetura, Acesso em 04/2009
     – http://pt.wikipedia.org/wiki/Arquitetura_de_software, Acesso
         em 04/2009
     – http://pt.wikipedia.org/wiki/Arquitetura_(desambigua%C3%A
         7%C3%A3o), Acesso em 04/2009
•   Scaling Twitter: Making Twitter 10000 Percent Faster | High
    Scalability, http://highscalability.com/scaling-twitter-making-
    twitter-10000-percent-faster, Acesso em 04/2009
•   A Quick Look at Architectural Styles and Patterns;
    http://www.infoq.com/news/2009/02/Architectural-Styles-
    Patterns, Acesso em 04/2009
•   Architectural Styles, Patterns, and Metaphors;
    http://shapingsoftware.com/2008/08/10/architectural-styles-
    patterns-and-metaphors, Acesso em 04/2009


                                                                      24

More Related Content

Similar to Introdução à Arquitetura de Software

PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)Steve Lange
 
IT architecture and architects
IT architecture and architectsIT architecture and architects
IT architecture and architectsAndre Dovgal
 
Design concepts and principle,
Design concepts and principle, Design concepts and principle,
Design concepts and principle, awikhan12
 
Cs 1023 lec 4 (week 1)
Cs 1023 lec 4 (week 1)Cs 1023 lec 4 (week 1)
Cs 1023 lec 4 (week 1)stanbridge
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)stanbridge
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)stanbridge
 
Elevator pitch for testing software architecture and software design
Elevator pitch for testing software architecture and software designElevator pitch for testing software architecture and software design
Elevator pitch for testing software architecture and software designZarko Acimovic
 
Elevator pitch architecture design
Elevator pitch architecture designElevator pitch architecture design
Elevator pitch architecture designZarko Acimovic
 
Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)stanbridge
 
Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)stanbridge
 
Lecture-1-Introduction.pdf
Lecture-1-Introduction.pdfLecture-1-Introduction.pdf
Lecture-1-Introduction.pdfAkilaGamage2
 
Service-Oriented Architecture for Libraries
Service-Oriented Architecture for LibrariesService-Oriented Architecture for Libraries
Service-Oriented Architecture for LibrariesRichard Akerman
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part iBisrat Girma
 
Communication &amp; Coordination on a Construction Project Through Building I...
Communication &amp; Coordination on a Construction Project Through Building I...Communication &amp; Coordination on a Construction Project Through Building I...
Communication &amp; Coordination on a Construction Project Through Building I...muhammad87
 
02_Architectures_In_Context.ppt
02_Architectures_In_Context.ppt02_Architectures_In_Context.ppt
02_Architectures_In_Context.pptRohanBorgalli
 
Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionHenry Muccini
 
Software Architecture Erosion and Modernization
Software Architecture Erosion and ModernizationSoftware Architecture Erosion and Modernization
Software Architecture Erosion and Modernizationbmerkle
 
Lecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfLecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfAkilaGamage2
 
Software engineering the genesis
Software engineering  the genesisSoftware engineering  the genesis
Software engineering the genesisPawel Szulc
 

Similar to Introdução à Arquitetura de Software (20)

PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
PHX Session #5 : Architecture Without Big Design Up Front (Garibay)
 
IT architecture and architects
IT architecture and architectsIT architecture and architects
IT architecture and architects
 
Design concepts and principle,
Design concepts and principle, Design concepts and principle,
Design concepts and principle,
 
Cs 1023 lec 4 (week 1)
Cs 1023 lec 4 (week 1)Cs 1023 lec 4 (week 1)
Cs 1023 lec 4 (week 1)
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)
 
Cs 1023 lec 1 big idea (week 1)
Cs 1023 lec 1   big idea (week 1)Cs 1023 lec 1   big idea (week 1)
Cs 1023 lec 1 big idea (week 1)
 
Elevator pitch for testing software architecture and software design
Elevator pitch for testing software architecture and software designElevator pitch for testing software architecture and software design
Elevator pitch for testing software architecture and software design
 
Elevator pitch architecture design
Elevator pitch architecture designElevator pitch architecture design
Elevator pitch architecture design
 
Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)
 
Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)Cs 1023 lec 3 architecture (week 1)
Cs 1023 lec 3 architecture (week 1)
 
Lecture-1-Introduction.pdf
Lecture-1-Introduction.pdfLecture-1-Introduction.pdf
Lecture-1-Introduction.pdf
 
Service-Oriented Architecture for Libraries
Service-Oriented Architecture for LibrariesService-Oriented Architecture for Libraries
Service-Oriented Architecture for Libraries
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part i
 
Communication &amp; Coordination on a Construction Project Through Building I...
Communication &amp; Coordination on a Construction Project Through Building I...Communication &amp; Coordination on a Construction Project Through Building I...
Communication &amp; Coordination on a Construction Project Through Building I...
 
02_Architectures_In_Context.ppt
02_Architectures_In_Context.ppt02_Architectures_In_Context.ppt
02_Architectures_In_Context.ppt
 
Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstraction
 
Software Architecture Erosion and Modernization
Software Architecture Erosion and ModernizationSoftware Architecture Erosion and Modernization
Software Architecture Erosion and Modernization
 
Lecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfLecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdf
 
Software Engineering
Software EngineeringSoftware Engineering
Software Engineering
 
Software engineering the genesis
Software engineering  the genesisSoftware engineering  the genesis
Software engineering the genesis
 

Recently uploaded

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 

Recently uploaded (20)

The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 

Introdução à Arquitetura de Software

  • 1. Introdução à Arquitetura de Software Rodrigo Veiga – PUC-Rio 05/04/2009 1
  • 2. Agenda • Arquitetura – Definição • Histórico – Evolução do Desenvolvimento – Trabalhos Pioneiros em Arquitetura de Software – Processo de Maturação • Conceitos – Definição – Termos Relacionados – Conceitos errados – Architectural Concerns – Architectural Styles • Critérios para uma boa Arquitetura • O Papel de Arquiteto de Software • Arquitetura Hoje • Grupos e Sites sobre o assunto • Bibliografia 2
  • 3. Arquitetura • “The art or science of building” (Oxford Dictionary) • “Is an imitation of Nature” (Vitruvius on Architecture) • “Should have Beauty (Venustas), Firmness (Firmitas) and Utility (Utilitas)” (Vitruvius on Architecture) • “Arte ou a técnica de projetar e edificar o ambiente habitado pelo ser humano” (Wikipedia) 3
  • 4. Arquitetura • “Arte ou técnica de organizar e configurar espaços” (Wikipedia) • “Se manifesta de duas formas: a atividade e o resultado físico” (Wikipedia) • “Architecture defines the essential structure and organization of something abstracted in an appropriate pattern” (Rob Beckmann , Caro Systems) 4
  • 5. “Every thing has an architecture” (Grady Booch) “In all disciplines, architecture provides a mean for solving a common problem: assuring that a building, or bridge, or composition, or book, or computer, or network, or system has certain properties and behaviors when it has been built” (Beautiful Architecture) 5
  • 6. Desenvolvimento de Software Evolução ao longo das últimas décadas Extraído de: An Introduction to Software Architecture, David Garlan and Mary Shaw, 1994 6
  • 7. Arquitetura de Software • Trabalhos Pioneiros – Edgar Dijkstra, 1968 • A Case against the GO TO Statement – Não apenas programar uma solução satisfatória – Introduz a idéia de que “a layered system results in ease of development and maintenance” – Fred Brooks Jr., 1975 • The Mythical Man-Month – “Every part must reflect the same philosophies and the same balancing of desiderata….Ease of use, then, dictates unity of design, conceptual integrity (Simplicity and Straightforwardness)” 7
  • 8. Arquitetura de Software • Trabalhos Pioneiros – David Lorge Parnas, 1972: • On the Criteria to Be Used in Decomposing Systems into Modules – “Information Hiding as the basis of decomposition for ease of maintenance and reuse” – “The separation of Interface from implementation of components” – Wolfram Bartussek e David Lorge Parnas, 1978: • Using Assertions About Traces to Write Abstract Specifications for Software Modules – Princípios para detecção e tratamento de erros (assertivas, exceções, etc) 8
  • 9. Arquitetura de Software Processo de Maturação da Arquitetura de Software Extraído de: The Golden Age of Software Architecture, Mary Shaw and Paul Clements, 2006 9
  • 10. Arquitetura de Software • “Software architecture is what software architects do” (Kent Beck at OOPSLA 92) • “Software Architecture is a game of trade-offs - a decision that improves one characteristic often diminishes another” (Beautiful Architecture) • “Architecting software is different from physical systems” (Grady Booch) • “A set of architectural (or design) elements that have a particular form” ou “Architecture = {elements, form, rationale}” (Perry and Wolf, 1992) 10
  • 11. Arquitetura de Software • “A software system architecture comprises – A collection of software and system components, connections, and constraints – A collection of system stakeholders' need statements – A rationale which demonstrates that the components, connections, and constraints define a system that, if implemented, would satisfy the collection of system stakeholders' need statements” (Boehm et al., 1995) • “Software architecture is 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” (IEEE 1471-2000) • “Is a set of principal design decisions made about the system” (Software Architecture Foundations, Theory and Practice) 11
  • 12. Arquitetura de Software • “Architecture establishes the context for design and implementation” (Grady Booch) “Architectural decisions are the most fundamental decisions; changing them will have significant ripple effects.” (Grady Booch) 12
  • 13. Arquitetura de Software • Termos Relacionados – Components • “An architectural element that encapsulates a subset of system’s funcionality and/or data” (Software Architecture) – Connections • “An architectural element that effects and regulates interactions among components” (Software Architecture) – Stakeholders • “Is an individual, team, or organization with interests in a system (or part of it)” (Grady Booch) – Models • “Is a simplification of reality, created in order to better understand the system being created; a semantically closed abstraction of a system” (Grady Booch) – Views / Dimensions • “A view is a representation of a whole system from the perspective of a related set of concerns” (Grady Booch) 13
  • 14. Arquitetura de Software • Termos Relacionados (cont.) – Concerns • “Interests related with aspects that are important to one or more stakeholders” (Grady Booch) – Patterns • “Is a kind of rule that states a problem to be solved and a solution to that problem” (Patterns of Software) – Architecture Erosion / Entropy • “The consequences of actions that disorganizes a software architecture over time” (Stephen J. Mellor foreword to Beautiful Architecture) – Architecture Style • “Style is the classification of an architecture according to those with similar patterns” (Grady Booch) – Reference Architecture • “Is a set of principal design decisions that are simultaneously applicable to multiple related systems” (Software Architecture) 14
  • 15. Conceitos Errados sobre Arquitetura de Software • “Architecture is just paper • Architecture and design are the same things • Architecture and infrastructure are the same things • <my favorite technology> is the architecture • A good architecture is the work of a single architect • Architecture can be represented in a single blueprint (or is flat) • Architecture is a science • Architecture is an art” (Handbook of Architecture, Grady Booch) 15
  • 16. Arquitetura de Software • Architectural Concerns (Adaptado de Beautiful Architecture e Patterns of Software) Functionality Ecosystem Usability Security Modularity Performance Habitability Reusability Changeability Scalability Reliability 16
  • 17. Arquitetura de Software • Architectural Styles (Software Architecture) Language • Main Program and Subrotines Influenced Styles • Object-Oriented • Virtual Machines Layered • Client-Server • Batch-sequential Dataflow • Pipe-and-filter Implicit • Publish-subscribe Invocation • Event-based Peer-To-Peer • P2P 17
  • 18. Critérios para uma boa Arquitetura  “One fact in one place  Automatic Propagation  High Modularity  Simplicity: Simple but not Simpler  Versatility  Conceptual Integrity / Resist Entropy  Elegance (Doing the most with least)  Use of Patterns  Standard Compliance  Habitability / Comprehensibility  Productivity  Interoperability” (Adaptado de: Beautiful Architectures, Handbook of Architecture, Patterns of Software) 18
  • 19. O Papel de Arquiteto de Software • Responsabilidades – Responsável pela Arquitetura – Manter a integridade da Arquitetura – Definir e validá-la – Facilitar a comunicação entre equipes – Atuar como mentor dos times • Características – Tem que ter flexibilidade / adaptabilidade – Comunicação e Liderança – Não deve impor as regras / Saber ouvir – Visão holística (Handbook of Software Architecture, Grady Booch) 19
  • 20. O Papel de Arquiteto de Software • Maus hábitos – Perfeccionismo – Inflexibilidade – Micromanagement – Isolacionismo (Software Architecture) 20
  • 21. Arquitetura de Software Hoje • Crescimento de ferramentas e mecanismos que ajudam a manter a integridade da Arquitetura – Model Driven Design – Menos código para implementar mais funcionalidades • Maior interoperabilidade – Orientação a serviços – Utilização de Agentes – Cada vez mais sistemas heterogêneos (várias linguagens) • Virtualização, Cloud Computing • Processos – Arquitetura deixando de ser encarada como uma fase de projeto, mas como uma necessidade de ponta a ponta • Web 2.0 – Novos níveis de exigência 21
  • 22. Grupos e Sites sobre o assunto – Pangea (http://pangeanet.org) – Highscalability (http://highscalability.com) – Infoq (http://www.infoq.com) – The Server Side (http://www.theserverside.com) 22
  • 23. Referências • Diomidis Spinellis & Georgios ousios, Beautiful Architecture, O’Reilly 2009 • Revista MundoJava, edições 15 e 25 • Richard N. Taylor, Nenrad Medvidovic, Eric M. Dashofy, Software Architecture – Foundations, Theory and Practice, Wiley 2009 • Richard P. Gabriel, Patterns of Software, 1996 • Handbook of Software Architecture, Grady Booch, IBM • Mary Shaw and Paul Clements, The Golden Age of Software Architecture, 2006 • Visão Geral de Arquitetura de Software, Marco Aurélio S. Mendes, Instituto GTI • David Garlan and Mary Shaw, An Introduction to Software Architecture, 1994 • Dewayne E. Perry & Alexander L. Wolf, Foundations for the Study of Software Architecture, 1992 • Ane Cristina Varoto, Visões em arquitetura de software, 2002 23
  • 24. Referências • Wikipedia – http://pt.wikipedia.org/wiki/Arquitetura, Acesso em 04/2009 – http://pt.wikipedia.org/wiki/Arquitetura_de_software, Acesso em 04/2009 – http://pt.wikipedia.org/wiki/Arquitetura_(desambigua%C3%A 7%C3%A3o), Acesso em 04/2009 • Scaling Twitter: Making Twitter 10000 Percent Faster | High Scalability, http://highscalability.com/scaling-twitter-making- twitter-10000-percent-faster, Acesso em 04/2009 • A Quick Look at Architectural Styles and Patterns; http://www.infoq.com/news/2009/02/Architectural-Styles- Patterns, Acesso em 04/2009 • Architectural Styles, Patterns, and Metaphors; http://shapingsoftware.com/2008/08/10/architectural-styles- patterns-and-metaphors, Acesso em 04/2009 24

Editor's Notes

  1. Vitruvius = Marco VitruviusA arquitetura se manifesta de dois modos diferentes: a atividade (a arte, o campo de trabalho do arquiteto) e o resultado físico (o conjunto construído de um arquiteto, de um povo e da humanidade como um todo).Arquitetura, no seu sentido primeiro e mais amplo, refere-se, em uma acepção tradicional, à arte e técnica de organizar e configurar espaços a fim de construir o meio-ambiente propício à vida humana. Arquitetura é música petrificada,Johann Wolfgang von Goethe
  2. Arquitetura Cultural é uma metodologia de planejamento e construção de empreendimentos e políticas privadas sustentáveis, que gerem impacto sociocultural positivo, alicerçados na visão estratégica, no valor sócio-econômico do negócio e no compromisso ético da empresa com a sociedade e com o desenvolvimento humano.A arquitetura cenográfica (cênica) ocupa-se mais especificamente da geração dos cenários arquitetônicos internos ou externos.A arquitetura de computadores é a teoria por detrás do desenho de um computador.A Arquitetura de Informações consiste no design de ambientes informacionais compartilhados e resistentes à entropia, que vem a ser o estado de desordem natural de qualquer sistema, na ausência de uma força organizadora.Arquitetura de rede é como se designa um conjunto de camadas e protocolos de rede
  3. Pioneiros
  4. Distinguish the development of software systems from the development of physical systems. With software, time matters. Software is all about state and changing state. There are usually a large number of states the software can exist in, and the software behavior may be very complex, which makes it difficult to analyze all of the different state combinations. This is different than with physical systems where even moving elements have a finite number of states.Physical systems are constrained and governed by the laws of physics. On the other hand, with software systems, you can do anything you want. This makes visible and physical systems easier to architect.Many physical systems such as buildings, are static structures. Software systems have both static and dynamic perspectives.Software is assumed to evolve and hence it is built in such a way that applying changes should be inexpensive. Adaptability is the rule for software. In fact, adaptability is the very nature of expert systems. Physical systems are not really built to change over time. Per physical systems engineering standards, software systems are perpetually in the design and prototyping stage. At some point, a running version is good enough to be released. Since the replication and distribution costs are very low (e.g., just burn a CD), new releases can be produced very frequently (we are not saying that this is desirable). In other words, software development is a continuous design process, where the manufacturing cost is effectively zero. This is unlike hardware systems where you build once and spend the rest of the time manufacturing.Software architecting is less predictable and more risk-building that hardware architecting. Thus, software is becoming more complex and difficult to build than hardware.
  5. Architecture is many things to many different stakeholdersEnd userCustomerSys adminProject managerSystem engineerDeveloperArchitectMaintainerTesterOther systemsArchitecture defines major componentsArchitecture defines component relationships (structures) and interactionsArchitecture omits content information about components that does not pertain to their interactions Behavior of components is a part of architecture insofar as it can be discerned from the point of view of another componentEvery system has an architecture (even a system composed of one component)Architecture defines the rationale behind the components and the structureArchitecture definitions do not define what a component isArchitecture is not a single structure -- no single structure is the architecture
  6. Functional/logic viewCode/module viewDevelopment/structural viewConcurrency/process/thread viewPhysical/deployment viewUser action/feedback viewData view
  7. A system’s architecture ultimately resides in executable codeA system’s architecture may be visualized in modelsEvery system has an architecture; some architectures are made manifest and visible, many others are notAll architecture is design, but not all design is architectureInfrastructure is an integral and important part of architecture, but there is more to architecture than just infrastructureA given technology only serves to implement some dimension of an architectureTechnology shapes an architecture, but a resilient architecture should never be bound to all of the technologies that form itConceptual integrity is essential, but the complexity of most interesting systems leads development to be a team sportMultiple stakeholders with multiple concerns lead to multiple views with multiple blueprintsThere exists only a modest body of knowledge about software architectureScientific and analytical methods are lacking; those that do exist are hard to applyThere is no perfect design; architecture involves the management of extreme ambiguity and contradictionExperience counts: the best architects are grown, not bornEven the best architects copy solutionsThe “artsy” part of software architecture is minimal
  8. FunctionalityUsabilityPerformanceScalabilityChangeabilityComprehensibility / Habitability (Patterns of Software)EcosystemModularityReusabilitySecurityReliability