Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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.
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
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
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
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
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
Conhecimento de produtos, processos Atuao como mentor de arquitetos e estratgias de concorrentes novatos
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.
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
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.
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.
editor
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
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
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.
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
Clula de Conhecimento
Clula de Conhecimento
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
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
Subsistema 1
Subsistema 2
Subsistema 3
Subsistema 4
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)
n4
n6 n7
n8 n13 n12
n2
n3
n9 n1 n5
So mais adequados a sistemas de informaes no crticos ou nos quais j existam relacionamentos de trabalho entre as organizaes
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
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.
Localizador de ruas
Informaes de trfego
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
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 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.
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
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)
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.
Interface de dispositivo
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
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).
Internet
Serv. de catlogos Catlogo do acervo Serv. de vdeos Arqs. de videoclipe Serv. fotografias Fotografias digital. Servidor web Inform. de videos e fotos
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
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
Mainframe
Monitor de Banco de dados de Teleproces- contas de clientes samento
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 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.
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
Sensor Sensor
Sensor
Sensor
Sensor Sensor
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