227 107 85MB
Portuguese Pages 195 [196] Year 2020
ARQUITETURA PARA COMPUTAÇÃO MÓVEL J
2a edição
Pearson
BUP EXATAS
QUER SEP MAIS LIVRE? Aprenda a Pesquisar e Fazer Ebooks | Armazene arquivos de forma segura
APRENDA A FAZER EBOOKS
HTTPS://ODYSEE.COM
Seja a partir de Livro ou PDF escaneado Construa PDF pesquisável ou Epub Qualidade Profissional
Plataforma descentralizada para Reprodução e Hospedagem de arquivos Garantida por BlockChain
Rápido e Eficiente
Prática como Youtube Descentralizada e resiliente como torrent Facilitadora de transações financeiras como Bitcoin
t.me/AnonLivros
Acervo em Português Mais de 70 mil ebooks no Telegram t.me/PolemicBooks Mais de 2 mil cursos em vídeo t.me/oAcervoCursos
HTTPS://LIBGEN.IS HTTPSy/Z-LIB.ORG Portais de Ebooks e artigos científicos Mais de 2 milhões de documentos
Cursos via streaming no Telegram t.me/LivreSaber
CONTRA A PROPRIEDADE INTELECTUAL A fundamentação Teórica em favor do Conhecimento Livre https://www.mises.org.br/Ebook.aspx?id=29
t.me/AnonLivros
Arquitetura para COMPUTAÇÃO MÓVEL
Arquitetura para COMPUTAÇÃO MÓVEL 2a edição
Organizadores Rafael Félix Cientista de dados pelo Laboratório de Computação Natural da Universidade Presbiteriana Mackenzie - UPM Mestre em engenharia da computação pela UPM Bacharel em sistemas de informação pela Universidade Estadual de Montes Claros
Everaldo Leme da Silva Mestre em Sistemas de Informação e Comunicação pela Faculdade de Tecnologia da Unicamp Especialista em Engenharia de Software pela Unicamp MBA em Gerenciamento de Projetos com ênfase em TI pela FGV Bacharel em Análise de Sistemas pela Pontifícia Universidade Católica de Campinas - PUC
Pearson
Recife c J'rrifi» âutcrt’
© 2020 by Pearson Education do Brasil Todos os direitos reservados. Nenhuma parte desta publicação poderá ser reproduzida ou transmitida de qualquer modo ou por qualquer outro meio, eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer outro tipo de sistema de armazenamento e transmissão de informação, sem prévia autorização, por escrito, da Pearson Education do Brasil.
Gerente de produtos: Alexandre Mattioli Coordenador editorialize Xavier Editoras assistentes: Karina Ono e Mariana Rodrigues Redatores: Fernando Martins Minighiti e Luiz Fukushiro Editor: Casa de Idéias Capa: Natália Lopes Projeto gráfico e diagramação: Casa de Idéias Créditos das imagens das aberturas: (1) scyther5/iStockphoto; (2) spxChrome/iStockphoto; (3) ContentWorks/iStockphoto; e (4) mumininan/iStockphoto
Dados Internacionais de Catalogação na Publicação (CIP) (Câmara Brasileira do Livro, SP, Brasil)
índice para catálogo sistemático:
2019 Direitos exclusivos cedidos à Pearson Education do Brasil Ltda., uma empresa do grupo Pearson Education Avenida Francisco Matarazzo, 1400 Torre Milano - 7'-’ e 81’ andares 05000-903 | Agua Branca | São Paulo-SP Telefone +55 (11) 4210-4450 www.pearson.com.br
UMARIO Apresentação.......................................................................... VII Prefácio..................................................................................... IX
Unidade 1 Introdução à arquitetura de software...................... 1 Introdução à arquitetura de software.............................................. 3 Objetivos da arquitetura de software............................................. 3 Contextos da arquitetura de software............................................ 5 Requisitos arquiteturais....................................................................... 11 Dependabilidade.................................................................................. 12 Funcionalidade...................................................................................... 14 Interoperabilidade.............................................................................. 22 Escalabilidade....................................................................................... 27 Performance.......................................................................................... 35 Segurança.............................................................................................. 41 Usabilidade............................................................................................ 46
Unidade 2 Modelos e projetos arquitetônicos........................ 59 Padrões de projeto e arquitetura de software........................... 61 Estilos de arquitetura......................................................................... 61 Arquitetura baseada em componentes........................................ 85 Abordagem da arquitetura...............................................................85 Tendências arquitetônicas................................................................86 Princípios fundamentais de arquitetura...................................... 88
Unidade 3 Webservices e serviços................................................97 Arquitetura baseada em webservices.......................................... 100 XML......................................................................................................... 100 Processando o XML........................................................................... 114 Arquitetura orientada a serviços................................................... 119 Introdução e fundamentos da SOA............................................ 119 Modelos de serviços......................................................................... 122 Governança......................................................................................... 124
Unidade 4 Linguagens de descrição arquitetural (ADL)......................................................................... 135 Introdução às linguagens de descrição arquitetural (ADL)............................................................................ 137
VI
Arquitetura para computação móvel
Architecture description language (ADL).....................................137 Rapide.................................................................................................... 139 AADL...................................................................................................... 140 xADL....................................................................................................... 141 UML........................................................................................................ 142 Diagramas............................................................................................ 147
Referências.............................................................................165 Respostas............................................................................... 167
PRESENTACAO Nos catálogos de livros universitários, há vários títulos cuja pri meira edição saiu há 40, 50 anos, ou mais. São livros que, graças à
identificação da edição na capa (c somente a ela), têm sua idade re velada. E, ao contrário do que muitos podem imaginar, isso não é um
problema. Pelo contrário, são obras conhecidas, adotadas em diversas
instituições de ensino, usadas por estudantes dos mais diferentes per fis e reverenciadas pelo que representam para o ensino. Qual o segredo de sucesso desses livros? O que eles têm de
diferente de vários outros que, embora tenham tido boa aceita ção em um primeiro momento, não foram tão longe? Em poucas palavras, esses livros se adaptaram às novas realidades ao longo
do tempo, entendendo as mudanças pelas quais a sociedade - e,
consequentemente, as pessoas - passava c as novas necessidades
que se apresentavam. Para que isso fique mais claro, vamos pensar no seguinte: a maneira como as pessoas aprendiam matemática na década de
1990 é igual ao modo como elas aprendem hoje? Embora os ali
cerces da disciplina permaneçam os mesmos, a resposta é: não! Nesse intervalo de tempo, ocorreram mudanças significativas - a internet se consolidou, os celulares se popularizaram, as redes so
ciais surgiram etc. E todas essas mudanças repercutiram no modo de vida das pessoas, que se tornou mais rápido e desafiador, trans formando os fundamentos do processo de ensino/aprendizagem.
Foi com base nisso que nasceu a Bibliografia Universitária
Pearson (BUP). Concisos sem serem rasos e simples sem serem simplistas, os livros que compõem esta série são baseados na
premissa de que, para atender sob medida às necessidades tan to dos alunos de graduação como das instituições de ensino independentemente de eles estarem envolvidos com ensino presen
cial ou a distância -, é preciso um processo amplo c flexível de
construção do saber, que leve cm conta a realidade cm que vivemos.
VIII
Arquitetura para computação móvel
Assim, as obras apresentam de maneira clara os principais conceitos dos temas pro postos, trazendo exatamente aquilo que o estudante precisa saber, complementado com
aprofundamentos e discussões para reflexão. Além disso, possuem uma estrutura didá tica que propõe uma dinâmica única, que convida o leitor a levar para seu dia a dia os
aspectos teóricos apresentados. Veja como isso funciona na prática: Neste novo projeto, além da revisão de conteúdo, também foram criadas algumas novas seções para guiar o aluno a uma reflexão prática sobre os conceitos. A seção “Es tudo de caso” simula situações de tomada de decisão e oferece aos alunos ferramentas
para solucionar um conflito apresentado. Já a seção “Na mídia” permite que o estudante veja como a teoria é aplicada em situações reais. Por fim, a seção “Na academia” traz
propostas de atividades ou projetos que incentivam o estudante a aprofundar seus conhe
cimentos por meio da prática da pesquisa.
Na mídia
Estudo de caso Alegria, estresse, raiva: Amazon desen para reconhecer emoçô Considere o seguinte cenário para um negócio
O assistente financeira apos aprovação, efe
A Amazon está devenvolvendo um dispositivo
anonlmato |
para reembolso de despesas em uma empresa:
tua o depósito na conta do funcionário
inteligente ativado por voz que pode reconhe
na Um prog
O funcionário solicita um valor de adianta
Apôs a viagem o funcionário deve prestar
cer as emoções de seres humanos. 0 aparelho
mento, disse
mento para efetuar uma viagem a serviço da
contas apresentando todos os recebidos de
de pulsoé descrito como um produtode saúde
se o teste Ir
empresa. A viagem pode ser para reunião,
pagamento. Todos os gerentes e assistente
e bem esUr em documentos Internos anallsa-
soltware de
congresso ou curso.
tambãm são funcionários da empresa.
0 valor do adiantamento ó autorizado pelo
Caso o valor gasto soja maior que o adiantado,
PARA LER!
Ao longo do livro, o leitor pode encontrar vários
hipertextos. Classificados como “Para saber!”, “Para ler!”, “Para conhecer!”, “Para assistir!”, “Na web” e
' PARA
CONHECER!
►
PARA ASSISTIR!
“Na prática”, esses hipertextos permitem ao aluno ir além em suas pesquisas, oferecendo-lhe amplas pos
NA WEB NA PRÁTICA
sibilidades de aprofundamento. A linguagem dialógica aproxima o estudante dos temas abordados, eliminando qualquer obstáculo
para seu entendimento e incentivando o estudo. A diagramação contribui para que o estudante registre idéias e faça anotações, interagindo com o
conteúdo. Todas essas características deixam claro que os
livros da Bibliografia Universitária Pearson consti tuem um importante aliado para estudantes conecta
dos e professores objetivos - ou seja, para o mundo
de hoje - e certamente serão lembrados (e usados) por muito tempo.
Boa leitura!
REFÁCIO A habilidade de desenvolver aplicações para computação móvel é cada vez mais valiosa para a indústria do século XXI. O
desenvolvimento de soluções mais sofisticadas para esse tipo de aplicação carece da correta compreensão da arquitetura de sof
tware, que cncapsula a computação móvel. Por isso, a prepara ção desta obra introdutória, Arquitetura para computação móvel, foi um grande desafio c visou o desenvolvimento de um material
didático que atenda aos interesses da atualidade e, ao mesmo
tempo, contenha a fundamentação teórica necessária para o de senvolvimento de tal habilidade.
O principal objetivo desta obra é reunir temas da atualidade
que estimulem o estudante e introduzam-no às necessidades do
mercado brasileiro. Por outro lado, buscamos também disponibi lizar um conhecimento sólido que proporcione ao estudante um bom desenvolvimento da base teórica. Desta forma, utilizamos
uma abordagem objetiva e prática apoiada em exemplos do dia a dia que sejam comuns ao estudante. A abordagem pretende apre sentar de maneira didática diversos conceitos e construções teóri cas da arquitetura de software para computação móvel. Tivemos o cuidado de indicar as obras em que nos baseamos para que o leitor
possa recorrer a esses textos sempre que sentir a necessidade de se
aprofundar em determinado tema.
Seguindo a proposta de outros livros desta coleção, o conteúdo divide-se em quatro unidades, todas enriquecidas com boxes de
ampliação, seções especiais c exercícios para fixação e reflexão. A Unidade 1 concentra-se na arquitetura de software e dos re
quisitos arquiteturais. Essa unidade apresenta didaticamente todo o contexto da arquitetura de s oftware, mostrando seus objetivos,
seu ciclo de vida e a contextualização em diversos âmbitos. Fixa dos os conceitos da arquitetura de software, são apresentados os requisitos arquiteturais ao longo do segundo tema, bem como seus
conceitos e suas teorias, como funcional idade, disponibilidade, es-
calabilidade, entre outros.
X
Arquitetura para computação móvel
Para dar continuidade a esses assuntos, ao longo da Unidade 2
o leitor conhece diversos conceitos dos padrões de projetos e tem a oportunidade de aprofundar seus conhecimentos sobre o ciclo dc vida dos diferentes estilos de arquitetura. Além disso, o leitor ob serva as vantagens c as desvantagens dc cada um desses padrões.
O objetivo principal da Unidade 3 é permitir que o leitor se fa miliarize com as arquiteturas baseadas cm wcbscrviccs c serviços.
Alguns conceitos fundamentais para a arquitetura para computação móvel são abordados nessa unidade, como XML c SOA.
Por fim, a Unidade 4 traz reflexões atuais e práticas sobre as linguagens dc descrição arquitetural (ADL). O leitor c confronta
do com diferentes tipos de descrição de projetos de software e
pode perceber os benefícios c as dificuldades dc cada uma. A abordagem proposta permite que o leitor adquira um olhar críti
co para escolher a melhor linguagem dc descrição de arquitetura para seus projetos. Esperamos que esta obra seja uma introdução divertida e infor
mativa para o leitor.
Boa Leitura! Rafael Félix
UNIDADE 1
INTRODUÇÃO À ARQUITETURA DE SOFTWARE
CONHEÇA Os requisitos da arquitetura de software.
REFLITA Sobre a importância de definir os requisitos corretos para a arquite tura de software.
DISCUTA Como definir as funcionalidades do software por meio dos requisitos arquiteturais.
APLIQUE Os conhecimentos adquiridos para obter uma arquitetura de softwa re robusta, escalável e de alto desempenho.
#REQUISITOS #ESCALABILIDADE
#ARQUITETURADESOFTWARE
01
O que é arquitetura de software? Como é estrutu rada a arquitetura de um sistema? Quais os aspec tos principais da arquitetura de software? Quais os tipos de processos de desenvolvimento? O que é importante na hora de definir um projeto?
OBJETIVOS DE APRENDIZAGEM Compreender os objetivos e as funcionalidades da arquitetura de software.
Conhecer os diferentes contextos da arquitetura de software e suas múltiplas abordagens. Identificar os principais requisitos arquiteturais como funcionalidade, disponibilidade, performance e segurança.
Relacionar os principais requisitos arquiteturais com situações do dia a dia.
INTRODUÇÃO À ARQUITETURA DE SOFTWARE
02
REQUISITOS ARQUITETURAIS O que são requisitos arquiteturais? O que é fun cionalidade? Como calcular a disponibilidade? O que é interoperabilidade? O que é escalabilidade? Como manter um sistema seguro?
Introdução à arquitetura de software
3
Introdução Quando ouvimos falar sobre arquitetura, rapida mente associamos a palavra ao ato de construir casas e prédios. De fato, arquitetura é uma pala vra originalmente relacionada ao design de uma construção interna ou de uma estrutura externa. O que nós esquecemos é que toda e qualquer coisa organizada e estruturada possui uma ar quitetura, ou seja, uma forma, independente mente do seu tipo. Por exemplo, a hierarquia de uma escola, que vai do diretor ao faxineiro passando por coordenado res, vice-diretores, alunos e professores também forma uma estrutura; quando assistimos a um filme e o vilão bola uma estratégia, ele diz estar arquitetando um plano mirabolante. Mesmo um filme, que precisa ser estruturado para ser editado e montado, possui uma arquitetura.
Com a computação não seria diferente. Aqui, arqui tetura também se refere à estrutura de um sistema, compreendendo todas as características que um sistema deve conter, sejam requisitos técnicos ou não. Ou seja, a arquitetura de um sistema não de pende apenas de código e infraestrutura, mas tam bém estratégia, relações pessoais e conhecimento. Antes mesmo de pensar em soluções tecnológicas, é preciso se comunicar com o cliente, saber o desejo dos tomadores de decisão e entender muito bem o problema para só aí se pensar na melhor solução. Por isso, vamos adentrar um mundo mais analítico do desenvolvimento de software. Esperamos que, ao fi nal desta unidade, você olhe para seu software e não veja apenas linhas de código, que representam tare fas a serem executadas, mas o resultado da análise de algo com uma estrutura bem definida.
Introdução à arquitetura de software Objetivos da arquitetura de software Para compreender o objetivo da arquitetura de software, pense
nos conceitos de objetivos e resultados. O objetivo c a descrição
do que se deseja obter como resultado prático. Assim, você pode
considerar um objetivo como algo abstraio - isto é, um plano que não é físico, não é tangível - e o resultado como algo concreto, que pode ser locado ou medido. É exatamente no meio termo desses dois extremos que está a arquitetura de software. Ela é criada e utilizada para ajudar organi
zações a atingirem seus objetivos finais, transformando algo abs trato em um resultado prático e mensurável. Essa transformação ocorre por meio da modelagem de software.
A modelagem é o processo de desenvolvimento de modelos
abstratos de um software, em que cada modelo apresenta uma
4
Arquitetura para computação móvel
visão ou perspectiva, diferente do software. A modelagem geral
mente representa o sistema com algum tipo dc notação gráfica, baseada em notações de UML (Unified Modeling Language).
A arquitetura de um sistema compreende um conjunto de es
truturas necessárias a ele, além de seus elementos, propriedades e relações - que, por sua vez, visam alcançar algum objetivo. Primeiro, pense em arquitetura como uma serie dc estruturas.
Podemos dividi-las em três partes: 1.
Estrutura modular - módulos são responsáveis por fun
ções específicas. Por exemplo: o time I realiza a função x; o time 2 realiza a função y; e assim por diante. As vezes,
esses módulos podem ser subdivididos, caso a arquitetura seja muito extensa.
2.
Componentes e conexões (C&C) - para o bom funcio
namento de uma arquitetura modular, é necessário que
existam elos bem estruturados entre cada módulo. Os co nectores garantem que os componentes da arquitetura se comuniquem da melhor maneira possível, para que haja
sincronia entre eles.
3.
Estrutura de locação - descreve o mapa dc desenvolvimen
to, instalação e execução de um sistema. Por exemplo: mó dulos organizarão a estrutura dc funções em um sistema; os componentes desses módulos serão executados por meio de
um hardware. Com isso em mente, um mapa que une essas duas funções é chamado dc estrutura de locação.
(
w
1PARA SABER!
Ao criar a arquitetura de um software, você usará elementos do mundo real. Então, para facilitar a sua organização e não esbarrar em problemas, é plausível omitir
algumas informações particulares dos elementos de sua arquitetura, mantendo
aquilo que for essencial. Por exemplo: imagine um sistema de uma clínica na qual os atores sejam a secretária Esteia e o médico Alberto. Ao criar esse sistema, bem como
sua arquitetura, seria recomendável que você omitisse os dados "Esteia" e "Alberto*
usando apenas "secretária* e "médico" Isso diminui as chances de mal entendidos no momento em que esse sistema for aplicado na clínica.
Introdução à arquitetura de software
Contextos da arquitetura de software Você pode entender a arquitetura de software por meio de dife rentes pontos de vista. Isso é possível porque, além de considerar eventos técnicos (operacionais) de um sistema, você pode pensar
em como eles vão atingir o sistema de uma organização, por exem plo. Uma arquitetura de software pode ser tratada a partir dos se
guintes pontos de vista: Técnico - uma arquitetura c a descrição de um sistema. Então,
qual é o papel técnico disso no sistema cm si? Qual é a sua função prática?
Ciclo de vida do projeto - softwares possuem um ciclo de
vida. Como uma arquitetura interage com esse ciclo?
Negócios - como uma arquitetura de software pode impactar o ambiente de negócios de uma organização? Profissional - qual é o papel de uma arquitetura de software
em um ambiente organizacional? A seguir, vamos nos aprofundar em cada um desses quatro pon
tos de vista.
Contexto técnico A arquitetura de software atinge vários pontos que ultrapassam o ambiente de desenvolvimento de projeto, podendo ser encarada, por exemplo, como um recurso de auxílio na relação de uma em
presa com seus stakeholders (pessoas ou negócios interessados
cm uma organização), englobando aspectos não técnicos, como a estrutura de uma equipe de trabalho.
Mas se você considerar apenas o contexto técnico de uma ar quitetura de software, podemos dizer que ela: Retira ou associa qualidades aos atributos de um sistema; Possibilita a previsão de vários aspectos em sistemas de
qualidade;
Facilita a gestão de mudanças. Um dos pontos mais importantes da visão técnica de uma ar quitetura é o primeiro item. Isso porque os atributos determinarão
as características do sistema. Por exemplo: se você precisa de um
programa de alta performance, pode organizá-los e associá-los de
5
6
Arquitetura para computação móvel
uma maneira específica. Essa maneira, naturalmente, não seria igual caso a função do programa fosse outra. Lembre-se, também,
de que para criar uma boa arquitetura de software, principalmente do ponto de vista técnico, é preciso considerar detalhes como:
Atenção à relação entre elementos dos sistemas e à previsão de como reagirão a erros - todo o projeto pode precisar de
remanejamento caso exista uma falha.
Atenção à usabilidade do sistema. A interface é essencial, pois é a principal janela com o usuário. Se a função do seu sistema é testar elementos, você deve
prestar atenção no detalhamento da funcionalidade daqueles que serão testados.
Ao criar uma arquitetura de software, você deve ponderar qual caminho vai seguir: leste de elementos, relacionamento com o
usuário, ou algum outro. Em seguida, desenvolverá lodo o pro cesso a partir das características mais adequadas para a finalidade
do programa.
Contexto de ciclo de vida do projeto Dentro de uma abordagem de ciclo de vida, existem vários pro
cessos de desenvolvimento de software. Esses processos são mo
delos padrões para o desenvolvimento de um sistema. Neste livro, vamos destacar quatro processos principais, que veremos a seguir: Waterfall (cascata) - durante muitos anos. Waterfall foi con siderado o principal modelo dc ciclo dc vida cm arquiteturas
de softwares. Essa abordagem organiza o ciclo de vida dc um sistema cm uma sequência dc atividades, sendo que todas elas
devem possuir condições de entradas e saídas. Também preci sam ser devidamente relacionadas às etapas anteriores e pos teriores. As atividades para esse modelo preveem: análise e
especificações de requisitos, projeto e arquitetura de software, codificação, testes e implantação e manutenção.
Interativo - com o tempo, assim como você pode perce ber. os caminhos de retorno (feedback) no modelo Waterfall
tornou o sistema tão carregado que foi necessário desenvol ver outro. Esse novo modelo é o interativo. Nele, você vai
trabalhar pensando em desenvolvimento de software como uma série dc ciclos curtos. Cada ciclo é responsável por uma
Introdução à arquitetura de software
função específica c trabalha individualmente, mas dc modo
interativo. Por exemplo, enquanto o ciclo A realiza a tarefa 1, o ciclo B jrí está realizando a tarefa 2. A Figura 1.1 mostra um
diagrama de funcionamento do modelo em cascata. Figura 1.1 Modelo em cascata.
Fonte: adaptada de Sommerville (2011, p. 20).
Agile Software Development (Desenvolvimento ágil de
software) - assim como o desenvolvimento interativo, essa abordagem também trabalha com pequenos ciclos, que apre sentam menores intervalos de tempo. Essa metodologia per
mite a “conversa” entre a organização e os desenvolvedores
de software. Também tem uma adaptação rápida a mudanças
no cenário do sistema. Model driven development - esse ponto de vista considera que você, c nenhum outro ser humano, deveria criar códigos
na linguagem dc programação. Para isso, o responsável deve
criar um modelo independente dc plataforma (platform-inde pendent model - PIM), que será combinado a um modelo de definição de plataforma (platform-definition model - PDM)
e, só então, um código seria gerado automaticamente.
7
3
Arquitetura para computação móvel
É importante saber que, indcpcndcntcmcntc do processo de desenvolvimento de ciclo de vida escolhido (Waterfall, Model
driven development etc.), existem alguns métodos que você pode
utilizar. São eles:
Fazer um estudo de caso para o sistema Etapa na qual quem vai criar a arquitetura “conversa” com
a organização. Ou seja, procura-se justificar o investimen to feito na criação do sistema. Nesta etapa, perguntas como
“quanto o projeto vai custar?”, “qual é o público-alvo?”, e “a interface do sistema deverá interagir com outros sistemas?”
devem ser respondidas com clareza. Elas ajudarão o progra mador a compreender as necessidades da organização, facili
tando o percurso entre os objetivos abstratos e os resultados concretos.
Identificar os requisitos da arquitetura
Aqui, você vai decidir qual técnica melhor se aplica às neces
sidades da organização. Por exemplo: a programação orien tada a objetos é uma linguagem que utiliza casos e cenários
que aproximam o sistema do mundo real, sendo assim, deve ser aplicada em situações desse tipo. Uma forma de identi
ficar qual é a melhor técnica para a organização é seguir os modelos de softwares já existentes nessa organização. Você
também pode partir para a realização de pequenos protótipos.
Os protótipos testam os comportamentos desejados, o design
da interface c outros detalhes, até que o sistema fique dc acor
do com as necessidades da organização. Modelagem e Projeto de Arquitetura
Os modelos dc projeto dc arquitetura são usados para faci
litar a discussão sobre o sistema. Uma vez que a visão de
alto nível da arquitetura não é muito detalhada, isso ajuda na comunicação com os stakeholders do sistema e no planeja mento do projeto. Os stakeholders podem se relacionar e ter
uma visão abstrata do sistema. E, então, discutir o sistema
como um todo, sem a possibilidade de serem confundidos pelos detalhes.
Também um modelo de projeto é utilizado como uma forma
dc documentar uma arquitetura projetada. O objetivo aqui é produzir um modelo dc sistema completo que mostre os
Introdução à arquitetura de software
Q
diferentes componentes cm um sistema, suas interfaces e
suas conexões. Documentar c comunicar a arquitetura
Documentar e comunicar a arquitetura agregam duas funções básicas:
1.
Ajudar os desenvolvedores a acompanhar o andamento
do projeto. Aqui, mesmo que detalhada, tal documenta ção não possui um caráter necessariamente formal.
2.
Apresentar, em forma de documento, o programa ao cliente, dc modo que possa comprccndc-lo. Deve ser um
documento objetivo e claro, de forma que toda e qual quer pessoa possa entender seu conteúdo sem ambigui
dades ou dúvidas. Caso existam alterações no sistema, elas também devem ser documentadas. Analisar as interfaces Ao criar uma arquitetura de software, você certamente vai
criar interfaces. Analisar ou avaliar essas interfaces é de extre
ma importância para selecionar aquela que mais se enquadra
(■'0 z PARA SABER!
às necessidades da organização que fará uso desse sistema.
Implementar e testar o sistema Etapa na qual o desenvolvedor implementa e realiza os testes unitários de cada parte desenvolvida do sistema.
A arquitetura de software
não está apenas relacionada à programação, mas
Verificação e validação de software
também a todo o contexto
Atividades para verificar se o software está de acordo com
do negócio do cliente
as especificações estabelecidas e com a arquitetura projeta
e às diferentes visões
da, além de validar se atende as o que o usuário realmente
estruturais do sistema.
necessita.
Contexto de negócios Empresas c organizações sempre possuem objetivos, que
podem ter os mais diferentes teores, desde como aumentar sua
participação no mercado, melhorar a qualidade dos produtos, até manter seus stakeholders satisfeitos, entre muitos outros. Como
dissemos anteriormente, a arquitetura de software tem papel fun damental para o alcance desses objetivos. Isso porque, muitas ve
zes, essas metas influenciam diretamente atributos de um sistema,
e até mesmo a própria arquitetura em si.
10
Arquitetura para computação móvel
Arquitetura dc software não requer apenas programação, há
todo o contexto do negócio do cliente e as diferentes visões es truturais do sistema elaboradas pela engenharia de requisitos e
arquitetos de software. Quando essas decisões atingem direta
mente os atributos de um sistema ou sua arquitetura, dizemos que o objetivo do negócio leva a mudanças nos atributos ou na
arquitetura.
PARA SABER!
Algumas vezes, mudanças nos requisitos de um sistema podem resultar em mudanças na arquitetura. Você pode perceber que esse fato está exemplificado
na Figura 1.2.
Existem também objetivos que não envolvem, necessariamente, soluções dc arquitetura. Por exemplo: imagine que a organização dc
um banco dc dados dc funcionários tem como função manter todos os funcionários dc uma empresa, ou dc uma determinada área, de
vidamente identificados para que recebam o salário. Realizar essa organização e incluir esse banco dc dados cm um sistema não impli
ca necessariamente em uma mudança na arquitetura do banco, pois
já é um elemento pronto. Veja, na Figura 1.2, que a relação desse exemplo é ilustrada pela seta pontilhada. Já as outras setas indicam
objetivos que interferem em elementos e na arquitetura. Figura 1.2 Diagrama da influência do negócio na arquitetura do projeto.
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 50).
Contexto profissional Você deve ter percebido que um arquiteto de software não
se limita apenas ao desenvolvimento do código. Ele é muito
mais do que isso: um profissional que desenvolve arquitetura
Introdução à arquitetura de software
de softwares precisa dc três qualidades fundamentais para ter
sucesso no mercado: 1.
Habilidade.
2.
Atribuições.
3.
Conhecimento.
Um arquiteto não consegue realizar todo o projeto sem uma boa conversa com o seu cliente. Somente dessa maneira ele co nhecerá a fundo as metas que o cliente deseja atingir e poderá desenvolver um programa adequado. Assim, você deve ter a ha
bilidade da comunicação, aprendendo a negociar, argumentar c dialogar. É dever dc um arquiteto comunicar suas idéias da ma neira mais clara possível, abrangendo todas as possibilidades, sem
deixar margens para erros de comunicação ou interpretação. Isso afeta direlamente o resultado do programa.
O arquiteto também deve ter conhecimento atualizado sobre o
ramo, como as últimas tecnologias de bancos de dados, serviços padrões de internet, entre outros. Tudo isso qualifica uma boa ar quitetura, além de qualificar a pessoa como um bom profissional.
Requisitos arquiteturais Você já sabe que os requisitos para a criação de um sistema
têm base em diversas situações: por meio de um estudo de caso das necessidades de uma empresa; dc sistemas já existentes; do histórico da empresa, entre outras situações.
Os requisitos do sistema podem ser classificados como: Requisitos funcionais - São declarações dc serviços que o sistema deve fornecer, de como o sistema deve reagir a en
tradas específicas e de como o sistema deve se comportar em
determinadas situações, ou seja, as funções de um sistema. Requisitos não funcionais - São restrições aos serviços ou
funções oferecidos pelo sistema. Incluem restrições de tem po, restrições no processo de desenvolvimento e restrições impostas pelas normas. Ao contrário das características indi
viduais ou serviços do sistema, os requisitos não funcionais, muitas vezes, aplicam-se ao sistema como um todo e afetam
diretamente a arquitetura do software.
*|
12
Arquitetura para computação móvel
Dependabilidade Os trabalhos de Laprie e Costes estabelecem uma visão do
conceito de dependabilidade (dependability, em inglês) e seus
atributos. Define-se dependabilidade como sendo a habilidade de um sistema prover serviços que, justificadamente, possam
ser confiáveis. Esta definição realça a necessidade de justificar a confiabilidade. A definição alternativa fornece o critério para decidir se o serviço é dependable, dizendo que a dependabili
dade de um sistema é a capacidade de evitar falhas de serviço que são mais frequentes e mais graves do que é aceitável. Tam
bém, segundo Avizienis, é a capacidade de evitar que ocorram
defeitos frequentes ou com severidade maior que o esperado pelos usuários. Um defeito ocorre quando o serviço prestado se desvia daquele que seria esperado segundo os objetivos do
sistema. Como desenvolvido ao longo das últimas três décadas, de pendabilidade é um conceito integrado que engloba os seguintes atributos:
Disponibilidade (availability) - prontidão para o serviço correio; Confiabilidade (reliability) - a continuidade do serviço
correto; Segurança física (safety) - ausência de consequências catas tróficas sobre o usuário e sobre o meio ambiente;
Integridade (integrity) - ausência dc alterações inadequadas
do sistema e
Manutenibilidade (maintainability) - capacidade dc sofrer modificações c reparos.
Ao abordar a segurança lógica (security), um atributo adi cional tem grande destaque, a confidencialidade (confiden tiality), ou seja, a ausência de divulgação não autorizada dc informações. A segurança lógica (security) é um conjunto de
atributos de confidencialidade, integridade e disponibilidade (confidentiality, integrity e availability). A Figura 1.3 apresen
ta o relacionamento de atributos entre dependabilidade e segu rança lógica (security).
Introdução à arquitetura de software
Figura 1.3 Dependabilidade, segurança e seus atributos.
Segurança (Security)
Fonte: adaptada de Leme (2016).
Falhas, erros e defeitos são ameaças à dependabilidade de um
sistema computacional. A terminologia (em português) proposta
por tradução apresentada por Leite c Losqucs, define que uma fa
lha de software é um engano do programador que se perpetua no código por ele escrito. Quando ativada, leva o sistema a um estado errôneo. Este estado errôneo pode levar o sistema a um desvio
dc sua especificação, o que se configura um defeito. Nos casos
em que o serviço de um sistema c utilizado por outro sistema, pode-se ter situações em que uma falha que cause um defeito no primeiro sistema conduza o segundo sistema a um estado errôneo
e, possivelmente, a um defeito (propagação dc erros), criando uma
cadeia dc causalidade entre erros e defeitos. Um mecanismo de
tolerância a falhas pode impedir a propagação do erro, colocando
fim nessa cadeia. A Figura 1.4 ilustra a definição de falhas, erros e defeitos proposta por Alvizicnis et al. Figura 1.4 Ameaças à dependabilidade.
Falha (Fault)
Ativa
Erro (Error)
Fonte: adaptada de Alvizienis et al. (2014, p. 11).
_ Propa9a
Defeito (Failure)
Causa
Falha (Fault)
13
I4
Arquitetura para computação móvel
Funcionalidade Em linhas gerais, você pode dizer que “funcionalidade é a
capacidade do sistema de realizar a sua função” (CLEMENTS; BASS; KAZMAN, 2013). Justamente por dizer qual será a função
do sistema, a funcionalidade vai ajudar no momento de defini-lo. Para que tudo esteja correto, você deve considerar o tipo de
programa que está fazendo para eleger quais serão os requisitos
funcionais e os não funcionais. Isto é, os atributos que farão parte
diretamente das atividades do programa estarão em evidência.
PARA SABER!
A funcionalidade do sistema e as restrições técnicas sobre essas funcionalidades definem a arquitetura para o software.
Disponibilidade Essa é a função do software que sempre está pronta para realizar
tarefas quando necessário. De fato, você pode notar que o signifi
cado da palavra disponibilidade está bastante próximo do conceito
dc confiabilidade. Mas a diferença é que a disponibilidade também
compreende o ato de recuperar dados. Ou seja, quando um sistema falha - ou quebra - é possível recuperá-lo para que continue sendo
executado. Uma maneira mais completa de definir disponibilidade seria a seguinte: disponibilidade se refere à capacidade de o sistema
reparar erros desde que o período de interrupções não exceda um valor específico em um período de tempo determinado.
Esses valores são determinados por quem cria o sistema. Logo, disponibilidade sempre estará relacionada à redução do tempo de interrupção do serviço por meio da diminuição de falhas, que são
desvios do sistema visíveis externamente. Para isso, c importante que sua arquitetura seja tolerante a fa
lhas. Ou seja, que saiba se adaptar a vários tipos de falhas (veja
o Quadro 1.1). Isso significa que quando o seu sistema identifica
uma falha, ele pode reiterá-la, removê-la ou prevê-la.
Introdução à arquitetura de software
Quadro 1.1 Tipos de falhas.
Tipo de falha Sem efeito
Definição Falha que não implica em impactos na segurança ou na operação do sistema
Pequena
A falha é notificada, mas possui impacto reduzido, se comparada às faltas maiores.
A falha é notificada e é relevante, mas resulta apenas em um
Grande
desconforto de quem usa o sistema, e não em prejuízos.
Perigosa
Resulta em um grande impacto negativo na segurança ou na operação do sistema. É notificada e perceptível visualmente.
Pode resultar em sérios prejuízos aos usuários.
Catastrófica
Esse tipo de falha quebra o sistema, representando a perda
de sua função principal
Lembre-se de que defeitos geralmente são visíveis aos usuá rios, mas eles não sabem qual é o tempo necessário para o sistema resolvê-la. Por isso, ter conhecimento do tempo necessário para a solução de um erro é fundamental - quanto menor, melhor. Sc uma falha ocorre cm uma linha dc código, mas o programa consegue recuperá-la sem existir desvios no comportamento ori
ginal do programa, então essa falha é imperceptível ao usuário. A disponibilidade dc um sistema pode ser calculada por meio
da probabilidade de fornecimento de serviços dentro de limites de tempo requeridos. Esse estado, no qual o sistema fica “parado”, é chamado dc disponibilidade dc estado estacionário, sendo calcu
lado pela fórmula: estado estacionário =----- -----------(tmef +tmr)
Onde, ttnef: tempo médio entre falhas
ímr: tempo medio dc reparo. Com essa fórmula, você pode calcular a probabilidade de acer
tos e erros do sistema. A recuperação de erros varia, podendo ser automática ou demandar a intervenção do usuário. A
Tabela
disponibilidade:
l.l
mostra
exemplos
das
porcentagens
de
15
1 6
Arquitetura para computação móvel
Tabela 1.1 Porcentagens de disponibilidade.
Disponibilidade
Tempo de Parada (Downtime/90 dias)
Tempo de Parada (Downtime/Ano)
99.0%
21 horas, 36 minutos
3 dias, 15,6 horas
99.9%
2 horas, 10 minutos
8 horas, 46 segundos
99.99%
12 minutos, 58 segundos
52 minutos, 34 segundos
99.999%
1 minuto, 18 segundos
5 minutos, 15 segundos
99.9999%
8 segundos
32 segundos
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 81).
Cenário Podemos, agora, considerar o cenário geral de disponibilida
des. Veja o Quadro 1.2 a seguir: Quadro 1.2 Cenário de disponibilidades.
Valores Possíveis
Partes do Cenário Fonte de estímulo
Interna/Externa: pessoas, hardware, software, infraestrutura física, ambiente físico.
Estímulo
Erros: omissão, quebra, tempo incorreto, resposta incorreta.
Artefato
Processadores, canais de comunicação, armazenamento persistente, processos.
Ambiente
Operação normal, inicialização, desligamento, modo de reparação,
modo limitado, operação sobrecarregada. Resposta
Prevenir o erro para que não se torne uma falha. Detectar o erro:
Registrar o erro. Notificar as entidades apropriadas - pessoas ou sistemas.
Recuperar o erro: Desabilitar a fonte de eventos que causam o erro. Tornar o sistema temporariamente indisponível enquanto o reparo é efetuado.
Corrigir ou mascarar o erro. Operar em modo limitado enquanto o erro é corrigido ou mascarado.
Mensuração da
Tempo de intervalo para que o sistema esteja disponível.
resposta
Porcentagem de disponibilidade (99.999%). Tempo para detectar o erro. Tempo para reparar o erro. Tempo de intervalo em que o sistema ficou em modo limitado.
Fonte: adaptado de Clements, Bass e Kazman (2013, p. 81).
Introdução à arquitetura de software
A respeito do Quadro 1.2, podemos dizer que:
Fonte de estímulo - causas de falhas externas ou internas
decidem qual será a resposta do sistema.
Estímulo - uma falha pode acontecer nas seguintes ocasiões: Omissão - um componente falha ao receber um valor.
Quebra (crash) - um componente apresenta repetida
mente várias falhas de omissão. Tempo - um componente responde cedo ou tarde demais. Resposta - o componente falha ao responder um valor incorreto.
Artefato - especificações dos recursos para que exista uma boa disponibilidade (processador, canal de comunicação etc.).
Ambiente - estágio em que o sistema pode afetar a resposta desejada.
Respostas - há uma série de respostas possíveis do siste
ma sobre uma falha. Primeiro, ele deve localizá-la e isolá-la. Depois, deve recuperá-la, isto é, registar o tipo dc falta;
notificá-la adequadamente (a um autor ou a outros sistemas);
recuperá-la por meio de ações como: desabilitar a fonte dos eventos que resultaram em erros; ou tornar o sistema tempo
rariamente indisponível enquanto a falha é recuperada. Essas ações dependerão do tipo de falha. Mensuração da resposta - especifica a disponibilidade cm
porcentagem - o tempo para localizar uma falha, para recuperá-la etc.
Táticas Uma falha ocorre quando o sistema não atende uma especificação. Uma ou mais falhas resultam em um erro, que por sua vez gera um defeito ao usuário. Táticas dc disponibilidade, então, fazem com que
o sistema supere os erros apresentados, conforme visto na Figura 1.5.
A Figura 1.6, na página seguinte, mostra algumas táticas possíveis
para a recuperação de um erro: Figura 1.5 Recuperação de erros.
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 81).
17
18
Arquitetura para computação móvel
Figura 1.6 Táticas de disponibilidade.
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 81).
Introdução à arquitetura de software
Detectando falhas Antes de tudo, você precisa preparar o sistema para que ele
reconheça e detecte falhas. As opções são as seguintes: Ping/echo - medição de estímulo-resposta entre elementos.
O único parâmetro para que o sistema considere a existência de uma falha é quando o tempo limite expira.
Monitor - monitora o funcionamento de várias partes do sistema, assim como processos, memória etc. Pode detectar
falhas ou congestionamentos na rede. Heartbeat - mecanismo dc detecção dc falhas que empre ga as mensagens entre o monitor e o objeto que está sendo
monitorado.
Time stamp - tática usada para detectar sequências incorretas de eventos. Ocorre quando há o estabelecimento do tempo logo após que determinado evento ocorre.
Verificação de sanidade - verifica e valida operações espe cíficas ou saídas de um componente.
Condições de monitoramento - checa as condições dc um processo, além de verificar suposições feitas na etapa de
design do sistema. Também previne falhas de comportamento.
Voting - trabalha com o conceito de redundância modular tripla (Triple Modular Redundancy - TMR). Esse processo
compreende o uso dc três componentes para realizar a mes
ma tarefa, recebendo informações iguais e checando as suas saídas para verificar inconsistências. Quando uma inconsis tência é retornada, a falha é detectada.
Replicação - forma simplificada do Vofíng, que usa cópias
idênticas de componentes.
Redundância funciona) - similar ao Voting. mas, neste caso, os componentes devem retornar resultados iguais das mes
mas entradas, ainda que sejam designados e implementados de modos diferentes. Redundância analítica - similar à redundância funcional, permite que as saídas também sejam diversificadas.
Detecção de exceção - momento no qual o sistema identifica algo que altere o fluxo normal de uma execução. Autoteste - componentes podem rodar um procedimento que teste a eles mesmos, verificando se os próprios compor
tamentos estão corretos.
19
20
Arquitetura para computação móvel
Recuperando falhas Para recuperar falhas, esta etapa é subdividida em preparação!
reparação e reintrodução. A preparação/reparação consiste em: Redundância ativa - configuração ativada quando elemen
tos recebem entradas paralelas idênticas, causando uma re
dundância. O sistema pode lidar com a falha em questão de
milissegundos. Redundância passiva - atualiza periodicamente o status da
reposição de uma redundância de um grupo de elementos Spare - redundâncias ficam fora de serviço até que uma falha
significativa ocorra. Manipular exceção - quando uma falha ocorre, o sistema deve
manuseá-la de alguma forma. Ou seja, aqui, o sistema irá re tornar uma mensagem com o tipo de exceção encontrada, suas causas c demais informações. Rollback - essa tática permite ao sistema retornar a uma eta
pa antes do aparecimento da exceção.
Upgrade de software - melhora os códigos executáveis por meio de táticas de upgrades, sem afetar o serviço cm si. Nova tentativa - considera que falhas podem ser corrigidas por meio de outras tentativas de realizar a mesma operação.
Ignorar comportamento de falha - ignora mensagens de erros enviadas a uma fonte particular.
Degradação - protege as funções mais importantes de um
sistema, sem focar em funções secundárias. Reconfiguração - recupera falhas de um componente, alte rando suas responsabilidades. Já a reintrodução contempla os seguintes pontos:
Modo sombra (shadow) - trata uma falha com antecipação
em um “modo shadow”. O tempo de tratamento de falhas pode ser predeterminado. É chamado de modo “shadow”, pois é feita em segundo plano, enquanto o sistema é executado. O
comportamento dessa tática pode ser monitorado. Ressincronização - etapa seguinte das táticas de redundân cia ativa e passiva, podendo ser feita de forma orgânica. A
redundância passiva visa o mascaramento de falhas. Ou seja, ela não será visível e o sistema não vai indicá-la. Já uma
Introdução à arquitetura de software
redundância ativa irá detectar, localizar c recuperar a falha em questão. Reinicialização escalonável - escala de reinicialização, ou
seja, o que o sistema fará quando reiniciado, e quantas vezes o fará. Por exemplo, ao ser reiniciado pela primeira vez, o programa tomará determinada atitude para resolver o erro.
Se não corrigido e reiniciado uma segunda vez, ele tomará a
atitude y, e assim por diante.
Encaminhamento contínuo - conceito que suprime altera ções nos elementos. A função é diminuir o tempo em que o
seu sistema estará indisponível. Por exemplo, quando o seu navegador trava e você não consegue nem mover o mouse,
o encaminhamento contínuo trabalharia para diminuir esse tempo cm que seu navegador fica parado.
Prevenindo falhas Depois de localizar um erro e corrigi-lo, tudo o que o sistema pode fazer é evitar que falhas ocorram novamente. A respeito des se tema, podemos fazer as seguintes considerações:
Remoção do serviço - coloca um elemento fora dc serviço temporariamente, com o único propósito de diminuir falhas.
Transações - garante a troca de mensagens feitas em proto colo 2PC (Two-phase commit protocol). Modelo previsível - vai fornecer ao monitor as condições normais de funcionamento de um elemento específico, bem
como quais ações tomar quando determinadas condições fo rem localizadas.
Prevenção de exceção - disponibiliza exceções que podem
ocorrer ao sistema. Aumento do cenário dc competência - cenário em que o programa tem ação competente. Por exemplo, uma divisão
por zero não é competência de quase nenhum sistema. Au
mentar as competências de um sistema aumenta as possibili dades de tratamento de uma exceção.
Checklist A seguir, veja o Quadro 1.3 com um checklist de análise e de sign para compreender melhor o processo de disponibilidade.
21
22
Arquitetura para computação móvel
Quadro 1.3 Checklist do processo de disponibilidade.
Categoria
Checklist
Atribuição de
Registrar o erro.
responsabilidades
Notificar entidades apropriadas. Desabilitar fontes de eventos que causam erros.
Tornar o sistema temporariamente indisponível. Operar em modo limitado.
Modelo de coordenação
Garantir que o sistema seja capaz de detectar omissões, quebras, tempos e respostas incorretas.
Garantir que o sistema possa registrar falhas. Garantir que a troca de artefatos usados (como processadores, canais de comunicação, entre outros) seja suportada. Por exemplo, o sistema continuaria operando se um servidor fosse substituído?
Determinar se é possível que o sistema opere em modo limitado.
Modelo de dados
Determinar quais partes do sistema estão disponíveis, definindo quais dessas partes estão causando erros ou falhas.
Garantir que cada operação (ou atributo) que cause erros ou falhas possa
ser desabilitada temporariamente, ou mascarada, durante o evento de uma falha
Mapeamento entre
elementos arquiteturais
Após determinar qual artefato (processador, canal de comunicação etc.) é
a fonte do erro, garantir que a arquitetura seja flexível o suficiente para permitir a sua recuperação.
Gestão de recursos
Determinar qual recurso crítico é necessário para continuar operando na
presença de um erro.
Tempo obrigatório
Determinar como e quando os elementos arquiteturais serão obrigatórios, já
que mudanças serão feitas durante o tempo de parada obrigatório.
Escolha de tecnologia
Determinar qual é a melhor tecnologia para identificar e tratar erros.
Fonte: adaptado de Clements, Bass e Kazman (2013, p. 96-98).
Interoperabilidade No contexto de arquitetura de software, interoperabilidade é a capacidade de o sistema trocar informações e dados, em vários graus e entre interfaces. Você deve chamar essa troca de dados de interoperabilidade sintática. A segunda função da interoperabili
dade é interpretar dados corretamente quando recebidos. A isso, damos o nome dc interoperabilidade semântica. Por vezes, você terá acesso à estrutura dc um sistema com o qual o seu programa irá realizar um processo dc interoperabilidade.
Introdução à arquitetura de software
Nesse caso, você já pode criar um design específico na arquitetura
do seu sistema voltado para essa interoperabilidade. Caso con trário, deverá fazer um modelo mais genérico que identifique os
requisitos do outro sistema que fará essa relação.
Existem vários níveis em interoperabilidade. O nível mais baixo significa que os sistemas não trocam nenhum tipo de dado, ou que trocam dados sem nenhum sucesso. O nível mais alto de interopera
bilidade significa que os sistemas trabalham juntos, mas sem nenhum tipo de erro ou engano de interpretação entre os dados trocados.
Você pode usar a interoperabilidade em diversos casos, como
nos dois exemplos a seguir:
1.
Quando não sc sabe nada a respeito dos sistemas com os
quais o programa terá que realizar o processo dc interoperabi lidade, pode-se criar na arquitetura uma coleção dc sistemas desconhecidos, que se adaptarão entre si. 2.
Quando um conjunto de operações depende de vários sis
temas. Por exemplo, um deles é responsável por analisar o ambiente; o segundo por processar os dados recebidos; o ter
ceiro por interpretar esses dados; e o quarto por distribuir es
ses dados. Esses quatro sistemas deveríam realizar o processo de interoperabilidade entre eles.
Dessa forma, podemos destacar dois pontos importantes da in teroperabilidade, que definem seu cenário:
1.
Descoberta - usuário deve descobrir a localização, a identi
dade ou a interface do serviço. 2.
Manuseando a reposta - etapa dividida em três partes a.
O sistema retorna uma solicitação com a resposta.
b.
() sistema envia a resposta para outro sistema.
c.
O sistema envia a reposta para qualquer parte que tenha
relação com ela.
Cenário A seguir, temos um exemplo de cenário de interoperabilida
de. Nele, podemos ver que um sistema de localização de veículos envia um estímulo para um sistema de monitoramento. Esse sis tema combina a localização enviada com outros dados (o Google
Maps, por exemplo). A resposta dessa combinação é retornada com 99,9% de precisão.
23
24
Arquitetura para computação móvel
Figura 1.7 Cenário de interoperabilidade.
Envio de localização atual
O monitoramento de tráfego combina a localização atual com outra informação (como sobreposições de posições em sites como o Google Maps)
Ambiente: o sistema sabe o tempo de resposta
Informação incluída correta mente em 99,9% de tempo
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 107).
Ainda sobre o cenário de interoperabilidade, podemos fazer as seguintes considerações: Fonte de estímulo - sistema que inicia um requerimento. Estímulo - requisito para trocar informações com outros sistemas. Artefatos - sistemas que realizam a interoperabilidade. Ambiente - sistemas que realizam a interoperabilidade e en contram os dados em tempo de execução. Resposta - requisição para interoperar informações trocadas; podem ser sintáticas e semânticas, ou mesmo rejeitadas. Mensuração da resposta - porcentagem dc informação tro cada c processada corretamente ou a porcentagem dc infor mação rejeitada. Quadro 1.4 Partes do cenário de interoperabilidade.
Valores Possíveis
Partes do Cenário
Fonte de estímulo
Sistema inicia uma requisição para realizar o processo de interoperabilidade
Estímulo
Troca de informações entre sistemas.
Artefato
Sistema deseja realizara interoperabilidade.
Ambiente
Sistemas que desejam realizar a interoperabilidade são descobertos em tempo
Resposta
Uma ou mais das seguintes:
com outro sistema.
de execução.
A requisição é rejeitada e as entidades necessárias são notificadas. A requisição é aceita e a troca de informações é realizada com sucesso. A requisição é registrada por um ou mais sistemas envolvidos.
Mensuração da resposta
Uma ou mais das seguintes:
Porcentagem de informações trocadas processadas corretamente. Porcentagem de informações rejeitadas corretamente.
Fonte: adaptado de Clements, Bass e Kazman (2013, p. 108).
Introdução à arquitetura de software
Táticas A seguir, veja um diagrama na Figura 1.8, com os objetivos do
cenário de interoperabilidade: Figura 1.8 Diagrama do cenário de interoperabilidade..
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 110).
Repare que, no exemplo, não está descrita a tática em si. Isso
acontece porque existem duas formas de criar táticas para intero
perabilidade, são elas: localização e interfaces.
Localização Existe apenas uma tática nesta subdivisão, conhecida como Discover service, que tem a função de procurar um diretório de serviço conhecido. Eles são localizados por meio de atributos como tipo de serviço, nome, localização, entre outros. É utilizada quando sistemas que realizam interoperabilidade devem ser loca
lizados em tempo de execução.
Gerenciador de interface Interfaces são padrões para a comunicação entre dois ou mais elementos. Elas são capazes de perceber se a troca de informações
dar-se-á de forma clara ou não. Sendo assim, um dado precisa
dialogar apenas com a interface de um outro elemento, e não com
seus dados em si. Você pode gerenciar suas interfaces por meio dc duas táticas: Orquestração - coordena e gerencia uma sequência dc cha
mados a serviços particulares. A orquestração é geralmente utilizada quando dois sistemas complexos tiverem que reali
zar o processo de interoperabilidade. Tailor interface - adiciona capacidades a uma interface.
Também tem como função retirar algumas capacidades, [...]
ocultando-as dos usuários.
25
26
Arquitetura para computação móvel
Checklist A seguir, o Quadro 1.5 apresenta um checklist de design e aná lise do processo dc interoperabilidade. Quadro 1.5 Checklist do processo de interoperabilidade.
Categoria Atribuição de
responsabilidades
Checklist Determinar qual dos sistemas precisa realizar interoperabilidade e com qual sistema fará isso.
Garantir que as responsabilidades sejam alocadas de modo a serem
conhecidas pelos sistemas externos. Garantir que as responsabilidades sejam alocadas de modo que possam se adaptar às regras:
aceitar requisitos;
trocar informações; rejeitar requisitos;
notificar pessoas e sistemas;
registrar requisitos.
Modelo de coordenação
Garantir que os mecanismos de coordenação possam encontrar as qualidades de atributos requeridas.
Modelo de dados
Determinar a sintaxe e a semântica dos dados que realizarão o processo de
interoperabilidade - de modo abstrato.
Mapeamento entre elementos arquiteturais
Garantir requisições de segurança, disponibilidade e performance durante a interoperabilidade.
Gestão de recursos
Garantir que o processo de interoperabilidade nunca escape de seus recursos.
Tempo obrigatório
Garantir um limite de acesso entre sistemas (quando realizarem a
interoperabilidade). Garantir mecanismos que estejam aptos para negar um tempo maior que o obrigatório.
Escolha de tecnologia
Questionar se a tecnologia que você usa é visível na interface do sistema, e, se sim, saber quais são os seus efeitos. Considerar tecnologias aptas a receber o processo de interoperabilidade,
como em serviços de web. Por exemplo: a troca de informações no Google Maps, que combina o que é digitado (uma entrada de usuário) a uma imagem de localização. Fonte: adaptado de Clements, Bass e Kazman (2013, p. 114).
Introdução à arquitetura de software
Escalabilidade A escalabilidade existe devido a um detalhe: mudança. É um detalhe, mas se tratado sem o devido cuidado, pode resultar cm si tuações catastróficas. Mudanças existem para todos os propósitos. Em computação, você realizará mudanças em seus sistemas para que eles se adequem às novas tecnologias, aos novos protocolos, às novas plataformas etc. Você também pode se ver em uma situação de mudança em software quando precisar aprimorar a relação do programa com o usuário, quando consertar algum problema, ou aumentar a segu rança do sistema, por exemplo. Antes de partir para mudanças em seu sistema e arquitetura, você deve responder a quatro perguntas:
1.
() que pode ser mudado?
Mudanças podem ocorrer em todas as áreas do sistema: nas funções do sistema, na plataforma (hardware, SO, entre ou tros), no ambiente em que o sistema opera, nos atributos do
sistema e na sua capacidade. Então é necessário identificar o que será mudado para que nada seja alterado do necessário,
evitando erros.
2.
Quais são as probabilidades da mudança?
Você deve ponderar quais mudanças são concebíveis, tecni
camente falando, para o sistema que for modificar. Ou seja,
3.
deve saber quais mudanças são suportadas e quais não são. Quando a mudança será feita e por quem será feita?
No passado, todas as mudanças eram feitas por um arquiteto
ou um desenvolvedor direto no código fonte. Hoje, esse con
ceito ficou bem mais amplo. Por exemplo: quando você troca
o protetor de tela do seu computador, já está fazendo uma mu dança no sistema. É claro que esses dois tipos de mudanças
são diferentes. Por isso ela é dividida em cinco tipos. São eles:
i.
Mudanças por implementação - feitas por desenvolve dores, diretamente no código fonte.
ii.
Mudanças durante a compilação - realizadas por switches em tempo dc compilação.
iii. Mudanças durante a construção - feitas por meio de
escolhas de bibliotecas específicas. iv.
Mudanças durante a configuração de setup - feitas por várias técnicas, inclusive parâmetros de configuração.
27
28
Arquitetura para computação móvel
v.
Mudanças em tempo de execução - feitas por meio dc
plugins, configurações (settings), entre outros.
vi.
Mudanças de Requisitos do Sistema - realizadas por
Estudos comprovam que
demandas do usuário para alterar uma funcionalidade,
a maior parte dos custos
ou incluir novas funcionalidades, ou então corrigir al
em engenharia de software
gum erro dc especificação dc requisito.
é com manutenção e
modificação de sistemas,
4.
que já estão implementados
Qual é o custo das mudanças? Você deve considerar dois pontos:
e em uso (CLEMENTS;
BASS; KAZMAN, 2013).
i.
O custo da introdução de um mecanismo confiável.
ii.
O custo da modificação cm si, por meio do mecanismo utilizado.
Por exemplo: quando a mudança necessária é apenas refe rente a alguma alteração no código-fonte, então o custo seria
zero. Mas se você tiver que construir uma nova interface com o usuário (UI), então o custo seria o da construção da UI, da implementação da mesma no código-fonte e do teste da UI.
Cenário A partir das considerações feitas, podemos iniciar o estudo do cenário da escalabilidade. A seguir, veja o Quadro 1.6 que repre senta as diversas partes desse cenário. Em seguida, apresentamos uma serie dc considerações sobre ele. Quadro 1.6 Partes do cenário de escalabilidade.
Partes do cenário
Possíveis valores
Fonte de estímulo
Usuário final, desenvolvedor, administrador de sistema.
Estímulo
Adicionar, deletar ou modificar funcionalidades, bem como alterar qualidades de atributos, capacidade ou tecnologia.
Artefato
Códigos, dados, interfaces, componentes, recursos, configurações.
Ambiente
Tempo de execução, de compilação, de construção, de iniciação, de desenvolvimento (design).
Resposta
Uma ou mais das seguintes: ■ realizar a modificação; testar a modificação; ■ implementar a modificação.
Mensuração da resposta
Variável conforme: número, tamanho ou complexidade dos artefatos alterados; esforço do arquiteto; calendário; entre outros.
Fonte: adaptado de Clements, Bass e Kazman (2013, p. 120).
Introdução à arquitetura de software
A respeito do Quadro 1.6 c o cenário dc cscalabilidadc, pode
mos dizer o seguinte: Fonte de estímulo - define quem faz as mudanças, podendo ser o desenvolvedor, o administrador do sistema ou um usuá
rio final. Estímulo - especifica a mudança a ser feita. Essa alteração pode ser de implementação, alteração ou exclusão de uma
função ao sistema. Mudanças também podem ser feitas nas
qualidades de um atribulo, aumentando sua disponibilidade, por exemplo. A capacidade dc um sistema também pode ser
modificada. Em outras palavras, essas alterações geralmente
são feitas para acompanhar novas tecnologias. Artefato - especifica o que deve ser mudado. Por exemplo: as mudanças especificadas em estímulo serão aplicadas aos módulos? Aos componentes específicos? À plataforma
do sistema? Ao ambiente do sistema? A outro sistema que
está realizando o processo de interoperabilidade? E assim por diante.
Ambiente - define o tempo em que a mudança deve ser feita.
Os tempos podem ser: tempo de design, construção; tempo de compilação; tempo de construção; tempo dc instalação; tempo de execução.
Resposta - realiza a alteração, a testa e a emprega.
Mensuração da resposta - toda mudança custa tempo c di
nheiro, sendo medido nessa etapa. O tempo pode ser medido de forma natural ou tempo de equipe. Já o custo, geralmente, é diário. Outras medidas também são aplicáveis a essa etapa,
como a extensão das alterações (tudo aquilo que foi alterado: módulos, elementos e outros itens afetados pela mudança),
número de novos defeitos encontrados após a mudança, entre outros fatores.
A seguir, a Figura 1.9 mostra um diagrama que exemplifica o
processo de escalabilidade.
29
30
Arquitetura para computação móvel
Figura 1.9 Diagrama do processo de escalabilidade.
Ambiente:
Alterações
tempo de design
realizadas
e testadas
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 120).
Táticas
Níveis de coesão interferem
diretamente na qualidade
do sistema. Uma boa arquitetura prevê alta
coesão e baixo acoplamento entre os componentes de um sistema.
As táticas dc escalabilidade devem ser tão complexas quanto as alterações em um sistema podem ser. Mas antes dc falarmos de táti cas, devemos manter em mente o conceito de acoplamento e coesão. Quando uma alteração é feita em um módulo, as suas respon sabilidades são alteradas de alguma maneira. Isso porque eles pos suem funções e responsabilidades. Realizar uma alteração em um único módulo é simples e barato. No entanto, é bom lembrar que as funções ou as responsabili dades de um módulo podem estar sobrepostas, ou dependerem de funções e responsabilidades de outros módulos. Sc você, por aca so, fizer uma alteração em um deles que possua responsabilidades sobrepostas a outro módulo, então essa única mudança afetará a função dos dois - mesmo que a alteração seja destinada apenas a um deles. Isso é chamado dc acoplamento. A mensuração do acoplamento c feita por meio da probabilidade de uma mudança afetar outros módulos além do necessário. Quanto maior o índice de acoplamento, pior para a sua escalabilidade. Já a coesão mede a “força” das responsabilidades de um mó dulo, ou seja, mede o quanto uma mudança no cenário da escala bilidade afeta ou não as suas funções. Quanto maior for a coesão, menor será a probabilidade de uma mudança atingir mais que uma responsabilidade. Veja na Figura 1.10 um diagrama simples que representa o procedimento básico da escalabilidade.
Figura 1.10 Diagrama de escalabilidade. Táticas de
Mudanças feitas
controle de escalabilidade
dentro do tempo
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 121).
e orçamento
Introdução à arquitetura de software
Agora que você conhece os conceitos dc coesão c acoplamen to, podemos nos aprofundar um pouco mais nas táticas dc escala
bilidade. Sobre elas, podemos dizer o seguinte: Tamanho do módulo - pense que você precisa modificar
partes de um módulo. O custo dessa atividade pode ser re duzido ao dividi-lo. Por exemplo, se você dividir um módu
lo em partes que serão modificadas e partes que não serão modificadas, o custo será mais baixo. A modificação de um
módulo tem menor custo quando este pode ser dividido.
Acoplamento - imagine três módulos A, B e C. Os módu los A e B estão acoplados. Agora, suponha que você precisa realizar alterações cm A c C. O custo das alterações cm A
seria maior do que as mesmas alterações em C. Isso porque o módulo A está acoplado ao B. Reduzir o acoplamento en
tre dois módulos reduz o custo de alterações. Uma tática para reduzir esse acoplamento é inserir vários tipos de mó
dulos entre A e B.
Coesão - retomando o exemplo anterior, se o módulo A tiver uma baixa coesão, então ele pode ser improvisado ao retirar
responsabilidades que não serão modificadas. Tempo de modificação-arquilelurasjá podem ser equipadas
para receberem possíveis alterações futuras. Inicialmente, isso encarece o desenvolvimento. Mas, se algum dia o usuá
rio precisar realizar alguma mudança quando o programa já estiverem uso, ele não terá custo nenhum, ou algum valor re lativamente baixo. Já um sistema que não c preparado para rcccbcr mudanças pode sair mais barato. Porém, se algum tipode
alteração precisar ser feita, o custo para realizá-la será ele
vado. Uma arquitetura que já seja equipada para receber
modificação mesmo depois que já estiver em uso, vai custar,
geralmente, menos do que uma que não possui. Isso porque o custo para realizar mudanças do zero em um sistema já em uso é elevado - o que muda se o sistema já estiver preparado
para alterações posteriores, derrubando o custo para zero,
ou para um valor realmente baixo. A seguir, a Figura 1.11 mostra um diagrama exemplificando
as táticas de escalabilidade. Após o diagrama, vamos fazer nossas
últimas considerações sobre esse tema.
31
32
Arquitetura para computação móvel
Figura 1.11 Táticas de escalabilidade.
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 122).
Reduzir o tamanho do módulo Consiste em uma única tática chamada dividir módulo (split module). Se um módulo possuir uma alta gama de responsabilida de, o custo de modificá-lo, normalmente, será alto. O melhor que você pode fazer é subdividir esse módulo em diversos outros, com funções específicas. Assim, o custo para modificar uma função específica, em média, será bem mais barato.
Aumentar a coesão Também consiste em apenas uma tática chamada aumentar a coesão semântica (increase semantic coherence). O objetivo é ób vio: quanto maior for a coesão, melhor será a escalabilidade. Quando você possuir um módulo com muitas responsabilida des, o melhor a fazer é separar essas responsabilidades em outros módulos. Por exemplo: se um módulo possui as funções A e B, e as mudanças a serem feitas não compreendem essas duas funções, então A e B são separados em outros módulos. Assim, as altera ções afetam apenas aquilo que precisa, de fato, ser afetado.
Introdução à arquitetura de software
Reduzir o acoplamento
Para reduzir o acoplamento, você pode usar as seguintes táticas:
Encapsulação - essa tática introduz uma interface única a um módulo. Essa interface é associada às suas responsabi lidades, impedindo com que ele se acople. O ponto fraco
dessa tática é que a criação de uma interface limita a rela ção da função encapsulada, ou seja, os outros módulos não
irão interagir com o que está cncapsulado, apenas com a sua
interface. Uso de intermediários - usar um intermediário quebra a de
pendência. O tipo dc intermediário varia conforme o tipo dc dependência entre dois módulos. Por exemplo, no caso de uma
calculadora programada para medir a velocidade em que um objeto cai no chão, devem ser usados valores fixos (o valor da
aceleração da gravidade, por exemplo, g = 10 m/s2) e variáveis, como o peso do objeto que cai. Essa variável seria o interme
diário do módulo que representaria a gravidade.
Dependências restritas - considere o módulo A, que exibe uma imagem na tela, e o módulo B, que recebe uma informa ção digitada pelo usuário para que seja exibida na tela. Se o
módulo B estiver dependendo do módulo A, então essa tática pode restringir o módulo B. Isso acontece porque o módulo B
não seria mais visível. Ou seja, essa técnica restringe a intera ção dc dependência entre módulos.
Refatoração - tática usada cm uma situação bastante espe cífica. Às vezes, uma alteração afeta dois módulos pelo fato dc os dois módulos serem cópias, com funções idênticas. Quando isso acontece, essa tática pode ser útil. Refalorar os
módulos pode reduzir o acoplamento entre eles.
Serviços comuns abstratos - quando módulos tiverem ser viços parecidos, mas não exatamente iguais, é possível criar um serviço genérico para esses dois módulos. Assim, quando
uma mudança for aplicada a esse elemento mais geral, tudo o que os módulos contiverem dele será modificado, e apenas isso. Por exemplo: um módulo A reconhece entradas literais e um módulo B reconhece entradas numéricas. Entretanto, se
você quiser que todas as entradas, independente do formato,
sejam alinhadas à direita quando forem exibidas, então essa
mudança afetará esses dois módulos, A e B.
33
34
Arquitetura para computação móvel
Adiando a vinculação Geralmente, o seu trabalho como programador lerá um custo
mais elevado do que se o computador cuidar das alterações. Então,
é sempre esperado que um sistema possa lidar o máximo possível com as alterações necessárias.
Para isso, devemos vincular valores e o caminho para isso ocorrer é por meio de parâmetros (a exemplo das funções f(a, b)).
Quando nós vinculamos um valor dos parâmetros a outro ponto do
ciclo de vida do sistema que não aquele definido como parâmetro,
então estamos adiando a vinculação (defer binding tatic).
Checklist A seguir, o Quadro 1.7 apresenta um checklist para avaliação e
design do processo de escalabilidade. Quadro 1.7 Checklist do processo de escalabilidade.
Categoria Atribuição de
responsabilidades
Checklist
Determinar as responsabilidades que deverão ser adicionadas, deletadas ou modificadas, para que as mudanças sejam feitas corretamente.
Determinar quais responsabilidades são impactadas pelas alterações.
Modelo de coordenação
Determinar se as mudanças e as alterações no sistema podem ser feitas em
tempo de execução ou não. Garantir que as mudanças atinjam apenas o número necessário de módulos.
Modelo de dados
Definir quais mudanças e alterações serão feitas em um dado abstrato, garantindo que afete o menor número de módulos possível.
Mapeamento
entre elementos
Determinar se é desejável ou não que as mudanças atinjam a funcionalidade em tempo de execução, compilação e desenvolvimento.
arquiteturais Gestão de recursos
Determinar como adição, exclusão ou alteração de um módulo ou atributo de qualidade irá afetar os recursos requeridos.
Tempo obrigatório
Para cada mudança ou categoria de mudança: determinar o tempo limite para a alteração ser feita; determinar o custo de realização da alteração.
Escolha de tecnologia
Verificar se o sistema possibilita alterações, e se as torna mais fáceis ou não.
Fonte: adaptado de Clements, Bass e Kazman (2013, p. 125-127).
Introdução à arquitetura de software
Performance Este é o atributo que mais dialoga com o usuário final, ou com o senso comum. Isso porque é estritamente relacionado ao tem
po. Performance é o tempo que o software leva para realizar as
suas funções. Todas as funções em um sistema, visíveis ou não aos usuários finais, devem responder a estímulos em um determinado intervalo de tempo. Esse atributo é tão visado que pode ser determinante para um
software ser considerado bom ou ruim. Por exemplo, quando você digita um texto no computador ou no celular, é inaceitável que as letras apareçam na tela com um minuto ou dez segundos de atraso. Até mesmo um segundo de atraso entre o teclar e a aparição da
letra na tela pode ser algo que irrite o usuário. Tudo é uma questão de tempo.
Cenário O cenário de performance começa quando um evento é re
cebido pelo sistema. Eventos podem chegar de forma previsível
(padrão) ou inesperada. No primeiro caso, as entradas são carac terizadas em: Periódica - são eventos recebidos de maneira previsível den
tro de um intervalo regular de tempo. Geralmente, esse tempo é de 10 milissegundos. Esse tipo de evento ocorre com mais
frequência em sistemas de tempo real. Estocástica - são eventos recebidos dentro dc um intervalo
estatístico dc tempo. Por exemplo: sabe-se que um evento x será recebido entre os tempos 1 s e 10 s, mas não se sabe com
precisão em qual segundo (1 s, 2 s, 3 s, 4 s,... 10 s) o evento vai chegar.
Esporádica - são eventos recebidos em um padrão que não
se enquadra nas características estocásticas e periódicas. Ge
ralmente, são caracterizados por circunstâncias. Por exemplo, você sabe que 600 eventos podem acontecer em um minuto, e que existirá pelo menos 200 milissegundos de tempo entre
cada evento recebido. Nesse caso, você sabe quantos eventos
serão recebidos, mas não tem como saber quando cada evento
em particular vai acontecer.
35
36
Arquitetura para computação móvel
Já sobre a resposta do sistema aos estímulos recebidos, pode
mos dizer o seguinte: Latência - o tempo entre o recebimento do estímulo e a res
posta do sistema a ele. Quanto menor for a latência, mais rápida será a resposta.
Deadline do processo - uma resposta só é dada quando uma condição for atingida.
Transações do sistema - número de transações que um sis tema pode processar em uma determinada unidade de tempo.
Variação da resposta - variação permitida e considerada nor
mal na latência. Número de eventos não processados - aumenta quando o sistema estiver ocupado demais para responder.
Agora que já fizemos tais considerações, podemos nos aprofun
dar no cenário da performance. A seguir, o Quadro 1.8 resume esse cenário. Em seguida, veremos algumas considerações sobre ele. Quadro 1.8 Partes do cenário de performance.
Possíveis Valores
Partes do Cenário
Fonte de estímulo
Interna ou externa.
Estímulo
Recebimento de eventos periódicos, esporádicos ou estocásticos.
Artefato
0 próprio sistema ou um ou mais componentes do sistema.
Ambiente
Modo operacional, que pode ser normal, emergencial, sobrecarregado, ou peak load.
Resposta
Eventos processados, mudança do nível do serviço.
Mensuração da resposta
Latência, deadline etc.
Fonte: adaptado de Clements, Bass e Kazman (2013, p. 134).
Se nos aprofundarmos no Quadro 1.9, teremos: Fonte de estímulo - o estímulo chega ao sistema a partir do
meio externo.
Estímulo - chegada do evento. Se ele for previsível, pode ser classificado em uma das classificações que você leu
anteriormente. Artefato - um sistema, ou um ou mais de seus componentes.
Introdução à arquitetura de software
Ambiente - o sistema pode estar cm diversos modos operacionais.
Resposta - o sistema precisa processar os eventos que rece
beu, falo que altera temporariamente o seu cenário. Mensuração da resposta - a mensuração do cenário é dada por uma ou mais das seguintes análises: tempo de chegada do evento (latência);
variação desse tempo (jitter);
número de eventos que podem ser processados em um
intervalo de tempo (throughtput); caracterização dos eventos que não puderam ser pro cessados (miss rate).
Táticas O objetivo das táticas de performance é gerar uma resposta cm intervalo dc tempo limitado. Você pode verificar esse objetivo nos diagramas da Figura 1.12. Figura 1.12 Objetivo das táticas de performance.
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 135).
Esse tempo dc resposta - quando o estímulo é enviado até a
resposta recebida - pode ser dividido, ainda, no tempo dc proces samento. O tempo dc processamento é o tempo que o sistema de
mora para processar o estímulo, ou seja, é o tempo entre a entrada
e a saída do estímulo. Já o tempo de bloqueio é o período de tempo em que o sistema
está ocupado demais para responder, podendo ser subdivido em:
Contenção de recursos - você irá reparar que, às vezes, um sistema suporta apenas um cliente por vez. Sendo
37
38
Arquitetura para computação móvel
assim, o próximo deveria esperar para usar o programa. Isso significa que o recurso principal fica contido por um
tempo, para quem está esperando. Quanto maior a conten ção, maior a lalência Disponibilidade de recursos - mesmo sem a presença de contenção de recursos, um sistema não pode prosseguir caso
tenha recursos indisponíveis. Essa indisponibilidade pode ser
causada, por exemplo, por um recurso que está off-line.
Dependência de outra computação - isso acontece quan do um resultado que já foi parcialmente computado, depende de informações de outra computação que está em andamento para retornar. Assim, o dado só será retornado quando tudo o
que precisar ser computado tiver passado por essa etapa. Agora, vamos estudar as táticas dc performance, propriamente ditas. Para começar, veja o diagrama da Figura 1.13. Figura 1.13 Táticas de performance.
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 141).
Introdução à arquitetura de software
Você reparou que as táticas se dividem cm controle de deman da de recursos e gestão de recursos? Vejamos essas divisões com mais detalhes a seguir.
Controle de demanda de recursos Uma forma de você aumentar a performance é gerir cuidadosamente a demanda por recursos. Para isso, existem as técnicas listadas a seguir: Gerenciamento de taxa de amostragem - deve-se reduzir
a frequência de amostragem do ambiente em que o dado é capturado. Assim, a demanda cai. Resposta-limite de evento - quando um evento chega rápido demais para que possa ser processado, ele deve ficar enfileirado com outros eventos na mesma situação, até que seja possível processá-lo. Eventos prioritários - se nem todos os eventos que chegam ao seu sistema possuem a mesma importância, você pode impor uma ordem de prioridade em que o sistema processa primeiro os de maior importância. Se não houver recursos o suficiente, uma “baixa-prioridade” talvez possa ser ignorada. Redução de sobrecarga - o uso extremo dc intermediários (que você aprendeu no item anterior, escalabilidade) pode criar um overhead nos recursos, ou seja, sobrecarregá-los. Limite de tempo de execução - colocar um limite de tem po que a execução do sistema pode demorar para responder um evento. Aumentar a eficiência dos recursos - melhorar os algoritmos utilizados nas áreas críticas do sistema pode diminuir a latência. Gestão de recursos
Você pode tratar os recursos de uma demanda, e as táticas para esses tratamentos são as seguintes:
Aumentar recursos - processadores mais rápidos, assim como memórias e processadores adicionais, podem reduzir significativamente a latência. As vezes, pode ser a forma mais barata de resolver esse problema de forma imediata. Introduzir a concorrência - se você puder processar requi sitos paralelamente, então o tempo dc bloqueio será menor. Ou seja, você vai usar esta técnica quando tratar dc diferentes eventos e diferentes tópicos ao mesmo tempo.
39
40
Arquitetura para computação móvel
Manter múltiplas cópias de cálculos - guardar os cálculos dc um evento economiza espaço, podendo ser reutilizados quando necessário. Manter múltiplas cópias de dados - consiste em manter có
pias de dados com diferentes acessos. Isso reduz a contenção por acessos múltiplos. Tamanho de filas vinculadas - refere-se ao numero máximo que uma fila de eventos ainda não processados pode conter. Ao usar essa tática, é necessário saber o momento em que essa
fila irá causar um overhead. Programação de recursos - sempre que existir uma conten ção em um recurso, ele deve ser programado. Você precisa en contrar a melhor maneira dc realizar essa tarefa, dependendo do tipo dc recurso com o qual você está lidando.
Checklist A seguir, o Quadro 1.9 apresenta um checklist dc análise e de sign de um processo de performance. Quadro 1.9 Checklist de um processo de performance. Categoria Atribuição de
responsabilidades
Modelo de coordenação
Checklist Determinar as responsabilidades de sistema que terão carregamento pesado e
definir o tempo limite de resposta aos requerimentos. Determinar os elementos de um sistema que irão se coordenar e escolher a
forma com que ele fará isso.
Modelo de dados
Determinar quais dados lerão carregamento mais lento, determinando em quais
situações: A multiplicação de cópias de chaves de arquivos são benéficas para o sistema. 0 corte de dados é benéfico para o sistema.
A redução de processos é necessária.
Adição de recursos torna-se útil.
Mapeamento entre
Determinar o momento de realocar componentes para que o sistema torne-se
elementos arquiteturais Gestão de recursos
Determinar quais recursos em seu sistema são essenciais para a performance.
Tempo obrigatório
Para cada elemento, determinar:
mais eficiente.
Tempo necessário para realizar a tarefa. Tempo adicional introduzido em caso de sobrecarga.
Escolha de tecnologia
Questionar se a tecnologia escolhida oferece tempo de adaptação muito curto; se elege prioridades na performance do sistema e se a tecnologia escolhida acaba causando sobrecarga em tarefas normalmente leves.
Fonte: adaptado de Clements, Basse Kazman (2013, p. 142-144).
Introdução à arquitetura de software
Segurança Como você pode imaginar, a segurança protege o seu sistema de usuários indesejados, assim como um policial evita que um ladrão assalte um banco. Uma tentativa de acesso não autoriza
da aos dados de um sistema é considerada um ataque, e pode ter inúmeras formas. Em uma abordagem simples, podemos separar
segurança em três itens: 1.
Confidencialidade - proteção dc um dado ou um serviço contra acessos não autorizados.
2.
Integridade - capacidade dc um dado ou serviço não estar
sujeitado a modificações não autorizadas. Por exemplo, uma
planilha de dados protegida não será modificada por um usuá rio não autorizado.
3.
Disponibilidade - capacidade de um sistema permanecer in
disponível para um usuário não autorizado. Aprofundando um pouco mais, podemos citar ainda mais três
aspectos: 1.
Autenticação - verificação e identidade. Por exemplo, quan
do você recebe um e-mail do seu banco, geralmente o serviço da caixa de entrada vai verificar se a mensagem realmente foi
enviada pelo banco ou é uma fraude. 2.
Não-repúdio (nonrepudiation) - uma vez que uma mensa
gem foi enviada e recebida, garante que quem enviou não pode negar que enviou a mensagem. Muito menos que o re ceptor não recebeu a mensagem.
3.
Autorização - garante privilégios a quem possui uma autori
zação. Por exemplo, o sistema on-line do seu banco permite que você, c apenas você, acesse sua conta por meio da internet.
Cenário Uma técnica bastante utilizada no domínio de segurança é a
criação de um modelo de ameaça. Ele é muito parecido com o mo delo de falhas, que você viu no início deste tema. Os estímulos nes
se cenário serão os níveis de possíveis ataques. As respostas a esses
estímulos sempre serão defender a CIA. Por CIA, compreendemos confidencialidade, integridade e disponibilidade (confidentiality,
41
42
Arquitetura para computação móvel
integrity c availability, na sigla cm inglês). A seguir, o Quadro 1.10 apresenta um resumo do cenário dc segurança de um sistema. Quadro 1.1 o Partes do cenário de segurança.
Partes do Cenário
Fonte de estímulo
Possíveis Valores Usuário ou sistemas autorizados. Um usuário no papel de ameaça pode agir
dentro ou fora da organização.
Estímulo
Tentativa de acesso não autorizado, mudança ou exclusão de dados. Mudança do
comportamento do sistema ou redução da disponibilidade.
Artefato
Serviços do sistema, dados do sistema, componentes de recursos etc.
Ambiente
0 sistema, seja on-line ou off-line, conectado ou desconectado à rede.
Resposta
Dados ou serviços protegidos de acessos não autorizados. Dados ou serviços não podem ser manipulados sem autorização. Dados, recursos e serviços do sistema são disponíveis apenas para usuários legítimos, autorizados. 0 sistema rastreia atividades por meio de:
gravação de acesso ou modificação; gravação de tentativas de acesso a dados e outros; notificação a usuários ou outros sistemas quando reconhecer uma ameaça.
Mensuração
Comprometimento de um sistema quando um arquivo dele está em risco.
da resposta
Quanto tempo passa entre o ataque até a resolução do mesmo.
Quantos ataques ele resiste.
Quão longa é a recuperação de um ataque.
Vulnerabilidade de um dado a um único ataque. Fonte: adaptado de Clements, Bass e Kazman (2013, p. 150).
Aprofundando no Quadro 1.10, podemos dizer que: Fonte de estímulo - a fonte do ataque pode ser tanto um
humano quanto outro sistema, c pode ser previamente iden tificada ou não. Além disso, no caso de um ataque humano,
o atacante pode agir dentro ou fora da organização na qual o sistema alua.
Estímulo - o estímulo é o ataque. Ataques podem ser con siderados tentativas de acesso não autorizadas, modifica ção ou exclusão de dados, tentativa de acesso ao sistema
de modificação de comportamento do sistema, entre outras
atitudes.
Introdução à arquitetura de software
43
Artefato - o alvo do ataque também podem ser serviços do
sistema. Alguns ataques são destinados a componentes parti culares sem proteção.
Ambiente - ataques podem acontecer quando o sistema está on-line ou off-line, conectado ou desconectado, em operação
ou inoperante.
Resposta - o sistema sempre deve tratar um ataque de modo a proteger os dados. Eles não podem ser apagados, modifica dos ou alterados se o acesso não for autorizado.
Mensuração da resposta - as formas de mensurar uma res posta a um ataque consideram o quanto o sistema consegue
proteger determinados elementos, quanto tempo demorou para que o sistema reconhecesse o ataque, quantos ataques o sistema suportou com sucesso, quanto tempo demorou para
o sistema se recuperar do ataque c quanto um dado pode ser vulnerável a um único ataque.
A Figura 1.14 mostra esse cenário em ação: um funcionário
tenta modificar o próprio pagamento no sistema da empresa em
que trabalha. O sistema, ao receber esse comando, inicia uma au ditoria e os dados voltam ao estado original dentro de um dia. Figura 1.14 Cenário de segurança em ação.
Empregado descontente em fonte
Ambiente:
operação normal
Sistema realiza auditoria dos dados
remota
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 149).
Táticas A partir das táticas dc segurança, você pode desenvolver padrões
para a integridade do seu software. Você já sabe que a segurança cm
seu programa vai reduzir o maior número dc consequências indesejadas possíveis. Ou seja, a finalidade sempre será evitar falhas.
Caso elas ocorram, é tarefa das táticas dc segurança detectá-las e contê-las.
Dado original é restaurado em um dia e a fonte de alteração é identificada
44
Arquitetura para computação móvel
A seguir, a Figura 1.15 mostra uma relação da hierarquia dc
segurança - naturalmente, algo abstrato. Figura 1.15 Hierarquia das táticas de segurança.
Evitar falhas
() primeiro objetivo da segurança é evitar falhas. Esta é uma ta
refa complicada, que envolve planejamento e suposições, até certo ponto. Ainda assim, c o foco principal do projeto de arquitetura.
Tornar o seu programa simples pode ser uma maneira dc evitar falhas. Softwares menores, dc componentes simples c interfaces
mais dcscomplicadas, são menos propensos a falhas. Como con sequência, são mais seguros. É um recurso bastante procurado e usado em arquitetura, mas pode ser difícil simplificar um software que naturalmente será complexo.
Detectar falhas
Você deve considerar que não existem softwares totalmente à
prova dc falhas. Em algum momento c em alguma localidade do
programa, algum dado ou arquivo pode se tornar vulnerável - seja pela ação do tempo em relação às tecnologias ou por quaisquer outros fatores. Assim, é imprescindível que você use recursos em
sua arquitetura que sejam capazes de identificar falhas, evitando
erros que eventualmente podem afetar todo o seu sistema. Táticas como timeout e monitoramento podem ajudá-lo nessa etapa - você
pode ver essas e algumas outras táticas no item Detectando falhas
do tópico Disponibilidade deste livro.
Introdução à arquitetura de software
Conter falhas
Essa é a etapa de diminuição das consequências dc uma falha.
Logicamente, ela vem após o sistema reconhecer e identificar
uma delas. Você pode conter uma falha por meio de redundân cias, recuperação de falhas e mascaramento. Veja mais detalhes
a seguir. A redundância é uma tática eficiente, porém cara, que se divi
de em replicação, redundância funcional e redundância analítica: Replicação - modelo de redundância mais simples, que in
troduz no sistema componentes adicionais (um ou mais). Mas
eles são idênticos. Ou seja, a replicação duplica componentes em busca de falhas no hardware. Isso porque, quando dupli
cados, os componentes continuarão com falhas de software, se elas existirem. Assim, apesar de ser barata e simples, só é
recomendável para buscas de falhas no hardware. Redundância funcional - diferentes componentes são adi
cionados, mas os dados dc saída serão sempre os mesmos.
Isso faz com que sejam detectadas falhas tanto no hardware quanto no software.
Redundância analítica - diversos componentes são adicio nados. As entradas são iguais, mas podem produzir resulta
dos diferentes. Enquanto um componente lê uma entrada,
outro pode calculá-la, por exemplo. Em outras palavras, é um sistema em que tudo é feito duas vezes e de duas formas di
ferentes. Por isso é uma opção bastante cara e trabalhosa, por
mais que seja eficiente. A recuperação de falhas é uma tática que, depois de detectar
uma falha, é nela que a falha é tratada. Ou seja, nessa etapa, será feito o processo de recuperação da falha. A principal tática, roll back, recupera completamente um ataque indo a uma etapa segura
para que a ação que levou ao ataque seja repetida. Isso para que a falha não volte a acontecer. O mascaramento é uma tática que mascara a falha, o seja, o
seu sistema irá impedir que ela se propague para todos os limites do software. A tática mais comum de mascaramento é o voting.
Voting - introdução de um componente que decide que valor tomar e que atitude escolher. Assim, as falhas que ocorrem
serão falhas deste componente, e não dc um sistema inteiro.
45
46
Arquitetura para computação móvel
Geralmente c utilizado quando há um número ímpar dc da dos, por meio dc um componente de confiança. Só pode ser
aplicada se houver alguma forma de redundância. A seguir, na Figura 1.16, veja um exemplo de um bloqueio feito por voting. Figura 1.16 Bloqueio por voting.
Fonte: Kelly (2008, p. 29).
Usabilidade A usabilidade se preocupa com o quão fácil é para o usuário acompanhar as tarefas do sistema e o tipo de usuário suportado por ele, sendo o meio mais barato e prático para conferir qualidade
ao seu sistema. A usabilidade compreende as seguintes áreas: Aprender as características do sistema - se um usuário não é familiar com alguma particularidade do sistema, como o sistema pode tornar a realização da tarefa mais fácil para ele? Um bom exemplo disso são as notas explicativas ao usuário na interface do sistema. Usar o sistema com eficiência - o que o sistema pode fazer para que o usuário tire o máximo de proveito dele? Minimizar o impacto de erros - o que o sistema pode fazer para que, caso o usuário cometa algum erro, esse impacto seja o menor possível? Adaptar o sistema às necessidades do usuário - como o sistema pode se adaptar ao usuário (e vice-versa) para que as operações sejam facilitadas? Um exemplo disso seriam as
Introdução à arquitetura de software
47
sugestões dc sites que aparecem quando vocc começa a digi tar uma URL na barra apropriada em seu navegador. Aumentar a confiança e a satisfação - o que o sistema pode fazer para dar confiança ao usuário que o utiliza?
Cenário Veja o Quadro 1.11, que resume as características do cenário
de usabilidade. Quadro 1.11 Características do cenário de usabilidade. Possíveis valores
Partes do cenário
Fonte de estímulo
Usuário final (possivelmente alguém familiarizado).
Estímulo
Usuário final tenta usar o sistema de modo eficiente, aprender a usar o novo sistema, minimizar possíveis erros, adaptar ou configurar o sistema.
Artefato
0 sistema, ou uma parte específica dele, em que o usuário deve estar interagindo.
Ambiente
Tempo de execução ou configuração.
Resposta
0 sistema deve oferecer informações complementares ao usuário antes que ele
precise dessas informações.
Mensuração da
Número de erros.
resposta
Número de tarefas realizadas.
Satisfação do usuário.
Ganho de conhecimento do usuário, entre outros. Fonte: adaptado de Clements, Bass e Kazman (2013, p. 176).
A respeito do Quadro 1.11, podemos dizer que: Fonte de estímulo - o usuário final sempre é a fonte de estí mulo para a usabilidade. Estímulo - o estímulo sempre é o que o usuário final deseja, mi nimizando erros, se familiarizando com o programa, entre outros. Artefato - o artefato sempre c o sistema como um todo, ou a parle do sistema que o usuário interage. Ambiente - as ações de usabilidade sempre ocorrem em tem po de execução ou em tempo de configuração. Resposta - o sistema sempre deve prover o usuário final com características de usabilidade que antecipem suas ações. Mensuração da resposta - a mensuração considera o tempo de realização de tarefa, o número de erros, a satisfação do
usuário, o ganho de conhecimento por parte do usuário, entre outros aspectos.
48
Arquitetura para computação móvel
A Figura 1.17 exemplifica esse cenário. Nela, o usuário baixa
um programa e se familiariza com ele em menos dc dois minutos. Figura 1.17 Exemplo do cenário de usabilidade.
I Download
de novo aplicativo ou programa
I Ambiente:
I Usuário usa
tempo de execução
a aplicação de modo produtivo
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 177).
Táticas A usabilidade está concentrada na relação usuário-sistema,
dessa forma, podemos separar os termos iniciativa do usuário,
iniciativa do sistema e iniciativa mista. Por exemplo: o usuário decide cancelar uma operação - isso é uma iniciativa do usuá rio. Durante o cancelamento, o sistema apresenta um indicador de
progresso - isso é uma iniciativa do sistema. Assim, o processo de
cancelamento é uma iniciativa mista.
Veja, a seguir, a Figura 1.18 que apresenta o diagrama dessa relação. Figura 1.18 Táticas de usabilidade. Táticas de usabilidade
Iniciativa do usuário
Iniciativa do sistema
Cancelar
—
Modelo de tarefas
Desfazer
—
Modelo de usuário
Pausar/ retornar
—
Modelo de sistema
Agregar
Fonte: adaptada de Clements, Bass e Kazman (2013, p. 181).
Introdução à arquitetura de software
Para nos aprofundarmos cm cada uma dessas duas áreas dc
interação, devemos fazer as seguintes considerações:
Iniciativa do usuário Sempre que um sistema é executado por um usuário, a usabili-
dade deve fornecer um feedback para que o usuário tome as deci
sões correias. Todas as situações a seguir, por exemplo, fornecem relatórios aos usuários para tornar a experiência mais eficiente.
Cancelar - quando um usuário escolhe cancelar uma ação, o sistema deve responder. Qualquer recurso que estava cm uso deve ser liberado para que os componentes que serão utili
zados para o cancelamento realizem as tarefas correiamente.
Desfazer - o sistema deve ter memória o suficiente para quan
do o usuário selecionar uma opção de desfazer uma determi
nada ação, o sistema poder recuperar a última etapa salva. Pausar/Retomar - quando o usuário realiza uma tarefa de longa duração, ele pode escolher pausar a operação. Isso sig nifica que o sistema deve ser capaz de liberar, temporaria
mente, todos os recursos que estavam em uso.
Agregar - quando o usuário precisa realizar uma tarefa repe tidas vezes, ele tem a opção dc agregar elementos c realizar a
tarefa apenas uma vez. Por exemplo: você não muda a fonte dc um texto digitado letra por letra. Você seleciona todas as
palavras desejadas c faz apenas uma alteração, que é aplicada
a todos os elementos. Iniciativa do sistema Quando o sistema recebe uma iniciativa, ele precisa ter como
base um modelo de usuário. Cada tipo de entrada do usuário ca
racteriza um modelo diferente. A seguir, você tem uma lista com os principais modelos c seus enquadramentos para identificar e
adaptar o software ao comportamento do usuário final.
Modelo de tarefas - o modelo dc tarefas é utilizado pelo sis tema para determinar o que o usuário está fazendo, para que, então, ele possa ajudá-lo. Por exemplo, o sistema pode per
ceber quando é a hora de colocar uma letra maiuscula e fazer isso por você automaticamente (quando você troca de linha
ou coloca um ponto final em um editor de texto, por exemplo, o sistema sempre vai colocar a letra seguinte em maiuscula, sem que você precise se preocupar com isso).
49
50
Arquitetura para computação móvel
Modelo de usuário - conhecimento do usuário sobre o sis tema, e o comportamento dele em relação ao tempo de com
portamento do sistema esperado.
Modelo de sistema - modelo do sistema por ele mesmo, uti
lizado pelo sistema para prever comportamentos futuros. Por exemplo, uma barra de carregamento ou de download.
Checklist A seguir, o Quadro 1.12 apresenta um checklist de análise e suporte do processo de usabilidade. Quadro 1.12 Checklist do processo de usabilidade.
Categoria Atribuição de
responsabilidades
Checklist Garantir que o sistema se responsabilize:
pelo aprendizado de como usar o sistema; por informações eficientes sobre sua usabilidade;
pela adaptação da configuração; pela recuperação de erros do usuário e do sistema.
Modelo de coordenação
Determinar quais propriedades do programa serão utilizadas para facilitar a experiência do usuário com o novo programa. Por exemplo: quando o usuário interagir com o mouse em determinada parte do sistema, ou em
determinados botões, informações explicativas podem surgir em tempo de execução.
Modelo de dados
Determinar o maior número possível de dados relacionados a possíveis
comportamentos da perspectiva do usuário.
Mapeamento
Determinar quais partes do mapa de arquitetura serão visíveis ao usuário final.
entre elementos
Essas partes que ficarão expostas devem ser organizadas visualmente para
arquiteturais
facilitar a navegação do usuário pelo programa.
Gestão de recursos
Determinar o quanto o usuário pode modificar e configurar o sistema e seus
recursos para enriquecer sua experiência com o programa.
Tempo obrigatório
Garantir que o usuário tome decisões que não interfiram na usabilidade satisfatória do sistema.
Escolha de tecnologia
Questionar se a tecnologia usada auxilia na experiência do usuário. Por exemplo: há suporte on-line? 0 programa coleta feedbacks do usuário? Quão"usáveré a
tecnologia escolhida?
Garantir que a tecnologia utilizada não atrapalhe a experiência do usuário. Fonte: adaptado de Clements, Bass e Kazman (2013, p. 181 -182).
Introdução à arquitetura de software
51
Outros requisitos Em relação à variabilidade, temos:
Forma especial de “modificabilidade”.
Refere-se à habilidade de um sistema de suportar artefatos e requerimentos diferentes uns dos outros na questão de forma. Seu objetivo é tornar mais fácil a construção e o tratamento
de produtos em um período de tempo estabelecido. Em relação à portabilidade, temos:
Também é uma forma especial de “modificabilidade".
Refere-se à facilidade de cada software em criar e transitar entre plataformas, sendo utilizada para evitar dependências.
Exercícios de fixação 1.
2.
3.
a. b. c. d. e. f. g. h.
Explique as semelhanças e/ou diferenças entre a arquitetura de software e a arqui tetura de construção civil. Discuta sobre de que maneira a arquite tura de software pode ser útil como base de análise do seu sistema. Explique a relação contida no diagrama a seguir, que apresenta os elementos:
4. Negócios Técnico Projeto I--------------1--------------1
Profissional-i
♦ Stakeholders
Fonte: Clements, Bass e Kazman (2013, p. 56).
5.
Negócios Técnico Projeto Profissional Stakeholders
Arquiteto Arquitetura Sistema Explique o contexto técnico de arquite tura de software e como ele influencia uma estrutura organizacional. Qual é a importância da interoperabili dade? Descreva um sistema on-line que usaria esse conceito.
52
Arquitetura para computação móvel
Estudo de caso O perigo mora on-line Em pesquisa realizada pelo Trend Micro, e di vulgada pelo site CanalTech, o Brasil é líder mundial em sites mal intencionados que dis tribuem malwares por computadores afora. Segundo a pesquisa, quase 89% de todos os sites mal intencionados da rede são de do mínio brasileiro. O segundo colocado são os Estados Unidos, com quase 3%, seguido pelo Japão, com quase 2% dos sites maliciosos. Esses sites, especialidades brasileiras, alteram as configurações DNS dos roteadores - sejam eles quais forem. Uma vez que isso acontece, o usuário não tem como saber se está navegan do em um site totalmente confiável ou se está interagindo com uma cópia fiel do mesmo. Isso ocorre com grande frequência em sites que necessitam de autorização pessoal para serem acessados, como serviços de e-mail, in ternet banking, entre outros. Isso porque infor mações valiosas podem ser retiradas desses sites: um simples deslize e o seu saldo pode
ficar negativo da noite para o dia. A causa? Um invasor no seu acesso ao banco pela internet. É bom notar que você pode usar algumas tá ticas para evitar tais ataques. A mais simples é utilizar sempre senhas fortes - combinações de números e letras. Se possível, variar entre letras maiúsculas e minúsculas e, ainda, usar caracteres especiais, como #, $, % ou *. Utilizar endereços de IP diferentes e desativar as opções de monitoramento remoto da sua máquina também são atitudes válidas, assim como trocar as configurações DNS do seu roteador. Também vale a pena verificar se os sites que você frequenta, seja no desktop ou no celular, já que muitos sites já possuem versões móveis para dispositivos menores, possuem um certi ficado SSL de segurança válido. Se esse certifi cado for exibido e for válido, siga tranquilo: o site é realmente seguro. Fonte: Brasil (2015).
REFLITA! Ataques provenientes de uma fonte externa não afetam apenas computadores pessoais. Muitas empresas precisam se proteger fortemente contra intrusos, que podem tentar invadir seus sistemas em benefício próprio. E, de fato, elas sofrem essas tentativas. Elabore um cenário em que um invasor tenta acessar um sistema que contém todas as movimentações de uma empresa de médio porte. Esse invasor tenta usar senhas aleatoriamente até que uma delas é correta. a. O sistema vai liberar o acesso depois de quantas tentativas falhas? b. Como o sistema vai perceber que aquilo é uma fraude? c. Como o sistema vai reagir a esse ataque?
Introdução à arquitetura de software
53
Na mídia NETFLIX - Filmes, séries e muito mais. Sem limites A Netflix é um serviço de transmissão online que permite aos clientes assistir a uma am pla variedade de séries, filmes e documen tários premiados em milhares de aparelhos conectados à internet. Com a Netflix, você tem acesso ilimitado ao nosso conteúdo, sempre sem comerciais. Aqui você sempre encontra novidades. A cada mês, adicionamos novas séries deTVe filmes.
1. Acesso à Netflix Após abrir o aplicativo ou o site da Netflix, bas ta selecionar Entrar (Sign In) para acessar sua conta e começar a assistir aos seus filmes e sé ries. Você pode assistir à Netflix em qualquer aparelho compatível e até em mais de um ao mesmo tempo! Se você ainda não tiver o apli cativo Netflix, pode baixá-lo.
2. Criação de perfis É possível criar perfis para cada pessoa que mora com você. Assim, cada um tem uma experiência personalizada na Netflix. Sua conta pode ter até cinco perfis individuais, e cada um desses perfis pode ter um nível de maturidade diferente. Cada perfil terá suas próprias recomendações de acordo com as classificações e preferências pessoais.
3. Gerenciamento da conta Você pode atualizar as informações da sua conta quando quiser, alterando seu e-mail, número de telefone ou até mesmo o plano de assinatura. Para isso, basta selecionar a opção Conta (Account) no menu Netflix. Na página "Conta" (Account), também é possível
ajustar controles de conteúdo, como qualida de da reprodução, idioma e legendas.
4. Plano de transmissão da Netflix A Netflix disponibiliza três planos de trans missão para atender ao seu estilo. O plano escolhido determina em quantos aparelhos você pode assistir à Netflix ao mesmo tempo. Qualquer que seja o plano escolhido, você po derá instalar o aplicativo da Netflix em quan tos aparelhos desejar e desfrutar de quantas séries e filmes quiser, quando quiser e onde quiser. O plano básico permite que você assista às séries e filmes da Netflix em um aparelho por vez em definição padrão (SD). Esse plano também permite que você baixe os títulos para um telefone ou tablet. O plano padrão permite que você assista às séries e filmes da Netflix em dois aparelhos ao mesmo tempo e, quando disponível, em alta definição (HD). Esse plano também permite baixar os títulos para dois celulares ou tablets. Já o plano premium permite que você assista às séries e filmes da Netflix em quatro aparelhos ao mesmo tempo e, quando disponível, em alta definição (HD) e ultra-alta definição (UHD). Esse plano também permite baixar os títulos para quatro celulares ou tablets.
5. Como encontrar filmes e séries Para encontrar sua próxima maratona, pes quise os títulos que sejam do seu interesse ou navegue pelas nossas sugestões. Depois que você começar a assistir e a avaliar os títulos,
54
Arquitetura para computação móvel
as nossas recomendações vão sugerir cada vez mais títulos que correspondem às suas preferências. Você também pode ativar legen das, legendas ocultas ou áudio alternativo em diversos títulos ou navegar pelos títulos que atendem às suas preferências de idioma de legendas ou áudio.
5.1 Recomendações
A Netflix usa diversos métodos para ajudá-lo a encontrar séries e filmes para assistir. Você pode encontrá-los nas "Recomendações" (Re commendations), usando a busca ou navegan do pelas categorias. Para ajudá-lo a encontrar suas novas séries ou filmes favoritos, a Netflix exibe recomendações em fileiras para que você possa navegar por elas. Entre os exem plos de fileiras de recomendações, estão: Em alta (Trending Now), Adicionados recentemen te (Recently Added), Séries incríveis (Exciting TV Shows), Comédias (Comedies), Principais esco lhas para você (Top Picks For You), Porque você assistiu (Because You Watched)...
5.2 Busca Manual A Netflix permite que você busque filmes e séries de diversas maneiras, explicadas abaixo. Enquanto faz a sua busca, lembre-se de que: Se o que você está buscando não estiver dis ponível, a Netflix sugerirá títulos semelhantes que podem interessantes para você. Se os termos da busca forem muito vagos, a Netflix oferecerá sugestões de pessoas, tí tulos, gêneros ou diretores que possam ser relevantes. Em alguns casos, a Netflix pode adicionar um espaço reservado para uma série ou filme que aparece nos resultados de busca, mas ainda
não tem botão de reprodução. Isso geralmen te acontece com títulos prestes a serem lança dos. Os resultados de busca variam de acordo com o nível de classificação etária do perfil usado.
5.3 Filtros de séries e filmes Na maioria dos aparelhos, você pode sele cionar Séries (TVShows) ou Filmes (Movies) e refinar ainda mais por gênero. Esses filtros ge ralmente aparecem na parte superior da tela de aparelhos móveis e navegadores, ou no menu vertical das TVs. Na maioria das TVs, é possível encontrar fi leiras de categorias (Categories), na qual você seleciona uma categoria de conteúdo em que tem interesse. Essas categorias tam bém são exibidas quando você seleciona a opção Buscar (Search). A Netflix tem fileiras de títulos sugeridos com base nos conteúdos a que você costuma as sistir. Essas fileiras mostram mais títulos rela cionados e podem mudar de acordo com a frequência que você as usa. Se uma fileira nunca for usada (você não gosta de filmes de terror e nunca clica nessa fileira sugerida), ela será deslocada cada vez mais para baixo até deixar de ser exibida. As fileiras podem variar em função do aparelho usado. As séries e filmes que acreditamos que você gostará são exibidos em destaque. Esses títu los geralmente são exibidos na parte superior da tela, com uma grande imagem represen tando a série ou filme sugerido. Os resultados sugeridos variam de acordo com o nível de classificação etária do perfil usado. Fonte: NETFLIX Brasil. Disponível em: . Acesso em: 11 abr. 2019.
Introdução à arquitetura de software
55
DISCUTA! Com base nas funcionalidades estabelecidas pela plataforma de streaming de vídeos Netflix em sua página na web, discuta: 1. Dentre os requisitos não funcionais estudados neste capítulo envolvendo inte roperabilidade, escalabilidade, performance, segurança e usabilidade, defina alguns exemplos para cada requisito baseado no negócio. 2. Por meio da modelagem de software defina uma arquitetura para esta plata forma estabelecendo os módulos existentes para esse negócio. Lembre-se se garantir conceitos de coesão e acoplamento.
Na academia Uma arquitetura de software é uma descrição de como um sistema de software é organizado. Decisões de projeto de arquitetura incluem decisões sobre o tipo de aplicação, a distribuição do sistema, e o estilo de arquitetura a ser usada. As arquiteturas podem ser documentadas de várias perspectivas ou visões diferentes tais como uma visão conceituai, uma visão lógica, uma visão de processo, uma visão de desenvolvimento e uma visão física. Baseado nestes conceitos defina os requisitos da arquitetura para um aplicativo de celular que possibilite a utilização de bicicletas de maneira comunitária em determinado espaço físico, uma região, um bairro, ou um parque. Os usuários visualizam as bicicletas disponíveis e podem utilizá-las por certo período. O usuário deve estar pré-cadastrado no sistema e ao utilizar a bicicleta deve ler um código QR que estará visível na própria bicicleta. Todo o controle do espaço e da utilização da bicicleta será visualizado em um mapa do aplicativo, por meio de GPS.
Recapitulando Nesta primeira unidade, você foi apresentado a diversos conceitos relacionados à arquite tura de software, incluindo a sua definição, que basicamente é a de ajudar organizações a atingirem objetivos por meio de soluções e resultados. Você viu ainda os componentes da estrutura da arquitetura de software e também os seus contextos, que não são só necessaria mente técnicos, mas também relacionados ao projeto, aos negócios e ao profissional. É quase como um mosaico: são peças que, combinadas, formam um desenho. Se você as recombinar,
formam outro desenho completamente dife rente. É assim com a arquitetura de software:,
observá-la a partir da perspectiva dos seus stakeholders é completamente diferente da sua visão como desenvolvedor. Da mesma forma, dependendo do tipo de processo de desenvol vimento, haverá interações diferentes entre os profissionais e o cliente. No segundo tema, você aprendeu a aplicar ele mentos como disponibilidade, interoperabili dade, escalabilidade, performance e segurança. Cada um desses atributos contribui de uma forma
56
Arquitetura para computação móvel
única para o seu sistema, desde a possibilidade de torná-lo mais rápido como mais seguro, estável e imune a ataques e perdas de dados confidenciais. Por mais simples que um sistema possa pare cer, ele precisará contar com esses conceitos.
Esperamos que, a partir dos seus estudos nes ta primeira unidade, você esteja preparado para analisar os diversos aspectos da arqui tetura de software e assim oferecer a melhor solução possível.
PONTOS IMPORTANTES ■
A arquitetura de software é criada e utilizada para ajudar organizações a atingi rem objetivos abstratos por meio de um resultado concreto. ■ Podemos dividir a estrutura da arquitetura de um sistema em três partes: Estrutura modular - em que cada módulo é responsável por uma função específica. Componentes e conexões (C&C) - são os elos que conectam os módulos. Estrutura de locação - relacionada à instalação e execução de um sistema. A arquitetura de software pode ser vista por diferentes pontos de vista: ■ técnico; ciclo de vida do projeto; ■ negócios; ■ profissional. No contexto técnico, a arquitetura de software retira ou associa qualidades aos atributos de um sistema, possibilita a previsão de vários aspectos em sistemas de qualidade e facilita a gestão de mudanças. Nessa visão, é preciso considerar a relação entre elementos dos sistemas, prever como eles reagem a erros, atentar à usabilidade do sistema e testar elementos. Existem vários processos de desenvolvimento de software em uma abordagem de ciclo de vida: Waterfall - organiza o ciclo de vida em uma sequência de atividades, sem análise e especificação de requisitos, e cada atividade é relacionada à etapa anterior eà posterior. Interativo - o desenvolvimento é dividido em ciclos curtos, e cada um é respon sável por uma função específica e tem o trabalho realizado individualmente. Desenvolvimento dg/7- também trabalha com pequenos ciclos, mas com me nores intervalos de tempo. Model driven development - o desenvolvimento é definido por meio de mo delos de negócios, para que o código seja gerado automaticamente. Em uma arquitetura, é sempre importante: fazer um estudo de caso para o sistema; ■ identificar os requisitos da arquitetura; projeto e criar o modelo da arquitetura; documentar e comunicar a arquitetura; ■ analisar as interfaces;
Introdução à arquitetura de software
■
57
implementar e testar o sistema; verificar e validar o software. O contexto de negócios envolve aspectos que nào são necessariamente ligados à programação, como aumentar participação no mercado, manter stakeholders satisfeitos e melhorar a qualidade dos produtos. Já no contexto profissional, são pensadas as habilidades necessárias para um pro fissional atuar em um projeto, suas atribuições e o conhecimento necessário para isso. Os requisitos arquiteturais podem ser: Requisitos funcionais - relacionados às funções de um sistema. Requisitos não funcionais - restrições aos serviços ou funções, como tempo, no processo de desenvolvimento ou normas. Funcionalidade é a capacidade do sistema de realizar a sua função. ■ Disponibilidade se refere à capacidade de o sistema reparar erros desde que o pe ríodo de interrupções não exceda um valor específico em um período de tempo determinado. Disponibilidade do estado estacionário é o estado em que o sistema fica "parado" e é calculado da seguinte forma: estado estacionário = tmef / (tmef + tmr), em que tref é o tempo médio entre falhas e tmr é o tempo médio de reparo. Interoperabilidade é a capacidade de o sistema trocar informações e dados, em vários graus e entre interfaces (interoperabilidade sintática) e interpretar dados corretamente quando recebidos (interoperabilidade semântica). Escalabilidade é a capacidade de mudança e adaptabilidade de um sistema. Performance é o tempo que o software leva para realizar as suas funções. A segurança de um sistema é composta principalmente pelos itens: confidencia lidade, integridade e disponibilidade.
UNIDADE 2
MODELOS E PROJETOS ARQUITETÔNICOS
CONHEÇA Os modelos e os estilos arquiteturais.
REFLITA Sobre a importância de adotar um modelo arquitetural que melhor se aplique ao contexto de um sistema.
DISCUTA Como os padrões de arquitetura de software e como a arquitetura baseada em componentes pode ser aplicada em um projeto.
APLIQUE Os conhecimentos adquiridos e defina a arquitetura de um projeto baseada em componentes.
#DESIGNPATTERNS #COMPONENTIZAÇÃO
#ESTILOSDEARQUITETURA
01 OBJETIVOS DE APRENDIZAGEM Compreender os conceitos de padrões de arquitetura de software.
Aprender e aplicar os diversos estilos arquitetônicos abordados. Compreender e aplicar na prática o conceito de interação. Identificaras particularidades da arquitetura baseada em componentes.
PADRÕES DE PROJETO E ARQUITETURA DE SOFTWARE Quais os pilares da arquitetura de software? O que é um padrão de arquitetura? O que é orienta ção a serviços? O que é cliente e servidor? O que é camada? Qual o melhor padrão de arquitetura?
02
ARQUITETURA BASEADA EM COMPONENTES O que são componentes? O que deve ser levado em conta ao se implementar uma arquitetura baseada em componentes? Como chegar a uma boa arquitetura? Quais os princípios fundamen tais da arquitetura?
Modelos e projetos arquitetônicos
Q *|
Introdução Nesta unidade, você terá contato com diversos pa drões arquitetônicos, suas estruturas e aplicações. Para entender melhor o conteúdo que será tratado, vamos considerar padrões de arquitetura como um meio de organização. Vamos pensar, por exemplo, nas músicas que você ouve em seu smartphone ou em seu computador. Pensando logicamente, podemos ouvir música de várias maneiras: pelo artista, por álbum, pelo ano de lançamento, por gênero musical, ou mesmo em playlists que levam em conta o "clima" da música, como uma lista só com músicas lentas ou músicas para acompanhar seu exercício. O modo de realizar essa organização, portanto, cabe ao ouvinte. Se você tiver acesso a uma bi blioteca digital com três artistas, totalizando seis álbuns diferentes, você pode, simplesmente, orga nizar a execução das músicas por álbuns. Por outro lado, caso queira escutar as canções de apenas um
artista, pode organizar toda a execução de modo que somente as canções desejadas sejam reprodu zidas, e assim por diante. As maneiras de organizar e reproduzir uma biblio teca musical são inúmeras. Ainda assim, a finalida de é única: escutar as músicas, independente da forma com que você escolheu organizá-las. Com os estilos arquitetônicos não é tão diferente. Isto é, ao criar sua arquitetura, você pode optar por percorrer diversos caminhos que o levarão ao mes mo lugar, ou seja, terão a mesma finalidade. O que muda, nesse caso, é que alguns caminhos são mais fáceis que outros, dependendo do tipo de software que você está criando. Aqui, aprenderemos que é possível organizar sua arquitetura utilizando padrões como client/server, SOA, message-bus com foco em camadas e outras táticas. Cada uma delas possui sua particularidade e oferece benefícios.
Padrões de projeto e arquitetura de software Estilos de arquitetura Na unidade anterior, você aprendeu os conceitos básicos e as prin
cipais etapas para a elaboração de uma boa arquitetura dc software.
Assim, deve-se lembrar que o desenvolvimento de todo e qualquer sistema é uma interação entre usuários, objetivos e o sistema em si. Em outras palavras, o objetivo da arquitetura de software
é “construir uma ponte entre os objetivos de uma empresa e os
recursos técnicos necessários para a construção de um sistema,
que devem ser aplicados conforme as necessidades da empresa”
(ME1ER et al., 2009, p. 5). A Figura 2.1 ilustra a relação entre os três pilares da arquitetu
ra dc software, mencionados anteriormente.
62
Arquitetura para computação móvel
Figura 2.1 Pilares da arquitetura de software.
É importante lembrar que a arquitetura de software pode e deve ser flexível, ou seja, capaz dc adaptar-se a diversos tipos
de situações e objetivos. Quando a arquitetura possui essa ca racterística, dizemos que ela tem um design flexível. Mas, como
trabalhar para chegar a esse ponto?
Para responder essa pergunta, temos que nos aprofundar em
alguns estilos de arquitetura, também chamados de padrões de arquitetura. Um estilo de arquitetura é uma família de sistemas trabalhando de uma maneira determinada, organizada dentro de
uma estrutura específica. Em linhas gerais, é a forma que a arqui tetura vai apresentar, que varia conforme os objetivos do usuário e/ou organização.
Existem quatro áreas principais dc estilos de arquitetura, des
critas no Quadro 2.1. Quadro 2.1 Principais estilos de arquitetura.
Categoria
Estilo de arquitetura
Comunicação
Service-Oriented Architecture (SOA), Message-bus
Implantação
Implantação distribuída e não distribuída, Client/server, Servidores N-Tier e 3-Tier
Domínio
Domain model (Domain Driven Design)
Interação
Entradas e saídas
Soluções
Arquitetura base e arquitetura candidata
Estrutura
Component-Based, Object-oriented, Layered Architecture
Agora que já conhecemos as principais categorias de estilos de
arquitetura, vamos nos aprofundar em cada uma delas.
Modelos e projetos arquitetônicos
Comunicação Service-Oriented Architecture (SOA)
Esse estilo pode ser traduzido, literalmente, como arquite
tura orientada a serviços, e é baseada no preceito de organiza ção em serviços, ou seja, vários sistemas que se comunicam por
interoperabilidade. A troca de informações é feita por meio de protocolos entre os sistemas. Isso possibilita que “clientes e outros serviços [...]
acessem serviços locais rodando na mesma camada, bem como serviços remotos através de redes de conexões” (MEIER et al.,
2(X)9, p. 33). Agora que você sabe que os serviços de um sistema são o foco
do SOA, podemos listar algumas de suas características:
Autonomia - cada serviço é desenvolvido, aplicado e man tido dc forma independente. Distribuição - cada serviço pode estar alocado cm uma
parte específica do sistema, em bases locais ou remotas. Nesse caso, a única especificação é que o serviço alocado
remotamente atenda aos requisitos dos protocolos de comu nicação utilizados. Redução de acoplamento - cada serviço, por ser indepen dente, pode ser substituído ou alterado, sem causar danos a
outras aplicações que o utilizam.
Esquemas e protocolos - serviços compartilham esquemas e
protocolos quando se comunicam. Compatibilidade baseada em políticas - políticas significam
as regras que os recursos presentes na arquitetura, como trans
porte de informações, protocolos e segurança, devem seguir.
Para compreender melhor o conceito de vários serviços com
baixo índice de acoplamento, basta imaginar o sistema de um banco. Nesse sistema, podemos encontrar os serviços de saque,
abertura de conta, depósitos, pagamentos, saldo, extrato, entre outros. Cada um desses serviços possui uma interface única. O que muda entre eles são apenas informações necessárias por
meio de interoperabilidade. A seguir, veja uma lista de alguns benefícios da utilização da
arquitetura orientada a serviços.
63
64
Arquitetura para computação móvel
Reúso - possibilidade dc utilizar novamente (rcúso) serviços
comuns por meio de interfaces maiores, possibilitando a re dução de custos. Autonomia versus acoplamento - sistemas são autônomos, se relacionam por protocolos e isso reduz o acoplamento. Fácil localização - serviços podem expor descrições que
permitem a outras aplicações encontrá-los, determinando a interface.
Interoperabilidade - devido à interoperabilidade, o sistema pode ser desenvolvido e criado em diferentes plataformas.
Message-bus Esse estilo de arquitetura diz respeito à troca de informações,
com base no uso de um ou mais canais dc comunicação ou barra-
mento. Ele permite que seu sistema troque informações diferen
tes por meio de mais de um canal de forma única, ou seja, suas aplicações podem interagir sem a necessidade de ter contato com informações desnecessárias.
Convencional mente o termo bus é traduzido para harramento - exatamente o que faz a comunicação entre as aplicações. En tre as habilidades do message-bus, podemos destacar as seguintes
©
capacidades: PARA SABER!
O message-bus tem
Comunicação orientada a mensagens - forma de comuni
cação entre processos, em que todas as comunicações entre aplicações são feitas com base em esquemas conhecidos.
sido amplamente
Processamento lógico complexo - operações complexas
utilizado para suportar
podem ser realizadas por meio da combinação dc uma série
processamentos complexos
de operações menores. Cada uma dessas operações tem uma
(MEIER et al. 2009).
tarefa específica, e o conjunto dessas pequenas tarefas e de
suas trocas de informações formam uma operação maior e, portanto, complexa.
’'0 zPARA SABER! A implementação
Modificação de processamento lógico - as interações feitas por meio do message-bus são baseadas em esquemas e co
mandos similares. Sendo assim, basta adicionar ou remover
mais comum do
aplicações no processo para mudar a lógica com a qual os
message-bus é o
serviços vão operar.
roteamento de mensagens
Integração com ambientes diferentes - por meio do message-
(MEIER et al, 2009).
-bus, é possível interagir com aplicações desenvolvidas cm am
bientes diferentes.
Modelos e projetos arquitetônicos
Dentre os benefícios dc utilizar o modelo message-bus, pode
mos destacar: Extensibilidade - aplicações podem ser adicionadas ou remo
vidas dos barramentos sem afetar outras aplicações existentes.
Baixa complexidade - a complexidade de comunicação é baixa, já que cada aplicação precisa saber como se comunicar apenas com o barramento, de modo que o message-bus fará
o resto do trabalho. Flexibilidade - considere que uma aplicação faz parte de um
processo complexo. Essa aplicação pode ser alterada facil
mente por meio dc um novo requerimento, que c adicionado nos parâmetros dc controle dc roteamento dc informações. Baixo acoplamento - o que entra cm contato com o barramen
to é a interface da aplicação. Isso significa que ela pode ser alte
rada sem causar danos a outros elementos do sistema. De falo, o índice de acoplamento cai com o uso de barramentos. Escalabilidade - uma aplicação pode ter várias instâncias no mesmo barramento, implicando na possibilidade de requisi
ções simultâneas a uma aplicação. Aplicação simples - embora a implementação do message-
-bus aumente a complexidade da estrutura, cada aplicação precisa manter apenas uma conexão com ele, em vez de man
ter uma conexão com cada uma das outras aplicações, facili
tando a criação dc estruturas complexas. Existem, ainda, algumas variações do message-bus. São elas:
Enterprise Service Bus (ESB) - utiliza serviços para a co municação entre o barramento e seus componentes. Um ESB também faz uso de serviços para transformar mensagens de
um formato para outro. Isso significa que dois clientes po
dem se comunicar em formatos incompatíveis sem perda de performance. Internet Service Bus (ISB) - bastante similar ao ESB. mas,
neste caso, o ISB compreende aplicações em um host na nuvem.
Implantação Como já vimos, a escolha de um tipo de design de arquitetu ra leva em consideração muitos fatores, como necessidades das
65
66
Arquitetura para computação móvel
organizações, cenários, entre outros. Mas independentemente do
design que escolher, ele deverá ser implantado. Para isso, a implantação (deployment) também deve conside
rar o ambiente físico da organização e suas limitações. Primeiro
deve-se identificar as restrições do seu design para escolher uma
estratégia de implantação. Ao optar por uma estratégia ficar atento
aos seguintes pontos:
1.
Compreender o ambiente físico de implantação.
2.
Compreender as limitações arquiteturais e de design para o ambiente de implantação.
3.
Compreender que a segurança c a performance impactam di
retamente cm seu ambiente dc implantação. Implantação distribuída e não distribuída
Ao criar o seu ambiente de implantação, primeiro, deve identi ficar se sua aplicação consiste em processos simples ou complexos.
Esse é um fator fundamental que determina se sua implantação
será distribuída ou não.
Considere que você está construindo uma aplicação com base
em intranet para uma organização. O número de acessos a esse sistema é finito, pois diz respeito apenas aos funcionários da or
ganização em questão. Nesse caso, é recomendada a utilização de
uma implementação não distribuída. Aqui, todas as camadas compartilham o mesmo hardware. Essa abordagem minimiza o número de servidores, sendo um mo
delo simples que também diminui o impacto quando a comunica ção entre camadas deve utilizar meios físicos entre servidores. A
Figura 2.2 exemplifica esse modelo. Figura 2.2 Implementação não distribuída.
Fonte: Meier et al. (2009, p. 240).
Modelos e projetos arquitetônicos
Por outro lado, você deve ficar atento: se todas as camadas
compartilham os mesmos recursos (o mesmo servidor), então uma camada pode afetar negativamente todas as outras.
Se você estiver trabalhando com um sistema maior, pode dividi-lo em servidores específicos. Aqui, o modelo de implementação distribuída seria o ideal.
Nesse modelo, as camadas da aplicação residem em camadas
separadas fisicamente. Isso proporciona ambientes e servidores exclusivos, especiais para cada operação e requisito do sistema. Você pode separar suas aplicações em vários níveis físicos, con forme a Figura 2.3. Figura 2.3 Implementação distribuída.
Fonte: Meier et al. (2009, p. 241).
Como já dito, esse modelo permite que você direcione os servidores para as camadas específicas, otimizando a aplicação. “Quanto mais camadas você usa, mais opções dc implementação
você tem para cada componente” (ME1ER et al., 2009, p. 241).
Outro ponto positivo é a possibilidade dc desenvolver uma
aplicação com mais segurança. Ou seja: quanto mais flexível, quanto mais servidores específicos sua aplicação tiver, mais rigo
rosa pode ser a segurança, já que existem diversos tipos de auten
ticações e autorizações que podem ser aplicadas entre servidores. Por outro lado, tenha em mente que quanto mais camadas físi cas criar, maior será a complexidade do projeto, além do custo e
do esforço de implementação serem maiores. Client/server
O estilo arquitetônico client/server caracteriza-se como um tipo de arquitetura dc aplicação. Nela, “um ou mais dispositivos
67
68
Arquitetura para computação móvel
clientes solicitam informações a um servidor. O servidor cm geral responde com as informações solicitadas” (LEE; SCHNEIDER;
SCHELL, 2005, p. 23).
A seguir, temos um exemplo básico do processo de uma arqui
tetura client/server na Figura 2.4. Figura 2.4 Arquitetura client/server.
Fonte: Lee, Schneider e Schell (2005, p. 24).
A arquitetura client/server faz uso de camadas e filas. Vamos
compreender melhor esses dois conceitos adiante. Em relação às camadas, o código de aplicação do seu software
nem sempre irá lidar com todos os processos do programa em si. Por exemplo: algumas seções dos seus códigos vão lidar apenas com o relacionamento com o usuário final por meio da interface;
já outras seções podem ser responsáveis por captar entradas ou
gerenciar a lógica do negócio, entre outras funções. São muitas as possibilidades. Pensando nessa pluralidade dc opções que devemos aplicar a
divisão cm camadas, elas são subdivisões dc trabalhos dentro dc um mesmo código dc aplicação, que pode ser feita tanto no cliente quanto no servidor. Do ponto de vista do cliente, geralmcnte são aplicadas de zero
a três camadas de código. Já no servidor, de uma a três camadas.
Não são números fixos, mas representam um bom projeto de soft
ware. Você pode colocar mais camadas, tanto no cliente quanto no servidor. Mas lembre-se que camadas demais podem dificultar a manutenção e o gerenciamento do seu programa.
A camada mais próxima do usuário final geralmente é cha
mada de camada de apresentação. A camada seguinte, que trata
Modelos e projetos arquitetônicos
da lógica, é chamada dc camada de negócios. A terceira e última parte, a camada de acesso a dados, tem como função realizar a comunicação com o banco de dados (Figura 2.5). Figura 2.5 Camadas.
Camadas O 1 - apresentação
■ 2-negócios 13- acesso a dados
Fonte: Lee, Schneider e Schell (2005, p. 24).
Já para trabalharmos com filas, devemos utilizar diversas máquinas. Isso torna a arquitetura escalável, o que não seria
possível utilizando apenas as camadas. Em outras palavras,
“a segmentação em filas geralmente envolve a colocação de
módulos de código em máquinas diferentes num ambiente de servidores distribuídos” (LEE; SCHNEIDER; SCHELL, 2005,
p. 25). Aqui, o código com mais proximidade de interação com o usuário é colocado na fila de apresentação. A lógica de negócio
de aplicação é colocada na segunda fila, chamada de aplicação.
Já a terceira fila costuma abrigar o banco de dados em si ou a fonte dos dados, chamada fila de banco de dados (Figura 2.6). Figura 2.6 Filas.
Filas
■ 1 - apresentação
■ 2-aplicação ■ 3 - banco de dados
Fonte: Lee, Schneider e Schell (2005, p. 25).
Clientes Dispositivos móveis (para os quais você cria aplicações), como
smartphones, tablets, laptops, entre outros, podem ser divididos
entre clientes magros e clientes gordos.
69
70
Arquitetura para computação móvel
Os clientes magros (Figura 2.7) apresentam as seguintes
características: Costumam compreender uma única camada e não apresen
tam código de aplicação personalizado. Dessa forma, depen dem total mente do servidor. Utilizam navegadores de web e WAP para exibir conteúdos como: HTML e XML (web); ou WML (WAP).
Alterações e manutenções são mais fáceis em clientes ma gros, justamente pela ausência de códigos de aplicações
personalizados. Figura 2.7 Cliente magro sem camadas.
Cliente móvel: (Nenhuma camada)
A aplicação não possui código
Possivelmente: Navegador web
Navegador WAP
A
Para a rede e o back-end Fonte: Lee, Schneider e Schell (2005, p. 26).
Os clientes gordos (Figura 2.8) são caracterizados pelos se
guintes elementos: Geralmente, possuem entre uma e três camadas. É recomen dável usar esse tipo de cliente quando a comunicação entre
cliente e servidor é baixa - uma vez que esse tipo de clien te consegue ser independente do servidor por algum tempo.
Por exemplo: se a conexão com o servidor for perdida, esse
Modelos e projetos arquitetônicos
cliente consegue armazenar entradas no banco dc dados até que a conexão se restabeleça e seja possível transferir essas
entradas para o servidor adequado. Justamente por depender menos do servidor, esse cliente vai se basear no sistema operacional e no tipo de dispositivo em que será usado. Você pode usar até três camadas, mas o mais
recomendável é o uso de três, uma vez que, assim, você pode reutilizar o que for possível do código de aplicação. Figura 2.8 Cliente gordo - três camadas.
Cliente móvel: (Três camadas)
Para a rede e o back-end Fonte: Lee, Schneider e Schell (2005, p. 28).
Servidores n-tier e 3-tier Ao criar uma aplicação em várias camadas, significa que você
está usando uma aplicação n-tier. “N” porque as camadas lógicas criadas podem ser inúmeras. Aqui, cada segmento pode ser aloca
do em unidades físicas diferentes, com seus próprios servidores,
unidos por meio dc uma rede. Um dos modelos mais famosos é o 3-tier, ou modelo cm três camadas, bastante utilizado cm casos dc aplicações web, cm que a segurança é primordial. Nessa situação, teremos três camadas:
71
72
Arquitetura para computação móvel
1.
Interface com o usuário - apresentação (P).
2.
Lógica de negócios - negócios (B).
3.
Banco de dados - acesso a dados (D).
A Figura 2.9 ilustra essa lógica. Figura 2.9 Arquitetura de três filas.
Servidor de
Servidor de
P = Apresentação B = Negócios
D = Acesso a dados
Fonte: Lee, Schneider e Schell (2005, p. 33).
Dentre os pontos positivos de utilizar esse método, os princi pais são:
Manutenção - isso é possível porque você separa as camadas em servidores independentes. Assim, as alterações realizadas em uma delas não acarretam mudanças nas outras camadas, e
não afetará o sistema como um lodo. Escalabilidade - os níveis são baseados nos níveis dc cama
das, fazendo com que dimensionar aplicações seja relativa mente simples. Flexibilidade - isso acontece porque cada camada é geren ciada individualmente. Disponibilidade - já que aplicações são facilmente escaláveis, a disponibilidade aumenta.
Outras características próprias do n-tier e 3-tier são:
Modelos e projetos arquitetônicos
baixo custo dc disponibilização, manutenção dc dados c mu dança de lógica de negócio; armazenamento otimizado;
reutilização de recursos.
Domínio Domain model Domain model, ou Domain Driven Design (DDD), é uma
abordagem de desenvolvimento que projeta o seu software basea do no domínio de negócios. Geralmente, quem aplica esse modelo precisa ter um conheci mento profundo do negócio no qual atua. Em função disso, é co
mum encontrarmos o arquiteto, o desenvolvedor e um especialista no negócio atuando juntos.
O núcleo do software é o modelo de domínio, que contém
uma linguagem comum compartilhada. Isso faz com que a equi pe encontre lacunas no software rapidamente. Em outras pa lavras, isso facilita a comunicação entre os elementos da sua
aplicação. Aplicar o Domain Driven Design pode resultar em um custo elevado. Exatamente por isso (e por facilitar a manutenção do seu
software) é recomendável a utilização desse modelo apenas em
aplicações complexas. Meier et al. (2009) enumeram os três principais benefícios que o sistema Domain Driven Design oferece, são eles:
1.
Comunicação - todas as partes dentro de uma equipe de
desenvolvimento podem usar o modelo de domínio e suas
entidades. Esse uso é útil para comunicar conhecimentos e requisitos, utilizando uma linguagem de domínio comum de
negócios, sem a necessidade de termos técnicos. 2.
Extensibilidade - muitas vezes, o modelo de domínio é mo
dular e flexível. Isso os torna mais fáceis de serem atualiza dos e estendidos, conforme os requisitos e as condições são alterados.
3.
Testabilidade - os objetos do modelo de domínio possuem
baixo acoplamento e alta coesão, permitindo que sejam testa dos com maior facilidade.
73
74
Arquitetura para computação móvel
Alguns dos pontos positivos para a utilização do Domain Driven Design são:
Facilita a compreensão e a comunicação de domínios com plexos dentro da sua equipe de desenvolvimento. Em função da utilização dessa abordagem, a linguagem utili zada por todos os envolvidos no projeto é unificada. Simplifica o gerenciamento dc processos e, consequentemente,
a manutenção deles.
Interação Técnicas interativas ajudam a potencializar sua arquitetura,
deixando-a mais próxima possível dos seus objetivos. Para isso, vamos rever alguns conceitos já estudados, em um total de cinco etapas que serão explicadas detalhadamente adiante.
Entradas e saídas As entradas, ou inputs, ajudam a formalizar os requerimentos e as restrições que a arquitetura deve conter, como requisitos funcio
nais, não funcionais, atributos de qualidade, segurança, confiabili dade etc. Para isso, vamos seguir os seguintes passos:
1.
Identificar os objetivos da arquitetura - objetivos claros
ajudam a concentrar sua arquitetura em soluções mais rápi
das c eficazes. 2.
Identificar os principais cenários - um cenário principal é
o local em que sua aplicação deve concentrar as informações mais importantes.
3.
Criar uma visão geral do aplicativo - para que o software
seja adequado ao seu propósito, é fundamental identificar o
tipo de aplicação, a arquitetura de implantação, os estilos, as tecnologias etc.
4.
Identificar os pontos principais - identificamos os pon
tos principais do nosso design com base nos atributos de qualidade.
5.
Definir as soluções - resolução dc problemas, atua na me lhora, na solução e na avaliação de cenários e problemas de
implementação.
Modelos e projetos arquitetônicos
Para compreender melhor o processo descrito, veja a Figura 2.10. Figura 2.10
Etapas da interação.
Fonte: Meier et al. (2009, p. 38).
Agora que já sabemos quais são as cinco etapas necessárias,
vamos nos aprofundar em cada uma delas. Identificar os objetivos da arquitetura O objetivo de uma arquitetura é a sua finalidade e as suas limi
tações. Para identificar os objetivos de uma arquitetura, existem três pontos-chave que podem ajudar:
75
76
Arquitetura para computação móvel
1.
Identificar os objetivos da arquitetura no início - o tempo
investido cm cada etapa da elaboração da arquitetura depende dos seus objetivos. Por exemplo, se você está criando um pro
tótipo, o que pode ser mais útil, o teste constante de elemen tos ou um processo de arquitetura de longa duração?
2.
Identificar quem será o consumidor - questionar se seu
projeto será utilizado por outros arquitetos, desenvolvedores
ou testadores. Saber quem será o usuário muda a forma final
com que a sua arquitetura será apresentada, para ser sempre acessível a quem será o seu usuário.
3.
Identificar as restrições - compreender e respeitar as condi ções da sua arquitetura o mais cedo possível, evitando surpre
sas desagradáveis no futuro. Identificar os principais cenários
Considerando-se arquitetura e design, podemos classificar um
caso de uso como a relação das interações dc um ou mais usuários com o sistema. Lembre-se dc que esse usuário c chamado, nas
descrições c na linguagem técnica, dc ator. Os atores podem ser O objetivo àos cenários-chave
tanto um usuário físico, ou seja, uma pessoa, ou outro sistema.
"é alcançar um equilíbrio
Já um cenário é a descrição dc maneira mais ampla da relação
entre os objetivos do usuário, do negócio e do
ator/sistema, representando um panorama geral, c não um cami
sistema" (MEIER et al., 2009,
nho específico que essa relação contém.
Definir cenários-chave na elaboração da sua arquitetura torna
p. 41). Essa relação pode ser observada na Figura 2.1, no início desta unidade.
esse processo - e o resultado final - mais preciso. De modo geral, esses recursos auxiliam na escolha de decisões na fase de criação.
Os cenários-chave compreendem uma ou mais das seguintes características:
problema a ser resolvido; caso dc uso significativo; interseção dc atributos dc qualidade e funcionalidade;
■
compromisso entre atributos dc qualidade. Por exemplo, um cenário de autenticação de usuário poderia
ser considerado um cenário principal. Isso porque há:
atributo de qualidade (segurança); funcionalidades (entradas do usuário ao sistema);
interação entre atributo de qualidade e funcionalidades.
Modelos e projetos arquitetônicos
Casos de uso significativo são aqueles que terão um im pacto maior na sua arquitetura c design, dividindo-se cm duas categorias: Negócio crítico - o caso de uso tem alta frequência. Também
pode ser considerado como de grande importância para ou
tras áreas do sistema, mesmo que indiretamente. Alto impacto - o caso de uso cruza com funcionalidades e
qualidades de atributos. Criar uma visão geral do aplicativo O objetivo dessa etapa é criar uma visão geral da sua aplica ção. Isto é, você vai revisar seu software sempre com o intuito
de tornar a arquitetura mais acessível e compatível com o mundo real. Lembre-se de que isso é a chave para uma boa interação ator/ sistema - ainda mais quando o ator representa uma pessoa.
Para atingir tais objetivos, veja as seguintes dicas:
Determine o tipo de aplicação - responder algumas per guntas facilitam o processo de desenvolvimento, assim como: o que você está desenvolvendo? Qual é o tipo de software? É uma aplicação móvel? Uma aplicação on-line,
para a internet? É uma junção desses dois tipos? Muito ou pouco detalhado?
Identifique as restrições de aplicação - além de conside
rar itens importantes como segurança e confiabilidade (na
questão do design), você precisa estar atento a outros tipos de restrições. Por exemplo, ao desenvolver uma aplicação
para uma organização rígida, o design e a arquitetura do software devem estar dc acordo com os parâmetros da em
presa. Ou seja, nessa etapa, o diálogo com o usuário final do sistema c o conhecimento da infraestrutura e da lógi ca do ambiente em que ele será implantado é de grande
importância. Identifique o estilo arquitetônico mais adequado - mais
uma vez, você deve considerar possibilidades e decidir o me
lhor estilo arquitetônico, principalmente por meio de análises do ambiente em que a aplicação será implantada e da sua finalidade. Isto é, você desenvolverá sua arquitetura através
de SOA, client/server, ou message-bus?
77
78
Arquitetura para computação móvel
Escolha a tecnologia mais apropriada - agora que você
definiu o tipo de aplicação e o estilo arquitetônico, deve escolher a tecnologia que mais se adequa aos padrões
desejados. Lembre-se de que a tecnologia que vai ao en contro do seu projeto deve sempre complementá-lo. Por
exemplo, se você criasse um aplicativo para dispositivos
móveis, poderia usar o Mobile Applications. Com isso, você teria acesso a tecnologias de apresentação de cama
das, como .NET Compact Framework, ASP, Silverlightfor
Mobile, entre outros.
Identificar os pontos principais
Alguns erros podem acontecer durante a elaboração da sua aplicação. Para isso, existem algumas perguntas que você pode
fazer - c aplicar no projeto - para localizar, corrigir c evitar falhas. Por exemplo: Eu posso trocar de serviços sem grandes problemas?
Minha aplicação suporta novos clientes? Minha aplicação está preparada para eventuais mudanças tec nológicas, upgrades e afins? Verificar espaçamento.
Mesmo que esses fatores sejam dc teor generalizante, eles
implementam os atributos de qualidade. Esses atributos afetam o tempo de execução e o comportamento do seu programa. Uma
combinação bem-feita de atributos de qualidade (como usabilidade, segurança, confiabilidade, desempenho etc.) garante um bom
software. Não existem modelos dc combinações e prioridades dc atributos predefinidos, isso varia conforme o tipo de software que você cria e domínio de negócio da aplicação.
Alguns atributos dizem respeito à funcionalidade geral do sis tema. Outros possuem funções específicas em tempo de execução,
design, ou cm determinadas áreas do projeto.
A seguir, você verá uma lista com os principais atributos para
ajudá-lo a decidir qual é o melhor momento para utilizá-los. Atributos de qualidade do sistema - refere-se às qualidades geral de todo o sistema. Podemos tomar como exemplo o su
porte ou a testahilidade.
Modelos e projetos arquitetônicos
Atributos de qualidade de tempo de execução - qualidade
do sistema apenas em tempo dc execução. Aqui, bons exem
plos seriam a disponibilidade, a interoperabilidade, a escala bilidade, a confiabilidade e outros atributos que influenciam
diretamenle a execução do software. Atributos de qualidade de design - enquadram-se todos os
atributos que facilitam a manutenção do seu software e sua con cepção. Exemplos seriam a flexibilidade e a “reusabilidade” de elementos. Atributos de qualidade de usuário - táticas que facilitam a usabilidade do sistema para o usuário final. Definir soluções
Depois de percorrer as quatro etapas anteriores é possível defi
nir as resoluções de problemas para melhorar, solucionar e avaliar os cenários e os problemas de implementação.
Soluções Agora que você já decidiu o tipo de tecnologia, o modelo ar
quitetônico e os assuntos-chave, já pode criar a sua arquitetura
base.
Arquitetura base e arquitetura candidata A arquitetura base deverá descrever o programa existente. Ou seja, você deve fazer referências ao que ele será na sua fina
lização, sendo a partir dessa base que são alçadas as arquiteturas candidatas. As arquiteturas candidatas são específicas aos cenários cria dos. Nessa etapa, você irá implantar o estilo arquitetônico, as es colhas de tecnologias, os atributos de qualidade etc. Lembre-se
sempre de realizar testes com os assuntos-chave, para evitar futu ros erros mais críticos.
Estrutura Baseada em componentes Quando você utiliza a estrutura baseada em componentes,
vai perceber que eles fornecem uma forma de isolar conjuntos
79
80
Arquitetura para computação móvel
específicos dc funcionalidades dentro dc unidades. Você pode
distribuir e instalar esses conjuntos dc funcionalidades separada
mente. Quando for realizar esse processo, é necessário seguir as seguintes diretrizes: Aplicar princípios de design sólido para as classes, os prin cipais são:
Princípio da responsabilidade - suas classes devem ter apenas responsabilidades.
Princípio aberto/fechado - suas classes devem ser ex
tensíveis, sem exigir modificações. Princípio da substituição Liskov - seus subtipos de
vem ser substituíveis. Princípio da segregação de interfaces - suas classes
devem ter interfaces separadas para diferentes clientes,
com requisitos diferentes. Princípio de inversão de dependência - as dependên
cias entre as classes devem ser no nível de abstração, evitando-se detalhes.
Evitar sobrecarga: Evite a sobrecarga de componentes, por exemplo, sem misturar lógica de acesso a dados com lógica de negócios.
Isso torna a funcionalidade da aplicação mais coesa. Um componente não deve confiar cm detalhes internos
dc outros componentes. Para ajudar a criar um aplicativo mais adaptável, garantir que cada componente ou objeto chame um método de outro ob
jeto ou componente que vai saber como processar e encami nhar o chamado.
Compreender como os componentes se comunicam com os
outros. Aplicar os princípios fundamentais da arquitetura baseada em
componentes. Ou seja, os componentes devem ser reutiliza-
veis, substituíveis, extensíveis, encapsulados independentes e dc contexto específico. Nesse modelo, cada camada deve conter uma série dc compo
nentes, que devem implementar a funcionalidade dessa camada. A Figura 2.11 ilustra os tipos de componentes mais encontrados em
uma camada.
Modelos e projetos arquitetônicos
•o g ■g ;g
•' Fachada de aplicação • % ----------...................... -------.........................
| S' u
/Lógica deA/íomponentes de\A Componentes de ^negóciosJ\fluxo de trabalhqjyentidade de negócio
Íí
/componentes de\ /DadosauxiliaresX ÇAgentes de^ E T5 acesso a dados) e utilitários J serviços y
í
í
l
Fontes de dados
Fonte: Meier et al. (2009, p. 137).
Podemos sintetizar a Figura 2.11 da seguinte maneira:
1.
Componentes da camada de interface com o usuário -
responsável pela interação do sistema com o usuário. Estão
relacionados a ela: Componentes de interface - os componentes estão cn-
capsulados e tem a funcionalidade dc apresentar infor mações aos usuários e captar entradas.
Apresentação de componentes de lógica - representa
o código do aplicativo que define o comportamento e a
81
82
Arquitetura para computação móvel
estrutura lógica dc uma forma independente da interfa
ce com o usuário. Faz a intermediação entre o usuário e a lógica do programa.
2.
Componentes da camada de serviço - sua aplicação pode
ter uma camada de serviço para interagir com clientes ou outros sistemas. Nessa camada, é comum encontrarmos: Interface de serviços - serviço em que toda mensagem
de entrada é enviada. O conjunto de mensagens que deve ser trocado com um serviço para que ele execute uma
tarefa específica, constituindo um protocolo. Tipos de mensagem - estruturas de dados contêm mensagens que garantem suporte a diferentes tipos dc operações. Isso acontece na troca dc dados, na camada
de serviço. 3.
Componentes da camada de negócios - implementa a
funcionalidade do núcleo do sistema e encapsula a lógica de negócios relevante. Nessa camada, podemos encontrar o seguinte: Fachada de aplicação - simplifica a interface dos com
ponentes de lógica de negócios. Reduz dependências, porque os chamados externos não precisam saber os de talhes dos componentes, assim como suas relações.
Lógica de negócios - toda e qualquer lógica de apli cação relacionada à recuperação, ao processamento, à transformação e à gestão de dados do aplicativo, po dendo ser subdividida em:
Componentes de fluxo de trabalho - depois que uma entrada é reconhecida na interface com
o usuário, e é enviada para a camada de negócios,
esses componentes podem usá-la para processar
e executar ações. Apresenta várias etapas, poden
do ser implementado por meio de ferramentas de gestão de processos de negócios
Componentes de entidades de negócios - encap-
sulam a lógica dc negócio e dados necessários para a representação de elementos do mundo real, assim como clientes, ordens etc.
Modelos e projetos arquitetônicos
4.
Componentes da eamada de dados - fornecem acesso a
dados na mesma locação e com os que são expostos cm re
des. Nessa camada, podemos encontrar os seguintes tipos de
componentes: Componentes de acesso a dados - abstraem a lógica necessária para acessarem dados subjacentes.
Dados auxiliares e utilitários - diminuem a complexi dade dos componentes de acesso a dados.
Acesso a dados que utiliza lógica comum pode ser
aplicado a componentes auxiliares rcutilizáveis. Já tarefas que não são comuns a todos os compo
nentes, podem ser implementadas cm componen tes utilitários separados. Agentes de serviços - úteis quando um componente
deve utilizar a funcionalidade fornecida por um serviço externo, gerenciando essa comunicação. Oferecem ser
viços adicionais como cache e suporte off-line. 5.
Componentes transversais - algumas tarefas demandam
mais de uma camada. Componentes transversais criam fun
cional ides que podem ser acessadas de qualquer camada para
outra. Aqui, podemos encontrar o seguinte: Componentes de implementação de segurança - in
cluem componentes que farão a autenticação, a valida ção c a autorização dc acesso. Componentes para implementar funções de gestão
operacional - incluem políticas dc exceção dc mani
pulação, contador de desempenho, entre outros. Componentes de implementação de comunicação - ser
viço de comunicação com outras aplicações ou serviços.
Orientada a objetos A modelagem orientada a objetos consiste em um sistema em
que a aplicação é baseada em objetos rcutilizáveis e independen tes. Cada um deles deve ter atribulos/propriedades e métodos per tinentes à sua função. Em vez de uma série de rotinas c instruções dc processos, esse
tipo de design consiste em uma série de objetos que colaboram
83
84
Arquitetura para computação móvel
entre si, utilizando interfaces. Por meio delas são chamados méto dos para acessar propriedades dc outros objetos.
PARA SABER!
Objetos são discretos, independentes e de baixo índice de acoplamento (MEIER etal. 2009).
Os princípios que baseiam esse tipo de arquitetura são os seguintes:
Abstração - permite reduzir uma operação complexa cm uma única generalização. Naturalmente, as características
básicas da operação cm si são mantidas. Em outras palavras, a classe abstrata c um tipo dc classe que pode ser herdada, mas não pode ser instanciada. Ou seja, podemos dizer que
esse tipo de classe é conceituai e define funcionalidades para
que suas subclasses (classes que herdam dessa classe) pos sam implementá-las de forma não obrigatória. Repare que, ao
definir um conjunto de métodos na classe abstrata, não é de
total obrigatoriedade a implementação de todos os métodos em suas subclasses. Uma classe abstrata obriga todas as clas ses estendidas a implementarem seus métodos. Composição - seus objetos podem ser criados a partir de ou tros objetos já existentes. Essa parle interna, criada posterior
mente, pode ser ocultada de outras classes c interfaces. Herança - objetos podem herdar características, proprieda
des e métodos. Isso, naturalmente, facilita as atualizações e as modificações. Qualquer dado modificado no objeto base,
também será modificado nos objetos que herdaram as carac
terísticas que foram alteradas. Encapsulamento - objetos são encapsulados para trocar
funcionalidades somente por meio de métodos. Lembre-se de
que é a interface pública do objeto que faz essa interação. Demais informações, como variáveis, mantêm-se ocultas aos outros objetos. Isso facilita a sua manutenção, uma vez que
não afeta todo o sistema.
Modelos e projetos arquitetônicos
Polimorfismo - substituição do comportamento dc um tipo
base que suporta determinadas operações por meio de tipos que são intercambiáveis com o objeto em si.
Dissociação - objetos podem ser dissociados em uma interface geral abstrata. Geralmente, isso acontece para que o usuário final possa compreender o software.
Na prática, você vai reparar que a arquitetura orientada a ob jetos é bastante usada em sistemas com operações financeiras e
científicas complexas. Clientes, empresas, bem como outros ele mentos do mundo real, são representados dentro dc um domínio dc negócios, na forma dc objetos abstratos.
Alguns dos benefícios dc utilizar a arquitetura orientada a ob jetos são os seguintes:
Compreensível - a aplicação desse método estreita a ligação dos objetos com elementos do mundo real. Reutilizável - com esse método, é possível munir-se de ob
jetos reutilizáveis por meio do polimorfismo e da abstração.
Extensível - encapsulação, polimorfismo e abstração garan
tem que as alterações feitas nos dados não afetem a comuni cação com outros objetos. Ou seja, mesmo com mudanças
internas, a interface continua realizando sua função de comu
nicar os elementos entre si. Altamente coeso - para aumentar a coesão, pode-se deter minar métodos c recursos específicos cm um único método,
usando outros para demais conjuntos dc recursos.
Arquitetura baseada em componentes Abordagem da arquitetura A estrutura da arquitetura baseada em componentes conside ra o sistema em si, os objetivos da empresa ou a organização, e o usuário final. A arquitetura tem como foco a maneira como os
elementos e os componentes de uma aplicação se comportam, interagem e são usados por outros componentes.
Para realizarmos uma arquitetura sólida devemos considerar os seguintes itens:
85
86
Arquitetura para computação móvel
Como o usuário manipulará a aplicação? Como o software será relevante para a empresa ou a organização?
Quais são os requisitos de atributos de qualidade que serão
aplicados (como segurança, desempenho, entre outros)?
Como a aplicação será flexível o bastante para suportar atualizações?
Quais tendências arquitetônicas podem afetar o software com
o tempo?
Uma boa arquitetura é capaz de: Realizar a análise dc requisitos.
Compreender os casos dc uso. Implementar os casos dc uso. Você também precisa se preocupar com um bom design, pois ele deve ser eficiente para lidar com a defasagem de software e com as limitações de hardware, estando sempre apto para mudan
ças e upgrades. Em uma arquitetura baseada em componentes, o arquiteto deve se preocupar com os seguintes fatores:
Detalhar a estrutura do sistema, mas sem deixar dc esconder
os detalhes da implementação.
Implementar todos os casos dc uso e cenários.
Abordar as necessidades do maior número de interessados. Lidar com requisitos funcionais e não funcionais.
©
PARA SABER!
Requisitos funcionais definem a função de um sistema de software ou de seus componentes. Os requisitos funcionais podem ser cálculos, detalhes técnicos,
manipulação de dados e de processamento, ou qualquer outra funcionalidade
específica que define o que um sistema será capaz de realizar.
Tendências arquitetônicas O modo de fazer a arquitetura de software envolve as decisões
do próprio arquiteto, não existindo um padrão fixo para determi nadas demandas, ou seja, tudo pode variar. Por exemplo: duas
Modelos e projetos arquitetônicos
empresas dc telefonia precisam da mesma arquitetura dc software
e contratam o mesmo arquiteto. A função final do sistema desen volvido para cada empresa pode até ser igual, mas a arquitetura
em si varia conforme elementos, tais como: profissionais, funcio nalidades, fluxo de trabalho.
Além disso, você já sabe que uma boa arquitetura precisa ser adaptável a alterações. Isso porque, com o tempo, softwares
tornam-se obsoletos, assim como o hardware para o qual ele foi
desenvolvido. Exatamente por esse motivo, você precisa acompa nhar as principais tendências na prática arquitetônica. Isso previne
que o seu software desvalorize e/ou não tenha mais utilidade em pouco tempo, além de torná-lo apto para mudanças futuras.
A seguir, veja alguns dos principais caminhos para constituir
uma boa arquitetura do seu software. Poder ao usuário - uma aplicação que suporta a tomada de
decisões pelo usuário torna-se, naturalmente, mais flexível.
Isso porque ele será configurado totalmente segundo a expe riência de quem utiliza o software. Oferecer a opção para o usuário de interagir com a aplicação, em vez de ditar ordens,
faz com que quem utilize o software o programe e o configu re segundo suas necessidades, otimizando a relação usuário/ máquina.
Maturidade de mercado - aproveite tecnologias existentes, construindo algo de maior desempenho tendo como base uma
aplicação já existente, cm vez dc criar do zero algo que já
existe. Isso será possível devido à reusabilidade dc elementos já existentes, ou seja, herdar características já prontas c adi cionar funcionalidades novas.
Design flexível - neste caso, o foco é a redução de acopla
mento. Isso possibilita a reutilização de modelos, tornando a sua aplicação mais flexível. O padrão de arquitetura SOA, que você viu no primeiro tema desta unidade, é um forte alia
do na flexibilização de uma aplicação. Tendências futuras - considere sempre as possíveis me
lhorias em questão de hardware, o uso crescente de novas tecnologias, as mudanças de paradigma c as diversas outras
mudanças que podem afetar sua aplicação futuramente.
87
88
Arquitetura para computação móvel
Princípios fundamentais de arquitetura Ao criar sua arquitetura de software com base em componen
tes, considere os seguintes tópicos: Construir para mudar e não construir para durar - pense
que o seu software precisa se adaptar sempre às novas rea
lidades, necessidades e tecnologias. Invista na flexibilidade. Analisar e reduzir riscos - use ferramentas dc modelagem e
design para visualizar melhor a sua arquitetura e design, en
contrando possíveis erros com mais facilidade. Uma forma dc fazer isso e usando a linguagem dc modelagem dc software, por exemplo a UML ( Unified Modeling Language). Conside
re também as mudanças que o software pode sofrer. Lembre-se de que na criação de uma arquitetura, você nunca deve
imaginar um modelo pronto e já finalizado. Pense em um processo
em que existe a possibilidade de incrementar e adicionar elementos. Comece pela linha base da arquitetura, para evoluir aos pou cos, levando em consideração requisitos necessários e pressu postos. Assim, detalhes aparecerão com base no que você cria, à
medida que os testa. Um erro comum dos arquitetos é dedicar-se demais aos detalhes muito rapidamente, o que pode levar a esco
lhas erradas, atrasando o trabalho.
Princípios de arquitetura O foco da arquitetura com base cm componentes está na de
composição da estrutura dc funcionalidade. Cada estrutura possui
sua interface de comunicação, encapsulando componentes res ponsáveis por funções específicas.
Partindo desse preceito, o nível de abstração é alto. Para isso, lemos algumas chaves que são princípios importantes para esse
método. Duas dessas chaves, o reúso e a extensihilidade, já foram vistas nos tópicos anteriores. Além dessas duas, lemos:
Encapsulamento - componentes devem ser encapsulados, garantindo que os processos ou as variáveis internas não se
jam revelados ao resto do sistema. Toda a comunicação é fei ta por meio da interface do componente.
Independência - deve ser mantido o mínimo de dependên cia entre os componentes. Até mesmo pelo fato de poderem
Modelos e projetos arquitetônicos
ser divididos em vários servidores físicos. Isso garante que a
alteração ou a atualização de um componente não irá afetar outros, ou o sistema como um lodo.
Vantagens e desvantagens Agora, vamos ficar atentos a algumas vantagens e desvanta gens nas considerações feitas no item anterior. São elas:
A manutenção explícita de um componente pode ser a prin cipal forma de editar informações. O desenvolvedor irá
detalhar todas as alterações que devem ser feitas, mas é ne cessário que o arquiteto lenha um conhecimento profundo e
detalhado do funcionamento do componente. Isso pode trazer
complicações. Em linguagem Java, voce pode criar uma relação de heran
ça entre os componentes. Esse é apenas outro nome para a
relação dc extensão, que você já leu nesta unidade. E um facilitador, pois economiza tempo e otimiza o seu projeto. No entanto, é necessário ter conhecimento detalhado da sua
superclasse, para não correr o risco de herdar elementos desnecessários. Você já sabe que o encapsulamento protege informações de
um componente, e que a principal vantagem dessa técnica é a
facilitação de comunicação entre componentes antes incom patíveis. Isso acontece porque tudo o que é usado na comuni
cação é apenas a interface. Mas, por outro lado, pode existir
uma sobrecarga de implementações na sua aplicação, se to dos os seus componentes forem encapsulados - até mesmo aqueles que não necessitam de uma interface própria para se
relacionarem com outros elementos.
Implementação prática Para implementar e executar seus componentes, mesmo que
alocados em servidores diferentes, você pode usar o Enterprise Java Beans. Esse sistema é desenvolvido pela Sun Microsystems e
permite que você interconecte componentes remotos cm sistemas
empresariais, por exemplo. Você também pode reutilizar compo nentes por meio dessa aplicação.
89
90
Arquitetura para computação móvel
Exercícios de fixação 1. A figura a seguir está relacionada à arquite tura baseada em componentes. Explique.
2. Ao longo desta unidade, foram apresen tadas algumas categorias de arquitetura, bem como os estilos respectivos a cada uma delas. Escolha uma categoria e dis corra sobre seus estilos. 3. Explique com suas palavras os concei tos de arquitetura base e sua importân cia para a arquitetura candidata. 4. A partir da figura a seguir, faça as atividades: a. Identifique os erros e coloque as eta pas na ordem correta. b. Explique o modelo do qual esses pas sos fazem parte.
5. "O objetivo dos cenários-chave é alcançar um equilíbrio entre os objetivos do usuá rio, do negócio e do sistema". (MEIER et al., 2009, p. 41). Com base na citação, qual é a importância prática dos cenários-cha ve na elaboração de uma boa arquitetu ra? Dê exemplos.
Modelos e projetos arquitetônicos
91
Estudo de caso Como funciona o Uber Voucher, nova forma de pagamento do aplicativo Empresas podem cobrir os custos de viagem para colaboradores e clientes
O Uber Voucher é a nova aposta da Uber para empresas. O serviço de transporte para An droid e iPhone (iOS) permite que as viagens feitas por clientes e colaboradores sejam custeadas pela companhia por meio de um cupom. A cortesia é gerada por um painel de controle no Uber para Empresas e o aba timento é feito ao confirmar o endereço da corrida. Os tickets obedecerão a regras corpo rativas, que podem definir data de expiração e destino para o qual a viagem é válida. A ideia do aplicativo é oferecer um sistema capaz de atrair e fidelizar consumidores. As firmas que aderem ao recurso conseguem acompanhar a corrida dos colaboradores, além de estabelecer regras e administrar os pagamentos. A partir do painel de controle,
também é possível enviar o carro para um local determinado quando a empresa quiser proporcionar viagens aos clientes. As cobran ças são efetuadas na conta corporativa da Uber para Empresas. As pessoas que tiverem o Perfil Trabalho não conseguem usar o vou cher, mas é possível indicar outro perfil para resgatar o benefício. A plataforma oferece um suporte dedicado à incorporação e transição do serviço. Outra maneira para implementar o uso do Uber Voucher é uma API (Application Programming Interface ou Interface de Programação de Aplicações, em português), que habilita uma integração direta à plataforma do cliente. Fonte: Ferreira (2019).
REFLITA! De acordo com os conceitos de interoperabilidade e SOA, como pode ser defi nida a arquitetura para essa API? 2. Reúso é uma característica predominante para uma arquitetura SOA. Para essa API, pode ser definida essa característica? 3. Construa uma estrutura baseada em componentes para essa API.
1.
92
Arquitetura para computação móvel
Na mídia Sucesso com SOA na CISCO Harvinder Kalsi, arquiteto líder do domínio SOA/BPM na Cisco, apresentou um estudo de caso em dezembro no SOA Consortium meeting em Santa Clara na adoção de uma abordagem holística de SOA para supor tar Commerce Transformation Initiative da Cis co que visa transformar a Cisco de fornecedor de equipamentos de rede a fornecedor de soluções. Harvinder vê SOA como sendo: "as políticas, princípios e frameworks que oferecem capacidades de negócio a ser prestado e consumido como conjunto de serviços." Ele enfatiza: "Os Serviços em SOA são serviços de negócio... atualização de uma citação do cliente é um serviço de negócio, atualização de um registro em um banco de dados não é". Em sua opinião, nós estamos em um momen to crucial para SOA. Ele argumenta que a par tir de 2008, o padrão e as tecnologias estarão bastante maduras enquanto o interesse dos negócios está crescendo. Neste estudo de caso o negócio foi o principal driver por trás do desenvolvimento SOA. Eles estabeleceram suas estratégias SOA uti lizando quatro passos para o processo de maturidade: 1. Serviço permite sistemas legados 2. Criar uma camada de serviço de negócios
3.
Atingir a excelência dos processos de negócio 4. Dar visibilidade ao negócio Eles veem vários benefícios gerados pela abordagem SOA: ■ Reusabilidade ■ Agilidade ■ Impacto mínimo para mudança Finalmente, em sua opinião SOA permite pe gar a funcionalidade que a Cisco tem inter namente e a oferecer ao seu ecossistema de parceiros, ampliando os benefícios para toda a cadeia de estoque. Ele nota que há, entretan to muito ceticismo:"As pessoas não acreditam que possa acontecer." Em particular ele vê que SOA tem desafios inerentes: ■ Disponibilidade (SLA) ■ Performance ■ Segurança (e propagação de identidade) ■ Excelência Operacional ■ Governança Em última análise a parte mais difícil da Com merce Transformation Initiative foi que seus sis temas legados tornam-se difíceis. Fonte: DUBRAY, J.-J. Sucesso com SOA na CISCO. InfoQ,
9 fev. 2009. Disponível em: . Acesso em: 4 maio 2019.
Modelos e projetos arquitetônicos
93
DISCUTA! 1. 2. 3.
Quais são os desafios para a arquitetura SOA? Quais as vantagens de se utilizar a arquitetura SOA? Por que os sistemas legados podem ser tornar mais difíceis ao utilizar a arquite tura SOA na opinião do arquiteto da CISCO?
Na academia Desenvolvimento de apps no Brasil está em bom momento O mercado de apps continua em crescimento constante e não dá sinais de que vai mudar de figu ra tão cedo. De acordo com uma pesquisa divulgada este mês pela Canalys, as quatro principais lojas de aplicativos - iTunes App Store, Google Play, Windows Phone Store e BlackBerry World - atingiram a marca de 13,4 bilhões de downloads em todo o mundo no primeiro trimestre deste ano. Mas neste mercado, como fica a posição para desenvolvedores dentro do Brasil? De acordo com o instituto Ibope, cada vez mais, os smartphones se tornam o principal objeto de desejo dos consumidores brasileiros. Segundo os resultados, a penetração desses dispositivos no mercado nacional praticamente dobrou no último ano, atingindo a marca de 44%. A média global é de 48%. Fonte. Romer (2015).
Conforme a matéria sugere, a participação do Brasil no mercado de aplicativos móveis vem cres cendo. Sendo assim, pense no projeto de um aplicativo novo e crie apenas a camada da arquite tura base. Lembre-se de que, conforme a sua concepção, algumas escolhas podem ser melhores do que outras. Documente a criação e explique sua usabilidade e afins.
Recapitulando Esta unidade apresentou os principais funda mentos teóricos dos principais estilos arquite tônicos atuais. Esperamos que você, após esses estudos, se sinta mais confiante para criar seus próprios aplicativos, principalmente móveis. Aqui, você aprendeu que os principais estilos ar quitetônicos são divididos em categorias, a partir de seu principal foco: comunicação, implantação, domínio e interação. Você conheceu os padrões
de serviço orientado a objetos, message-bus, client/server e tier. Cada um desses estilos tem suas próprias características e particularidades. Sendo assim, o uso deles não é obrigatório em determi nadas situações. Na verdade, cada situação (clien tes, usuários finais, objetivos do programa etc.) é que decide qual dessas estruturas é a ideal. Você também relembrou e estudou os prin cipais pilares da arquitetura baseada em
94
Arquitetura para computação móvel
componentes: objetivos da empresa, sistema e usuário. Esperamos que você tenha fixado a ideia que melhor define a relação entre esses três pontos: construir uma ponte entre os três objetivos, para que trabalhem em uníssono, em plena capacidade. Em arquitetura de software, muitas decisões pa recem ser subjetivas, mas o ponto de partida, isto é os problemas a serem solucionados e os obje tivos a serem alcançados, devem ser sempre o ponto de partida para criar uma solução. Naturalmente, não fazemos esses projetos sozinhos. O trabalho é feito com equipes de
desenvolvedores, além do diálogo aberto e di reto com nossos clientes, sejam empresas ou pessoas. Detalhes como objetivos e definição da usabilidade do sistema só serão captados com precisão após esse diálogo. E, como em todos os outros campos das ciências, uma escolha que não seja bem ponderada pode trazer atrasos ou prejuízos. Por isso, lembre-se sempre de testar sua arquitetura durante o pro cesso de elaboração. Erros acontecerão e isso é normal, mas corrigi-los antes da finalização é o segredo para um produto final terminado em menos tempo e com mais qualidade.
PONTOS IMPORTANTES Sistema é uma interação entre usuários, objetivos e o sistema em si. Esses três elementos formam os pilares da arquitetura de software. A arquitetura e o software devem ter um design flexível, isto é, serem capazes de adaptar-se a diversos tipo de situação e objetivos. ■ Existem diversos padrões ou estilos de arquitetura, que é a forma que a arquite tura vai apresentar. Esses padrões são divididos em quatro categorias principais: comunicação, implantação, domínio e estrutura. Padrões de comunicação: Arquitetura orientada a serviços (service-oriented architecture, SOA): organiza os sistemas em serviços, que se comunicam por protocolos; cada serviço tem autonomia e pode ser substituído ou alterado, o que re duz o acoplamento. Message-bus: diz respeito à troca de informações, com base no uso de um ou mais ca nais de comunicação; o sistema troca informações diferentes por meio de mais um canal de for ma única, evitando informações desnecessárias; bus (barramento) é o que faz a comunicação entre as aplicações. Padrões de implantação devem levam em conta as limitações do ambiente físico: ■ Implantação não distribuída: ideal para acessos finitos (como a intranet de uma organização); todas as camadas compartilham o mesmo hardware, o que minimiza o número de servidores, mas uma camada pode afetar todas as outras. Implantação distribuída: ■ ideal para sistemas maiores; as camadas residem em camadas separadas fisicamente, o que proporcio na ambientes e servidores exclusivos para cada operação.
Modelos e projetos arquitetônicos
■
95
Client/server: dispositivos clientes solicitam informações a um servidor que responde com as informações solicitadas; utiliza os conceitos de camadas e filas; clientes magros possuem uma única camada e não apresentam código de aplicação personalizado, enquanto clientes gordos possuem entre uma e três camadas (3-tier). Padrões de domínio: Domain model ou domain-driven design (DDD) -software baseado no do mínio de negócios, e seu núcleo contém uma linguagem comum comparti lhada, o que facilita a comunicação entre os elementos da aplicação. Para uma arquitetura atingir seus objetivos, é preciso seguir os seguintes passos: ■ identificar os objetivos da arquitetura; identificar os principais cenários; ■ criar uma visão geral do aplicativo; identificar os pontos principais; definir as soluções. Arquitetura base é a descreve o programa existente enquanto a arquitetura can didata é específica aos cenários criados. A estrutura de uma arquitetura pode ser baseada em componentes ou orientada a objetos. Arquitetura baseada em componentes fornece uma forma de isolar conjuntos específicos de funcionalidades dentro de unidades; os conjuntos de funcionalidades podem ser distribuídos e instalados separadamente; devem seguir os princípios da responsabilidade, aberto/fechado, da subs tituição, da segregação de interfaces e de inversão de dependência; devem evitar a sobrecarga de componentes, e um componente não deve confiar em detalhes internos de outros componentes. Arquitetura orientada a objetos a aplicação é baseada em objetos reutilizáveis e independentes, que pos suem atributos e métodos; os objetos colaboram entre si, utilizando interfaces; essa arquitetura é baseada nos princípios de abstração, composição, he rança, encapsulamento, polimorfismo e dissociação. Uma arquitetura sólida considera as seguintes questões: ■ como o usuário manipulará a aplicação? como o software será relevante para a empresa ou a organização? quais são os requisitos de atributos de qualidade que serão aplicados? como a aplicação será flexível o bastante para suportar atualizações? quais tendências arquitetônicas podem afetar o software com o tempo?
96
Arquitetura para computação móvel
■
Uma boa arquitetura: realiza a análise de requisitos; compreende os casos de uso; ■ implementa os casos de uso. ■ Os fatores considerados em uma arquitetura baseada em componentes sâo: detalhar a estrutura do sistema sem deixar de esconder os detalhes da implementação; implementar todos os casos de uso e cenários; ■ abordar as necessidades do maior número de interessados; ■ lidar com requisitos funcionais e não funcionais. ■ Principais caminhos para construir uma boa arquitetura de software: Poder ao usuário - suportar a tomada de decisões pelo usuário, o que torna a aplicação mais flexível. Maturidade de mercado - ter como base tecnologias existentes e consolidadas. Design flexível - reduzir acoplamento e reutilizar modelos. Tendências futuras - considerar as novas tecnologias e as possíveis mu danças de paradigma. Leve em consideração dois princípios fundamentais da arquitetura: construir para mudar, e não construir para durar, isto é, o software precisa se adaptar a novas realidades, necessidades e tecnologias, e analisar e reduzir riscos, isto é, visualizar melhor a arquitetura e o design para encontrar possíveis erros e considerar as mu danças que o software pode sofrer.
UNIDADE 3
WEBSERVICES E SERVIÇOS
CONHEÇA Os fundamentos e as técnicas de utilização de webservices.
REFLITA Sobre a importância da comunicação entre diferentes sistemas baseados em serviços.
DISCUTA Sobre o modelo de representação textual para comunicação baseado em XML.
APLIQUE Os conhecimentos adquiridos para criação de uma estrutura de webservices para interação entre vários sistemas.
#XML
#SOA
#WEBSERVICE
01 OBJETIVOS DE APRENDIZAGEM Compreender os conceitos de webservices.
Conhecer e aplicar, na prática, conceitos de XML (extensible Markup Language) e suas técnicas essenciais, como os namespaces. Dominar os princípios da SOA.
ARQUITETURA BASEADA EM WEBSERVICES O que é XML? Como se estrutura um documento XML? O que são elementos e atributos? Para que servem os namespaces? O que é um processador XML?
02
ARQUITETURA ORIENTADA A SERVIÇOS O que é um serviço? Como funciona a SOA? Quais as características dos serviços? Quais os modelos de serviços primários? O que é UDDI?
Webservices e serviços
99
Introdução No mundo em que vivemos, a troca de informa ção em escala global e em tempo real é cada vez maior. Isso muda os parâmetros e as necessida des das empresas, que precisam se adaptar a uma realidade extremamente dinâmica. Tendo em vista essas relações mundiais, um dos requi sitos mais valorizados na hora de contratar um novo funcionário é, justamente, o domínio que ele tem sobre outras línguas. Não é preciso ir muito longe para vivenciarmos essa realidade. Ao procurar por vagas de empre go, você já deve ter se deparado com especifica ções que diziam claramente que o domínio de uma língua estrangeira seria considerado um diferencial do candidato. Infelizmente, o nosso cérebro não é um banco de dados que podemos preencher com vocábulos estrangeiros do dia para a noite. 0 aprendizado é constante e, por vezes, pode levar muito tempo até que domine mos a semântica de outra língua. Inclusive, mui tas vezes aprendemos a dominar outra língua por meio de associações. Por exemplo: a frase "eu te amo" corresponde a "Hoveyou", em inglês, e a "te quiero", em espanhol - três frases com o mesmo significado que são escritas de forma completamente diferente. Mas imagine um tipo de linguagem universal, que traduza as três frases ("eu te amo", "Hoveyou" e"te quiero") em um único código que todo mun do conheça. Digamos, então, que essa frase cor responda a"". Ora, sempre que qualquer pessoa se deparasse com "", ela saberia
que aquilo significaria "eu te amo" em sua língua nativa, seja ela qual for. Isso certamente facilita ria o estudo de idiomas, não?
Pois esta é exatamente a proposta da Lingua gem de Marcação Estendida, o XML (em inglês, extensible Markup Language). Ela é nada mais que um documento de descrição extremamente portátil. Isso porque ele é organizado por marca ções. Essas marcações definem e localizam da dos específicos. Como essa linguagem também é independente de software e hardware, qualquer local que importar um documento XML será ca paz de identificar os dados necessários e arma
zená-los em seus próprios bancos de dados. Esse sistema de marcação (marcadores de aber tura [o] e de finalização []) torna o docu mento extremamente leve e, o mais importante,
legível. Claro que, com a diversidade de finalida des dos webservices, existem várias ramificações do XML, como os esquemas e as diversas formas
de processar o documento (aqui, abordaremos o SAX (Simple API for XML), o DOM (Document Object Model) e o JAXB (Java Architecture for XML Binding). Por fim, na segunda parte deste
capítulo, abordaremos a arquitetura orientada a serviços, das suas aplicações técnicas até o UDDI
- uma espécie de biblioteca digital, gratuita e aberta, em que você pode divulgar e conhecer diversas interfaces em HTML - afinal de con
tas, nada melhor do que curtir e compartilhar conhecimento.
100
Arquitetura para computação móvel
Arquitetura baseada em webservices XML O XML {extensible Markup Language) começou a ser uti
lizado como suporte à World Wide Web na década de 1990 mais precisamente em 1996. Ele surgiu a partir da necessidade
de se ter um modelo de representação textual para informações estruturadas e semiestruturadas que fosse extensível e, o mais importante, simples.
PARA SABER!
O W3C e suas recomendações
Com o advento da World Wide Web nos anos 1990, o mundo precisou encontrar padrões para torná-la acessível, no sentido prático, para o maior número possível
de pessoas. Foi para isso que foi fundada em 1994 a World Wide Web Conscortium, a W3C. Ela é um consórcio internacional que compreende mais de 400 membros
entre empresas, ONGs e organizações governamentais. Eles têm o intuito de criar alguns padrões de arquivos e dados legíveis a qualquer máquina, independente mente de hardware, software ou tecnologia.
Alguns padrões W3C são inevitavelmente utilizados por programadores, como as linguagens CSS, XHTML e o próprio XML. Outros padrões estão bem mais pró
ximos do público considerado leigo: imagens salvas nos formatos JPG e PNG, por exemplo, são consideradas dentro do padrão W3C: essas duas extensões são recomendadas por esse consórcio. Elas poderão ser reconhecidas por meio de
qualquer tecnologia e dispositivo em todo o mundo.
De fato, o conceito dc marcação generalizada (GM. na sigla
em inglês), com o qual o XML trabalha, é de fácil assimilação.
Ele é caracterizado por marcadores que são identificados pelos sinais o, por exemplo. Dessa maneira, a palavra “bold” (do inglês, negrito) acrescida dos sinais forma o marcador .
Essas tags são separadas em “de início" e “de fim". Por exem plo, é uma tag que indica o início de conteúdo em negrito. Já , sinaliza onde o negrito deve ser finalizado. Como você pode
perceber, a adição da barra “/" sinaliza a tag de encerramento.
Webservices e serviços
101
No exemplo a seguir, temos várias marcações que indicam que
um livro apresenta um único título e vários autores:
NA PRÁTICA
Building Web Services with Java
Steve Graham Simeon Simenov Toufic Boubez
Doug Davis Glen Daniels Yuichi Nakamura
Ryo Neyama
Se você usa a ferramenta Blogger, do Google, deve se lembrar
de que esse recurso pode ser usado ao clicar na aba HTML no
campo de criação de postagem. Essas tags também foram muito famosas em redes sociais como o Orkut, em que você podia editar os textos que publicava por meio de marcações como ..., PARA SABER!
..., entre outras.
Veja, no Quadro 3.1, algumas das marcações mais conhecidas Muitas especificações são
em XML.
construídas em XML para
estender suas capacidades
Quadro 3.1 Marcações em XML
e permitir o seu uso em
Tag
Tipo
uma ampla gama de
cenários. Ele tornou-se
Marcadores de estruturação
, ,
,
Marcadores de formatação
,
de informações estruturadas
Marcadores de inserção de links/imagens
,
e semiestruturadas
Marcadores de inserção de dados
, ,
(GRAHAM et al, 2004).
Agora que já fomos apresentados aos conceitos básicos do XML,
podemos nos aprofundar nos padrões dessa linguagem que são as
bases para serviços de web. Webservices apresentam a maior gama de utilização de XML. Os padrões que estudaremos são os seguintes:
padrão em representação
102
Arquitetura para computação móvel
instâncias XML; esquemas XML;
espaços de nome em XML (XML Namespaces); processamento XML.
Antes de nos aprofundarmos nesses lemas, vamos compreen
der os conceitos de document centric e data centric.
Document centric O XML teve uma rápida aceitação em representação de do
cumentos semiestruturados. Esses documentos fazem a media ção homcm-máquina. Isso porque, além dc um computador ler
e compreender um documento XML, você também pode com preender do que se trata o conteúdo do documento, já que ele
pode ser nada mais que um documento de texto organizado logicamente por marcações. Ou seja, onde você normal mente leria “José Alencar”, em XML você teria: “José
Alcncar”. Os elementos-chave desses documentos XML de modelo se-
miestruturado que usa o document centric são textos de marcação.
No exemplo a seguir, temos um bom modelo dessas marcações (, por exemplo, que indica que a palavra ficará em negrito).
Note que são definidos de modo bem genérico e vago:
NA PRÁTICA Skateboard Usage Requirements
In order to use the FastGlide skateboard you have to have:
If
you
to Getting on
the
Boardc/
have
LINK>.
e . Isso significa que sua finalização deve ser alinhada, espelhada. Isso
nos dá, então, a finalização na seguinte ordem: , e . Isso é necessário porque você cria uma hierarquia de estrutura quando coloca determinada ordem de marcações. É como quando você monta uma pilha com peças de Lego: depois de encaixar uma
peça em cima da outra, você não consegue desmontar a pilha pela peça do meio. Você, então, deve iniciar a desmontagem retirando
primeiro a última peça que foi colocada. No esquema das marca
ções é a mesma coisa. Os exemplos a seguir estão incorretos. No primeiro, I c B não
são finalizados corretamente. O mesmo acontece com P e B no seguinte.
Texto em negrito e itálico em um parágrafo
105
106
Arquitetura para computação móvel
Texto em negrito e itálico em um
parágrafo,
Atributos Você pode adicionar atributos nas suas marcações. Lembre-
-se de que um atributo é um par de nome-valor. A sintaxe envol
ve o sinal de igualdade (=), que é seguido de um valor constante.
Os valores são colocados entre aspas simples (‘) ou duplas (“). No exemplo a seguir, o elemento po de uma ordem de compra
tem dois atributos: id e submitted.
NA PRÁTICA ...
Atributos que começam com xml: são reservados a especifica ções XML. Xml: lang, por exemplo, c usado para identificar a lín gua cm que o texto do atributo é escrito. Veja o exemplo a seguir, que identifica o atributo como escrito em inglês (“en”)
NA PRÁTICA description xml
ck;
:
lang="en">Skateboard backpa
five pockets
Escape Você já usa caracteres especiais na sintaxe dc XML. Por exem
plo,
entre outros. Isso significa que se você usar es
ses mesmos caracteres dentro de elementos XML, seu documento vai gerar um erro.
Para evitar situações como essa, você pode substituir esses ca
racteres “proibidos” por uma sequência de escape. Existem cinco sequências predefinidas, que estão listadas no Quadro 3.2.
Webservices e serviços
Quadro 3.2 Sequências de escape.
Caractere
Sequência de escape
&
&apm;
/
'
"
Para que você compreenda melhor esse conceito, veja o exem
plo a seguir: se multa > 500 então
Nesse caso, o documento iria gerar um erro. Repare que “” são os sinais dc abertura c fechamento dc marcações. Usar o símbolo “>” entre as marcações geraria o erro. Para contornar a situação, a mesma linha deveria ser escrita da seguinte forma:
se multa > 500 então
Namespace A propriedade namespace é um recurso do XML para evitar
conflito de nomes de elementos. Um problema comum é a ocor rência de elementos com o mesmo nome. Considere o exemplo de documento XML a seguir, observe que neste documento existe a repetição do elemento
uva | maçã |