SlideShare uma empresa Scribd logo
1 de 42
Arquitetura de Software em Equipes Ágeis
      Formas de Trabalho em Projetos de Grande Escala


                     Prof. MSc. João Paulo Santos
Palestrante
       Titulação
           MSc Sistemas de Informação (UNIRIO)
           Bacharel Informática e TI (UERJ)
       Experiência
           Cargo
               Assessor Sênior do Banco do Brasil S/A cedido a BB DTVM
           Papel
               É Arquiteto de Sistemas do Banco do Brasil S/A, com atuação focada na
                definição dos componentes de software e na interação entre as soluções
                da BB Gestão de Recursos DTVM S/A
           Possui mais de 10 anos de experiência em TI, atuando nas áreas
            de especificação e desenvolvimento de sistemas orientado a
            objetos para o mercado financeiro




    2
Atuação no INFNET
       Coordenador Executivo de Pós-Graduação
            MIT em Arquitetura de Software


       Professor de Graduação e Pós-Graduação
            MIT em Engenharia de Software com Desenvolvimento Java
                Rio de Janeiro e Porto Alegre (Parceria Decision – FGV-RS)

            MIT em Engenharia de Software com Desenvolvimento .NET

            Graduação em Análise e Desenvolvimento de Sistemas

            Graduação em Engenharia de Computação



    3
Objetivos
       Apresentar formas efetivas de aplicação da
        Arquitetura de Software em Processos baseados
        nas Metodologias Ágeis

       Apresentar possíveis vantagens da Arquitetura Ágil
        em Projetos de Grande Escala




    4
Sumário

    • A Força da Analogia com a Arquitetura Civil

    • Conflitos entre a Arquitetura de Software e a Cultura Agile

    • O que faz um Arquiteto de Software Agile

    • Construindo a Arquitetura de Software em equipes Agile

    • Trabalhando em Projetos de Larga Escala




5
A Força da Analogia com a Arquitetura Civil




                         Semelhanças e
                          Diferenças
                         O Arquiteto de Software
                         Entendendo corretamente
                          a metáfora “Arquiteto”
                         Arquitetura de Software



6
Arquitetura Civil
       Todo edifício possui uma arquitetura
           Arquitetura é um conceito separado da estrutura física
               Porém, intrinsecamente conectados

           Arquitetura inicialmente definida pode ser comparada
            com a estrutura física obtida ao término do processo de
            construção




    7
A Analogia...

Arquiteto de Software            Arquiteto Civil
   Decisões são tomadas            Decisões são tomadas
    antes e durante a                antes do início da
    construção                       construção
       Planejamento iterativo          Planejamento completo

   O Arquiteto de Software         Arquiteto Civil entrega seu
    deve acompanhar o                trabalho ao engenheiro que
    andamento ao longo de todo       se encarrega das demais
    processo de construção do        etapas
    software                            cálculo estrutural

   O resultado (software) é        O resultado (edifício) é
    maleável                         sólido e estático
 8 Acolhe   mudanças               Não acolhe mudanças
O Arquiteto

      Warnerbros – The Matrix Reloaded (2003)




Quais semelhanças e diferenças com um Arquiteto de Softw

 9
Limitações da Analogia...
    Arquiteto “Torre de Marfin”
    Distanciamento da Equipe
        Dúvidas se a implementação reflete as decisões de Design
    Baixa comunicação
        Resposta à mudanças é lenta
    Assume a responsabilidade por todo sistema
        Concentra todas as decisões de Design
    Delega à equipe apenas a implementação



                  Arquiteto de Software é membro da equipe!

    10
O Arquiteto de Software




        Extraído do RUP – Rational Unified Process 2003

11
Visões 4 + 1
    É olhar para o software sob diferentes pontos de
     vista




                      Adaptado de Kruchten 1995

    12
Arquiteto de Software
    Análise do domínio do problema
    Gerenciamento de Risco
    Gerenciamento de Requisitos
    Projeto de Interface - Usabilidade
    Determinação das abordagens de implementação
    Definição de uma Arquitetura que atenda aos
        Requisitos do sistema
        Objetivos da organização
        Orçamento e cronograma do projeto

    Supervisão do mapeamento da arquitetura para o projeto e
     implementação
    Comunicação da arquitetura a todos os intervenientes
    Manutenção da arquitetura de software em todo ciclo de vida de
     projeto
    13
“software architecture” is merely one imperfect
 analogy from a large list of metaphors that could be
                        chosen
                                         Craig Larman

 “Arquitetura de software” é apenas uma analogia imperfeita
 com uma grande lista de metáforas que podem ser
 escolhidas

14
Arquitetura de Software
    Arquitetura esta presente em todos os tipos de software
        Intencional
            Há a preocupação em sua elaboração e manutenção
        Acidental
            Existe pura e simplesmente pelas decisões de implementação
                           


    Arquitetura de Software não é estática!
        É algo vivo, que se degrada ou melhora dia a dia a cada nova linha de código

    Dinâmica viva e evolutiva do desenvolvimento de software
    Busca estabelecer uma plataforma tecnológica e tratar os atributos de
     qualidade, atendendo às partes interessadas
    A Arquitetura deve ser perene ao ciclo de desenvolvimento do software



     “em vez de construção, a programação é mais parecida com jardinagem.”
                                                 Andy Hunt e Dave Thomas

    15
O Conflito entre Arquitetura de Software e Agile


                            XP e Scrum
                            Entendo a origem do
                             conflito
                            Comunicação
                            Documentação




16
XP e Scrum
    Características:
        Entregas rápidas e frequentes de software

        Rápida resposta às mudanças de requisitos

        Iniciar o desenvolvimento      antes   do   total
         entendimento

        Equipes      auto-avaliam frequentemente    o
         andamento do processo com intuito de torná-lo
         mais eficiente



    17
O Conflito
    Equipes Ágeis tendem a criar e manter pouca
     documentação (viewpoints) em comparação à
     equipes com processos mais tradicionais

    Projetos grandes demandam um elevado número de
     desenvolvedores e um aumento da necessidade por
     treinamento e comunicação da arquitetura




    18
O Conflito
    Arquitetos de Software querem gastar mais tempo
     projetando o sistema, enquanto Programadores
     querem iniciar a codificação

    Equipes Ágeis devem refletir sobre a documentação
     produzida para comunicar o entendimento comum
     da arquitetura visando manter o desenvolvimento
     efetivo
        Utilizar o código-fonte para esta comunicação, torna o
         processo ineficiente




    19
20
Documentação
    Para cada artefato ou documento produzido a
     equipe e o arquiteto devem responder:




    21
Solucionando o Conflito
    Estabelecer a Arquitetura de Software
        Representada por diferentes visões e diagramas –
         viewpoints

    O Arquiteto de Software e a Equipe de
     Desenvolvimento devem selecionar os artefatos
     importantes para a adequada informação aos
     intervenientes do sistema




    22
A agilidade necessita frequentemente de uma espinha
     dorsal para manter sua direção – algo que dê
sustentação, evitando perda de direção e foco. Trata-
 se de conseguir o equilíbrio adequado entre o “osso”
        da arquitetura e o “músculo” da agilidade

                                         Tom Graves



23
O Arquiteto Agile
    Objetivos de um Arquiteto Agile:
        Entregar soluções

        Maximizar o valor aos intervenientes

        Buscar soluções que atendam a todos os intervenientes

        Viabilizar o próximo esforço (entregável)

        Gerir mudanças e complexidade

        Criação da arquitetura bottom-up



    24
O Arquiteto Agile
    As regras de ouro:
        Valorização das Pessoas

        Comunicação

        Menos é Mais

        Acolha Mudanças: Planejar e Gerenciar

        Escolha a Solução Adequada para a
         Empresa

        Entregue Qualidade

        Modelar e Documentar de Forma Ágil
    25
Formas de Trabalhos em Grandes Projetos



                        Case: Agile em Projetos
                         Grandes
                        Scrum of Scrum – SoS
                        Agile Architecture Interations




26
Agile em Projetos Grandes
    Diversas equipes ágeis trabalhando no mesmo
     projeto de software

    O sucesso da Arquitetura está na comunicação!


                     Caso contrário:
                         Equipes tendem a “reinventar a
                          roda”
                         Usa diferentes padrões de
                          desenvolvimento
                         Limitam-se a objetivos específicos
                          e esquecem as metas globais
    27
Afinal de
        contas...
     O que é preciso
      comunicar!?




28
Caso de Sucesso – Arquitetura e Processo Ágil
    Cenário:
        Projeto de grande escala
        Processo de software baseado no Scrum para lidar
         com freqüentes mudanças de requisitos
        Desenvolver um subsistema era uma “novela” , pois
         até os especialistas do domínio tinham dificuldades
         em escrever bons requisitos
        No auge das atividades
            40 desenvolvedores no subsistema
            250 no projeto


                                                          Case extraído e adaptado do livro:
                               Large-Scale Software Architect – A Pactical Guide Using UML.
                                                               Jeff Garland, Richard Anthony
                                                                                       Pg.46


    29
Caso de Sucesso – Arquitetura e Processo Ágil
    Após alguns Sprints:
        As equipes sentiram a necessidade de uma pessoa ou
         equipe para a coordenação de assuntos cross-team

        Existência de muitos desenvolvedores experientes
            Autoridade restrita à sua equipe

        Dificuldade em estabelecer acordos entre as equipes de
         desenvolvedores
            Aceitação de padronização (Ex: Code Conventions)




    30
Caso de Sucesso – Arquitetura e Processo Ágil
    Solução:
        Nomeação de um Arquiteto ou Equipe de Arquitetos
            Mediar e conduzir questões para resolução do problema
            Pouco impacto no processo das equipes ágeis
            Questões arquiteturais foram incluídas nas reuniões diárias
            Reutilização de componentes comuns de infra-estrutura
                Redução da carga de trabalho das equipes

    O esforço “adicional” nos meetings para o
     desenvolvimento do documento de arquitetura foi
     pequeno comparado ao valor agregado obtido em
     viabilizar a comunicação entre as equipes e o
     correto entendimento do sistema

    31
SoS – Scrum of Scrums
    Técnica para escalar o uso do Scrum em grandes
     projetos

    Reunião para agrupar os times e discutir seus
     trabalhos,
        foco em áreas de sobreposição e integração
                                            Meta Equipe




                                            Equipes




    32
SoS - Meta Equipe
    Deve ser formada por profissionais experientes
        Engenheiros, Analistas ou desenvolvedores Seniores

    Frequência das reuniões definida pela equipe
        2, 3 vezes por semana, ou mesmo, diariamente

    Os participantes devem responder as seguintes
     perguntas?
        O que sua equipe fez desde a última reunião?
        O que sua equipe fará até a próxima reunião?
        Existe algo atrapalhando o caminho de sua equipe?
        Você fará algo que atrapalhe o caminho de outra equipe?

    33
Meta Equipe
    Objetivos:
        Definir padrões
            APIs, SLAs, logging de erros, estrutura de repositório de
             código, processo de build automatizado, scripts de deployment
             automatizados utilizados por todos os times, etc...

        Testes diários de integração (automatizados)

        Cruzamento de código de subprodutos

        Revisões de arquitetura

        Solucionar problemas apontados pelas equipes


    34
SoS - Escalabilidade
    As reuniões de Scrum of Scrums podem ser
     escaláveis indefinidamente por múltiplas camadas




    35
Iterações em Arquitetura Agile
    Arquitetura ágil de sucesso requer um arquiteto que:
        Entenda de desenvolvimento ágil

        Saiba interagir com a equipe pontualmente

        Influencie os usando habilidades críticas facilmente
         adaptado a partir da experiência em arquitetura com
         outras abordagens

        Aplique funções arquiteturais independentes da
         metodologia do projeto
            James Madison. Agile Architecture Interactions, IEEE Software, vol. 27, no. 2, pp. 41-48,
                                                                                            Mar./Apr.




    36
Pontos de
     Interação da
     Arquitetura
     Framework hibrido para
     Arquitetura Agile

       XP e Scrum


     Verde: Pontos de
     Interação


     Amarelo: Habilidades
     críticas


     Roxo: Funções de
     Arquitetura




37
Funções de
     Arquitetura
     Funções tipicamente
     desempenhadas por um
     arquiteto em um projeto




38
Preocupações do
     Arquiteto Agile
     Funções Arquiteturais

     Pontos de Interação

     Preocupação do
     Arquiteto

     Framework extensível




39
Considerações Finais
    Agilidade e arquitetura não estão em desacordo
    O Arquiteto deve buscar seu trabalho em estreita colaboração com
     equipes técnicas e de negócios
        visando a melhoria continua e a boa arquitetura

    Desafios de obter resultados de longo prazo usando uma série de
     eventos de curta duração
    O Arquiteto deve ter a habilidade para adaptar-se ao
     desenvolvimento Agile e manter-se focado no core da Arquitetura
    Maximizar o valor agregado para empresa e satisfazer as
     necessidades do negócio de hoje




    40
Referências
    Agilists and Architects: Allies not Adversaries
        http://blog.locaweb.com.br/eventos/qcon-agilists-and-architects-allies-not-
         adversaries/

    Agile Architecture Interactions, IEEE Software, vol. 27, no. 2, pp. 41-48,
     Mar./Apr.
    Who Needs An Architect
        http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf

    The Role of the Agile Architect
        http://www.agilearchitect.org/agile/role.htm

    Agile Manifesto
        http://www.agilemanifesto.org

    Jeff Garland & Richard Anthony. Large Scale Software Architect: A Practice
     Guide Using UML, John Wiley and Sons, 2003.
    Mark Levison. Scum of Scrums – Problemas e Valores.
        http://www.infoq.com/br/news/2008/12/scrum-of-scrums

    Mike Cohn. Agile Estimating and Planning
    41
42

Mais conteúdo relacionado

Mais procurados

Aula 1. apresentação + frameworks
Aula 1. apresentação + frameworksAula 1. apresentação + frameworks
Aula 1. apresentação + frameworksandreluizlc
 
Introdução a dispositivos móveis.
Introdução a dispositivos móveis.Introdução a dispositivos móveis.
Introdução a dispositivos móveis.Eduardo Lagares
 
Introdução a Gerência de Configuração de Software
Introdução a Gerência de Configuração de SoftwareIntrodução a Gerência de Configuração de Software
Introdução a Gerência de Configuração de SoftwareCamilo Almendra
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de SoftwareLeinylson Fontinele
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de softwareAdriano Tavares
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projetoejdn1
 
Aula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxAula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxALEXANDRELISBADASILV
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versãoMarcos Pessoa
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...Emmanuel Neri
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaÁlvaro Farias Pinheiro
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasVagner Santana
 
Aula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosAula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosHenrique Nunweiler
 
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1Carlos Eugenio Torres
 

Mais procurados (20)

Aula 1. apresentação + frameworks
Aula 1. apresentação + frameworksAula 1. apresentação + frameworks
Aula 1. apresentação + frameworks
 
Introdução a dispositivos móveis.
Introdução a dispositivos móveis.Introdução a dispositivos móveis.
Introdução a dispositivos móveis.
 
Introdução a Gerência de Configuração de Software
Introdução a Gerência de Configuração de SoftwareIntrodução a Gerência de Configuração de Software
Introdução a Gerência de Configuração de Software
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
A importância da arquitetura de software
A importância da arquitetura de softwareA importância da arquitetura de software
A importância da arquitetura de software
 
Padroes De Projeto
Padroes De ProjetoPadroes De Projeto
Padroes De Projeto
 
Aula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptxAula 7 - Modelos de Ciclo de Vida.pptx
Aula 7 - Modelos de Ciclo de Vida.pptx
 
Padrões de Projeto
Padrões de ProjetoPadrões de Projeto
Padrões de Projeto
 
Linux
LinuxLinux
Linux
 
Sistemas de controle de versão
Sistemas de controle de versãoSistemas de controle de versão
Sistemas de controle de versão
 
Arquitectura de Software
Arquitectura de SoftwareArquitectura de Software
Arquitectura de Software
 
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
O comparativo de arquiteturas de software monolíticas em relação a arquitetur...
 
Astah
AstahAstah
Astah
 
Aula4 levantamento requisitos
Aula4 levantamento requisitosAula4 levantamento requisitos
Aula4 levantamento requisitos
 
Programação Orientada a Objetos com Java
Programação Orientada a Objetos com JavaProgramação Orientada a Objetos com Java
Programação Orientada a Objetos com Java
 
Android
Android Android
Android
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Padrões Arquiteturais de Sistemas
Padrões Arquiteturais de SistemasPadrões Arquiteturais de Sistemas
Padrões Arquiteturais de Sistemas
 
Aula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosAula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de Dados
 
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1Desenvolvimento de aplicações para dispositivos móveis   módulo i - aula 1
Desenvolvimento de aplicações para dispositivos móveis módulo i - aula 1
 

Semelhante a Arquitetura de Software em Equipes Ágeis

FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoFIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoLeandro Daniel
 
Ágil e Arquitetura-Os Opostos se Atraem
Ágil e Arquitetura-Os Opostos se AtraemÁgil e Arquitetura-Os Opostos se Atraem
Ágil e Arquitetura-Os Opostos se AtraemCentus Consultoria
 
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANEAPSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANEFco Edilson Nascimento
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxRoberto Nunes
 
TDC 2012 - Fishbowl conversation sobre Arquitetura
TDC 2012 - Fishbowl conversation sobre ArquiteturaTDC 2012 - Fishbowl conversation sobre Arquitetura
TDC 2012 - Fishbowl conversation sobre ArquiteturaLeandro Daniel
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialAlexandre Leão
 
WBMA2013 - Método Ágil para desenvolvimento de software confiável
WBMA2013 - Método Ágil para desenvolvimento de software confiávelWBMA2013 - Método Ágil para desenvolvimento de software confiável
WBMA2013 - Método Ágil para desenvolvimento de software confiávelAlan Braz
 
Aula Teste Fatec Engenharia de Software III
Aula Teste  Fatec Engenharia de Software IIIAula Teste  Fatec Engenharia de Software III
Aula Teste Fatec Engenharia de Software IIIDalton Martins
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Softwareelliando dias
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de SoftwareNécio de Lima Veras
 
Arquitetura de Software - Uma Visão Crítica
Arquitetura de Software - Uma Visão CríticaArquitetura de Software - Uma Visão Crítica
Arquitetura de Software - Uma Visão CríticaPedro Castilho
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0tdc-globalcode
 
Resumo capítulo 1 livro Engenharia de Software Moderna
Resumo capítulo 1 livro Engenharia de Software ModernaResumo capítulo 1 livro Engenharia de Software Moderna
Resumo capítulo 1 livro Engenharia de Software ModernaLucasBastos305659
 
aula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdfaula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdfAntonio Lobato
 
Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9wilsonguns
 

Semelhante a Arquitetura de Software em Equipes Ágeis (20)

FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoFIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
 
Ágil e Arquitetura-Os Opostos se Atraem
Ágil e Arquitetura-Os Opostos se AtraemÁgil e Arquitetura-Os Opostos se Atraem
Ágil e Arquitetura-Os Opostos se Atraem
 
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANEAPSI 2   aulas  - padroes arquiteturais - camadas PROF.TARCIANE
APSI 2 aulas - padroes arquiteturais - camadas PROF.TARCIANE
 
Aula1 dia 22 02 2022.pdf
Aula1  dia 22 02 2022.pdfAula1  dia 22 02 2022.pdf
Aula1 dia 22 02 2022.pdf
 
Fundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptxFundamentos Engenharia de Software.pptx
Fundamentos Engenharia de Software.pptx
 
TDC 2012 - Fishbowl conversation sobre Arquitetura
TDC 2012 - Fishbowl conversation sobre ArquiteturaTDC 2012 - Fishbowl conversation sobre Arquitetura
TDC 2012 - Fishbowl conversation sobre Arquitetura
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencial
 
WBMA2013 - Método Ágil para desenvolvimento de software confiável
WBMA2013 - Método Ágil para desenvolvimento de software confiávelWBMA2013 - Método Ágil para desenvolvimento de software confiável
WBMA2013 - Método Ágil para desenvolvimento de software confiável
 
Aula Teste Fatec Engenharia de Software III
Aula Teste  Fatec Engenharia de Software IIIAula Teste  Fatec Engenharia de Software III
Aula Teste Fatec Engenharia de Software III
 
Esboços na arquitetura de software
Esboços na arquitetura de softwareEsboços na arquitetura de software
Esboços na arquitetura de software
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Software
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
Arquitetura de Software - Uma Visão Crítica
Arquitetura de Software - Uma Visão CríticaArquitetura de Software - Uma Visão Crítica
Arquitetura de Software - Uma Visão Crítica
 
ArquiteturaSoftware
ArquiteturaSoftwareArquiteturaSoftware
ArquiteturaSoftware
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
 
Resumo capítulo 1 livro Engenharia de Software Moderna
Resumo capítulo 1 livro Engenharia de Software ModernaResumo capítulo 1 livro Engenharia de Software Moderna
Resumo capítulo 1 livro Engenharia de Software Moderna
 
Arquitetura de Sofware
Arquitetura de SofwareArquitetura de Sofware
Arquitetura de Sofware
 
aula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdfaula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdf
 
Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9Engenharia de-software-1217199594686494-9
Engenharia de-software-1217199594686494-9
 

Arquitetura de Software em Equipes Ágeis

  • 1. Arquitetura de Software em Equipes Ágeis Formas de Trabalho em Projetos de Grande Escala Prof. MSc. João Paulo Santos
  • 2. Palestrante  Titulação  MSc Sistemas de Informação (UNIRIO)  Bacharel Informática e TI (UERJ)  Experiência  Cargo  Assessor Sênior do Banco do Brasil S/A cedido a BB DTVM  Papel  É Arquiteto de Sistemas do Banco do Brasil S/A, com atuação focada na definição dos componentes de software e na interação entre as soluções da BB Gestão de Recursos DTVM S/A  Possui mais de 10 anos de experiência em TI, atuando nas áreas de especificação e desenvolvimento de sistemas orientado a objetos para o mercado financeiro 2
  • 3. Atuação no INFNET  Coordenador Executivo de Pós-Graduação  MIT em Arquitetura de Software  Professor de Graduação e Pós-Graduação  MIT em Engenharia de Software com Desenvolvimento Java  Rio de Janeiro e Porto Alegre (Parceria Decision – FGV-RS)  MIT em Engenharia de Software com Desenvolvimento .NET  Graduação em Análise e Desenvolvimento de Sistemas  Graduação em Engenharia de Computação 3
  • 4. Objetivos  Apresentar formas efetivas de aplicação da Arquitetura de Software em Processos baseados nas Metodologias Ágeis  Apresentar possíveis vantagens da Arquitetura Ágil em Projetos de Grande Escala 4
  • 5. Sumário • A Força da Analogia com a Arquitetura Civil • Conflitos entre a Arquitetura de Software e a Cultura Agile • O que faz um Arquiteto de Software Agile • Construindo a Arquitetura de Software em equipes Agile • Trabalhando em Projetos de Larga Escala 5
  • 6. A Força da Analogia com a Arquitetura Civil  Semelhanças e Diferenças  O Arquiteto de Software  Entendendo corretamente a metáfora “Arquiteto”  Arquitetura de Software 6
  • 7. Arquitetura Civil  Todo edifício possui uma arquitetura  Arquitetura é um conceito separado da estrutura física  Porém, intrinsecamente conectados  Arquitetura inicialmente definida pode ser comparada com a estrutura física obtida ao término do processo de construção 7
  • 8. A Analogia... Arquiteto de Software Arquiteto Civil  Decisões são tomadas  Decisões são tomadas antes e durante a antes do início da construção construção  Planejamento iterativo  Planejamento completo  O Arquiteto de Software  Arquiteto Civil entrega seu deve acompanhar o trabalho ao engenheiro que andamento ao longo de todo se encarrega das demais processo de construção do etapas software  cálculo estrutural  O resultado (software) é  O resultado (edifício) é maleável sólido e estático  8 Acolhe mudanças  Não acolhe mudanças
  • 9. O Arquiteto Warnerbros – The Matrix Reloaded (2003) Quais semelhanças e diferenças com um Arquiteto de Softw 9
  • 10. Limitações da Analogia...  Arquiteto “Torre de Marfin”  Distanciamento da Equipe  Dúvidas se a implementação reflete as decisões de Design  Baixa comunicação  Resposta à mudanças é lenta  Assume a responsabilidade por todo sistema  Concentra todas as decisões de Design  Delega à equipe apenas a implementação Arquiteto de Software é membro da equipe! 10
  • 11. O Arquiteto de Software Extraído do RUP – Rational Unified Process 2003 11
  • 12. Visões 4 + 1  É olhar para o software sob diferentes pontos de vista Adaptado de Kruchten 1995 12
  • 13. Arquiteto de Software  Análise do domínio do problema  Gerenciamento de Risco  Gerenciamento de Requisitos  Projeto de Interface - Usabilidade  Determinação das abordagens de implementação  Definição de uma Arquitetura que atenda aos  Requisitos do sistema  Objetivos da organização  Orçamento e cronograma do projeto  Supervisão do mapeamento da arquitetura para o projeto e implementação  Comunicação da arquitetura a todos os intervenientes  Manutenção da arquitetura de software em todo ciclo de vida de projeto 13
  • 14. “software architecture” is merely one imperfect analogy from a large list of metaphors that could be chosen Craig Larman “Arquitetura de software” é apenas uma analogia imperfeita com uma grande lista de metáforas que podem ser escolhidas 14
  • 15. Arquitetura de Software  Arquitetura esta presente em todos os tipos de software  Intencional  Há a preocupação em sua elaboração e manutenção  Acidental  Existe pura e simplesmente pelas decisões de implementação   Arquitetura de Software não é estática!  É algo vivo, que se degrada ou melhora dia a dia a cada nova linha de código  Dinâmica viva e evolutiva do desenvolvimento de software  Busca estabelecer uma plataforma tecnológica e tratar os atributos de qualidade, atendendo às partes interessadas  A Arquitetura deve ser perene ao ciclo de desenvolvimento do software “em vez de construção, a programação é mais parecida com jardinagem.” Andy Hunt e Dave Thomas 15
  • 16. O Conflito entre Arquitetura de Software e Agile  XP e Scrum  Entendo a origem do conflito  Comunicação  Documentação 16
  • 17. XP e Scrum  Características:  Entregas rápidas e frequentes de software  Rápida resposta às mudanças de requisitos  Iniciar o desenvolvimento antes do total entendimento  Equipes auto-avaliam frequentemente o andamento do processo com intuito de torná-lo mais eficiente 17
  • 18. O Conflito  Equipes Ágeis tendem a criar e manter pouca documentação (viewpoints) em comparação à equipes com processos mais tradicionais  Projetos grandes demandam um elevado número de desenvolvedores e um aumento da necessidade por treinamento e comunicação da arquitetura 18
  • 19. O Conflito  Arquitetos de Software querem gastar mais tempo projetando o sistema, enquanto Programadores querem iniciar a codificação  Equipes Ágeis devem refletir sobre a documentação produzida para comunicar o entendimento comum da arquitetura visando manter o desenvolvimento efetivo  Utilizar o código-fonte para esta comunicação, torna o processo ineficiente 19
  • 20. 20
  • 21. Documentação  Para cada artefato ou documento produzido a equipe e o arquiteto devem responder: 21
  • 22. Solucionando o Conflito  Estabelecer a Arquitetura de Software  Representada por diferentes visões e diagramas – viewpoints  O Arquiteto de Software e a Equipe de Desenvolvimento devem selecionar os artefatos importantes para a adequada informação aos intervenientes do sistema 22
  • 23. A agilidade necessita frequentemente de uma espinha dorsal para manter sua direção – algo que dê sustentação, evitando perda de direção e foco. Trata- se de conseguir o equilíbrio adequado entre o “osso” da arquitetura e o “músculo” da agilidade Tom Graves 23
  • 24. O Arquiteto Agile  Objetivos de um Arquiteto Agile:  Entregar soluções  Maximizar o valor aos intervenientes  Buscar soluções que atendam a todos os intervenientes  Viabilizar o próximo esforço (entregável)  Gerir mudanças e complexidade  Criação da arquitetura bottom-up 24
  • 25. O Arquiteto Agile  As regras de ouro:  Valorização das Pessoas  Comunicação  Menos é Mais  Acolha Mudanças: Planejar e Gerenciar  Escolha a Solução Adequada para a Empresa  Entregue Qualidade  Modelar e Documentar de Forma Ágil 25
  • 26. Formas de Trabalhos em Grandes Projetos  Case: Agile em Projetos Grandes  Scrum of Scrum – SoS  Agile Architecture Interations 26
  • 27. Agile em Projetos Grandes  Diversas equipes ágeis trabalhando no mesmo projeto de software  O sucesso da Arquitetura está na comunicação! Caso contrário:  Equipes tendem a “reinventar a roda”  Usa diferentes padrões de desenvolvimento  Limitam-se a objetivos específicos e esquecem as metas globais 27
  • 28. Afinal de contas... O que é preciso comunicar!? 28
  • 29. Caso de Sucesso – Arquitetura e Processo Ágil  Cenário:  Projeto de grande escala  Processo de software baseado no Scrum para lidar com freqüentes mudanças de requisitos  Desenvolver um subsistema era uma “novela” , pois até os especialistas do domínio tinham dificuldades em escrever bons requisitos  No auge das atividades  40 desenvolvedores no subsistema  250 no projeto Case extraído e adaptado do livro: Large-Scale Software Architect – A Pactical Guide Using UML. Jeff Garland, Richard Anthony Pg.46 29
  • 30. Caso de Sucesso – Arquitetura e Processo Ágil  Após alguns Sprints:  As equipes sentiram a necessidade de uma pessoa ou equipe para a coordenação de assuntos cross-team  Existência de muitos desenvolvedores experientes  Autoridade restrita à sua equipe  Dificuldade em estabelecer acordos entre as equipes de desenvolvedores  Aceitação de padronização (Ex: Code Conventions) 30
  • 31. Caso de Sucesso – Arquitetura e Processo Ágil  Solução:  Nomeação de um Arquiteto ou Equipe de Arquitetos  Mediar e conduzir questões para resolução do problema  Pouco impacto no processo das equipes ágeis  Questões arquiteturais foram incluídas nas reuniões diárias  Reutilização de componentes comuns de infra-estrutura  Redução da carga de trabalho das equipes  O esforço “adicional” nos meetings para o desenvolvimento do documento de arquitetura foi pequeno comparado ao valor agregado obtido em viabilizar a comunicação entre as equipes e o correto entendimento do sistema 31
  • 32. SoS – Scrum of Scrums  Técnica para escalar o uso do Scrum em grandes projetos  Reunião para agrupar os times e discutir seus trabalhos,  foco em áreas de sobreposição e integração Meta Equipe Equipes 32
  • 33. SoS - Meta Equipe  Deve ser formada por profissionais experientes  Engenheiros, Analistas ou desenvolvedores Seniores  Frequência das reuniões definida pela equipe  2, 3 vezes por semana, ou mesmo, diariamente  Os participantes devem responder as seguintes perguntas?  O que sua equipe fez desde a última reunião?  O que sua equipe fará até a próxima reunião?  Existe algo atrapalhando o caminho de sua equipe?  Você fará algo que atrapalhe o caminho de outra equipe? 33
  • 34. Meta Equipe  Objetivos:  Definir padrões  APIs, SLAs, logging de erros, estrutura de repositório de código, processo de build automatizado, scripts de deployment automatizados utilizados por todos os times, etc...  Testes diários de integração (automatizados)  Cruzamento de código de subprodutos  Revisões de arquitetura  Solucionar problemas apontados pelas equipes 34
  • 35. SoS - Escalabilidade  As reuniões de Scrum of Scrums podem ser escaláveis indefinidamente por múltiplas camadas 35
  • 36. Iterações em Arquitetura Agile  Arquitetura ágil de sucesso requer um arquiteto que:  Entenda de desenvolvimento ágil  Saiba interagir com a equipe pontualmente  Influencie os usando habilidades críticas facilmente adaptado a partir da experiência em arquitetura com outras abordagens  Aplique funções arquiteturais independentes da metodologia do projeto James Madison. Agile Architecture Interactions, IEEE Software, vol. 27, no. 2, pp. 41-48, Mar./Apr. 36
  • 37. Pontos de Interação da Arquitetura Framework hibrido para Arquitetura Agile XP e Scrum Verde: Pontos de Interação Amarelo: Habilidades críticas Roxo: Funções de Arquitetura 37
  • 38. Funções de Arquitetura Funções tipicamente desempenhadas por um arquiteto em um projeto 38
  • 39. Preocupações do Arquiteto Agile Funções Arquiteturais Pontos de Interação Preocupação do Arquiteto Framework extensível 39
  • 40. Considerações Finais  Agilidade e arquitetura não estão em desacordo  O Arquiteto deve buscar seu trabalho em estreita colaboração com equipes técnicas e de negócios  visando a melhoria continua e a boa arquitetura  Desafios de obter resultados de longo prazo usando uma série de eventos de curta duração  O Arquiteto deve ter a habilidade para adaptar-se ao desenvolvimento Agile e manter-se focado no core da Arquitetura  Maximizar o valor agregado para empresa e satisfazer as necessidades do negócio de hoje 40
  • 41. Referências  Agilists and Architects: Allies not Adversaries  http://blog.locaweb.com.br/eventos/qcon-agilists-and-architects-allies-not- adversaries/  Agile Architecture Interactions, IEEE Software, vol. 27, no. 2, pp. 41-48, Mar./Apr.  Who Needs An Architect  http://martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf  The Role of the Agile Architect  http://www.agilearchitect.org/agile/role.htm  Agile Manifesto  http://www.agilemanifesto.org  Jeff Garland & Richard Anthony. Large Scale Software Architect: A Practice Guide Using UML, John Wiley and Sons, 2003.  Mark Levison. Scum of Scrums – Problemas e Valores.  http://www.infoq.com/br/news/2008/12/scrum-of-scrums  Mike Cohn. Agile Estimating and Planning 41
  • 42. 42