arquitetura de software introdução por quê? o que? como? onde? e quem? francilene garcia projeto...
TRANSCRIPT
![Page 1: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/1.jpg)
Arquitetura de SoftwareIntrodução
Por quê? O que? Como? Onde? e Quem?
Francilene GarciaProjeto em Computação I
2009.2
![Page 2: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/2.jpg)
Síntese• Arquitetura de software é o caminho para:
– conectar as metas de negócios ao que iremos construir– obter alinhamento– organizar a atividade de produção de código– envolver as diferentes competências de um time
• Arquitetura está muito ligada à vantagem competitiva• Arquitetura não se obtém facilmente:
– é um trabalho de design não trivial– cada um tem um papel a desempenhar na sua criação– é melhor construída por um time pequeno de “arquitetos”
dedicados que dirigem o processo e tomas as decisões
Arquitetura funciona como o “plano de vôo” do desenvolvimento. Ela deve facilitar o alcance da estratégia de negócio – torna-se a implementação técnica da estratégia de negócio.
![Page 3: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/3.jpg)
Nós iremos construir um shopping?
Time 1Lado Leste
Time 2Link A
Time 3Link B Tim
e 4
Circular
Time 5
Lado Sul
Aqui um exemplo de uma arquitetura base e seus requisitos. É só construir ela!
Requisitos:• estilo típico• praça da alimentação central• ...
![Page 4: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/4.jpg)
Suponha o seguinte• O Boulevard Shopping pretende construir uma
nova área. Vários aspectos do novo negócio foram levantados pelos executivos. É chegado o momento de traçar os planos e prazos da nova construção. Eles pretendem uma construção rápida, pois vários lojistas estão à espera. Os construtores foram divididos em times. Ao time mais experiente foi entregue a tarefa de traçar a arquitetura do novo shopping. Cada parte da arquitetura foi entregue a um dos time para construção.
• O que foi obtido ao final?
![Page 5: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/5.jpg)
Certo. Mas nós não entregamos modelos...
• No negócio software, nós entregamos código, e temos um certo desconforto em trabalhar com modelos.
• Porém, se olhamos para o negócio da construção civil, eles entregam “prédios” e não plantas e, não iniciam um novo projeto complexo sem começar por desenhos de tais estruturas físicas.
![Page 6: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/6.jpg)
Nós construímos o shopping!
![Page 7: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/7.jpg)
Construir uma arquitetura de software é similar...
• Na construção civil é lugar comum – sente-se a necessidade de plantas antes de se iniciar uma nova construção.
• Existem vários aspectos que se relacionam com integridade, integração entre equipes, consistência nos detalhes.
• Um plano de atividades é gerado, definindo uma sequência clara, incluindo aspectos de sua estrutura: entradas de luz, tolerância a ventos fortes, (em alguns casos) suportar movimentação de equipamentos pesados. Ou seja, existem condições típicas e atípicas a serem consideradas.
• O que resulta de uma arquitetura incompleta?
![Page 8: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/8.jpg)
Adaptações na arquitetura...
É muito fácil obter um “sistema espaguete”!
![Page 9: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/9.jpg)
...as adaptações podem levar ao caos!
• Tudo começa com as primeiras decisões de cortes ou extensões na arquitetura, com a justificativa de melhor atender aos requisitos. Aumenta o número de ajustes e o acoplamento cresce a ponto de não se poder mais isolar os componentes.
• É assim que um sistema deve evoluir?
![Page 10: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/10.jpg)
É a desintegração do sistema, não sua evolução!
![Page 11: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/11.jpg)
Seria um problema do negócio Software?
• Um sistema típico de software é perecível, resultado de:
• incertezas– no comportamento do
sistema– nas próximas release
• baixa qualidade– difícil rastrear falhas– difícil consertar bugs
• difícil alterar– duro atender às mudanças– custa mais, leva mais
tempo
• Baixo reuso– difícil isolar blocos para
reuso– blocos são muito
específicos (orientados)• problemas éticos• perda de market share
– o concorrente é melhor– não há retorno
![Page 12: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/12.jpg)
A Arquitetura faz a diferença!
• Uma arquitetura é algo mais que um “rascunho desenhado” do sistema
• A arquitetura é alinhada a...
![Page 13: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/13.jpg)
Conceitos chaves
• Decomposição do sistema– Como eu quebro o sistema em partes?– Tenho todas as partes necessárias?– As partes se encaixam?
• Trade-offs de interesse– Aspectos de qualidade mais abrangentes ou
propriedades específicas do sistema (RNF e SLA)– Relação entre os atributos de qualidade
• Integridade do sistema
![Page 14: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/14.jpg)
Decomposição da arquitetura: as partes se encaixam?
• Ao atribuir essa tarefa para o melhor “engenheiro” do time, que entende de:– Motor– Transmissão– Suspensão– Etc
• Podemos construir o melhor carro?
![Page 15: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/15.jpg)
Arquitetura deve ter foco nas “propriedades mais críticas primeiro”
• Ideia chave: a integridade do sistema não pode ser alcançada de forma bottom-up
• Você irá precisar de uma visão mais abrangente do sistema– Analise os trade-offs existentes para
assegurar que as propriedades críticas do sistema continuam sendo atendidas quando você o decompõe em partes
– Projete os mecanismos da arquitetura que endereçam as propriedades do sistema
![Page 16: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/16.jpg)
Decisões Arquiteturais: Uma questão de escopo
Quanto mais abrangente a decisão, menos erros podem ser inseridos!Diferencie decisões de design de decisões de implementação.
![Page 17: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/17.jpg)
Ou seja...• Se temos em mãos uma dada aplicação, todas as
decisões que podem ser tomadas por projetistas de componentes ou desenvolvedores devem ser atribuídas a eles e não surgir como parte da arquitetura. Se o escopo da arquitetura é uma linha de produtos, então toda decisão referente a um dado produto deve constar, pelo menos, na arquitetura do produto se não for possível constar na arquitetura da linha de produtos.
• Qualquer decisão deve focar no impacto sobre o sistema – decisões arquiteturais devem focar nas propriedades de alto impacto nas áreas que estão altamente alinhadas com a estratégia do negócio.
![Page 18: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/18.jpg)
Escopo das decisões arquiteturais: Exemplo do Reuso
![Page 19: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/19.jpg)
Escopo das decisões arquiteturais: Exemplo do Reuso
• Quando focamos num dado produto, todas as decisões são orientadas para atender às demandas do respectivo cliente – o que torna tais componentes menos adequados para outros produtos.
• Ao construir arquiteturas devemos analisar os trade-offs de forma mais ampla, adequando-os aos sistemas globalmente. Decisões sobre propriedades individuais devem ser consideradas como parte da arquitetura do sistema como um todo.
![Page 20: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/20.jpg)
Escopo das decisões arquiteturais: Impacto
Baixo Impacto Alto Impacto
Sistêmicas(escopo amplo)
Não arquitetural Foco da decisão arquitetural
Local Não arquitetural Em geral, não arquitetural
![Page 21: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/21.jpg)
Prioridades do sistema
• A atenção deve estar voltada para as áreas de alta prioridade e para os trade-offs entre elas:– o negócio (estratégias, competências e recursos)– o mercado (clientes, concorrentes e parceiros)– tecnologia (desafios e oportunidades)– riscos (investimentos em tecnologias e sistemas
legados)– desafios ao sucesso do sistema (desenvolvimento em
si e do negócio)
![Page 22: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/22.jpg)
Arquitetura de Software: Conceitos chaves
• Decomposição do sistema
• Trade-offs entre propriedades
• Integridade do sistema
• Alinhamento com o negócio– Com a estratégia do
negócio– Com o ambiente do
negócio• Legado• Cultura
• Evolução do sistema– Vida longa!– Esquema para a estratégia
de implementação– Lidar com as mudanças,
inevitáveis!
![Page 23: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/23.jpg)
Não esqueça!
• Decisão bottom-up Estratégia bottom-up– Pode ser um caminho muito arriscado! Nesse caso a
estratégia real do negócio irá ser resultante das decisões dos desenvolvedores...
• Estratégia top-down: Estratégia do negócioEstratégia da arquiteturaEstratégia da implementação– A estratégia do negócio é quem dirige a arquitetura,
que é traduzida tecnicamente para suportar toda a evolução do desenvolvimento.
![Page 24: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/24.jpg)
Por quê isto é tão importante?
• Permite que sejamos– Mais produtivos– Mais criativos– Mais orientados por nossa estratégia
• De forma que podemos ser– Mais flexíveis, dando retorno ágil
• aos ajustes necessários (mudanças)• fazendo mais
– Ser um player dominante no mercado– Estar no negócio, mesmo 5 anos mais tarde
![Page 25: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/25.jpg)
O que é uma arquitetura? (definição formal)
• “arquitetura é a estrutura do sistema, que compreende:– componentes ou partes da implementação– as propriedades visíveis externamente
desses componentes, e– as relações entre eles.”
![Page 26: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/26.jpg)
Arquitetura: componentes e relações
• Componentes– Blocos (alto nível) do sistema– Suporta
• Modularidade• Separação de papéis
– Colaboração entre componentes• Prover serviços (funcionalidades)• Num dado nível de serviço (qualidades)
– Interface entre componentes• Provê encapsulação, com pontos de acesso restritos
– Especificação dos componentes• Define propriedades visíveis externamente• Provê guias de utilização
![Page 27: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/27.jpg)
Propriedades visíveis externamente: o propósito das interfaces
• Interfaces– Define os pontos de acesso aos componentes– Facilita o plug-and-play entre componentes
• ameniza restrições entre clientes e provedores• Serve como um contrato entre provedores de componentes
e clientes– Define externamente propriedades visíveis
• Uma interface bem definida– Facilita o entendimento e compreensão do
comportamento do componente e como ele é usado– Aumenta a produtividade do desenvolvedor
• Foca na montagem e ligação entre componentes através de suas interfaces
![Page 28: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/28.jpg)
Modelos de arquiteturas
• Ferramentas para apoiar a “criação”– Explora alternativas e ideias (mais barato que
prototipar ou tentar uma versão teste do sistema)
– Por exemplo, explorar as colaborações entre componentes para definir as operações da interface
• Documentam a arquitetura– Descritiva ou explícita– Auxilia na visualização do sistema
![Page 29: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/29.jpg)
Visões da arquitetura
• Clientes diferentes apresentam diferentes informações sobre suas necessidades
![Page 30: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/30.jpg)
Stakeholders da arquitetura• Gerentes• Arquitetos• Desenvolvedores• QA• Suporte• Marketing• Usuários• Tomadores de decisão (mercado)• Administradores de sistemas
![Page 31: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/31.jpg)
Visões da arquiteturaArquitetura Conceitual• Diagramas arquiteturais, especificação informal de componentes• Foco: identificação e alocação de responsabilidades entre componentes
Arquitetura Lógica• Atualiza os diagramas arquiteturais (apresentando as interfaces), especificação interface, especificação de componentes e guias de utilização• Foco: design da interação, mecanismos e protocolos de conexão; provimento de info contextual para os usuários dos componentes
Arquitetura Execução• Visão do Processo (via Diagramas de Colaboração)• Foco: informa como se dará o comportamento do componente em tempo de execução, threads; como eles se comunicam; como os recursos físicos são alocados.
Visão globaldo sistema
Esquema para os desenvolv:•preciso•Sem ambigui-dade
![Page 32: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/32.jpg)
Endereçando trade-offs• (re)Lembrando: arquitetura aborda
– a decomposição do sistema em componentes– foco nas propriedades críticas do sistema e seus
trade-offs• Trade-offs devem ser endereçados
– Através de padrões arquiteturais– Estrutura: componentes e interfaces– Mecanismos: papéis dos componentes e padrões de
interação• Responsabilidades (atribuídas aos componentes)• Comportamento expresso nas interações• fluxo das interações
![Page 33: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/33.jpg)
Visões da arquiteturaArquitetura Conceitual• Diagramas arquiteturais, especificação informal de componentes• Foco: identificação e alocação de responsabilidades entre componentes
Arquitetura Lógica• Atualiza os diagramas arquiteturais (apresentando as interfaces), especificação interface, especificação de componentes e guias de utilização• Foco: design da interação, mecanismos e protocolos de conexão; provimento de info contextual para os usuários dos componentes
Arquitetura Execução• Visão do Processo (via Diagramas de Colaboração)• Foco: informa como se dará o comportamento do componente em tempo de execução, threads; como eles se comunicam; como os recursos físicos são alocados.
Qualidades do sistema: encapsulação e separação de papéis
Mecanismos e interações entre componentes
Topologia do sistema/recursos e concorrência
![Page 34: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/34.jpg)
Processo de construção de uma arquitetura: Objetivos
• Criar uma arquitetura:– BOA, tecnicamente válida e bem
documentada– CORRETA, satisfaz aos requisitos dos
stakeholders– De SUCESSO, como as utilizadas na
construção civil
![Page 35: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/35.jpg)
Processo de construção da arquitetura
![Page 36: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/36.jpg)
Conclusão
• Uma arquitetura Boa, Correta e de Sucesso:– Não aparece “do nada”– É necessário:
• Planejar (tempo!)• Documentar e seguir avaliando (não é algo
estático)• As vezes, joga-se fora e recomeça do zero
• Existe uma contribuição a ser dada por cada um de nós
![Page 37: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2](https://reader035.vdocuments.site/reader035/viewer/2022062522/5706384b1a28abb8238f59fb/html5/thumbnails/37.jpg)
Referências
• http://www.bredemeyer.com• http://www.ewita.com• http://www.extra.research.philips.com/
natlab/sysarch/index.html