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

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 

Recently uploaded (20)

DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 

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