37
Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2

Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2

Embed Size (px)

Citation preview

Page 1: Arquitetura de Software Introdução Por quê? O que? Como? Onde? e Quem? Francilene Garcia Projeto em Computação I 2009.2

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

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

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

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

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

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

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

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

...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

É 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Referências

• http://www.bredemeyer.com• http://www.ewita.com• http://www.extra.research.philips.com/

natlab/sysarch/index.html