• Nenhum resultado encontrado

Arquitetura de Software Introdução. Por quê? O que? Como? Onde? e Quem?

N/A
N/A
Protected

Academic year: 2021

Share "Arquitetura de Software Introdução. Por quê? O que? Como? Onde? e Quem?"

Copied!
56
0
0

Texto

(1)

Arquitetura de Software

Introdução

(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

(3)

Iremos construir um shopping?

Time 1 Lado Leste Time 2 Link A Time 3 Link B

Aqui um exemplo de uma arquitetura base e seus requisitos. É só construir ela!

Requisitos: • estilo típico

(4)

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.

(5)

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

(6)
(7)

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.

(8)

Adaptações na arquitetura...

(9)

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

(10)
(11)

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

(12)

A Arquitetura faz a diferença!

Uma arquitetura é algo mais que um

“rascunho desenhado” do sistema

(13)

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

(14)

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

(15)

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

(16)

Decisões Arquiteturais: Uma

questão de escopo

(17)

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

(18)
(19)

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

(20)

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

(21)

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

(22)

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,

(23)

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ócioEstratégia da arquiteturaEstratégia da

implementação

 A estratégia do negócio é quem dirige a arquitetura, que é

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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

(29)

Visões da arquitetura

(30)

Stakeholders da arquitetura

Gerentes

Arquitetos

Desenvolvedores

QA

Suporte

Marketing

Usuários

Tomadores de decisão (mercado)

(31)

Visões da arquitetura

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

(32)

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

(33)

Visões da arquitetura

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

(34)

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

(35)
(36)

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

(37)
(38)

Motivação

Orientação a Objetos enfatiza a notação dos

diagramas

 Ótimo para especificação e documentação

Mas O.O. envolve mais que diagramas

 Bons desenhistas nem sempre são bons projetistas

Bons projetistas se apóiam na experiência

O mais poderoso reuso é a reutilização de padrões

 Combina o problema com os padrões de projeto já

(39)

Motivação

O.O. explora estruturas de design que

promovem:

Abstração

Flexibilidade

Modularidade

Elegância

(40)

Padrões de Desenvolvimento

Abstrai uma solução de projeto reutilizável

Organiza classes e objetos em termos de:

 Dependências  Estrutura

 Interações  Convenções

Nomeia e especifica a solução explicitamente

(41)

Padrões de Desenvolvimento

Divide-se em quatro partes:

 Nome

 Descrição do Problema  Solução

 Conseqüências e considerações acerca de sua utilização

Independente de linguagem ou implementação

(42)
(43)

Adapter

 Converte a interface de uma classe naquela esperada pelos clientes  operacaoAlvo() deve executar metodoNegocios()

(44)

Facade

 Oferece uma interface única para um conjunto de interfaces  Simplifica a utilização dos subsistemas

(45)

Singleton

 Garantir que uma classe só tenha uma única instância, e prover

um ponto de acesso global a ela

 Precisa de um construtor privado e um método para obter a

instância global (estática)

(46)

Proxy

 Método para que um objeto possa controlar o acesso a outro  Normalmente utilizado em objetos distribuídos

(47)

Flyweight

 Usar compartilhamento para suportar grandes quantidades de

objetos refinados eficientemente

 Constituem pools, onde a quantidade de objetos pode ser

significativamente inferior ao seu nível de utilização

(48)

Abstract Factory

 Prover uma interface para criar famílias de objetos relacionados

ou dependentes sem especificar suas classes concretas

 Exemplo de utilização é o J2EE

(49)

Strategy

 Promover diferentes estratégias para resolver um determinado

problema em diferentes condições

 Na prática permite a implementação de diferentes algoritmos

através de diferentes classes

cd Strategy «interface» Strategy + operacao() : void Estrategia1 + operacao() : void Estrategia2 + operacao() : void Estrategia3 + operacao() : void Contexto - strategy: Strategy + requisicao() : void

(50)

Mais alguns...

 State: implementa diferentes reações às mudanças

de estado de um objeto

 Decorator: acrescenta responsabilidades

dinamicamente aos objetos

 Iterator: acessa os elementos de uma coleção

sequencialmente

 MVC: divide o aplicativo em três camadas

(51)

Padrões J2EE

 Front Controller  View Helper  Composite View  Service to Worker  Dispatcher View  Intercepting Filter  Value Object  Session Facade  Composite View

 Value Object Assembler  Value List Handler

(52)

Front Controller

 Centraliza o controle das requisições do cliente, permitindo um

único ponto de manipulação na entrada

 Aumenta a segurança no acesso

 Define a saída visual correta (Front Controller / View Controller)

(53)

Composite View

 Cria uma interface visual complexa a partir de interfaces

menores

 Tipicamente utilizado em portais

cd Composite View

CompositeView View 1 View 2

(54)

Business Delegate

 Desacopla camadas de apresentação e serviços

 É utilizado um como fachada para cada SessionBean

 Normalmente precisa de um localizador de serviços (JNDI)  Este processo retira o código de localização do cliente

cd Business Delegate

Cliente BusinessDelegate BusinessServ ice

LookupServ ice

uses

(55)

Session Facade

 Desacopla camadas de apresentação e modelo (EntityBean)  Reduz as chamadas remotas do cliente, concentrando no

SessionBean

 Transações implementadas no SessionBean ou no Container

(56)

Mais alguns...

 Value Object: concentra as propriedades referentes

às entidades, permitindo o envio de um objeto com informações completas e, conseqüentemente,

reduzindo o número de chamadas

 Data Access Object: concentra as operações de

persistência, desacoplando as camadas de

modelo(Entity), e permitindo um meio comum e genérico de acesso aos dados armazenados

 Service Activator: utilizado na execução assíncrona

Referências

Documentos relacionados

24, de onde é possível afirmar que, para o setor II as razões cíclicas de cada braço são dadas pela expressão (69).. 25 – Diagrama de blocos do sistema

Apesar do glicerol ter, também, efeito tóxico sobre a célula, ele tem sido o crioprotetor mais utilizado em protocolos de congelação do sêmen suíno (TONIOLLI

Detectadas as baixas condições socioeconômicas e sanitárias do Município de Cuité, bem como a carência de informação por parte da população de como prevenir

O Departamento de Compliance solicitará que todas as Pessoas com Acesso atestem no sistema de Compliance que entenderam o Código, cumprirão com suas exigências, reportarão todos

Diversos autores defendem que a utilização da história e filosofia da ciência (HFC) no ensino de ciências possibilite inúmeros benefícios pedagógicos, co mo favorecer para

Sem desconsiderar as dificuldades próprias do nosso alunado – muitas vezes geradas sim por um sistema de ensino ainda deficitário – e a necessidade de trabalho com aspectos textuais

O vereador Anderson pede aparte e comenta sua preocupaçao com relação ao PPE, pois segundo ele os projetos aprovados pela camara o Prefeito Laercio não cumpre, e

O referido ato revogou o artigo 508 do Decreto-Lei 5.452, de 1-5-43 – CLT – Consolidação das Leis do Trabalho (Portal COAD), que considerava motivo para rescisão por justa causa