Você está na página 1de 22

Software

Algumas dcadas atrs


Software constitua uma pequena poro dos sistemas computacionais Custos de desenvolvimento e manuteno eram insignificantes quando comparados ao hardware

Arquitetura de Software
Donizete C. Bruzarosco

Atualmente
Software constitui uma grande parcela dos sistemas atuais e seus custos cresceram Encontramos software nas mais diversas aplicaes:
Uso domstico: processadores de texto, planilhas eletrnicas, etc. Sistemas de grande porte: de gerao e distribuio de energia, telecomunicaes etc. Empresas tm otimizado suas atividades fazendo uso de sistemas computacionais

Software se tornou o elemento chave para o sucesso de qualquer produto O software tornou-se a fora prevalecente em termos de inovao tecnolgica

Desenvolvimento de software
Na construo de sistemas de software principalmente grandes e complexos essencial tomar uma srie de decises sobre o software e o hardware que sero utilizados Para que essas decises sejam tomadas de forma consciente preciso conhecer:
As funcionalidades do sistema Atributos de qualidade requeridos por ele

Desenvolvimento de software Causas de insucesso


Por presso do mercado e no utilizao de tcnicas e mtodos de desenvolvimento de software Desenvolvedores buscam de imediato a implementao e a infra-estrutura na qual o sistema ir operar, desconsiderando as etapas de anlise e projeto de um processo de desenvolvimento de software Utilizao de novas tecnologias como soluo para o desenvolvimento, sem analisar o contexto, o domnio e a adequao ao problema Falta de flexibilidade/rapidez para incorporar mudanas inesperadas de requisitos e futuras evolues, relegando prticas de reutilizao Preciosismo na especificao de requisitos funcionais, desconsiderando aspectos implcitos da qualidade tais como desempenho, manutenibilidade, segurana, etc.

Porm, existem vrias questes que precisam ser respondidas


Quando cada deciso deve ser tomada? Quem o responsvel pelas decises? Quais alternativas de solues devem ser consideradas? Como as alternativas devem ser escolhidas?

Tais respostas no so bvias e nem fceis de se obter

Desenvolvimento de software
H uma preocupao em resolver esses fatores atravs de descries de todos os elementos do sistema, a interao entre estes elementos, os padres que apoiam tal composio e as restries, ou seja, a definio de uma arquitetura de software. Engenharia de Software (termo cunhado em 1968, numa conferncia em Garmisch, Alemanha Crise de software) Muitos mtodos tm sido propostos objetivando melhorar o processo de desenvolvimento bem, como minimizar os custos de manuteno Na medida que os sistemas tornam-se cada vez maiores e mais complexos a disciplina de arquitetura torna-se fundamental para se obter resultados de baixo custo, atender as restries de oramento e cronograma e maior qualidade

Arquitetura de software
Com base em discusses realizadas no Software Engineering Institute da Carnegie Mellon University, David Galan e Dewayne Perry definiram arquitetura de software como:

A estrutura dos componentes de um programa/sistema, seus interrelacionamentos, princpios e diretrizes guiando o projeto e evoluo ao longo do tempo.

Outras definies de arquitetura de software


Descreve o projeto organizacional de um sistema de software Em outras palavras, a arquitetura de um sistema envolve a diviso de funes entre subsistemas ou mdulos bem como os mecanismos de interao entre os mdulos e a representao da informao compartilhada a estrutura global dos sistema, capturada atravs da organizao do sistema , descrita em elevado nvel de abstrao, em termos de elementos computacionais pertinentes e das interaes entre esses elementos

Processo da arquitetura de software


O termo arquitetura de software usado para definir duas coisas distintas:
o processo e o produto arquitetural.

Processo da arquitetura Compreende as atividades complementares que so necessrias para a construo do software, dentre as quais pode-se destacar:
Elaborao do modelo de negcio para o sistema
Para analisar o custo e prazo para o sistema, as restries de mercado (pblico alvo) e interfaces com outros sistemas , para se alcanar os objetivos do negcio

OBS.:Neste contexto entende-se componente computacional como sendo uma parte especfica do sistema que encapsula um contexto, seus casos de uso, modelos de anlise e projeto, especificaes de implementao e de teste e forma de interao com outros componentes computacionais. Esse conceito difere de componente de software o qual trata da parte implementvel do sistema e que ir se tornar cdigo executvel

Entendimento dos requisitos


Utilizao de tcnicas de levantamento de requisitos p/ se obter o modelo do domnio

Processo da arquitetura de software


Criao ou seleo de uma arquitetura
Identificao dos componentes e suas interaes, das dependncias de construo e da escolha de tecnologias que suportem a implementao

Produto arquitetural
A partir da aplicao das atividades do processo arquitetural gera-se produtos tais como: Modelo do negcio Modelo do domnio de aplicao Modelo dos componentes computacionais e relacionamentos entre eles E a Infra-estrutura tecnolgica Os quais so considerados modelos de arquitetura

Representao da arquitetura e divulgao


Os participantes precisam entender a arquitetura e os trabalhos que lhes foi atribudo

Implementao do sistema baseado na arquitetura


Os desenvolvedores devem se restringir s estruturas e protocolos definidos na arquitetura

Anlise ou avaliao da arquitetura


Deve ser verificada a adequao da arquitetura, registrando impactos, riscos e dificuldades. Tais informaes contribuem para a evoluo da arquitetura em verses posteriores do sistema

Importncia da arquitetura de software

Importncia da arquitetura de software


Reconhecimento de estruturas comuns de modo que projetistas de software possam compreender as relaes existentes entre sistemas e desenvolver sistemas novos com bases nas variaes de sistemas antigos O entendimento de arquiteturas de software permite que os engenheiros tomem decises sobre alternativas de projeto Uma descrio arquitetural do sistema essencial para analisar e descrever propriedades O conhecimento de notaes para descrever arquiteturas possibilita que os engenheiros apresentem novos projetos de sistemas a outros membros de uma equipe de desenvolvimento

Projeto de software no nvel arquitetural envolvem questes tais como:


Organizao e estrutura geral de controle Protocolos de comunicao Sincronizao Atribuio de funcionalidade a componentes de projeto Escalabilidade e desempenho Seleo de alternativas de projeto

Arquitetura e a comunicao entre os participantes: Cada participante da construo do sistema est preocupado com caractersticas especfica que so afetadas pela arquitetura. Portanto sua definio deve ser bem representada , usando uma notao a qual todos os participantes possam entender com facilidade

Importncia da arquitetura de software


Arquitetura e a antecipao de decises de projeto

Benefcios da arquitetura de software


Atua como uma estrutura a fim de atender aos requisitos de sistema Fora os projetistas de software a considerar aspectos principais do projeto logo no inicio Ser utilizada como aspecto tcnico para o projeto de sistema bem como suporte na estimao de custos e gerncia de processo Pode servir como um plano de projeto usado para negociar requisitos de sistema e como um meio de estruturao de discusses com os clientes, desenvolvedores e gerentes Servir de base para a anlise da consistncia e da dependncia Prover suporte ao reuso Ferramenta essencial para gerenciamento de complexidade, pois oculta detalhes e permite um enfoque nas abstraes principais do sistema

As restries e regras tanto do negcio quanto aquelas que influenciam os aspectos tcnicos devem ser atendidas pela arquitetura pois ela constitui-se de um modelo simples e inteligente de como o sistema deve ser estruturado e como os seus componentes trabalham juntos

Constitui-se um ponto de referncia comum para as demais atividades que so executadas posteriormente a sua definio Preocupa-se com tempo de desenvolvimento, custo e manuteno, definio das restries de implementao e definio da estrutura organizacional, enfatizando os atributos da qualidade que o sistema requer e medindo atravs das avaliaes a empregabilidade das qualidades necessrias (Bass98)

Arquitetura robusta
Aps extensas anlises, avaliaes e revises da arquitetura, sua representao tornase robusta o suficiente para guiar o projeto de implementao, os testes e a implantao do sistema

O arquiteto
Possui uma posio estratgica Precisa ter conhecimento profundo:
Do domnio onde o sistema a ser desenvolvido ser utilizado Das tecnologias relevantes E dos processos de desenvolvimento

Habilidades e tarefas de um arquiteto de software


Habilidades desejadas Compreenso profunda do domnio e das tecnologias pertinentes Entendimento de aspectos tcnicos para desenvolvimento de sistemas bem sucedidos Tcnicas de elicitao, tcnicas de modelagem e mtodos de desenvolvimento Entendimento das estratgias de negcios da instituio onde atua Tarefas atribudas Modelagem Anlise de compromisso/viabilidade

Tambm deve considerar as implicaes que os objetivos organizacionais tero sobre as opes tcnicas Dever
Construir modelos para o problema a resolver Achar uma soluo, explorando abordagens alternativas Gerar a documentao, a qual considerada imprescindvel para a apresentao e discusso com os demais membros da equipe e com o gerente responsvel pelo projeto

Prototipao, simulao, realizao de experimentos Anlise de tendncias tecnolgicas

Conhecimento de produtos, processos Atuao como mentor de arquitetos e estratgias de concorrentes novatos

Outras habilidades inerentes do arquiteto


Facilidade em trabalhar em vrios nveis de abstrao Capacidade para buscar mltiplas alternativas de projeto Ser criativo e fazer investigaes

Tcnicas em arquitetura de software


Aqui so apresentados outros conceitos relacionados arquitetura de software que, devido sua importncia e contribuio, so utilizados como tcnicas que auxiliam a definio de arquitetura (Bass98): Modelo de referncia Estilos de arquitetura Arquitetura de referncia Arquitetura de linha de produto

Modelo de referncia
Um modelo de referncia consiste na decomposio padronizada do problema em partes conhecidas que cooperam entre si em prol de uma soluo. Geralmente, estes problemas so de domnio bastante amadurecido e trazem a experincia de analistas de negcio em conjunto com desenvolvedores [Bass98]. O modelo de referncia de um determinado domnio surge durante o processo de amadurecimento da soluo em funo da necessidade de representaes mais abstratas que caracterizam o domnio.

Modelo de referncia
Como uma ilustrao do relacionamento entre um modelo de referncia e as arquiteturas que podem derivar de tal modelo, considere o que pode estar envolvido na modelagem que importante sobre o projeto de uma casa. No contexto de um modelo de referncia, conhecemos que conceitos tais como
reas de refeio, reas de higiene e descanso

Um modelo de referncia um framework abstrato para entendimento dos relacionamentos significantes entre as entidades de algum ambiente. Ele habilita o desenvolvimento de arquiteturas especficas usando padres consistentes ou especificaes suportando aquele ambiente. Um modelo de referncia consiste de um conjunto mnimo de conceitos unificados, axiomas e relacionamentos com um domnio de um problema particular, e independente de padres especficos, tecnologias, implementaes, ou outro detalhe concreto.

so todos importantes para entender o que compreende uma casa. H relacionamentos entre estes conceitos, e restries sobre como eles so implementados.

Por exemplo, pode haver separao fsica entre as reas de higiene e de refeio.

Modelo de referncia
Workflow Management Coalition (WfMC),

Estilos de arquitetura
Os estilos de arquitetura expressam esquemas de organizao estrutural de sistemas, fornecendo um conjunto de componentes do sistema, suas responsabilidades e a forma de interao entre eles, estabelecendo um padro de utilizao ( um padro de organizao de sistemas) [Buschmann96]. Cada estilo de arquitetura lida com diferentes tipos de atributos da qualidade. Para obter a definio de uma arquitetura a partir dos estilos existentes, basta saber quais os atributos mais relevantes para a soluo e confront-los com os atributos que o estilo atende. Exemplos de estilos arquiteturais:
Pipes e filtros Camadas Objetos Quadro negro Etc.

No modelo de referncia da WfMC, apresentado na figura , so definidas cinco interfaces entre componentes, alm de uma interface sobre o servio de execuo de workflow, denominada WAPI (Workflow API and Interchange Formats). Esta interface consiste em uma srie de construes pelas quais os servios de execuo de workflow podem ser acessados. Desta forma, os servios de workflow podem ser implementados de diferentes formas, contanto que sejam oferecidas interfaces que traduzam os mtodos internos de cada produto de workflow para os mtodos padronizados pela WfMC]. Estes padres de interface esto sendo validados por diversas organizaes como a Action Technologies, IBM, FileNet Corporation e a Digital Equipment Corporation.

Arquitetura de referncia
Uma arquitetura de referncia consiste em componentes de software e os relacionamentos entre eles que implementam funcionalidades relativas s partes definidas no modelo de referncia. Cada uma destas partes pode ser implementada em apenas um ou vrios componentes de software, ou seja, o mapeamento das funcionalidades do modelo de referncia em componentes da arquitetura de referncia nem sempre um para um [Bass98]. As arquiteturas de referncia so aplicveis a um domnio particular. O papel de uma arquitetura de referncia para projeto de uma casa pode ser identificar as solues abstratas para os problemas de projetar uma casa. Um padro genrico para projeto de casa, um que enderece as necessidades de seus ocupantes tais como banheiro, cozinha, corredores, e assim por diante uma boa base para uma arquitetura de referncia abstrata. O conceito de rea de refeio um conceito no modelo de referncia, uma cozinha a realizao de rea de refeio no contexto de arquitetura de referncia.

Arquitetura de referncia
Pode haver mais de uma arquitetura de referncia que trate de como projetar uma casa, tais como: pode haver uma arquitetura de referncia que aborde os requisitos para desenvolvimento de solues para projeto de casas em grandes complexos de apartamentos, outro para tratar de casas para uma nica famlia no subrbio, e outra para espaos pblicos. No contexto de alta densidade de residncias, no deve haver uma cozinha separada, mas um espao de cozinha compartilhada ou ainda uma cozinha comum usada por muitas famlias.

ARQUITETURA DE SOFTWARE Modelos de Referncia, Estilos Arquiteturais, e Arquiteturas de Referncia


Modelos de referncia, estilos arquiteturais e arquiteturas de referncia no so arquiteturas, eles so passos em direo a uma arquitetura.
Modelo Referncia Arquitetura de Referncia Estilo Arquitetural Uma real ou concreta arquitetura pode introduzir elementos adicionais. Ela pode incorporar estilos arquiteturais particulares, arranjos particulares de janelas, materiais de construo a serem usados e assim por diante. Uma planta de uma casa em particular representa uma instanciao de uma arquitetura como ela aplicada para a construo de uma moradia real. Arquitetura de Software Arquitetura de Sistema

ARQUITETURA DE SOFTWARE Modelos de Referncia, Estilos Arquiteturais, e Arquiteturas de Referncia


Os modelos de referncia agregam soluo aos problemas do ponto de vista de negcio e que arquiteturas de referncia apresentam a soluo do ponto de vista tcnico, mas baseando-se na soluo de negcio, ou seja, no modelo de referncia determinado para o domnio. Um estilo de arquitetura tambm usado juntamente com o modelo de referncia para a definio da arquitetura de referncia que ir apoiar a definio da arquitetura de software, como mostra a figura anterior Tais tcnicas podem ser utilizadas para definir a arquitetura para a construo de um sistema simples bem como a arquitetura para a construo de uma famlia de sistemas (arquitetura de linha de produtos).

ARQUITETURA DE SOFTWARE Modelos de Referncia, Estilos Arquiteturais, e Arquiteturas de Referncia


A maturidade de domnios tais como compiladores, sistemas gerenciadores de base de dados e sistemas operacionais vista atravs da documentao bem padronizada de suas arquiteturas. Assim sendo, o trabalho dos arquitetos simplificado, pois eles no precisam investir na definio da arquitetura e sim na projeo das propriedades arquiteturais das arquiteturas de referncia que mais se assemelham a sua necessidade. Na maioria das vezes, so adotadas solues encontradas em livros e manuais que documentam tais arquiteturas.

Arquitetura de linha de produtos


A criao de uma arquitetura ou a sua manuteno para um sistema que sofre constantes atualizaes ou que se diversifica, exige alto investimento de tempo e esforo A arquitetura de linha de produtos ou arquitetura de famlia de sistemas define:
Os conceitos Estruturas Componentes e Restries Necessrios para obter uma variao de caractersticas em vrios produtos (ou sistemas) enquanto fornece o mximo de compartilhamento das partes na implementao A quantidade de diferenas ou de dependncias entre os produtos refletem na complexidade da arquitetura

Arquitetura de linha de produtos


Um sistema pode ser representado por vrios produtos, estabelecendo-se uma linha de produtos com caractersticas e propriedades semelhantes

Arquitetura de linha de produtos


Comparao de arquitetura para construo de um sistema e para construo de vrios sistemas

Os produtos desta linha podem compartilhar de uma mesma arquitetura construda especificadamente para esta linha em vez de existir uma arquitetura para cada produto

Construir uma arquitetura para uma linha de produtos significa envolver esforos para maximizar o uso da mesma arquitetura para vrios sistemas semelhantes como pode ser observado na figura seguinte

Arquitetura de linha de produtos


As atividades que envolvem a definio da arquitetura de uma linha de produtos so (jazayeri00):
Captura de requisitos que impactam na arquitetura
listar todos os produtos candidatos a participarem da linha, identificar as propriedades genricas que existem entre produtos candidatos evidenciando as semelhanas, definir o escopo da linha de produtos e a estratgia de produo.

Estilos arquiteturais Introduo


Durante o perodo da histria do software, diversas arquiteturas foram usadas muitas vezes informalmente O objetivo de organizar e expressar o conhecimento do projeto de software de maneira til uma necessidade natural do engenheiro (projetista) de software Uma forma de codificar tal conhecimento dispor de um vocabulrio do conjunto de conceitos (terminologia, propriedades, restries), estruturas (componentes, conectores) e padres de uso existentes Ao caracterizar as arquiteturas de software que so utilizadas, identificando seus componentes, mecanismos de interao e propriedades, podemos classific-las

Analisar a robustez dos produtos candidatos em conformidade com as evolues futuras: identificar as restries nos produtos candidatos. Projetar as camadas de acordo com nveis de abstrao, localizando a arquitetura genrica da linha e a arquitetura de cada produto candidato:
projetar tambm os componentes genricos.

Implementar a arquitetura. Testar a conformidade da arquitetura, verificando os riscos que afetam o escopo, as propriedades genricas e a estratgia estabelecida.

Estilos arquiteturais Introduo


Na dcada de 90, houve uma crescente preocupao em compreender a organizao dos sistemas de software, culminando com o surgimento da rea de arquitetura de software Identificou-se classes arquiteturais, as quais possuam aspectos e componentes peculiares a elas bem como formas de combin-los, caracterizando um estilo arquitetural Um estilo arquitetural permite que um profissional determine a classe a qual pertence a organizao de um sistema Caractersticas dos componentes (subsistemas) e conectores do sistema, topologia da arquitetura, restries semnticas e mecanismos de interao entre os componentes ajudam a identificar o estilo da arquitetura de software do sistema

Estilos arquiteturais Introduo


O estilo arquitetural pode ser utilizado como ponto de partida em um projeto, desde que tenhamos em mos o conjunto de caractersticas desejadas para o sistema a ser desenvolvido Procura-se identificar qual estilo arquitetural prov suporte essas caractersticas Assim, estaria se reutilizando conhecimento e arquitetura de software (j catalogada) Cada estilo arquitetural oferece suporte a um conjunto de requisitos no funcionais e atributos de projeto que permitem distinguir uma arquitetura da outra

Estilos arquiteturais Introduo


Exemplo O estilo arquitetural de camadas permite a definio de vrios nveis e implica num
aumento da flexibilidade do sistema. Entretanto, essa caracterstica decorre em detrimento de outra, isto , o desempenho do sistema. Note que o estilo arquitetural mais apropriado a um sistema depender de seus requisitos, envolvendo requisitos funcionais e no funcionais Estilos arquiteturais bem definidos com suas caractersticas especificadas, permite um menor esforo para entender o projeto de sistema de outra pessoa e, portanto, reduz a quantidade de informaes a serem assimiladas num novo projeto Deve-se documentar para que se possa consultar e reutilizar conhecimentos e arquiteturas de projetos anteriores

Estilos arquiteturais PIPES E FILTROS


Considera a existncia de uma rede pela qual flui dados de uma extremidade (origem) outra (destino) O fluxo de dados se d atravs de pipes (dutos) e os dados sofrem transformaes quando processados nos filtros Um pipe (duto) prov uma forma unidirecional de fluxo de dados, uma vez que atua como um condutor para o fluxo de dados entre a fonte at um destino O exemplo mais comumente conhecido desse estilo o utilizado no sistema operacional Unix. A maioria dos usurios desse sitema sabe como canalizar a sada, resultante de um programa (prog1), para a entrada de um outro programa (prog2): exemplo1# prog1 prog2 - exemplo2# who sort

Estilos arquiteturais EXEMPLO DE PIPES E FILTROS


Filtrosl

Estilos arquiteturais PIPES E FILTROS


Uma sequncia de pipes e filtros geralmente chamada de tubulao de processamento,

onde os filtros: incrementam, extraem ou transformam os dados recebidos de alguma fonte de dados (que pode ser outro filtro)

Programa who

Programa sort

e os pipes: conectam dois filtros ou alguma fonte de dados e um filtro ou ainda um filtro a algum receptor de dados (extremidade final de uma tubulao de processamento).

uma arquitetura adequada para um projeto de sistema que requer vrios estgios de processamento
Pipe
Cada estgio de processamento seria implementado por um filtro, o qual recebe dados de alguma fonte (podendo ser outro filtro), realiza alguma transformao sobre os dados (extraindo ou acrescentando informaes) e produz dados na sada, que so canalizados por meio de pipe ao prximo estgio.

Estilos arquiteturais EXEMPLO DE PIPES E FILTROS


Modelo clssico de compiladores
Anlise lxica Anlise sinttica Anlise semntic a Otimizao Gerao de cdigo

Estilos arquiteturais EXEMPLO DE PIPES E FILTROS


Nova evoluo na arquitetura de compiladores
Tabela de smbolos de estrutura sinttica Outras ferramentas

editor

Compilador portvel a vrias plataformas


Anlise lxica Anlise sinttica Anlise semntic a Otimizao Gerao de cdigo Anlise lxica Anlise sinttica Anlise semntic a Otimizao Gerao de cdigo

Gerao Intermediri a De cdigo

Gerao Intermediri a De cdigo

Estilos arquiteturais - PIPES E FILTROS Vantagens


Funo do sistema vista como composio de filtros; Problema ou sistema pode ser decomposto de forma hierrquica; facilita o entendimento do sistema completo a partir do entendimento de cada filtro isoladamente; Manutenibilidade geralmente mais flexvel, possibilitando a reorganizao de filtros e pipes Facilidade de reuso (cdigo dos filtros), manuteno e extenso, que emprega abordagem caixa preta, onde cada componente tem funcionalidade e interface bem definida, facilitando alteraes nos mesmos; Desempenho pode ser incrementado atravs do processamento paralelo de filtros, j que a ativao e uso do componente ocorre com o fluxo de dados, permitindo que componentes com funcionalidades independentes sejam executados de forma concorrente.

Estilos arquiteturais PIPES E FILTROS


Desvantagens Mudanas frequentes em um componente (filtro) impactar outros componentes. Assim, face a propagao de mudanas de um filtro a outro(s) a manutenibilidade desse estilo limitado. estilo de tubos e filtros coloca nfase no modo batch, tornando difcil seu uso em aplicaes interativas Outra questo tcnica a ser observada a possibilidade de haver deadlock com o uso de buffers finitos (para armazenamento temporrio de dados)

Estilos arquiteturais PIPES E FILTROS

Estilos arquiteturais - Camadas


Estrutura um sistema num conjunto de camadas, onde cada uma delas agrupa um conjunto de tarefas num determinado nvel de abstrao Uma camada no nvel N oferece um conjunto de servios camada no nvel superior (N+1). A camada N faz uso dos servios disponveis na camada inferior (N1) Um exemplo tpico de uma arquitetura de camadas o modelo de referncia OSI (Reference Model for Open Systems Interconnection) da ISO

Estilos arquiteturais Camadas


Arquitetura de camadas do modelo OSI da ISO
Camada 7 Camada 6 Camada 5 Camada 4 Camada 3 Camada 2 Camada 1
APLICA O APRESENTA O SESSO TRANSPOR TE REDE ENLACE FSICA

Estilos arquiteturais Camadas

Estilos arquiteturais Camadas

Estilos arquiteturais Camadas


No h uma especificao de qual deveria ser a granularidade de componentes. Entretanto, componentes complexos, geralmente exigiro decomposio adicional Faz a decomposio do sistema em um conjunto de camadas , onde cada camada acrescenta um nvel de abstrao sobre a camada inferior O nmero de camadas depende da funcionalidade a ser oferecida pelo sistema Necessidade de definir critrios de abstrao para agrupar subtarefas para comporem uma camada. Exs: tipos de componentes da aplicao (especfico) e de interface com o sistema operacional

Variaes sobre o estilo de camadas simples


Camada N utiliza os servios oferecidos pela camada N-1 para realizar suas funes Um exemplo de variao desse estilo seria permitir que a camada N tivesse acesso tambm as camadas N-2, N-3 ou a qualquer outra abaixo dela. Essa variao na arquitetura de camadas pode comprometer a manutenibilidade de um sistema . Um maior grau de dependncia entre as camadas implica que mais de uma camada necessitar ser modificada para atender mudana de requisito

Estilos arquiteturais Camadas


A definio de vrios nveis de abstrao (camadas), proporciona uma maior flexibilidade e suporte a portabilidade do sistema Desde que sua interface permanea inalterada, uma camada poder ser substituda por outra equivalente Quando a interface de uma camada alterada ou novos recursos so adicionados, somente a camada adjacente afetada Todavia possui um custo associado: O desempenho da arquitetura de camadas fica comprometido face necessidade de uma solicitao externa ao sistema precisar passar por vrias camadas a fim de ser tratada.

Estilos arquiteturais Camadas


Sistemas em camadas mantm as dependncias de mquina em camadas mais internas
isso torna mais fcil fornecer implementaes de vrias plataformas de um sistema de aplicao

Somente as camadas mais internas dependentes de mquina , precisam ser reimplantadas para levar em conta os recursos de um sistema operacional ou banco de dados diferente

Implementar um sistema como um bloco monoltico no constitui uma soluo apropriada

Estilos arquiteturais Camadas


Apia o desenvolvimento incremental de sistemas A medida que uma camada desenvolvida, alguns servios fornecidos por essa camada podem ser disponibilizados aos usurios A soluo (desafio) buscar uma arquitetura com menor nmero de camadas que atenda aos requisitos de desempenho, mas que ao mesmo tempo considere a manutenibilidade No s a funcionalidade a ser provida pelo sistema que determina o nmero de camadas , mas tambm os requisitos no-funcionais desejados (desempenho, manutenibilidade, etc.) Determinar o nmero adequado de camadas de um sistema uma tarefa muito difcil

Estilos arquiteturais Camadas


Tambm pode-se chegar a concluso que o estilo arquitetural de camadas no constitui uma soluo adequada e, assim, deve se identificar um outro estilo que satisfaa aos requisitos funcionais e no funcionais. Considere , por exemplo, a arquitetura OSI , a qual possui sete camadas Contudo, devido ao surgimentos de diferentes tecnologias tanto a fim de atender a usurios que necessitam de redes de alta velocidade numa rea especfica quanto de conectar equipamentos separados a milhares de quilmetros de distncia, houve nova nfase na arquitetura de redes. Com isso surgiu a arquitetura Internet TCP/IP

Estilos arquiteturais Camadas


A arquitetura de camadas permite o reuso de camadas Por exemplo, TCP (Transmission Control Protocol) pode ser usado em diferentes aplicaes, tais como telnet e ftp Um outro exemplo desse estilo compreende os sistemas Web de mltiplas camadas que separa cliente, servidores de aplicao, servidores Web e outros clientes Web.

Estilos arquiteturais Camadas Arquitetura Internet TCP/IP


estruturada em quatro camadas construdas sobre uma quinta camada (intra-rede) que no faz parte do modelo

Com a arquitetura Internet foi possvel a interligao de redes de computadores com tecnologias distintas

APlicao

Transporte Inter-rede

A soluo foi agrupar os nveis fsico, de enlace e de rede da arquitetura OSI na camada intra-rede havendo uma interface entre essa e a camada inter-rede

interface de rede

Intra-rede

Estilos arquiteturais Camadas


Estilos arquiteturais objetos


O paradigma orientado a objetos acrescenta uma nova abstrao ao projeto de software Combina numa nica entidade (objeto) tanto os dados quanto as funes que atuam sobre esses dados O estilo arquitetural de objetos tem como base o uso de um tipo de dados abstrato o objeto, o qual possui vrias propriedade importantes tais como:
Objetos so entidades independentes que podem sofrer modificao uma vez que toda informao pertinente mantida no prprio objeto. possvel fazer o mapeamento entre as entidades reais e os objetos que atuam no controle de um sistema, resultando numa melhor compreenso dos sistema Os objetos fazem uso de um mecanismo de troca de mensagens para se comunicar em vez de utilizar variveis compartilhadas Objetos podem ser reutilizados devido a sua independncia Os objetos podem estar distribudos e executar seqencialmente ou em paralelo, a depender das decises tomadas no inicio do projeto Possui como base a ocultao da informao

Estilos arquiteturais objetos


Estado2 Estado1 Obj1 Estado5 Obj5 Estado3 Obj3 Estado4 Obj4

Estilos arquiteturais objetos


O estilo arquitetural de objetos v um sistema de software como um conjunto de objetos comunicantes com estado associado a eles. Quando o objeto obj1 necessita se comunicar com um objeto obj2, ele precisa conhecer a identidade do objeto ao qual enviar uma mensagem. Numa arquitetura de objetos, teramos um conjunto de objetos com estados prprios (escondidos) e as operaes associadas queles estados Os objetos (comunicantes) podem requisitar ou oferecer servios a outros objetos comum utilizar a arquitetura orientada a objetos em sistemas de informao como sistemas de consulta e emprstimos online de bibliotecas de instituies de ensino que dispem de componentes de cadastro de usurios e componentes de autenticao de usurios.

Obj2

Note que componentes similares existem em outros sistemas de informaes, tais como sites de contedos (jornais e revistas) que exigem cadastro e autenticao de qualquer usurio antes de disponibilizar o contedo.

Estilos arquiteturais objetos


Embora os conceitos do paradigma orientado a objetos possa ser utilizado para tratar alguns aspectos do projeto arquitetural, existem algumas diferenas entre as caractersticas e benefcios do projeto orientado a objetos e o projeto da arquitetura de software : Projeto de arquitetura de software
Visa decompor o sistema em componentes e identificar as interaes existentes entre esses componentes Essa decomposio em componentes fornece uma viso global do sistema, permitindo que o engenheiro/arquiteto de software analise e raciocine sobre as propriedades e restries do sistema

Estilos arquiteturais objetos


Existem questes que so relevantes , as quais so tratadas na abordagem orientada a objetos, mas que fogem ao escopo do projeto arquitetural, tais como: formas para modelar requisitos, bem como o projeto de estrutura de dados e algoritmos ; os quais no precisariam ser tratados ou especificados numa descrio arquitetural Se a manuteniblidade for um requisito no-funcional preponderante, fundamental considerar que qualquer modificao de requisitos deveria afetar o menor nmero possvel de objetos Se o arquiteto de software tiver de levar em conta desempenho do sistema , ento os cenrios de uso mais frequentes deveriam ocorrer num menor nmero de objetos a fim de minimizar a comutao de contextos que viria a comprometer o desempenho do sistema.

Dado que os estilos arquiteturais podem descrever famlias de projetos parece intuitivo vislumbrar o paradigma de projeto orientado a objetos como um estilo arquitetural no qual todos os componentes so objetos, e todas as conexes so associaes ou agregaes

Estilos arquiteturais Invocao implcita


A idia por trs de invocao implcita que ao invs de invocar um procedimento diretamente (objeto), um componente pode anunciar (ou difundir) um ou mais eventos. Outros componentes no sistema podem registrar um interesse em um evento associando um procedimento a ele. Quando o evento anunciado, o sistema invoca todos os procedimentos que tenham sido registrados para o evento. Um evento sendo anunciado implicitamente causa a invocao de procedimentos em outros mdulos.

Estilos arquiteturais Invocao implcita


Um exemplo de sistema empregando mensagens so listas de notcias e frum que possuem componentes de registro de novos usurios acoplados ao componente de autenticao. Perceba que esse tipo de sistema apenas permite que o usurio tenha acesso ao contedo se este for devidamente autenticado e registrado.

Estilos arquiteturais Invocao implcita -Vantagens


Um benefcio importante de invocao implcita que ela fornece forte suporte para reuso. Qualquer componente pode ser introduzido no sistema simplesmente por registr-lo a eventos daquele sistema. Outro benefcio que invocao implcita facilita evoluo do sistema. Componentes podem ser substitudos por outros componentes sem afetar as interfaces de outros componentes no sistema.

Estilos arquiteturais Invocao implcita - Desvantagem


Uma desvantagem de invocao implcita que os componentes abrem mo do controle sobre a computao desempenhada pelo sistema
Quando um componente anuncia um evento, ele no pode assumir que outros componentes respondero a esse evento. Mesmo que ele conhea quais outros componentes esto interessados nos eventos que ele anunciou, ele no pode interferir na ordem em que eles so invocados Os componentes no podem fazer qualquer suposio sobre o tipo de computao a ser realizada ou ordem de processamento.

Estilos Arquiteturais Quadro-Negro Estilos Arquiteturais Quadro-Negro


Originou-se na IA (usado, por ex., para compartilhamento de conhecimento) Considera a existncia de um repositrio central de dados, circundado por um conjunto de componentes (clulas de conhecimento) Tem como base um modelo de soluo de problema que fornece uma estrutura conceitual para organizar o conhecimento do domnio, bem como uma estratgia para aplicar esse conhecimento Vrios agentes colaboram para resolver um problema. O quadro negro uma entidade ativa capaz de notificar aos agentes perifricos quando h algum trabalho novo que poderia ser realizado por um agente especfico Isoladamente, nenhum agente sabe resolver o problema sozinho mas trabalhando em conjunto, cada um avana um aspecto distinto e o problema resolvido. constitudo de 3 elementos: clulas de conhecimento, estrutura de dados do quadro e controle

Clula de Conhecimento Quadro-Negro (Banco de Dados Compartilhado) Clula de Conhecimento

Clula de Conhecimento

Clula de Conhecimento

Estilos Arquiteturais Quadro-Negro


adequado em aplicaes onde diversos tipos de conhecimentos devem ser considerados a fim de dar suporte interpretao de um conjunto de dados iniciais. Tipicamente era utilizado em casos onde no havia solues gerais para um problema. Nesse caso , um ou mais componentes (clula de conhecimento) interagem com o banco de dados compartilhado (quadro negro) buscando encontrar uma soluo parcial ou total Esta arquitetura mais simples envolve um nico repositrio central de dados (quadro negro). Entretanto, problemas mais complexos podem exigir mltiplos repositrios organizados num sistema distribudo

Estilos Arquiteturais Quadro-Negro


Os componentes interagem como quadro-negro buscando encontrar uma soluo total ou parcial. Facilidade de adicionar ou remover tipos de dados, os componentes podem ser adicionados ou removidos sem acarretar modificaes em outros componentes. D suporte manutenibilidade. Desempenho comprometido pela necessidade de um componente (clula de conhecimento) passear pelo repositrio de dados (quadro-negro) em busca de uma soluo.

Estilos Arquiteturais Quadro-Negro


Evento

Estilos Arquiteturais Sistemas orientados a eventos


So regidos por eventos gerados externamente

Pode ser um sinal que pode assumir uma gama de valores ou uma entrada de comando baseados em um menu

A diferena entre um evento e uma entrada simples que a ocorrncia do evento est fora de controle do processo que manipula esse evento Modelos de controle orientados a evento
Broadcast: um evento transmitido a todos os subsistemas. Qualquer subsistema programado para manipular esse evento pode responder a ele Orientado a interrupes: so usados exclusivamente em sistemas de tempo real, nos quais interrupes externas so detectadas por um tratador de interrupes . Estas so, ento passadas para algum outro componente para processamento

Estilos Arquiteturais Sistemas orientados a eventos Modelo broadcast


Os subsistemas registram um interesse em eventos especficos Quando esses eventos ocorrem, o controle transferido para o subsistema que pode tratar o evento Os subsistemas decidem de quais eventos necessitam e o tratador de eventos e mensagens assegura que esses eventos sejam enviados a eles Todos os eventos podem ser transmitidos a todos os subsistemas , mas isso impe um grande overhead de processamento Mais frequentemente, o tratador de eventos e mensagens mantm um registro dos subsistemas e dos eventos interessados neles

Estilos Arquiteturais Sistemas orientados a eventos Modelo broadcast


Subsistema gera evento Tratador de eventos detecta os eventos, consulta o registrador de eventos e passa o evento aos subsistemas que declararam interesse Vantagens
Evoluo relativamente simples Um novo subsistema para tratar classes especficas de eventos pode ser integrado por meio do registro de seus eventos no tratador de eventos Qualquer subsistema pode ativar qualquer outro subsistema sem saber seu nome ou sua localizao Os subsistemas podem ser implementados em mquinas distribudas

Desvantagens
Subsistemas no sabem se ou quando os eventos sero manipulados possvel que subsistemas diferentes se registrem para os mesmos eventos, podendo causar conflitos quando os resultados de manipulao de eventos fores disponibilizados

Estilos Arquiteturais Sistemas orientados a eventos Modelo broadcast


Modelo de controle baseado em broadcast seletivo

Estilos Arquiteturais Outros estilos


Os estilos arquiteturais discutidos anteriormente constituem os mais conhecidos pela sua utilizao nos mais variados sistemas. Outros, entretanto, tambm so encontrados em diversas aplicaes tais como Repositrio (passivo), arquiteturas de aplicaes distribudas.

Subsistema 1

Subsistema 2

Subsistema 3

Subsistema 4

Tratador de eventos e mensagens

Arquiteturas de aplicaes distribudas


H considervel discordncia na literatura sobre o que constitui um sistema distribudo Dentre as diversas definies encontradas, h um ponto de concordncia : a presena de mltiplos processadores Os dois estilos arquiteturais mais comuns
multiprocessadores: vrios processadores autnomos compartilhando uma memria primria comum apropriado para executar diversas subtarefas de um mesmo programa

Arquiteturas de aplicaes distribudas


Uma aplicao distribuda possui quatro tipos de processos:
Filtros: so transformadores de dados Cliente : pode ser visto como um processo na interao entre cliente e servidor, o cliente o componente que inicia alguma atividade Servidor: um processo reativo uma vez que reage s solicitaes feitas pelos clientes Par (peer): um dentre um conjunto de processos idnticos que interage a fim de oferecer algum servio ou realizar alguma computao (ex: em programao paralela, no qual vrios pares interagem a fim de resolver um problema

Multicomputadores: arquitetura similar a de multiprocessadores, exceto que os processadores no compartilham memria. A comunicao se d atravs de passagem de mensagens numa rede de comunicao (programas concorrentes)

Estilos da Arquitetura de aplicaes distribudas


Processos comunicantes: utilizados quando as metas prioritrias do
sistema a ser desenvolvido so escalabilidade e facilidade de modificaes (ex. de aplicao: quando se tem um conjunto de trabalhadores (componentes computacionais) replicados que compartilham um repositrio de tarefas esse estilo utilizado em programao paralela.

Estilos da Arquitetura de aplicaes distribudas


Chamada de Procedimento Remoto
um mecanismo de transferncia de controle de um processo (chamador) para outro (chamado), sendo depois o controle retornado ao processo que emitiu a chamada A chamada de procedimento remoto permite a comunicao bidirecional. Um dos objetivos aumentar o desempenho do sistema ao distribuir a computao a ser realizada entre vrios processadores.

Cliente-servidor: as tarefas so divididas entre produtores e


consumidores de dados.
Servidor: um processo que fica num estado de espera, aguardando solicitao de servio de um ou mais clientes (pode trabalhar de forma sncrona ou assncrona) Cliente: processo pode estar no mesmo sistema ou em algum outro, conectado ao servidor via rede. Os clientes podem ser vistos como processos que atuam de forma independente, isto , a execuo de um processo no interfere em outro(s). Facilidade de remover ou adicionar clientes Facilidade de modificar a funcionalidade de um cliente (visto que outros clientes no sero afetados)

Computao interorganizacional distribuda Arquitetura ponto a ponto


Sistemas ponto a ponto (p2p) so sistemas descentralizados em que as computaes podem ser realizadas por qualquer n da rede e, em princpio pelo menos, nenhuma distinco feita entre clientes e servidores O sistema global projetado para beneficiar-se da capacidade computacional e armazenamento disponveis em uma rede computadores potencialmente grande Os padres e protocolos que possibilitam as comunicaes atravs dos ns esto embutidos na aplicao, e cada n deve realizar uma cpia dessa aplicao Tipos de arquiteturas
descentralizada: semicentralizada

Computao interorganizacional distribuda Arquitetura ponto a ponto


Exemplos Sistemas de compartilhamento de arquivos baseados em protocolos Gnutella e Kazaa so usados para compartilhar arquivos em PCs de usurios, e sistemas de mensagens instantneas, como ICQ e Jabber, permitem comunicao direta entre os usurios sem um servidor intermedirio Existem indicaes de que essa tecnologia est cada vez mais sendo usada pelas empresas para aproveitar a potncia de suas redes de PC A Intel e a Boeing implementaram sistemas p2p para aplicaes que requerem computao intensa

Computao interorganizacional distribuda Arquitetura ponto a ponto descentralizada


no so simplesmente elementos funcionais, mas tambm chaves de comunicao que podem guiar os sinais de dados e de controle de um n para outro

Computao interorganizacional distribuda Arquitetura ponto a ponto descentralizada


Suponha que a figura representa um sistema descentralizado de gerenciamento de documentos Esse sistema usado por um consrcio de pesquisadores que compartilham documentos e cada membro do consrcio mantm seu prprio repositrio de documentos Quando um documento recuperado por um n, ele tambm o disponibiliza para os outros ns Algum que necessite de um documento emite um comando de pesquisa que enviado aos ns naquela localidade Esses ns verificam se eles tm o documento e, caso tenham, retornam o documento ao solicitante. Portanto, se n1 emite uma busca por um documento armazenado em n10, essa pesquisa guiada atravs dos ns n3, n6, e n9 e n10 Vantagens: Altamente redundante e, assim, tolerante a defeitos e tolerante quanto aos ns que se desconectam da rede Desvantagens: Overheads: comunicaes replicadas entre pares; mesma busca pode ser processada por muitos ns diferentes

n4

n6 n7

n8 n13 n12

n2

n3

n9 n1 n5

n14 n10 n11

Computao interorganizacional distribuda Arquitetura ponto a ponto semicentralizada


O papel de um servidor auxiliar a estabelecer contato entre os pares na rede ou coordenar os resultados de uma computao A figura representa um sistema de mensagens instantnea Os ns da rede se comunicam com o servidor (linhas tracejadas) para encontrar quais outros ns esto disponveis Comunicaes diretas com os ns descobertos podem ser estabelecidas e Servidor de descobrimento n4 n3 n1 n6 n2 n5 comunicaes diretas com os ns descobertos podem ser estabelecidas e a conexo com o servidor desnecessria Portanto, os ns n2, n3, n5 e n6 esto em comunicao direta

Computao interorganizacional distribuda


Em um sistema p2p no qual uma computao intensiva de processador distribuda entre um grande nmero de ns, normal que alguns ns cujo papel distribuir trabalho para outros ns e comparar e verificar os resultados da computao destaquem-se Embora haja overhead em sistemas ponto a ponto ela considerada uma abordagem eficiente para computao interorganizacional Problemas com essa abordagem (no resolvidas):
Proteo Confiana

So mais adequados a sistemas de informaes no crticos ou nos quais j existam relacionamentos de trabalho entre as organizaes

Arquitetura de aplicao distribuda Arquitetura de sistema orientada a servios


O desenvolvimento da web promoveu o acesso de computadores clientes aos servidores remotos fora de suas prprias organizaes Organizaes convertiam suas informaes em HTML tornando-as acessveis por esses computadores Contudo, o acesso era somente por meio de navegador web, e o acesso direto aos repositrios de informaes por outros programas no era prtico Isso impossibilitou as conexes convenientes entre os servidores nas quais, por exemplo, um programa consulta uma srie de catlogos Para contornar esse problema, a noo de um web service foi proposta

Arquitetura de aplicao distribuda Arquitetura de sistema orientada a servios


Usando esse tipo de servio, as organizaes que desejam tornar acessveis suas informaes a outros programas podem fazer isso com a definio e publicao de uma interface de Web service Essa interface define os dados disponveis e como eles podem ser acessados Genericamente um web service uma representao padronizada de alguns recursos computacionais e de informaes que podem ser usadas por outros programas Por exemplo: voc pode definir um servio de declarao de impostos no qual os usurios podem preencher seus formulrios de impostos e estes serem verificados automaticamente e enviados s autoridades fiscais Um web service uma instncia de uma noo mais geral de um servio Uma ao ou servio oferecido de um grupo para um outro. Embora o processo possa estar ligado a um produto fsico, o desempenho essencialmente intangvel e no resulta normalmente em propriedade de

Arquitetura de aplicao distribuda Arquitetura de sistema orientada a servios


A essncia de um servio, portanto, que o fornecimento dos servios independente da aplicao que usa o servio

Arquitetura de aplicao distribuda Arquitetura de sistema orientada a servios


Registrador de servios Encontra Publica

Os provedores de servios podem desenvolver servios especializados e oferec-los a uma gama de usurios de servios de organizaes diferentes As aplicaes podem ser construdas pela ligao de servios de vrios provedores que usam uma linguagem padro de programao ou uma linguagem de harmonizao de servios especializados como BPEL4WS Existem vrios modelos de servios, do modelo JINI (Kumaran, 2001) a Web services (Stal, 2002), e Grid services (Foster, et al., 2002).

Solicitador de servios

Vincula

Provedor de servios

Servios

Um provedor de servios oferece um servio pela definio de sua interface e pela implementao da funcionalidade do servio Um solicitante do servio vincula esse servio a sua aplicao Isso significa que a aplicao do solicitante inclui cdigos para chamar o servio e processa os resultados da chamada Para assegurar que o servio possa ser acessado por usurios de servios externos, o provedor de servios faz uma entrada em um registro de servio que inclui informaoes sobre o servio e o que ele faz

Conceitualmente, todos os modelos funcionam conforme a figura seguinte

Arquitetura de aplicao distribuda Arquitetura de sistema orientada a servios


Os servios podem ser oferecidos por qualquer provedor de servios dentro ou fora da organizao O provedor de servios torna pblicas as informaes sobre o servio de maneira que usurios autorizados podem us-los A criao conveniente de novos servios possvel Os usurios de servios podem pagar pelos servios de acordo com o uso no local de fornecimento As aplicaes podem se tornar menores As aplicaes podem ser reativas e adaptar sua operao de acordo com o ambiente por meio da vinculao de servios diferentes medida que o ambiente muda

Arquitetura de aplicao distribuda Arquitetura de sistema orientada a servios


Web services uma base para a construo de aplicaes distribudas no firmemente acopladas H ainda uma experincia prtica limitada quanto a arquitetura orientada a servios e, assim, ainda no se sabe quais so as implicaes prticas dessa abordagem.

Existem trs padres fundamentais que possibilitam comunicaes entre Web services: SOAP (Simple Object Access Protocol): define uma organizao para troca estruturada
de dados entre Web services

WSDL (Web Services Description Language): define como as interfaces dos Web
services podem ser representadas

UDDI (Universal Description Discovery and Integration): um padro de descobrimento que define como as informaes de descrio do servio, usadas pelos solicitantes do servio para descobrir servios, pode ser organizada.

Arquitetura de aplicao distribuda Arquitetura de sistema orientada a servios Exemplo de aplicao


Um sistema de informaes de um automvel fornece ao motorista informaes sobre o clima, condies de trfego informaes locais, etc. O sistema ligado ao aparelho de rdio do automvel que apresenta as informaes como um sinal de uma emissora de rdio especfica. O automvel equipado com um receptor GPS para informar sua posio e, baseado nessa posio, o sistema acessa uma gama de servios de informaes . As informaes podem ser fornecidas no idioma especificado pelo motorista. A figura seguinte ilustra uma possvel organizao para tal sistema. O software do automvel inclui cinco mdulos. Estes cuidam da comunicao com o motorista, com o receptor GPS informando a posio do automvel e com o aparelho de rdio do automvel. Os mdulos Transmissor e Receptor cuidam de todas as comunicaes com os servios externos.

Arquitetura de aplicao distribuda Arquitetura de sistema orientada a servios Exemplo de aplicao


O automvel se comunica com um servio de informaes mvel fornecido externamente que agrega informaes de uma gama de outros servios que fornecem informaes sobre o clima, trfego e recursos locais. Provedores diferentes em locais diferentes fornecem esses servios e o sistema do automvel usa um servio de descobrimento para localizar o servio de informaes apropriado e se conectar a ele Os mdulos Transmissor e Receptor cuidam de todas as comunicaes com os servios externos. O automvel se comunica com um servio de informaes mvel fornecido externamente que agrega informaes de uma gama de outros servios que fornecem informaes sobre o clima, trfego e recursos locais. Provedores diferentes em locais diferentes fornecem esses servios e o sistema do automvel usa um servio de descobrimento para localizar o servico de informaes apropriado e se conectar a ele . O servio de descobrimento tambm usado pelo servio de informaes mvel para vincular os servios apropriados do clima, trfego e recursos. Os servios trocam mensagens SOAP que incluem as informaes de posio de GPS usados pelos servios para selecionar as informaes adequadas.

Informaes de trfego nas ruas

Arquitetura de aplicao distribuda Arquitetura de sistema orientada a servios Exemplo de aplicao


As informaes agregadas retornam por meio de um servio que traduz o idioma das informaes no idioma do motorista. Esse exemplo ilustra uma das principais vantagens da abordagem orientada a servios : No necessrio decidir quando o sistema ser programado ou implantado, qual provedor de servios deve ser usado e quais servios especficos podem ser acessados Quando o automvel se move, o software interno usa o servio de descobrimento para encontrar o servio de informaes mais apropriado e se conecta a ele Devido a um servio de traduo, o automvel pode se mover alm das fronteiras do pas e, portanto, tornar as informaes locais disponveis para as pessoas que no falam o idioma local Essa viso de computao orientada a servios no possvel com os Web services atuais, nos quais a ligao de servios com as aplicaes ainda praticamente esttica. Futuramente se ver mais ligaes dinmicas, arquiteturas de aplicao e concretizao de sistemas dinmicos orientados a servios

Informaes de clima Coord. GPS

Informaes de recursos Coord. GPS Servio de informaes mveis Coleta de informaes

Localizador de ruas

Informaes de trfego

Coord. GPS Servio de descobrimento Encontra servios disponveis

Tradutor

Fluxo de informaes

Informaes de idioma

Coordenao de comando de GPS Transmissor Envia a posio e Solicitao de informaes ao servio Localizador Descobre a posio do automvel

Receptor Recebe o fluxo de informaes de vrios servios Rdio Converte o fluxo de informaes digitais em sinal de rdio

Interface com o usurio Recebe solicitaes Do usurio

Sistema de Software de automveis

ARQUITETURA DE SOFTWARE Estilos Arquiteturais Variaes


A maioria dos sistemas, na prtica, faz uso de mais de um estilo arquitetural, principalmente sistemas de grande porte. Considere um sistema organizado em camadas a qual pode ser composta de objetos

ARQUITETURA DE SOFTWARE Estilos Arquiteturais Variaes


Ex.: Arquitetura CORBA (Common Object Request Broker Architecture) que acomoda tanto o estilo arquitetural de camadas quanto o de objetos. A figura mostra a interao entre um cliente e uma implementao de objeto na arquitetura CORBA. Nela h uma solicitao de um cliente sendo passada a uma implementao de objeto na arquitetura CORBA. Nesse caso, tanto cliente quanto objeto encontram-se em mquinas distintas e a comunicao ocorre via rede. Existe uma IDL (Interface Definitions Language) entre o objeto e a ORB (Object Request Broker encarregada de tratar as comunicaes via rede para clientes e objetos). Os clientes vem apenas a interface de um objeto. Isso assegura a substituio ou modificao de qualquer implementao por trs da interface

obj2 obj1

obj3

obj4

Requisitos arquiteturais
Elicitao de requisitos arquiteturais
Os requisitos so descries de como o sistema deveria se comportar, contm informaes do domnio da aplicao e restries sobre a a operao do sistema

Informao de arquiteturas existentes Elicitao de requisitos Anlise e uso de cenrios

Informao do domnio

Projeto da arquitetura

Experincia do arquiteto

Requisitos arquiteturais

Requisitos arquiteturais
O processo de desenvolvimento de software baseado na arquitetura, considera a arquitetura de software como fator orientador do processo A complexidade de um sistema de software determinada tanto por seus requisitos funcionais (o que ele faz) quanto por requisitos no funcionais (de qualidade)
Para obter a definio de uma arquitetura a partir dos estilos existentes, basta saber quais os atributos mais relevantes para a soluo e confront-los com os atributos que o estilo atende. Cada estilo de arquitetura lida com diferentes tipos de atributos da qualidade.

Influncia dos requisitos no funcionais (atributos da qualidade como requisitos crticos)


A arquitetura do sistema afeta , por exemplo, o desempenho, facilidade de distribuio e de manuteno. O estilo e a estrutura especficos escolhidos para uma aplicao podem depender dos requisitos no funcionais do sistema: Desempenho: a arquitetura deve ser projetada para localizar operaes crticas dentro de alguns subsistemas, com a menor comunicao possvel. Isso pode significar usar componentes de alta granularidade Proteo: uma estrutura de camadas para a arquitetura pode ser usada, com os itens mais crticos protegidos por camadas mais internas e com um alto nvel de validao de proteo aplicado a essas camadas Segurana: as operaes relacionadas segurana devem estar localizadas em um nico subsistema ou em um pequeno nmero de subsistemas. Isso reduz os custos e os problemas de validao de segurana e torna possvel fornecer esse servio a sistemas de proteo relacionados Disponibilidade: a arquitetura deve ser projetada para incluir componentes redundantes e a possibilidade de substituir e atualizar componentes sem parar o sistema Facilidade de manuteno: a arquitetura deve ser projetada usando componentes de baixa granularidade que possam ser prontamente mudados

Requisitos arquiteturais Atributos de projeto


Princpios que norteiam o processo de desenvolvimento de software

Requisitos arquiteturais - Atributos de projeto


Separao de interesses
Aqui o interesse recai em fazer a separao em termos da qualidade ou requisitos no funcionais desejados. Por exemplo, num sistema de software poderia-se querer lidar com desempenho e grau de correo separadamente. Nesse caso o projetista poderia inicialmente decidir fazer o projeto e estruturar o software de modo que o grau de correo pudesse ser assegurado a priori. Depois o software seria reestruturado levando em conta o desempenho desejado

Separao de interesses
A separao de interesses permite lidar com diferentes aspectos de um problema, de modo que possamos no concentrar em cada um deles isoladamente. Isso permite lidar com a complexidade inerente. Tem sido aplicada sempre que um sistema decomposto em vrios mdulos de modo que a arquitetura do sistema contenha mais de um componente. Alguns dos aspectos de interesse so a funcionalidade oferecida, confiabilidade esperada e desempenho

Requisitos arquiteturais - Atributos de projeto


Abstrao
Permite entender questes complexas de projeto e resolver problemas Concentrar em um nvel mais genrico sem se ater a detalhes irrelevantes Possibilita trabalhar num problema, usando conceitos e termos que sejam familiares no domnio do problema antes de transform-los em alguma estrutura de mais baixo nvel Pode haver diferentes abstraes da mesma realidade, cada uma delas, fornecendo uma viso da realidade e atendendo a algum propsito especfico O engenheiro de software constri modelos que so analisados Geralmente emprega-se diagramas que podem ter algum formalismo associado, tal como a OCL (Object Constraint Language)

Requisitos arquiteturais - Atributos de projeto

Modularidade
Permite a separao de interesses atributo da qualidade de suma importncia para o projeto de software Minimiza o impacto de mudanas de uma deciso sobre outra(s) Gerencia a complexidade do projeto D produtividade ao desenvolvimento A efetividade da organizao do sistema depender do(s) critrio(s) usado(s) para decompor o sistema em componentes (coeso acoplamento)

Requisitos arquiteturais - Atributos de projeto


Existem trs metas que a modularidade tenta obter:
Capacidade de decompor um sistema complexo e/ou de grande porte; Dividir um problema em subproblemas e replicar tal procedimento de decomposio a cada subproblema recursivamente Capacidade de compor um sistema a partir de um conjunto de mdulos Projetistas compe o sistema a a partir de componentes elementares que incrementalmente vo sendo agregados at a obteno de um sistema completo Compreender a modularizao do sistema Entender cada parte de um sistema, separadamente, facilita modificaes que se faam necessrias ao sistema

Requisitos arquiteturais - Atributos de projeto


Compartilhamento de recursos
Os critrios usados para modularizar um sistema so alta coeso e baixo acoplamento
O acoplamento usado como medida de interdependncia entre dois componentes, exemplos:
Componente A chamar a rotina de um componente B Componente A ter acesso a uma varivel declarada no componente B

Se dois componentes possuem elevado nvel de acoplamento, tornar-se- difcil de analis-los, compreend-los, modific-los ou at mesmo reutiliz-los No entanto, pode-se obter um acoplamento relativamente baixo entre componentes de um sistema quando compartilhando recursos. Geralmente h um gerenciador de recursos que encarregado de designar quem ter acesso aos recursos compartilhados.

Requisitos arquiteturais - Atributos de projeto Compartilhamento de recursos


Para exemplificar considere o modelo arquitetural de software de interface com o usurio da figura Componente Dependente De dispositivo Componente Compartilhado De interface com usurio Componente Especfico da aplicao

Projeto da arquitetura do software


O produto do processo de projeto de arquitetura um documento de projeto de arquitetura. Ele pode incluir vrias representaes grficas do sistema junto com um texto descritivo associado Os modelos grficos do sistema apresentam perspectivas diferentes da arquitetura Os modelos de arquitetura podem incluir (Sommerville, 2007): Modelo esttico de estrutura : que mostra os subsistemas ou componentes desenvolvidos como unidades separadas Modelo dinmico de processo: que mostra como o sistema est organizado em processos em tempo de execuo Modelo de interface: que define os servios oferecidos por cada subsistema por meio de suas interfaces pblicas Modelos de relacionamentos: que mostram os relacionamentos, tal como o fluxo de dados entre os subsistemas Modelo de distribuio: que mostra como os subsistemas podem ser distribudos pelos computadores.

Interface de dispositivo

Interface com aplicao

Componente especfico da aplicao: cdigo especfico ao programa de uma aplicao. Incorpora o ncleo funcional da aplicao e pode incluir o cdigo da interface com o usurio que especfica da aplicao Componente compartilhado de interface com o usurio: cdigo que prov suporte interface com o usurio de mltiplos programas de aplicao. Se o sistema pode acomodar diferentes dispositivos de E/S, conter apenas a parte do cdigo que associado aos tipos de dispositivos Componente dependente de dispositivos: compreende o cdigo que pertinente a uma classe especfica de dispositivos de E/S, no sendo especfico da aplicao

Linguagens de descrio de arquitetura


Alguns pesquisadores propuseram o uso de linguagens de descrio de arquiteturas (ADL Architectural Description Language) para descrever arquiteturas de sistemas

Linguagens de descrio de arquitetura


Pontos negativos
Porm ADLs podem ser somente compreendidas por especialistas em linguagens e so inacessveis para especialistas em domnios e aplicaes (Sommerville,2007), tornandoas difceis de analisar com base em uma perspectiva prtica e, com isso, levando-as a serem utilizadas em um pequeno nmero de aplicaes Representaes atualmente em uso so relativamente difceis de serem analisadas sintaticamente e no so suportadas por ferramentas comerciais A maioria dos trabalhos sobre ADL so mantidos com metas acadmicas em detrimento dos objetivos prticos

Exemplos de ADLs: ACME (CMU/USC), Rapide (Stanford), Wright (CMU), Unicon


(CMU) Aesop (CMU), MetaH (Honeywell), C2 SADL (UCI), SADL (SRI) Os elemento bsicos das ADLs so componentes e conectores, e eles incluem regras e guias para arquiteturas bem formadas

Pontos positivos
Representam um meio formal para a representao da arquitetura So projetadas para serem legveis tanto pelas mquinas quanto por pessoas Suportam descrever um sistema em um nvel mais alto do que anteriormente era possvel Permitem anlises das arquiteturas completude, consistncia, ambigidade, e desempenho Podem suportar gerao automtica de software

Notaes como a UML permanecero como as mais comumente usadas para descrio de arquiteturas (Sommerville, 2007).

Arquitetura em Sistemas de Informao


Uma classe de sistemas com grande quantidade de aplicaes computacionais que envolve armazenamento, recuperao e processamento de dados chamada de sistemas de informao. Seu principal objetivo o gerenciamento da informao

Arquitetura em Sistemas de Informao


Algumas das principais preocupaes no desenvolvimento de SI Possibilitar o compartilhamento entre muitos usurios Flexibilidade para permitir mudanas constantes

Fator-chave: manuteno permite lidar com mudanas frequentes


Um dos componentes mais importantes dessa classe de sistemas o banco de dados Dentre os atributos da qualidade que caracterizam um SI, pode-se destacar
Desempenho Segurana Integridade Disponibilidade E usabilidade (para aplicaes interativas)

Arquitetura de software um aspecto determinante de sucesso

Alternativas de arquiteturas para Sistemas de Informao


Arquitetura cliente-servidor
Utilizadas em sistemas de grande porte com acesso a dados bem como de transaes Diversas variaes da tecnologia cliente-servidor tm evoludo, porm compartilhando o conceito de possuir a funcionalidade de processamento compartilhado entre uma mquina cliente e uma mquina servidora. Principais componentes
Cliente: recupera dados do servidor (solicita servios de servidores) Servidor: aceita conexes e comandos oriundos de clientes e retorna respostas e dados aos clientes (oferece servios, por ex: servidor de impresso, de arquivos, etc.) Rede: permite acesso pelos clientes aos servidores, execeto quando ambos estiverem na mesma mquina

Alternativas de arquiteturas para Sistemas de Informao Arquitetura cliente-servidor


Arquitetura de um sistema de acervo de filmes e fotografias
Cliente 1 Cliente 1 Cliente 1 Cliente 1

Internet
Serv. de catlogos Catlogo do acervo Serv. de vdeos Arqs. de videoclipe Serv. fotografias Fotografias digital. Servidor web Inform. de videos e fotos

Tradicionalmente a tecnologia cliente-servidor pode ser implementada adotando-se as seguintes arquiteturas:


Arquitetura cliente-servidor de duas camadas Arquitetura cliente-servidor de mltiplas camadas

Alternativas de arquiteturas para Sistemas de Informao Arquitetura cliente-servidor


Arquitetura cliente-servidor de duas camadas
Uma interface com o cliente: para executar as aplicaes clientes Um servidor de banco de dados para gerenciar as transaes de dados

Alternativas de arquiteturas para Sistemas de Informao Arquitetura cliente-servidor Arquitetura cliente-servidor de duas camadas
Pode ter duas formas: Modelo cliente magro: todo o processamento da aplicao e o gerenciamento de dados so realizados no lado servidor. O cliente responsvel simplesmente por executar o software de apresentao
Abordagem mais simples a ser usada quando sistemas legados centralizados evoluem para uma arquitetura cliente-servidor. A interface desses sistema migra para PCs e a aplicao em si atua como um servidor e cuida de todo o processamento e do gerenciamento de dados Vantagem: facilidade de manuteno

solicitao resposta usurio

solicitao resposta Servidor de BD (acesso a dados)

Cliente (interface com o usurio)

Desvantagem: Impe uma grande carga de processamento sobre o servidor e a rede (grande trfico) No utiliza a capacidade de processamento do cliente Pode haver problema de escalabilidade e desempenho

Arquitetura cliente-servidor de duas camadas


Modelo cliente-gordo: o servidor somente responsvel pelo gerenciamento de dados. O software do cliente implementa a lgica da aplicao e as interaes com o usurio
Esse modelo faz uso do poder de processamento do cliente e distribui o processamento lgico de aplicao e apresentao ao cliente Exemplo: caixas eletrnicos de bancos Cliente = Caixa eletrnico: realiza uma grande quantidade de processamento relacionado ao cliente associado a uma transao Servidor = mainframe que realiza operaes sobre o banco de dados de contas dos clientes ATM ATM ATM ATM

Arquitetura cliente-servidor de duas camadas Cliente gordo


Os caixas eletrnicos no se conectam diretamente ao banco de dados de clientes, mas sim ao monitor de teleproccessamento Monitor de teleprocessamento ou gerenciador de transaes um sistema de middleware que organiza as comunicaes com os clientes remotos e coloca em srie as transaes de clientes para processamento pelo banco de dados Distribui o processamento mais eficientemente do que um modelo cliente-magro, porm o gerenciamento do sistema mais complexo A funcionalidade da aplicao dividida entre vrios computadores Quando o software de aplicao precisa ser alterado, envolve reinstalao em cada computador cliente, resultando em um custo significativo se houver centenas de clientes. O advento do cdigo mvel (como applets de java e controles Active X), que pode ser carregado de um servidor para um cliente, permitiu o desenvolvimento de sistemas clienteservidor que esto em algum lugar entre o cliente-magro e o cliente-gordo. alivia a carga do servidor e a interface com o usurio criada usando um navegador web com recursos para executar o cdigo carregado.

Mainframe
Monitor de Banco de dados de Teleproces- contas de clientes samento

Sistema de caixa eletrnico cliente-servidor

Altenativas de arquiteturas para Sistemas de Informao Arquitetura cliente-servidor de mltiplas camadas


solicitao resposta usurio Cliente (interface com o usurio) Servidor de Aplicao Fontes da dados solicitao resposta

Altenativas de arquiteturas para Sistemas de Informao Arquitetura cliente-servidor de mltiplas camadas


Projetistas podem melhorar o sistema aumentando o desempenho e reduzindo a funcionalidade que antes sobrecarregavam os clientes Neste caso, alteraes nas regras de negcio, alteram somente os programas que as tratam inerentemente mais escalonvel O trfego de rede reduzido em comparao com arquiteturas cliente magro de duas camadas O processamento de aplicaes a parte mais voltil do sistema e pode ser facilmente utilizado

Os problemas da arquitetura cliente-servidor de duas camadas foram parcialmente solucionados Isso ocorreu devido ao fato da parte lgica especfica da aplicao ter sido movida do cliente para a camada central, assumindo o papel de servidor de aplicao O servidor de aplicao faz a mediao entre clientes e recursos Permite a otimizao da transferncia de informaes entre o servidor de aplicao e o servidor de banco de dados, podendo ser usado protocolos rpidos de comunicaes de baixo nvel. Um middleware eficiente que apoia consultas de banco de dados em SQL (structered query language) usado para cuidar da recuperao de informaes do banco de dados

Altenativas de arquiteturas para Sistemas de Informao Arquitetura cliente-servidor de mltiplas camadas


Geralmente desenvolvida com base em arquiteturas proprietrias que tm como desvantagens:
Elevado custo de aquisio/licenciamento e manuteno Processo de desenvolvimento, geralmente complexo e dispendioso Requer pessoal altamente especializado para manuteno do sistema Dificuldade para integrao num ambiente heterogneo, envolvendo mltiplos vendedores

Altenativas de arquiteturas para Sistemas de Informao Arquitetura cliente-servidor de mltiplas camadas p/ WEB
Redesenhou a forma na qual os negcios tm sido realizados em virtude de uma infra-estrutura de distribuio de informaes Informaes residem em um servidor central acessvel em toda a web a partir de qualquer computador
navegador conexo com a internet

Vantagens:
Baixo custo de manuteno; Aceso universal atravs de navegadores para clientes Acesso de qualquer local Etc.

Altenativas de arquiteturas para Sistemas de Informao Arquitetura cliente-servidor de mltiplas camadas p/ WEB
Cliente (navegador para web) solicitao resposta usurio Banco de dados Servidores de aplicao

Altenativas de arquiteturas para Sistemas de Informao Arquitetura cliente-servidor de mltiplas camadas p/ WEB Exemplo
Um sistema de operaes bancrias pela internet um exemplo de arquitetura cliente servidor de trs camadas: o banco de dados de clientes (geralmente hospedado em um computador mainframe) fornece servios de gerenciamento de dados; um servidor web/aplicao fornece os servios de aplicao, como recursos para transferir dinheiro, gerar extratos, pagar contas, etc.; e o prprio usurio com um navegador de internet o cliente.

Servidor web Outros clientes


Active-X, java

Altenativas de arquiteturas para Sistemas de Informao Arquitetura em Sistemas de tempo real

Altenativas de arquiteturas para Sistemas de Informao Arquitetura em Sistemas de tempo real


Estmulos:
Estmulos perodicos: ocorrem em intervalos de tempo previsveis Por ex.: um sistema pode examinar um sensor a cada 50 milisegundos e reagir de acordo com o valor desse sensor (o estmulo) Estmulos aperidicos: ocorrem irregularmente e so geralmente sinalizados por meio do mecanismo de interrupo do computador. Por exemplo: um estmulo seria a interrupo que indique que uma transferncia de E/S foi concluda e os dados esto disponveis em um buffer

Principal caracterstica
que eles devem responder aos estmulos recebidos dentro de um estrito intervalo de tempo Um sistema de tempo real um sistema de software cujo funcionamento correto depende dos resultados produzidos pelo sistema e do tempo em que esses resultados so produzidos Sistema de tempo real leve: aquele cuja operao ser degradada caso os resultados no sejam produzidos de acordo com os requisitos de timing especificados Sistema de tempo real rgido: aquele cuja operao ser incorreta se os resultados no forem produzidos de acordo com a especificao de timing.

Arquitetura:
Deve ser organizada de modo que, to logo um estmulo seja recebido, o controle seja transferido para o tratador correto. A generalidade desse modelo de estmulo-resposta conduz a um modelo de arquitetura genrica e abstrata, no qual existem trs tipos de processos: Processo de gerenciamento de sensor: para cada tipo de sensor Processos computacionais: calculam as respostas exigidas para os estmulos recebidos pelo sistema Processos de controles de atuadores: gerenciam a operao de atuadores

Altenativas de arquiteturas para Sistemas de Informao Arquitetura em Sistemas de tempo real


Modelo sensor-sistema-atuador de um sistema embutido de tempo real

Altenativas de arquiteturas para Sistemas de Informao Arquitetura em Sistemas de tempo real


As linguagens de programao para desenvolvimento de sistemas de tempo real precisam incluir recursos para acessar o hardware do sistema e deve ser possvel prever o timing de operaes especficas nessas linguagens Linguagens de baixo nvel: (permitem gerar cdigo eficiente)
Assembler C

Sensor Sensor

Sensor

Sensor

Sensor Sensor

Sistema de controle de tempo real

Exemplo:
Sistema de comutao eletrnica o qual possui requisitos precisos de tempo real e confiabilidade Software embarcado: deve reagir a eventos gerados pelo hardware e emitir sinais de controle em resposta a esses eventos Outros: Sistemas de navegao para veculos; Controle de trfego areo; Sistemas de monitoramento de vida; Controle de processos industriais; Sistemas distribudos de multimdia.

Atuador

Atuador

Atuador

Atuador

Modelo geral de um sistema de tempo real

Traduz o sinal de controle em ao

Você também pode gostar