Escolar Documentos
Profissional Documentos
Cultura Documentos
By:
Guilherme Germoglio
Arquitetura de Software
By:
Guilherme Germoglio
Online:
< http://cnx.org/content/col10722/1.9/
>
CONNEXIONS
Rice University, Houston, Texas
This selection and arrangement of content as a collection is copyrighted by Guilherme Germoglio. It is licensed under the Creative
Commons Attribution 3.0 license (http://creativecommons.org/licenses/by/3.0/
Collection structure revised: January 5, 2010
PDF generated: October 27, 2012
For copyright and attribution information for the modules contained
in this collection, see p. 254.
Table of Contents
1
2
3
4
Mensagens do Livro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Introduo a Design de Software . . . . . . . . . . . . . . . . . . . 9
Estudo de Caso: SASF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Fundamentos de Arquitetura de Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5 Stakeholders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
6 Atributos de Qualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
7 Tcnicas de Design Arquitetural . . . . . . . . . . . . . . . . . 165
8 Documentao da Arquitetura . . . . . . . . . . . . . . . . . . . 189
Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Attributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
iv
Chapter 1
Mensagens do Livro
1 This
content
is
available
<http://cnx.org/content/m17526/1.7/>.
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
online
at
CHAPTER 1.
MENSAGENS DO
LIVRO
O design a estrutura ou o comportamento de um sistema que resolve ou contribui para a resoluo das foras
que atuam sobre esse sistema.
CHAPTER 1.
MENSAGENS DO
LIVRO
Documentar a arquitetura tem impacto negativo na impreciso da especicao, que fonte de complexidade do
sistema.
Stakeholders
inuenciam
arquitetura
de
diversas
os desenvolvedores;
os testadores;
os responsveis pela integrao do software com outros sistemas;
os mantenedores do software;
os designers de outros sistemas;
o gerente do desenvolvimento;
o time de controle de qualidade do software.
A arquitetura se preocupa principalmente com os requisitos no-funcionais, no apenas tcnicos, mas tambm
relacionados a negcio.
CHAPTER 1.
MENSAGENS DO
LIVRO
desempenho;
escalabilidade;
conabilidade;
disponibilidade;
segurana;
manutenibilidade;
portabilidade;
extensibilidade.
desempenho e escalabilidade
segurana
tolerncia a faltas
compreensibilidade e modicabilidade
operabilidade
O documento de arquitetura auxilia no processo de design, uma ferramenta de comunicao entre stakeholders e pode servir de modelo de anlise do software.
Um nico diagrama no suciente para conter a quantidade de informao que deve ser mostrada por um arquiteto.
arquitetura.
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
CHAPTER 1.
MENSAGENS DO
LIVRO
Chapter 2
Introduo a Design de
Software
1
Antes de comearmos o estudo e a prtica na disciplina de Arquitetura de Software, apropriado sabermos onde ela se encaixa ao longo do Corpo de Conhecimento em Engenharia de
Software (Software Engineering Body of Knowledge). Design
arquitetural, ou projeto da arquitetura, a primeira das duas
atividades que compem a rea de conhecimento de Design
de Software (Software Design Knowledge Area). A atividade
seguinte design detalhado.
sign, o design arquitetural se faz por uma mistura de conhecimento e criatividade. Como criatividade algo que se obtm
atravs da experincia, no nosso objetivo ensin-la. No entanto, buscamos ao longo desse livro transmitir o conhecimento
necessrio para a criao de arquiteturas de sistemas de software.
Certamente, uma base conceitual em Design de Software
necessria para uma melhor compreenso desse livro.
Dessa
1 This
content
is
available
<http://cnx.org/content/m17494/1.26/>.
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
online
at
CHAPTER 2.
10
INTRODUO A
DESIGN DE SOFTWARE
leitor nessa rea, de forma que sua importncia e seus benefcios proporcionados sejam reconhecidos. Em outras palavras,
esse captulo far com que o leitor seja capaz de:
11
importantes que levem ao sucesso do sistema. J a outra atividade beneciada pelo design a prpria construo do sistema,
dado que ele tambm serve como guia para a implementao
do software.
A seguir, mostramos um exemplo de quando o design permite a
avaliao do software. O Exemplo 2.1 mostra parte da primeira
verso do design de um sistema distribudo de armazenamento,
o HBase
Exemplo 2.1
O HBase um sistema de armazenamento distribudo.
Isso quer dizer que os dados submetidos a ele no sero
guardados em um nico servidor, mas em vrios. De
forma simplicada, o design do HBase dene dois tipos
de entidades no sistema: o data node, que o subsistema que armazena os dados, e o master node, que
o subsistema que sabe em quais data nodes os dados
foram escritos e podem ser recuperados. Na primeira
verso do HBase, s existia um master node que coordenava todos os data nodes. Assim, para recuperar
ou escrever dados no HBase, um cliente realizava os
seguintes passos: primeiro, o cliente se comunicava com
o master node a m de conseguir, de acordo com uma
chave , o endereo do data node em que ele pode realizar a operao desejada (leitura ou escrita).
Em
2 Apache
HBase :
urlhttp://hbase.org
CHAPTER 2.
12
INTRODUO A
DESIGN DE SOFTWARE
Se avaliarmos este design, podemos perceber duas caractersticas do HBase. A primeira, que ele no adota
o uso de um cliente magro (thin client). Com isso, a
implementao e congurao do cliente se torna mais
complexa, uma vez que o cliente precisa conhecer o protocolo de escrita e leitura do HBase, alm de precisar
acessar tanto o master node quanto os data nodes. Isto
diculta o desenvolvimento, a operabilidade e a eventual evoluo do software, uma vez que mudanas no
protocolo afetam clientes e servidores. Alm disso, por
possuir apenas um master node, a funcionalidade do
HBase ca condicionada sua disponibilidade. Anal,
se o master node estiver inacessvel, nenhum cliente
poder ler ou escrever no sistema, o que o torna um
ponto nico de falhas.
J quando o
13
apenas
parte
do
design
de
dois
sistemas,
eles
4 Freny Katki
CHAPTER 2.
14
INTRODUO A
DESIGN DE SOFTWARE
Como desen-
Exemplo 2.2
Considerando o sistema do Exemplo 2.1 e que um
de seus objetivos fosse a alta disponibilidade, podemos avaliar que design apresentado no seria a melhor
soluo para o objetivo proposto. Isso ocorre porque
seu design possui um ponto nico de falhas, que uma
caracterstica indesejvel para sistemas que buscam
alta disponibilidade. Note ainda que no foi necessrio
ter o HBase desenvolvido para percebermos esse problema (na poca em que implementava tal design, ele
possua cerca de cem mil linhas de cdigo e alguns anos
de desenvolvimento e, portanto, no sendo um software
de desenvolvimento trivial), bastou apenas estudarmos
seu design.
Design de software estimula modelagem. Ao modelar um sistema, o designer se concentra no domnio do problema, ignorando temporariamente detalhes menos signicativos para se
alcanar a soluo. Isso facilita na separao da complexidade
essencial da complexidade acidental do problema. E, como j
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
15
dito por Fred Brooks em The Mythical Man-Month, essa separao benca para a qualidade nal do sistema projetado.
Design de software envolve planejamento. Uma vez que o design serve de guia para a construo do sistema, o designer deve
ento antecipar o que ser necessrio para tanto. Esse planejamento ajuda na estimativa dos diversos custos envolvidos no
desenvolvimento do sistema. Entre esses custos, podemos citar:
Design de software facilita a comunicao, pois contm conhecimento sobre o sistema que pode ser gravado, transmitido
e discutido entre os interessados. Um caso bem comum o de
apresentar um sistema a novos membros de um time de desenvolvimento. Informaes valiosas, como por exemplo, quais os
principais mdulos e seus diversos comportamentos, lhes podem ser passadas atravs do design do sistema antes de mostrlos o cdigo-fonte.
nvel de abstrao ajudaro a situ-los no cdigo posteriormente. No entanto, o design no serve apenas para os desenvolvedores.
CHAPTER 2.
16
INTRODUO A
DESIGN DE SOFTWARE
Exemplo 2.3
Um caso conhecido de produto com falhas por avaliao inadequada o caso de um sistema de controle de armamento para cruzadores da marinha norteamericana que foi desenvolvido pela empresa Aegis.
Depois
de
desenvolvido,
sistema
de
armamento
Poste-
17
5 Uma descrio mais completa deste caso pode ser encontrada no artigo
CHAPTER 2.
18
INTRODUO A
DESIGN DE SOFTWARE
Figura 2.1:
19
2.2.1 Objetivos
O processo de design tem incio com uma necessidade. Se algo
projetado, e consequentemente construdo, porque o produto
proveniente do projeto suprir essa necessidade.
Em Engen-
CHAPTER 2.
20
INTRODUO A
DESIGN DE SOFTWARE
J no sistema da
21
2.2.2 Restries
O produto de design deve ser vivel. Dessa maneira, restries
so as regras, requisitos, relaes, convenes, ou princpios
que denem o contexto do processo de design, de forma que
seu produto seja vivel.
Exemplo 2.4
Consideremos que um cliente deseje um sistema com
um nico objetivo: o sistema deve decidir se um programa, cuja descrio informada como parmetro de
entrada, termina sua execuo ou no.
Um designer inexperiente pode at tentar encontrar alguma alternativa de design para esse requisito mas
podemos ter certeza que a tentativa ser em vo. Como
bem conhecido, h uma restrio terica em Cincia da Computao, conhecida como o problema da
parada, que impede o desenvolvimento de um programa capaz de alcanar o objetivo proposto.
Como
CHAPTER 2.
22
INTRODUO A
DESIGN DE SOFTWARE
de design que satisfaa o cliente, podemos observar que
um design pode ser se tornar invivel mesmo que seus
objetivos sejam bem claros.
Exemplo 2.5
Um cliente especica o seguinte requisito para seu sistema de software: ele deve ser capaz de ler dados de um
leitor de cartes de um modelo especco. No entanto,
ao estudar o requisito e, consequentemente, o leitor de
cartes, o designer encontra a seguinte restrio.
Uma possibili-
dade seria emular um dos sistemas operacionais suportados quando o software estivesse executando num ambiente no suportado. Isso signica que seria necessria
a criao de uma camada de abstrao entre o driver do
leitor e o sistema operacional onde o software est executando, onde essa camada representaria o ambiente
operacional suportado. Essa camada de abstrao, ento, seria implementada pelo sistema nativo ou por
um emulado, caso o nativo fosse o no-suportado pelo
driver. Outra possibilidade de design seria o projeto e
implementao do prprio driver para o ambiente no-
23
suportado.
2.2.3 Alternativas
Uma alternativa de design uma possibilidade de soluo.
Uma vez que problemas de design geralmente possuem mltiplas solues possveis, comum que sejam geradas mais de
uma alternativa para a soluo de um nico problema. Note
que o designer no necessariamente documentar todas as possibilidades de soluo, mas, ao menos, considerar algumas delas para eleio de uma soluo, mesmo que informalmente.
O processo
CHAPTER 2.
24
INTRODUO A
DESIGN DE SOFTWARE
Exemplo 2.6
De volta ao nosso programa de ordenao, consideremos apenas uma de suas caractersticas: o algoritmo
de ordenao a ser usado. Vamos observar quantas alternativas um designer poderia gerar s a partir dessa
caracterstica.
Uma rpida pesquisa na internet retorna nove algoritmos que respeitam o requisito imposto anteriormente
de crescimento do tempo de execuo (O (nlogn)):
binary tree sort, heapsort, in-place merge sort, introsort, library sort, merge sort, quicksort, smoothsort, strand sort. Assim, esses nove algoritmos poderiam ser transformados em nove alternativas de design.
O (nlogn),
Assim, ainda
25
2.2.4 Representaes
A representao a linguagem do design. Apesar do real produto do processo de design ser a representao de um sistema
de software que possibilita sua construo, descrever o sistema
no o nico propsito das representaes. A representao
tambm facilita o prprio processo de design, uma vez que
ajuda na comunicao dos interessados e tambm serve como
registro das decises tomadas.
Essas dimen-
ses so normalmente descritas em diferentes tipos de representaes, que, em outro momento, sero chamadas de vises.
Para exemplicar representaes de design, apresentaremos
duas dimenses derivadas do nosso programa-exemplo de ordenao usando duas representaes diferentes.
A primeira
estrutural de uma alternativa de design usando UML . Examinando essa representao, podemos observar alguns aspectos
da soluo:
7 Unied
Modeling Language
(UML)
CHAPTER 2.
26
INTRODUO A
DESIGN DE SOFTWARE
Figura 2.2:
ordenao
J a segunda representao, Figura 2.3, mostra parte do comportamento do programa de ordenao com alto nvel de detalhe. Apesar de no conseguirmos extrair dessa representao
a mesma informao apresentada na gura anterior, essa nos
permite analisar seu comportamento assinttico em relao ao
crescimento do tamanho dos dados de entrada.
Alm disso,
27
Figura 2.3:
Ambas as representaes mostram aspectos importantes do design de um software. No entanto, os stakeholders envolvidos no
seu desenvolvimento podem ainda estar interessados em outros
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
CHAPTER 2.
28
INTRODUO A
DESIGN DE SOFTWARE
Assim,
2.2.5 Solues
A soluo do design no nada alm do que a descrio que
permite desenvolvedores construir um sistema de software a
partir dos detalhes especicados por uma ou diversas representaes.
pargrafos a seguir.
Solues de design reetem a complexidade do problema, geralmente por mostrar diversos elementos e relaes que compem
o problema. possvel observar essa caracterstica quando, por
exemplo, fazendo o design do sistema de informao de uma locadora que j mencionamos anteriormente. Qualquer que seja
a soluo, ela conter elementos como lmes, DVDs, clientes
ou gneros de lmes, pois todos eles so inerentes ao problema
em questo. No entanto, s os elementos no so o bastante
29
No entanto, o problema
Normalmente,
para problemas complexos, objetivos so descritos num altonvel de abstrao que diculta ou impossibilita bastante a
avaliao das solues.
E, por m, a maioria dos problemas de design aceita diversas
solues. Isso algo natural a problemas de design: uma vez
que diversas alternativas podem ser geradas a partir de um
nico problema de design, diversas solues podem ser obtidas.
CHAPTER 2.
30
INTRODUO A
DESIGN DE SOFTWARE
O design de alto nvel, tambm conhecido como design arquitetural, trata de descrever a organizao fundamental do sistema,
identicando seus diversos mdulos (e sua relaes entre si e
com o ambiente) para que se alcancem os objetivos propostos
pelo cliente.
conceitual das duas atividades de forma que possamos nos focar no design arquitetural, que o principal assunto desse livro
e que ser discutido nos prximos captulos.
31
Diviso e conquista
Abstrao
Encapsulamento
Modularizao
Separao de preocupaes
Acoplamento e coeso
Separao de polticas da execuo de algoritmos
Separao de interfaces de suas implementaes
CHAPTER 2.
32
INTRODUO A
DESIGN DE SOFTWARE
Diviso:
menores;
Por
33
camadas propicia a implementao de cada camada separadamente. Alm disso, as camadas podem ser tratadas como componentes reusveis de software, uma vez que implementam um
servio nico e bem denido.
2.4.2 Abstrao
Abstrao um princpio essencial para se lidar com complexidade. Esse princpio recomenda que um elemento que compe
o design deva ser representado apenas por suas caractersticas
essenciais, de forma que permita a distino de outros elementos por parte do observador.
2.4.3 Encapsulamento
Encapsulamento est relacionado ocultao de detalhes de
implementao de um elemento de um sistema aos que usaro
esse elemento. Fazendo isso, o acoplamento entre os elementos minimizado e sua contribuio para a complexidade do
sistema restringida s informaes que eles expem.
Encapsulamento pode ser obtido de diferentes maneiras: modularizando o sistema, separando suas preocupaes, separando
interfaces de implementaes, ou separando polticas da execuo de algoritmos.
CHAPTER 2.
34
2.4.4 Modularizao
INTRODUO A
DESIGN DE SOFTWARE
Diminui o tempo de desenvolvimento, uma vez que mdulos podem ser implementados em paralelo, ou ainda
reusados; e
35
Ela a
Coeso funcional::
Coeso sequencial::
as
tarefas
esto
agrupadas
por
suas
tencerem mesma sequncia de operaes. Elas compartilham dados a cada etapa da sequncia, mas no realizam uma operao completa quando executadas juntas.
Coeso comunicativa::
Coeso temporal::
Coeso procedural::
Coeso lgica::
CHAPTER 2.
36
Coeso coincidente ::
INTRODUO A
DESIGN DE SOFTWARE
as tarefas esto agrupadas sem qual-
quer critrio.
Assim, os mdulos
37
2.5 Resumo
Esse captulo exps o conhecimento necessrio sobre Design de
Software para o estudo de Arquitetura de Software. Espera-se
que, ao nal desse captulo, o leitor saiba:
o que design software, seja como produto ou como processo, e quais so suas caractersticas e benefcios;
2.6 Referncias
2.6.1 Teoria em Design de Software
Recomendamos o livro Software Design [23], de Budgen, aos
interessados em mais informaes sobre a teoria em design de
software. Dois artigos que apresentam discusses teis sobre
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
CHAPTER 2.
38
INTRODUO A
DESIGN DE SOFTWARE
quitetural.
39
2.7 Exerccios
Exerccio 2.1
Quais os benefcios de se projetar sistemas?
Exerccio 2.2
Duas fases importantes do projeto de software so as
fases de Divergncia e Convergncia. Descreva o que
feito em cada fase.
Exerccio 2.3
Jack Reeves, em What is Software Design? [87], arma
que o cdigo fonte design. Qual a sua opinio a respeito da armativa?
Exerccio 2.4
Qual padro de projeto viabiliza a separao de
poltica e implementao?
Exerccio 2.5
Dena para coeso e acoplamento e sugira mtricas
para medi-las em software.
Exerccio 2.6
Cite diculdades que podem ser encontradas durante
a aplicao de cada tcnica de design apresentada no
captulo.
Exerccio 2.7
Represente um design de software de duas maneiras
diferentes. Para isso, antes ser necessrio descrever o
problema que o software deve resolver.
Exerccio 2.8
Elabore uma soluo de design diferente para o problema descrito na resposta do anterior e descreva-a usando os mesmos tipos de representaes usados anteriormente.
40
CHAPTER 2.
INTRODUO A
DESIGN DE SOFTWARE
Chapter 3
Estudo de Caso: SASF
1 This
content
is
available
<http://cnx.org/content/m23389/1.5/>.
41
online
at
CHAPTER 3.
42
ESTUDO DE CASO:
SASF
O sistema atravs do qual acompanharemos o processo de design e documentao de sua arquitetura ser o Sistema de
Aluguel e Streaming de Filmes (SASF). O SASF um sistema de informao com dois grandes objetivos: (1) gerenciar
o processo de locao via web de vdeos e (2) proporcionar
infraestrutura de software para realizar streaming de vdeos
tambm via web.
43
enleirar lmes que sero enviados para sua casa obedecendo poltica de sua assinatura,
CHAPTER 3.
44
ESTUDO DE CASO:
SASF
Figura
3.1:
45
SASF pode ter vrios destinos: uma aplicao cliente executando no navegador do usurio ou como aplicativo stand-alone
disponibilizado para download no prprio site, decodicadores
de TV por assinatura, celulares 3G ou outros sistemas capazes
de receber dados e que sejam integrados ao SASF. Por existirem tipos diferentes de destinos, abrangendo de celulares a
computadores pessoais, a qualidade do vdeo transmitido deve
ser tambm varivel de acordo com as caractersticas de cada
destino. Assim, se o vdeo deve ser assistido num celular que
tem resoluo mxima de 240x320, no h a necessidade desse
CHAPTER 3.
46
ESTUDO DE CASO:
SASF
Esse
mecanismo de sugesto alimentado no s pelos lmes assistidos, mas tambm pela nota dada pelo usurio aps t-lo
assistido. Essa nota serve para renar o motor de sugesto e
fazer com que as sugestes automticas se tornem mais precisas
ao longo do tempo.
3 Tambm chamado de
de 1920x1080 pixels.
47
essenciais para que o sistema tenha sucesso, so eles o Administrador e o Distribuidor de Filmes.
Observe o diagrama
CHAPTER 3.
48
ESTUDO DE CASO:
SASF
Figura 3.2:
SASF
A empresa
anda a popularidade de seus vdeos, o SASF prov para a empresa dados sobre aluguis ao longo de intervalos de tempo
customizveis.
49
atuar sobre ele. As aes do administrador sobre o SASF englobam: iniciar novos servidores para atender uma demanda
crescente ou isol-los para manuteno, habilitar ou desabilitar
funcionalidades por excesso de carga ou ns de teste e habilitar
ou desabilitar contas de usurios mal-comportados.
Dessa
CHAPTER 3.
50
ESTUDO DE CASO:
SASF
la de aluguis.
O acervo de vdeos
51
Figura 3.3:
bilhes de notas j registradas, que podem ou no vir acompanhadas de uma crtica escrita sobre o lme. Essas crticas,
inicialmente, no possuem limites de tamanho. Vale tambm
observar que apenas cerca de 5% da notas so acompanhadas
de crticas escritas, mas que totalizam cerca de 100 milhes de
textos sobre lmes do acervo do SASF.
Note que avaliao e crticas no so as nicas informaes
relacionadas a cada vdeo do acervo. Cada vdeo possui ainda
fotos de divulgao, trailers, sinopse, lista de usurios que j
alugaram e lista de usurios com o lme na la de locao.
52
CHAPTER 3.
ESTUDO DE CASO:
SASF
Por exemplo, um
Por isso,
4 Ainda falta escrever o apndice, mostrando requisitos funcionais nofuncionais numerados, para tracking, e com valores quanticveis.
53
3.4 Resumo
Como podemos observar atravs de suas capacidades, o SASF
se mostra um estudo de caso signicativo devido sua relativa
complexidade de seus requisitos.
54
CHAPTER 3.
ESTUDO DE CASO:
SASF
Chapter 4
Fundamentos de
Arquitetura de Software
No captulo introdutrio, mencionamos que o Design de Software pode ser dividido em duas atividades: design de alto-nvel
ou arquitetural e design detalhado e que ambas as atividades
tm um papel importante no ciclo de desenvolvimento do software.
1 This
content
is
available
<http://cnx.org/content/m17524/1.21/>.
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
55
online
at
CHAPTER 4.
56
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
Ou em outras palavras:
Exemplo 4.1
Considere um programa que realize as quatro operaes: soma, subtrao, multiplicao e diviso. Se o
tempo de resposta de suas operaes for sempre maior
do que o tempo que seu usurio est disposto a esperar,
esse programa no ter utilidade mesmo que sempre retorne o resultado correto.
Podemos observar no Exemplo 4.1 que o programa funciona
corretamente, mas, por no exibir o desempenho esperado,
acaba sendo abandonado. Por outro lado, consertar esse programa para que seja til relativamente fcil. Por exemplo,
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
57
Exemplo 4.2
Considere agora o SASF, j apresentado no Captulo
XX. Considere tambm que ele se mostra incapaz de
responder em menos de dois segundos s operaes de
aluguel de lmes. Uma vez que os usurios no esto
dispostos a esperar esse tempo pela principal operao
do sistema, isso resultar numa m experincia de uso,
que ser motivo para que seus usurios deixem de uslo e tambm deixem de pagar pelo servio.
Acontece que diminuir o tempo de resposta de uma funcionalidade no SASF, dado o tamanho do sistema, pode no ser to
simples quanto diminuir o tempo de execuo de uma funo
matemtica. O alto tempo de resposta de um servio no SASF
pode ser funo de uma ou mais decises tomadas ao longo do
desenvolvimento que resultaram na sua estrutura e organizao interna. Essa estrutura e organizao o que chamamos
de arquitetura.
CHAPTER 4.
58
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
Frmula
Arquitetura = {Elementos, Organizao, Decises} (4.1)
De acordo com essa denio, a arquitetura de software um
conjunto de elementos arquiteturais que possuem alguma organizao. Os elementos e sua organizao so denidos por
decises tomadas para satisfazer objetivos e restries.
So
Elementos de processamento: :
Elementos de dados: :
Elementos de conexo: :
ou transformam informao;
59
J a organizao dita as relaes entre os elementos arquiteturais. Essas relaes possuem propriedades e restringem como
os elementos devem interagir de forma a satisfazer os objetivos
do sistema. Adicionalmente, essas relaes devem ser ponderadas de modo a indicar sua importncia no processo de seleo
de alternativas.
Exemplo 4.3
Um elemento de dados muito presente no SASF e em
sistemas de informao em geral o banco de dados.
Ele o responsvel por guardar e recuperar dados no
sistema.
No SASF, inicialmente, esto presentes trs tipos de
dados:
1. Informao textual: informaes cadastrais dos
usurios e informaes textuais sobre os lmes;
2. Imagens: imagens que compem a identidade visual do sistema, foto do usurio presente em seu
perl e imagens de divulgao dos lmes;
3. Vdeos:
Dessa
CHAPTER 4.
60
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
responsvel por vdeos pode ser otimizado para recuperar grandes massas de dados a cada requisio. Por
outro lado, tambm faz sentido dividir logicamente os
elementos de dados em: elemento de dados de usurios
e de dados de lmes.
o elemento de processa-
mento responsvel por criar, editar, recuperar e remover usurios, o responsvel por criar, editar, recuperar e remover informaes de lmes, o responsvel
pelo aluguel de lmes e o responsvel por controlar a
sesso de streaming, entre outros. Essa diviso, assim
como a diviso dos elementos de dados, pode ser feita
em prol do atendimento aos atributos de qualidade
61
, que uma
CHAPTER 4.
62
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
Figura 4.1:
63
Exemplo 4.4
A arquitetura de um sistema operacional, para atingir
CHAPTER 4.
64
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
atributos de desempenho e portabilidade, deve se preocupar com diversos aspectos que comporo o sistema.
claro que alguns algoritmos sero tambm responsveis pelo desempenho do S.O. em questo, como o
responsvel pela ordenao por prioridade dos processos em execuo ou o de alocao de memria para um
novo processo; mas a organizao do sistema em camadas de abstrao (abstrao de hardware, sistema
de arquivos e drivers, gerncia de processos, API do
sistema, bibliotecas e aplicaes), a comunicao entre
elas (uma camada s pode se comunicar com a camada
seguinte, ou aplicaes e bibliotecas s podem se comunicar com a API do sistema, etc.) e a sincronizao
(um aplicativo sugere o arquivamento de dados, mas
o sistema de arquivo decidir quando isso ser feito)
tambm impactaro no seu desempenho.
Note que
essa organizao tambm tem impacto na portabilidade: quanto menos acoplado o resto das camadas for
da camada de abstrao de hardware, mais fcil ser
de realizar mudanas para que o sistema operacional
esteja disponvel para uma nova plataforma de hardware idealmente, s havendo que se reimplementar
essa camada.
Como veremos a seguir, a denio de Bass et al bastante similar encontrada no padro ISO/IEEE 1471-2000. No entanto,
sua especicidade sobre quais propriedades dos elementos arquiteturais devem ser consideradas a faz ser mencionada:
65
Na
edio anterior dessa denio [10], seus autores usavam componentes de software ao invs de elementos de software. Essa
mudana foi feita para deixar a denio mais geral, principalmente pelo termo componente de software ter um sentido
especco na rea de Engenharia de Software baseada em Componentes.
Exemplo 4.5
Podemos observar a arquitetura do SASF atravs de
uma viso de partes funcionais ( Figura 4.2):
1. mdulo responsvel pelo cadastro de usurios,
2. mdulo responsvel pelo cadastro de lmes,
3. mdulo responsvel pelo aluguel de lmes,
4. mdulo responsvel pela transmisso de lmes,
5. mdulo responsvel pela sugesto de lmes, etc.
Esses mdulos proveem servios e informaes a outras partes do sistema: por exemplo, uma operao de
aluguel ou de transmisso de lmes deve atualizar o
histrico presente na conta do usurio.
Isso ocorre
CHAPTER 4.
66
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
Figura 4.2:
Mas essa no a nica maneira de observarmos o sistema. Podemos tambm ver o sistema como um conjunto de processos executando e se comunicando em
mquinas diferentes, como observado na Figura 4.3. O
navegador do usurio, que pode ser considerado parte
do sistema e que est executando em uma mquina, se
comunica usando o protocolo HTTPS com um servidor
de aplicaes, que est executando em outra mquina
e que contm parte da lgica do negcio (e os mdulos de cadastro, autenticao, e atualizao do usurio,
entre outros).
Esse processo, de
67
Figura 4.3:
Na viso em que dividimos o sistema em partes funcionais, podemos perceber aspectos do software como a
composio entre elementos ou pontos de reuso. J na
viso em que dividimos o sistema em processos, podemos observar outros aspectos, como propriedades de
comunicao e de interao entre as partes do sistema.
Por exemplo, na primeira viso, os cadastros de lmes
e de usurios podem compor um mdulo maior responsvel por todos os cadastros.
J na segunda viso,
CHAPTER 4.
68
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
69
CHAPTER 4.
70
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
O exemplo a
Exemplo 4.6
Voltando ao SASF, observar sua arquitetura sob uma
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
71
Em
Exemplo 4.7
Ainda na arquitetura do SASF, podemos tambm observar o sistema sob uma tica dinmica. Essa exibe
seus elementos dinmicos, a exemplo dos diversos processos executando nas diversas mquinas que compem
o sistema. Esses processos pertencem aos servidores de
aplicao, aos servios de armazenamento, ou mesmo
aos navegadores dos usurios.
CHAPTER 4.
72
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
Exemplo 4.8
Se dividirmos a arquitetura do SASF em trs camadas (apresentao, lgica de negcio, e persistncia),
a camada de persistncia pode ser um recurso compartilhado por diversas instncias da lgica de negcio. Se temos diversas instncias da lgica de negcio,
mesmo que algumas saiam do ar, as restantes provero
disponibilidade ao sistema, desde que a camada de persistncia (e.g., o banco de dados) no falhe.
Alm
disso, o compartilhamento do banco de dados pode signicar tambm o acesso concorrente ao mesmo. Assim,
quando uma instncia da lgica de negcio lhe faz uma
requisio, essa requisio lhe ser respondida mesmo
que outras instncias estejam fazendo o mesmo (obviamente, isso s ocorre se alguma instncia da lgica
de negcio no esteja realizando alguma requisio que
precise de acesso exclusivo aos dados).
Exemplo 4.9
A separao do sistema em trs camadas ( Figura 4.4)
pode tambm facilitar a manuteno. Se, alm de adotar essa diviso, a camada de apresentao apenas se
comunicar com a lgica de negcio, mas no com a de
persistncia, mudanas na camada de persistncia afetaro apenas a camada de negcio. Portanto, caso seja
necessrio mudar o fornecedor da camada de persistncia, a assinatura dos mtodos disponveis, ou mesmo o
protocolo de comunicao, apenas a lgica de negcio
ser afetada por essas mudanas, uma vez que no exAvailable for free at Connexions
<http://cnx.org/content/col10722/1.9>
73
CHAPTER 4.
74
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
4.7.2.1 Caractersticas
As decises arquiteturais tm, basicamente, trs caractersticas
que devem ser consideradas: descrio, objetivos e fundamentao.
A primeira caracterstica bem clara. simplesmente a descrio do que foi decidido para o sistema, seja a descrio
um elemento, mdulo, classe, ou servio que existir da arquitetura, a descrio da comunicao de um elemento da arquitetura com outro, a descrio da agregao de diversos elementos diferentes da arquitetura para formar um servio, ou a
descrio de um princpio ou mais princpios que conduziro a
evoluo do sistema.
Exemplo 4.10
[Deciso Arquitetural 001] A arquitetura do SASF
dividida em trs camadas lgicas: apresentao, lgica
de negcio e persistncia de dados. A camada de apresentao se comunica apenas com a lgica de negcio e
apenas a lgica de negcio de comunica com a camada
de persistncia de dados.
Toda deciso feita com um ou vrios objetivos. Assim, a segunda caracterstica trata de explicitar qual o objetivo de dada
deciso, normalmente, permitindo ou restringido um conjunto
de atributos de qualidade do sistema.
75
Exemplo 4.11
(continuao da [Deciso Arquitetural 001]) Objetivo:
Essa diviso diminui o acoplamento entre os elementos
internos da arquitetura, facilitando o desenvolvimento
e a manuteno.
Exemplo 4.12
(continuao da [Deciso Arquitetural 001])
vao:
Moti-
desenvolvido com o objetivo de ser parte da apresentao, da lgica ou da persistncia do sistema. Dessa
maneira, cada elemento ter sua responsabilidade bem
denida, mesmo que em alto nvel.
Como a comuni-
cao entre as camadas pr-denida, a de seus elementos tambm : elementos da camada de apresentao no se comunicaro com elementos da camada
de persistncia, por exemplo.
Assim, o acoplamento
5 TODO: Adicionar os
drivers
dessa deciso:
o Requisito(s) No-
76
CHAPTER 4.
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
menor impacto nos outros.
4.7.2.2 Rastreabilidade
Vale notar que decises denem que elementos comporo o sistema. No exemplo anterior, podemos observar que a deciso
dene elementos como plug-ins, pontos de extenso, etc. Assim, por relacionarem atributos de qualidade (ou requisitos) a
elementos arquiteturais, as decises contidas numa arquitetura
facilitam o chamado rastreamento de requisitos.
77
Exemplo 4.13
Se observarmos a arquitetura do SASF e procurarmos
pelas decises responsveis por facilitar a manuteno
do sistema, encontraremos entre elas a deciso do Exemplo 4.12.
Da mesma maneira, se partirmos das partes que formam as camadas de apresentao, lgica de negcio
e persistncia, observaremos que elas esto ligadas
diviso do sistema (e deciso arquitetural) que se
prope a atender a requisitos de manutenibilidade.
Alm de permitir a navegao, um aspecto que merece ser
ressaltado que se os requisitos do sistema forem eventualmente ordenados por importncia para o sucesso do sistema,
os elementos arquiteturais tambm possuiro diferentes nveis
de importncia. Essa ordenao, ento, signicar diferentes
nveis de investimento, seja em tempo ou dinheiro, na construo dos elementos arquiteturais para o sucesso do sistema.
Adicionalmente, a manuteno do sistema facilitada de uma
forma anloga ao seu entendimento. Se algum requisito atendido insatisfatoriamente, por meio da arquitetura possvel
descobrir quais elementos do sistema esto envolvidos na insatisfao desses requisitos.
Exemplo 4.14
Se uma modicao na camada de apresentao s
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
CHAPTER 4.
78
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
pode ser feita se a camada de persistncia tambm for
modicada, isso pode signicar que a deciso arquitetural do Exemplo 4.12 no est sendo seguida corretamente.
4.7.2.3 Evoluo
Devido s suas caractersticas, se torna fcil perceber que o
registro das decises arquiteturais na forma de um documento
o documento arquitetural agrega valor ao ciclo de vida do
software, uma vez que facilita o processo de rastreamento de
requisitos. Adicionalmente, se algum tipo de registro histrico
das decises arquiteturais existir, o processo de rastreamento
pode tambm ser realizado para as diversas verses do sistema,
facilitando assim o entendimento da evoluo do mesmo.
Alm de descreverem estruturas arquiteturais, as decises tambm descrevem princpios que conduziro a evoluo do sistema. Isso signica que uma deciso no necessariamente descrever mdulos, classes, ou servios, mas tambm poder
descrever regras que devero ser seguidas ao longo do desenvolvimento do sistema.
Exemplo 4.15
Uma nova funcionalidade do SASF no poder
adicionar uma carga maior que mil requisies
por segundo ao banco de dados de usurios, con-
79
Exemplo 4.16
Uma nova funcionalidade de um editor de imagens s ser adicionada implementando o ponto
de extenso ProcessImagePlugin. Esse ponto de
extenso permite obter a imagem que est aberta
no workspace do usurio e seus atributos, alm
de permitir a exibio de uma caixa de dilogo
que permitir ao usurio entrar com parmetros
que serviro para a execuo do plug-in.
O re-
Exemplo 4.17
Uma nova funcionalidade do sistema de edio
de texto no poder modicar a GUI de forma
que adicione mais do que um boto na rea de
trabalho em sua congurao padro.
Exemplo 4.18
No SASF, a remoo de um servio do mdulo
responsvel pelo streaming para outros dispositivos ser feita em duas etapas.
Na primeira
CHAPTER 4.
80
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
ag avisando que na prxima verso ele ser
descontinuado.
Exemplo 4.19
Caso o consumo de recursos computacionais do
SASF ultrapasse 80% do total, alguns de seus
servios podem ser completamente ou parcialmente desativados. Um servio que pode ser desativado temporariamente sem que os usurios
percebam o motor de sugesto de lmes. Como
cada usurio est acostumado a ter sua lista de
sugestes atualizada apenas de tempos em tempos, mas no tem certeza qual o real intervalo entre cada atualizao, se dada atualizao
demorar alguns minutos ou horas a mais para
acontecer, dicilmente o atraso ser notado. Em
casos extremos, devido ao seu grande consumo de
recursos, o servio de streaming de vdeo tambm pode ser desativado.
81
dades.
Exemplo 4.20
No haver modicao do Web Service que realiza busca e aluguel de lmes no SASF que
disponibilizado para uso por servios externos.
Se for realmente necessria a modicao, dois
Web Services caro disponveis: o antigo, completamente suportado, e o novo, que passar a
ser adotado por novos sistemas a partir da data
de seu lanamento. O antigo s ser desativado
depois da adoo do novo servio ser feita por
todos os servios externos.
Exemplo 4.21
No Exemplo 4.19, a disponibilidade de parte
das funcionalidades, i.e., construo da lista de
sugestes de lmes ou transmisso de vdeos,
mais importante do que a indisponibilidade de
todas as funes: caso o uso dos recursos computacionais alcance 100%, usurios comearo a
no ser atendidos de forma descontrolada.
As-
Exemplo 4.22
A disponibilizao de uma nova funcionalidade
no SASF ser feita em etapas para 10%, 25%,
50%, 100% desses usurios. Dessa maneira, ser
possvel avaliar o comportamento da nova funo
no sistema sob carga real. Alm disso, a desati-
CHAPTER 4.
82
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
vao da funcionalidade poder ser feita atravs
de uma ag de controle, permitindo o retorno s
funcionalidades anteriores do sistema em caso de
sobrecarga dos recursos por parte da nova funcionalidade.
Exemplo 4.23
Antes da implantao de uma nova verso de
um servio de infraestrutura, digamos, um novo
banco de dados, a carga gerada pelos usurios da
verso antiga ser espelhada para a nova verso.
Assim, ser possvel avaliar seu comportamento
com uma carga real e, portanto, saber o que esperar quando o novo banco de dados substituir a
verso em produo.
No Captulo XX, Documentao da Arquitetura, voltaremos
s decises arquiteturais, onde aprenderemos a categoriz-las
e document-las.
Atributos de
83
Exemplo 4.24
Sistemas de redes sociais costumam ter uma grande
massa de usurios. Como, a partir do lanamento de
um sistema desse tipo, sua massa de usurios cresce
bastante, desejvel que o crescimento do consumo
de recursos em relao ao crescimento do nmero de
usurios no seja muito acentuado de forma que a
escala seja vivel para a gerncia do sistema.
Para
Exemplo 4.25
Um requisito desejvel em um jogo de videogame que
ele esteja disponvel para diversas plataformas de entretenimento. Como diferentes plataformas tm diferentes especicaes ou ainda usam diferentes tipos de
hardware, atingir a portabilidade pode no ser trivial.
Assim, toda ou
boa parte da camada lgica reusada, enquanto as camadas de nveis mais baixos de abstrao so portadas
para as diferentes plataformas.
J atributos de qualidade organizacionais, por outro lado, so
consequncia de polticas ou procedimentos organizacionais.
Em outras palavras, o sistema deve respeitar padres ou regras impostas por uma ou mais organizaes envolvidas para
atender a esses requisitos.
CHAPTER 4.
84
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
Exemplo 4.26
Se um sistema que servir de infraestrutura ser produzido para uma organizao ou empresa que j possui
diversos sistemas que implementam o padro Web Service Distributed Management (Gerncia Distribuda de
Web Services), a adoo desse padro na arquitetura
do novo sistema um requisito a ser atendido, por ser
imposto pela organizao em questo. A adoo desse
padro implica na disponibilizao via Web Service de
servios de ativao, consulta e desativao do sistema
ou parte dele, que ter impacto na arquitetura do sistema como um todo.
Por m, restam os chamados atributos de qualidade externos,
que no so impostos pelo processo de desenvolvimento nem
pelo projeto do sistema. Neles se encaixam leis impostas sobre
software ou requisitos de interoperabilidade entre sistemas.
Exemplo 4.27
Para o SASF atrair usurios de outros sistemas (p.
ex., redes sociais), percebeu-se que ele deve ser capaz
de agregar o perl do usurio existente nos outros sistemas. Esse tipo de agregao (que permitiria no s a
visualizao dos pers compartilhados entre os diversos servios, mas tambm sua edio), impactar profundamente na arquitetura do sistema, uma vez que
ser necessrio organizar dados locais e dados compartilhados por terceiros, alm de manter todos os dados
sincronizados ao longo do tempo e das eventuais modicaes.
85
Exemplo 4.28
Uma forma de aumentar o desempenho do sistema
diminuir os nveis de indireo usados na comunicao
entre dois elementos quaisquer no SASF. Um caso simples seria fazer com que algumas chamadas presentes
na camada de apresentao usassem diretamente a camada de persistncia, sem usar a lgica de negcio.
Essa medida tornaria as chamadas da apresentao
mais rpidas, uma vez que menos chamadas remotas
seriam executadas.
as camadas de abstrao entre dois elementos inicialmente distintos, aumentamos o acoplamento entre eles
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
CHAPTER 4.
86
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
e, portanto, dicultamos seu entendimento ou mesmo
sua testabilidade.
Exemplo 4.29
Uma forma de aumentar a segurana de um sistema
operacional requerer autorizao do usurio para a
realizao de certas operaes. No entanto, o processo
de vericao do usurio (alm de todos os elementos e abstraes do sistema relacionados segurana:
unidade certicadora, unidade vericadora, listas de
controle de acesso, entre outros.) deteriorar o desempenho da aplicao, dado que consumir recursos que
poderiam ser destinados operao em si - no a um
aspecto dito no-funcional dela. Alm disso, o sistema
vai car menos usvel, uma vez que pedir uma vericao, seja senha, impresso digital, ou certicado,
para cada operao sensvel a ser executada.
O principal motivo que faz com que atributos de qualidade conitem por eles serem impostos por mais de um interessado no
software. Assim, como preocupaes de diferentes interessados
podem conitar, os atributos de qualidade tambm conitaro.
Assim, cabe arquitetura resolver, ponderar, ou ao menos mediar esses conitos, considerando assim os diversos trade-os
envolvidos para se alcanar os objetivos do software. O exemplo seguinte mostra atributos de desempenho e portabilidade
conitando.
Exemplo 4.30
Um cliente de um jogo para celular requisitou que o
jogo tivesse um bom desempenho nos diversos aparelhos disponveis no mercado.
No entanto, o gerente
87
vez que o prazo do projeto em questo curto. Podemos ento observar dois requisitos conitantes: desempenho e portabilidade.
Esse conito ocorre porque as tcnicas para alcanar
ambos os requisitos so divergentes.
Para alcanar
Exemplo 4.31
Quando usando um sistema operacional, um mesmo
usurio procura atributos de segurana e usabilidade
para suas operaes.
CHAPTER 4.
88
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
cadas.
torizaes deteriora o atendimento do atributo de usabilidade, uma vez que o usurio ter suas atividades
interrompidas por algo que no gera resultado para ele.
Veremos mais sobre atributos de qualidade de software, suas
relaes, como alcan-los, e seus interessados no Captulo Y.
Exemplo 4.32
Considerando a arquitetura do SASF, vejamos as preocupaes de dois interessados diferentes: o implementador e o responsvel pela disponibilidade do sistema
em produo. O implementador est preocupado com
mdulos, classes e algoritmos que ele e seu time tero
que construir, como e com quais subsistemas esses mdulos iro se comunicar ou ainda quais restries de comunicao foram impostas em seu design. J o responsvel pela disponibilidade est preocupado em como
o SASF est distribudo entre as mquinas, que funcionalidades sero afetadas caso um conjunto especco
de mquinas deixe de funcionar, ou como ser possvel
realizar a troca de um servidor sem afetar o tempo de
incio de uma transmisso de vdeo.
Podemos observar que h preocupaes bem diferentes entre
os dois interessados e assim perceber que dimenses bem difer-
89
Para
Ela facilita o
o problema de design em problemas menores e, consequentemente, menos complexos: ele enderea cada atributo de qualidade cada aspecto do sistema que sero alcanados por
essa arquitetura.
CHAPTER 4.
90
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
4.9.1 Benefcios
Um documento de arquitetura no nada mais que um documento que descreve a arquitetura do sistema e, portanto, descreve elementos, relaes, e decises arquiteturais do sistema
em questo. Assim, os benefcios de se documentar a arquitetura se tornam anlogos aos benefcios proporcionados pela
prpria arquitetura. No entanto, pelo documento de arquitetura ser um artefato concreto, ele poder ser reproduzido, reusado, comunicado e analisado contra o cdigo gerado a partir
da arquitetura em questo.
Em resumo, a documentao da arquitetura proporcionar os
seguintes benefcios:
Ajudar na introduo de novos membros ao time de desenvolvimento do sistema, uma vez que um documento
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
91
Exemplo 4.33
Um novo desenvolvedor acabou de ser contratado e passou a integrar o time de desenvolvimento de um sistema que j soma 250 mil linhas
de cdigo.
projetada para satisfazer diversos interessados, sua documentao tambm o ser. O documento de arquitetura
servir de arcabouo conceitual para comunicao entre
diferentes interessados no sistema, uma vez que dene
seus elementos e relaes que o compem.
Exemplo 4.34
Usando a arquitetura para mapear custos s
funcionalidades que o sistema prover, o gerente
pode justicar ao nanciador do projeto a necessidade de se adquirir uma licena para um banco
de dados especco. Ou ainda citar quais as consequncias caso essa licena no seja adquirida: a
funcionalidade provida pelo banco dever ser ento implementada pelo time de desenvolvimento,
que precisar de dois meses para tanto. Essa possibilidade de navegar pelo sistema e pelas diversas vises, seja a de gerente, seja a de nanciador,
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
CHAPTER 4.
92
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
ou de desenvolvedor, facilitada pelo documento
de arquitetura.
Uma
Exemplo 4.35
A arquitetura do SASF, dividido em trs camadas (apresentao, lgica de negcio e persistncia), descreve que cada camada estar executando em mquinas diferentes.
certo que
Quando o ar-
Exemplo 4.36
Num sistema de controle de vo, onde vidas
esto em risco, o documento da arquitetura
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
93
tambm um contrato.
4.9.2 Diculdades
No entanto, documentar a arquitetura to ou mais difcil que
cri-la. Os principais motivos so trs: o documento reete a
complexidade da arquitetura, que geralmente alta; o documento reete o tamanho da arquitetura, que o torna custoso
para construir e ser lido; e o documento, por seu tamanho e
complexidade, difcil de manter consistente com o sistema
que ele descreve.
A complexidade do documento surge principalmente da necessidade de mostrar de diferentes maneiras os diferentes aspectos
da arquitetura, ou seja, da necessidade de mostrar as diferentes
vises da arquitetura. Cada viso possui uma forma de melhor ser representada e tambm deve estar consistente com as
outras vises.
Exemplo 4.37
Na documentao da arquitetura do SASF podemos observar,
entre outras,
CHAPTER 4.
94
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
encontrar o responsvel pelo cadastro de usurios, o
responsvel pelo cadastro de lmes, o responsvel por
sugerir novos lmes a usurios, e o responsvel pelo
streaming de lmes.
Figura 4.5:
os
mdulos
dinmico no sistema.
que
possuem
comportamento
Obviamente, os mdulos
95
CHAPTER 4.
96
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
Exemplo 4.38
Lembrando da arquitetura do SASF, que foi dividida em trs camadas: apresentao, lgica de negcio e persistncia, uma das decises impostas dita que
a camada de apresentao s pode se comunicar com
a lgica de negcio.
No entanto, um desenvolvedor,
A partir da, h
comunicao entre o mdulo de interface e de persistncia, fazendo assim que a documentao da arquitetura
esteja inconsistente em relao ao cdigo do sistema.
97
Normal-
Exemplo 4.39
Pensemos num pequeno sistema que servir para a
organizao de uma modesta locadora de lmes.
Ele
ao
do
exemplo
anterior,
eles
tm
requisitos
no-
CHAPTER 4.
98
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
Exemplo 4.40
O sistema de locadora agora tem que servir para mais
duas liais. Assim, o sistema deve estar rodando nas
trs lojas e deve existir um cadastro nico de novos
lmes, novos DVDs e novos clientes, e tanto a locao
quanto a devoluo podem ser feitas em qualquer loja
da rede de locadoras. O sistema se torna multiusurio,
por agora mais de um balconista us-lo ao mesmo
tempo, e distribudo, por ter que manter seu estado
consistente entre as diversas lojas fsicas existentes.
Surgem agora preocupaes de desempenho, tolerncia
a falhas e backup e consistncia de dados. Outras dvidas tambm surgem: Ser um banco de dados central
para as trs lojas? Ser um banco distribudo? Se for
central, o que fazer caso no seja possvel se comunicar
com ele? Se for distribudo, como manter a consistncia entre os dados? Um balconista de uma loja pode
acessar o sistema de outra loja? O que um balconista
de uma loja tem permisso para fazer na instncia do
sistema executando em outra loja?
A reserva de um
99
poucas preocupaes.
Podemos notar que todas essas perguntas afetaro como o sistema estar organizado internamente, mas no afetaro suas
funcionalidades, que continuaro sendo as do exemplo anterior. Inferimos tambm que a arquitetura desse sistema e sua
documentao sero mais complexas que a do Exemplo 4.39.
No entanto, no caso do SASF, percebemos que a arquitetura
pode se complicar ainda mais, mesmo considerando quase as
mesmas funcionalidades.
Exemplo 4.41
A organizao interna do SASF mudar ainda mais
em relao aos Exemplo 4.39 e Exemplo 4.40. As decises que antes permitiam que o sistema rodasse para
as trs lojas numa mesma cidade no sero mais vlidas quando falamos de diversos pontos de distribuio
espalhados pelo pas.
Dessa maneira, observamos que as decises de desempenho, disponibilidade dos dados, e polticas de acesso
mudam e, como aumentam tambm em quantidade, se
torna mais evidente a necessidade do registro dessas
decises em algum tipo de documento para consulta,
resoluo de discusses e vericao de conformidade.
Adicionalmente, num sistema como o SASF, o nmero
de interessados aumenta:
entender
quais
tipos
de
reserva
esto
100
CHAPTER 4.
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
gerente de projeto, gerente da empresa. Aumentando
assim a responsabilidade de se obter um sistema capaz
de satisfazer a todos eles.
Cada um ter um conjunto diferente de preocupaes
sobre o sistema. Seja o responsvel por manter o sistema no ar, que precisa saber quantos recursos esto
sendo consumidos a cada momento; seja o time de
implementao, que precisa descobrir como adicionar
uma nova funcionalidade sem quebrar as anteriores;
seja o gerente do projeto, que deve decidir por contratar mais desenvolvedores para implementao ou
comprar solues prontas.
Cada um desses estar preocupado tambm com qualidades diferentes do sistema: o responsvel pela disponibilidade do sistema quer saber como o sistema escala
se a base de usurios duplicar; j o time de implementao est preocupado em deixar o sistema mais
testvel para que a implementao da nova funcionalidade seja mais fcil; e, por outro lado, o gerente quer
saber o desenvolvimento do sistema possvel com um
time de desenvolvedores menor que o atual.
Essas preocupaes sero endereadas pelo documento
de arquitetura do SASF, que contm diversas vises direcionadas s diversas preocupaes dos interessados.
Uma viso de implementao interessar ao responsvel pela disponibilidade, assim como uma viso de
decomposio interessar ao time de desenvolvimento,
assim como uma viso de implementao interessar
ao gerente do projeto, fazendo ento que o documento
de arquitetura possua diversas vises e se torne um
documento complexo.
101
4.11 Resumo
O objetivo deste livro fazer com que o leitor seja capaz de
enderear todos os aspectos da arquitetura citados anteriormente, podendo realizar algumas das diversas funes realizadas por um arquiteto de software.
J no prximo captulo, conheceremos os principais interessados que devem ser contemplados pela arquitetura, alm de suas
caractersticas e relaes. No captulo seguinte, entenderemos
melhor os atributos de qualidade impostos por esses interessados, alm de apresentarmos algumas tcnicas para atender
esses atributos. Em seguida, teremos um captulo focado em
padres arquiteturais, uma vez que o uso de padres no design
da arquitetura uma tcnica essencial ao arquiteto. Por m,
CHAPTER 4.
102
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
4.12 Referncias
4.12.1 Histrico da rea
Apesar da nfase em Arquitetura de Software como disciplina
ter acontecido apenas durante a dcada de 1990 com autores
a exemplo de Perry e Wolf [84] e Garlan e Shaw [46], podemos
encontrar trabalhos das dcadas de 1960 e 1970 que j citam
algumas tcnicas e benefcios da rea. Entre eles, encontramos
Dijkstra [36], Parnas [82] e outros. Mais informaes sobre o
histrico da disciplina podem ser vistas em The Past, Present,
and Future for Software Architecture, de Kruchten, Obbink e
Staord [60].
Mais
103
turais:
104
CHAPTER 4.
FUNDAMENTOS DE
ARQUITETURA DE SOFTWARE
Chapter 5
Stakeholders
O ciclo de vida do software composto por diversas responsabilidades atribudas a pessoas, grupos e entidades a quem
chamamos de stakeholders ou interessados.
arquitetura do software e tambm sobre os atributos de qualidade que este exibir ao longo de seu ciclo de vida e por isso
que dedicamos um captulo a eles.
Este captulo tem como objetivo fazer com que o leitor seja
capaz de:
1 This
content
is
available
<http://cnx.org/content/m26195/1.3/>.
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
105
online
at
106
CHAPTER 5.
STAKEHOLDERS
um software
homogneos, ou seja, todos os usurios e desenvolvedores apresentam os mesmos interesses e necessidades, e os usurios se
encarregam de impor as necessidades, enquanto os desenvolvedores cuidam para que essas necessidades sejam alcanadas
atravs do produto de software. Para montarmos esse cenrio,
vamos partir de um sistema parecido com o nosso estudo de
caso e, pouco a pouco, retirar interesses e necessidades dos envolvidos para observar suas inuncias no software e em sua
arquitetura. Esse processo ilustrado atravs do Exemplo 5.1.
Exemplo 5.1
Vamos considerar uma simplicao do SASF que
chamaremos SSF (Sistema de Streaming de Filmes).
Ele mais simples porque realiza apenas uma das
duas principais funcionalidades do SASF: transmitir
107
de lmes.
Para tanto,
o SASF e o SSF so obrigados a s permitir a transmisso de lmes a pessoas autorizadas e impedir a redistribuio de vdeos por parte dos usurios.
Essas
obrigaes tm efeito na arquitetura de ambos os produtos, que tem que prover no s meios de autenticar e
autorizar usurios, para distinguir usurios que assistem dos usurios que distribuem lmes, como tambm
prover meios de impedir ou dicultar a redistribuio
do contedo transmitido.
A autenticao e autorizao so feitas por um mdulo
responsvel pelo cadastro e autenticao de usurios e
criao de sesses de uso. Esse mdulo prov opes
para se cadastrar como distribuidor ou consumidor de
lmes.
108
CHAPTER 5.
STAKEHOLDERS
2 Digital
Rights Management
(DRM)
109
Essa abordagem de
A-
J escalabilidade no um atrib-
110
CHAPTER 5.
STAKEHOLDERS
111
Entretanto,
no mundo real, os envolvidos no se limitam a usurios e desenvolvedores. H diversos outros tipos de envolvidos que inuenciam o desenvolvimento do software de diversas maneiras
diferentes.
Devido ao
112
CHAPTER 5.
STAKEHOLDERS
Con-
113
Exemplo 5.2
As distribuidoras esperam que os direitos autorais de
seus lmes sejam protegidos, j os usurios querem
apenas assistir a seus lmes sem diculdades ou interrupes. A forma encontrada para proteger os direitos
autorais foi por meio da Gesto de Direitos Digitais.
Essa deciso implica em restringir o reprodutor de mdia que pode ser usado e obrigar o usurio a se autenticar no sistema para assistir a algum lme. Tanto
a restrio do reprodutor de mdia, quanto a autenticao do usurio dicultam a tarefa de assistir a um
lme, uma vez que o usurio pode no se lembrar de
seu login ou senha ou ele pode no estar acostumado
com o reprodutor de lmes permitido.
Exemplo 5.3
Ainda no SASF e tambm pela deciso de proteger
os direitos autorais usando GDD, o arquivo contendo
o lme transmitido encriptado para o cliente. Essa
encriptao uma forma de dicultar a reproduo do
vdeo em programas no autorizados.
No entanto, o
necessrio mais processamento e, portanto, maior consumo de recursos. Isso ocasiona perda de desempenho,
o que pode ser crtico em dispositivos com menos recursos, como celulares. Por isso, a deciso de segurana
tambm tem impacto negativo no desempenho, caracterizando um conito entre esses dois atributos.
Note que para armarmos que uma arquitetura alcanou algum
sucesso, os stakeholders devem se mostrar satisfeitos com o
sistema desenvolvido a partir dela. Para tanto, espera-se que o
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
114
CHAPTER 5.
STAKEHOLDERS
Exemplo 5.4
Em alguns celulares e outros aparelhos que executam
software embarcado, espera-se que esse software tenha
um bom desempenho, principalmente considerando a
escassez de recursos do ambiente de execuo. Anal,
o usurio no quer pressionar uma tecla e esperar vrios
segundos pela resposta.
penho e economia de recursos so requisitos mais crticos que extensibilidade, de nada adianta o arquiteto
do software para aparelhos que no permitem atualizaes projete uma arquitetura que torne o software
extensvel, com diversos nveis de abstrao, quando
esses nveis impactam negativamente no desempenho.
Pode parecer ingenuidade tomar decises em favor da extensibilidade quando se espera desempenho, como ilustrado no
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
115
Exemplo 5.4.
Muitos arquitetos
ou abordagens que
aos requisitos do sistema a melhor medida de sucesso da arquitetura, desde que se conheam os requisitos.
Pode-
framework
ferramentas
para resolver os
116
CHAPTER 5.
STAKEHOLDERS
Uma forma
prprios usurios esperam que suas informaes estejam a salvo, tanto para casos de ataques, quanto para
manipulao indevida.
ser projetadas e o software deve prover meios de autenticao, autorizao, condencialidade e auditabilidade.
117
necessrios para se realizar as mesmas aes. Por exemplo, para comear a usar o software, agora ser
necessrio inserir uma senha para que o usurio seja
autenticado. Portanto, a adoo de polticas de segurana costuma afetar negativamente a usabilidade do
sistema.
Desenvolvimento e manuteno do sistema, que so responsabilidades que envolvem o maior nmero de stakeholders:
dependentes.
Por m, descrevemos alguns dos stakeholders citados e qual
sua inuncia da arquitetura e em sua documentao.
Para
8 Chief Information Ocer ou CIO o nome dado ao diretor do departamento de Tecnologia da Informao de uma empresa.
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
118
CHAPTER 5.
STAKEHOLDERS
5.2.3.1 Usurios
A principal preocupao dos usurios com as funcionalidades
providas pelo sistema, pouco importando como o software foi
dividido em mdulos ou como esses mdulos se comunicam
entre si.
5.2.3.2 Clientes
Da mesma forma que os usurios, os clientes no costumam
se preocupar em detalhes tcnicos da arquitetura. Eles esto
interessados nas caractersticas da arquitetura ligadas ao seu
negcio: se o sistema faz o que deveria fazer, seus custos, sejam de desenvolvimento ou de execuo, e o planejamento de
seu desenvolvimento.
119
5.2.3.3 Arquiteto
Uma vez que o principal responsvel por projetar a arquitetura, o arquiteto tem a obrigao de conhecer os stakeholders envolvidos no sistema. Isso permitir que ele saiba o que
os stakeholders esperam do sistema e, por m, seja capaz de
projetar o sistema de acordo com os requisitos esperados. O
arquiteto tambm responsvel por negociar os conitos de
interesses entre os stakeholders, o que resultar numa arquitetura com atributos de qualidade que agradem a vrios, mesmo
que parcialmente.
A necessidade de conhecer e dialogar com os diversos stakeholders faz com que o arquiteto precise de habilidades tanto
sociais quanto tcnicas. Em relao ao conhecimento tcnico,
ser experiente no domnio do problema o ajudar a identicar
previamente as diculdades e solues a serem encontradas ao
longo do desenvolvimento. J as habilidades sociais o ajudam
tanto na descoberta de requisitos, quanto na negociao de
divergncias.
5.2.3.4 Desenvolvedor
O desenvolvedor v a arquitetura como base para construir o
sistema.
apresentada para ele. Ela pode ser apresentada como uma especicao, onde no h qualquer liberdade de design durante
o desenvolvimento. Ou ela pode ser apresentada como um guia,
que apresenta algumas restries essenciais para que o software
alcance o sucesso, mas tambm possui diversas liberdades para
as decises de implementao e design de baixo-nvel que cam a cargo do time de desenvolvimento. Ao longo de todo o
espectro, o desenvolvedor espera pela ideia geral do sistema,
onde as funcionalidades sero implementadas, quem sero os
responsveis por elas e quais as decises de design de alto-nvel
relacionadas a elas.
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
120
CHAPTER 5.
STAKEHOLDERS
Um desenvolvedor comumente espera que a arquitetura tambm seja vivel e de acordo com suas habilidades, alm de que
possua as decises de design escritas de forma clara e objetiva.
Ele tambm espera que o documento de arquitetura possibilite
a associao dos requisitos do sistema s partes que o compem. Essa associao o que chamamos de rastreabilidade,
que torna mais fcil tanto a manuteno quanto o entendimento do sistema.
5.2.3.5 Testador
O testador procura no documento de arquitetura as restries
as quais o software deve obedecer. Alm disso, ele espera que
o software seja testvel e, para tanto, sua arquitetura deve
proporcionar tal atributo de qualidade.
O nvel de testabilidade de um software est diretamente ligado
a capacidade dele (ou de suas partes) ser posto em execuo em
ambiente de desenvolvimento e de seu comportamento, interno
ou externo, ser vericvel a partir do esperado.
121
5.3 Resumo
De maneira alguma esgotamos o assunto sobre stakeholders.
Por outro lado, no devemos nos aprofundar ainda mais para
no perdermos nosso foco que o design da arquitetura. Entretanto, acreditamos alcanar os objetivos deste captulo, mesmo
com uma abordagem supercial sobre o assunto. Assim, esperamos que o leitor, a partir de agora:
entenda que os stakeholders se relacionam entre si, podendo, inclusive, gerar demandas conitantes.
5.4 Referncias
5.4.1 Denio e papel dos stakeholders
O padro ISO/IEEE 1471-2000 [54], alm de denir stakeholders, modela seu papel em relao aos vrios elementos
relacionados arquitetura de software.
Work-
122
CHAPTER 5.
STAKEHOLDERS
Soft-
123
5.5 Exerccios
Exerccio 5.1
Qual a importncia da identicao dos stakeholders
na arquitetura de um sistema de software?
Exerccio 5.2
A identicao de muitos stakeholders em uma arquitetura aumenta a chance de sucesso. No entanto, os
interesses dos stakeholders muitas vezes no so claros
e podem ser conitantes e/ou contraditrios. Cite mais
exemplos desses conitos/contradies.
Exerccio 5.3
impossvel capturar as caractersticas funcionais e
as propriedades de qualidade de um sistema complexo
com um simples modelo.
124
CHAPTER 5.
STAKEHOLDERS
Chapter 6
Atributos de Qualidade
Em outra palavras,
1 This
content
is
available
<http://cnx.org/content/m17527/1.5/>.
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
125
online
at
CHAPTER 6.
126
ATRIBUTOS DE
QUALIDADE
de qualidade desejados.
Considerando a importncia dos atributos de qualidade de
software, dedicamos dois captulos a eles.
Neste captulo,
No captulo seguinte, apresentamos tcnicas de design arquitetural e uma srie de estudos de como alguns atributos foram
alcanados na prtica em diferentes sistemas de software. Esses
estudos mostram que tcnicas e padres de design arquitetural foram aplicados para alcanar tais atributos e quais seus
benefcios e limitaes apresentados.
127
ser ditados pelos clientes do software, anal so eles que esperam ter seus problemas resolvidos pelas funcionalidades do
software.
Exemplo 6.1
Se estamos falando do SASF, entre suas funes, podemos citar:
(RF-01):
(RF-03):
(RF-06):
Se o problema de desenvolver software fosse apenas o de atender aos requisitos funcionais, desenvolver software j poderia
ser considerado uma tarefa difcil.
atendidos, muitos dos requisitos funcionais necessitam de conhecimento que ultrapassa os limites da Engenharia de Software, da Cincia da Computao ou mesmo da Matemtica.
Anal, para se implementar sistemas para Computer-Aided
Design (CAD) ou sistemas que analisam os dados extrados do
Large Hadron Collider (LHC)
especco ao domnio do problema, ou seja, grande conhecimento de outras engenharias ( por ex., Engenharia Mecnica
e Civil) ou de outras cincias ( por ex., Fsica e Qumica),
respectivamente.
Alm da necessidade de conhecimento especco ao domnio do
problema, h outra diculdade no desenvolvimento de software
2 http://public.web.cern.ch/public/en/LHC/LHC-en.html
(<http://public.web.cern.ch/public/en/LHC/LHC-en.html>)
CHAPTER 6.
128
ATRIBUTOS DE
QUALIDADE
Exemplo 6.2
Podemos citar alguns exemplos de requisitos nofuncionais do SASF:
(RNF-01):
(RNF-04):
129
(RNF-09):
executar aplicativos originalmente escritos para sistemas operacionais anteriores, o Windows NT teria um custo de adoo
mais baixo, uma vez as empresas no precisariam renovar seu
ecossistema de aplicativos para poder us-lo. J o requisito de
aderncia ao padro POSIX se mostra necessrio para eventuais contratos com clusulas do tipo: o sistema operacional a
ser utilizado deve estar de acordo com o padro POSIX.
do livro
[35].
CHAPTER 6.
130
ATRIBUTOS DE
QUALIDADE
131
Esse tipo de requisito encontrado em muitas situaes, principalmente em grandes empresas ou organizaes. Por exemplo,
comum que o desenvolvimento de sistemas de software para
o Exrcito Americano tenham como requisito ter o processo de
desenvolvimento de acordo com a Joint Technical Architecture
Exemplo 6.3
O sistema de recomendao de livros deve ler as informaes do sistema de aluguel de livros de uma biblioteca, onde cada registro de livro est de acordo com
o padro Dublin Core. Um requisito no-funcional externo desse sistema de recomendao :
(RNF-01):
4A
CHAPTER 6.
132
ATRIBUTOS DE
QUALIDADE
Note
que
uso
do
Dublin
Core
realmente
Exemplo 6.4
Se
considerarmos
condencialidade
(e
um
requisito
normalmente
de
segurana
considerado
de
no-
funcional):
(RNF-01):
(RF-01):
133
Exemplo 6.5
Em um sistema de informao, consideramos o requisito no-funcional:
(RNF-01):
(RF-01):
CHAPTER 6.
134
ATRIBUTOS DE
QUALIDADE
Exemplo 6.6
Se temos um sistema de mensagens instantneas com
os seguintes requisitos:
(RNF-01):
os seus usurios.
(RNF-02):
A soluo no caso a
135
considerar diversos trade-os a m satisfazer melhor aos requisitos mais importantes, j que atender a todos de forma tima
no possvel.
Se adicionamos alguns requisitos de usabilidade ao Exemplo 6.6, esses novos requisitos certamente afetaro negativamente soluo apresentada.
que solues de segurana afetem aos requisitos de usabilidade, visto que essas solues adicionam conceitos no familiares aos usurios (por exemplo, chaves criptogrcas) ou adicionam mais passos para que os usurios realizem suas tarefas
(por exemplo, inserir login e senha).
Isso
diculta o processo de design, uma vez que desconhecer requisitos o mesmo que desconhecer os objetivos do design. Por
este motivo, recomenda-se aos arquitetos que sempre busquem
por requisitos que possuam valores e mtricas bem denidos
e, desta maneira, conheam e possam medir os objetivos e o
sucesso de seu design.
Todavia, nem sempre possvel trabalhar com requisitos bem
denidos,
CHAPTER 6.
136
ATRIBUTOS DE
QUALIDADE
so muito subjetivos,
dicultando bastante a
requisitos de qualidade.
137
caractersticas
no
diretamente
relacionadas
suas
Exemplo 6.7
Vamos considerar um projeto para construo de sistemas de buscas de sites web chamado Hounder
Para deixarmos nosso exemplo ainda mais signicativo em termos de diferenas entre atributos de qualidade, vamos considerar um sistema construdo usando
o Hounder, mas em que todos os seus mdulos executam em apenas um servidor.
servio de busca de HSearch
tambm um
6 http://hounder.org/ (<http://hounder.org/>)
7 Caso
o
leitor
deseje
criar
um
clone
basta
seguir
tutorial
de
cinco
minutos
do
http://code.google.com/p/hounder/wiki/5minuteTutorial
(<http://code.google.com/p/hounder/wiki/5minuteTutorial>)
8 http://www.google.com (<http://www.google.com>)
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
HSearch,
presente
em
CHAPTER 6.
138
ATRIBUTOS DE
QUALIDADE
(RF-01):
(a) crawling,
que a coleta de pginas que serviro de resultados, (b) indexao, que a organizao da informao
obtida na atividade de crawling de forma que facilite
a busca (principalmente em termos de desempenho),
e (c) busca, cujo resultado a realizao do requisito
RF-01.
139
CHAPTER 6.
140
ATRIBUTOS DE
QUALIDADE
contm as palavras-chave.
141
tambm bastante comum encontrarmos sistemas que tm funcionalidades podadas simplesmente porque, se estas existissem,
o software no exibiria os atributos de segurana esperados.
dem interessar a vrios envolvidos no ciclo de vida do softAvailable for free at Connexions
<http://cnx.org/content/col10722/1.9>
CHAPTER 6.
142
ATRIBUTOS DE
QUALIDADE
Para facilitar o processo de avaliao durante o desenvolvimento, foram desenvolvidos o que chamamos de modelos de
qualidade. Modelos de qualidade tm como objetivo facilitar a
avaliao do software, organizando e denindo quais atributos
de qualidade so importantes para atestar a qualidade geral do
software. Alguns exemplos signicativos de modelos de qualidade so os de Boehm [16], o de McCall [72] e o contido no
padro ISO/IEC 9126-1:2001 [4]. Vamos descrever melhor este
ltimo, para assim termos uma melhor noo de quais atributos de qualidade procuramos que a arquitetura permita ao
software.
9 Em
Ingls,
qualidade
usando
vrios
atributos.
dades
presente
alguns
o
autores
suxo
Podemos
no
se
-ilities,
endereo:
referem
que
perceber
-idades,
mesmo qualidades.
isso
aos
comum
na
atributos
de
ao
de
lista
nome
de
quali-
http://en.wikipedia.org/wiki/Ilities
(<http://en.wikipedia.org/wiki/Ilities>).
nos referir a
Em Portugus,
poderamos
dimenses, propriedades
ou
143
Funcionalidade
Conabilidade
Usabilidade
Ecincia
Manutenibilidade
Portabilidade
importante enfatizar que essa lista tem como objetivo ser exaustiva. Portanto, de acordo com a norma, todas as qualidades
que venham a ser requisitadas ao software esto presentes nessa
lista. No padro, cada caracterstica ainda quebrada em subcaractersticas, que so mais especcas, a m de facilitar o
entendimento e a avaliao.
6.3.1.1 Funcionalidade
Funcionalidade a capacidade do software de realizar as
funes que foram especicadas. Esse primeiro atributo pode
parecer bvio, mas seu propsito claro quando passamos a
avaliar um sistema de software: se esse sistema faz menos que
o mnimo que esperado dele, ele no serve, mesmo que o
(pouco) que ele faa, ele faa de forma usvel e convel ou
ecientemente.
CHAPTER 6.
144
ATRIBUTOS DE
QUALIDADE
Para caracterizarmos melhor a funcionalidade do software, devemos ainda considerar as caractersticas de:
adequao,
ou
capacidade
de
prover
as
funes
necessrias para os objetivos dos usurios. Podemos observar que a mtrica deste atributo de qualidade a satisfao ou no dos requisitos funcionais do sistema.
Exemplo 6.8
Para se adequar s necessidades de seus usurios,
basta que o SASF atenda a seus requisitos funcionais.
se adequar s necessidades dos usurios que distribuem os lmes, uma das funes que ele deve
prover a funo de upload de lmes.
Exemplo 6.9
Podemos observar diferentes necessidades de
preciso quando comparamos como os nmeros
so tratados em um sistema de software bancrio
e numa calculadora. No primeiro, os nmeros so
tratados apenas como racionais e truncados na
quantidade de casas decimais relativa moeda do
pas. No Brasil, por exemplo, o software bancrio
s reconhece at centavos de Real.
Portanto,
145
de calculadora. Nesse, sendo uma calculadora comum, esperado que os nmeros seja representados da forma mais prxima aos nmeros reais
10
11
Exemplo 6.10
uma qualidade do SASF ser capaz de interagir com diversos sistemas capazes de reproduzir
o vdeo transmitido.
Autorizao a capacidade de
11 A comunidade interessada em
web services
padres que facilitam a interoperabilidade entre os servios. Podemos encontrar uma grande lista deles no seguinte endereo: http://bit.ly/kIEXs
(<http://bit.ly/kIEXs>).
CHAPTER 6.
146
ATRIBUTOS DE
QUALIDADE
os dados no foram alterados indevidamente, principalmente durante a comunicao. E no-repudiao a capacidade de prover meios para a realizao de auditoria
no sistema. No entanto, importante observar que nem
todos os sistemas precisam estar de acordo com todos os
princpios.
Exemplo 6.11
Uma vez que recebe o nmero do carto do
usurio para receber o pagamento, o SASF deve
garantir que apenas o sistema de cobrana da operadora de carto de crdito seja capaz de vericar as informaes necessrias para a autorizao. Outro aspecto de segurana do SASF que
ele precisa diferenciar os usurios que ainda no
esto registrados (e, consequentemente, que no
pagaram a assinatura), dos j registrados. Para
isso, ele deve realizar a autenticao do usurio.
Exemplo 6.12
Para ser executado no Brasil, o SASF obrigado
por lei a emitir o cupom scal do pagamento da
assinatura do usurio.
6.3.1.2 Conabilidade
Quando armamos que um sistema convel, estamos armando que esse sistema capaz de manter algum nvel de
desempenho quando funcionando sob circustncias determinadas. A conabilidade normalmente denida sob perodos
de tempo. Ou seja, dizer apenas que o SASF deve ser convel
147
maturidade, ou capacidade de se prevenir de falhas resultantes de faltas de software. Isso comum em sistemas
distribudos, onde um componente no cona completamente no resultado provido por outro. Isso pode ser vericado em sistemas com sensores de software, onde um
mdulo pode ser responsvel por julgar os valores gerados
pelos sensores. Caso os valores sejam julgados invlidos,
o mdulo pode simplesmente desligar o sensor defeituoso. A medio do grau de maturidade de um sistema
bem difcil, mas podemos ter uma noo ao analisarmos
decises que foram feitas com este objetivo.
Exemplo 6.13
No caso do SASF, o mdulo de transmisso de
vdeo pode vericar quantas conexes esto abertas para um mesmo destinatrio.
Uma grande
CHAPTER 6.
148
ATRIBUTOS DE
QUALIDADE
cursos disponveis para streaming. Assim, ao detectar esse problema, o SASF pode recusar abrir
novas conexes para esse cliente,
prevenindo-
12
tolerncia a faltas, ou capacidade de manter alguma qualidade de servio em caso de faltas de software ou comportamento imprevisto de usurios, software ou hardware.
Em outras palavras, a medida de funcionamento do software, mesmo que de forma restrita, em caso de a parada
de servidores, parties de rede, falhas de discos rgidos, insero ou leitura de dados corrompidos, etc. Considerando a grande quantidade de eventos que o software
deve tolerar, tambm so muitas as formas de medir o
grau de satisfao a este atributo de qualidade. As formas mais comuns so: medir se o servio continua funcionando em caso de falha de n servidores, medir qual
a variao no tempo de resposta para as operaes mais
comuns ou quantos usurios simultneos o sistema capaz de servir em caso de falhas de servidores ou ainda
vericar como o sistema se comporta se dados invlidos
so inseridos no sistema.
Exemplo 6.14
A forma mais comum de melhorar o grau de tolerncia a faltas em um servio web fazer com
que no dependa de um nico recurso. Seja esse
recurso hardware, como um nico processador,
roteador ou disco rgido, seja esse recurso software, como depender de um nico banco de dados, um nico servio de cadastro ou um nico
12 O
149
servio de inventrio.
Falaremos
recuperabilidade, tambm chamada de resilincia, a capacidade de o sistema voltar ao nvel de desempenho anterior a falhas ou comportamento imprevisto de usurios,
software ou hardware e recuperar os dados afetados, caso
existam. comum medirmos o grau de recuperabilidade
ao medirmos quanto tempo o sistema leva para voltar
aos nveis normais de desempenho. Quanto menor esse
tempo, melhor a qualidade do sistema neste sentido.
Exemplo 6.15
No SASF, podemos medir o tempo de substituio de um servidor de streaming pelo tempo da
deteco da falha, somado ao tempo de inicializao do servidor e somado ao tempo de redirecionamento das requisies de transmisso. Uma
forma de ter o tempo total de recuperao minimizado seria manter o servidor auxiliar ligado,
CHAPTER 6.
150
ATRIBUTOS DE
QUALIDADE
6.3.1.3 Usabilidade
Usabilidade a medida da facilidade de o usurio executar
alguma funcionalidade do sistema. Essa facilidade est ligada
diretamente compreensibilidade, facilidade de aprendizado,
operabilidade, a quanto o usurio se sente atrado pelo sistema e adeso de padres de usabilidade, que so as subcaractersticas desse atributo de qualidade. Apesar de muitos
desses critrios serem subjetivos, h maneiras de medi-los para
termos noo da usabilidade do software. A seguir, mostramos
as subcaractersticas da usabilidade:
tidade de conceitos que o usurio precisa saber previamente para lidar com o sistema ou qualidade ou quantidade da documentao do sistema.
A compreensibil-
facilidade de aprendizado est ligada diretamente compreensibilidade. No entanto, neste caso, a qualidade a
de o usurio aprender a usar o software, caso ele saiba
que o software serve para ele.
idade tambm esto relacionadas quantidade de conceitos ou operaes que o usurio precisa aprender para
fazer com que o software funcione.
151
operabilidade a capacidade de o usurio operar ou controlar o sistema. Esta qualidade muito importante em
grandes sistemas de software, onde h um tipo de usurio
que o administrador do sistema. O administrador deseja ser capaz de realizar operaes sobre o sistema que,
comumente, no esto entre as funes que interessam
aos usurios mais comuns: ligar, desligar ou vericar estado de servidores, realizar backup dos dados, etc. Em
sistemas de redes sociais, por exemplo, entre os servios
providos ao operador, ainda esto a possibilidade de expulsar usurios do sistema ou moder-los, no permitindo
que esses usurios realizem algumas funes, como enviar
mensagens ou mesmo barrando conexes de acordo com
o endereo de origem.
6.3.1.4 Ecincia
A ecincia ou desempenho talvez a qualidade mais buscada
durante o desenvolvimento de software, uma vez que ela a
mais percebida pelos usurios. Ela a qualidade relacionada
ao uso de recursos do sistema quando esse prov funcionalidade
e tambm a com que os desenvolvedores mais se preocupam.
Quando queremos medir ecincia, medimos basicamente duas
caractersticas:
CHAPTER 6.
152
ATRIBUTOS DE
QUALIDADE
Google Web Search, o primeiro capaz de servir a apenas um milsimo da quantidade de usurios servida pelo
segundo.
Exemplo 6.16
Vamos considerar um sistema servidor de arquivos. Esse servidor de arquivos usa apenas um
disco rgido e capaz de servir a cinco usurios simultneos, cada um usando 10 MB/seg de banda
passante (fazendo upload ou download).
Va-
cada.
No Exemplo 6.16, uma forma de melhorar as condies
de uso, ou mais especicamente, aumentar a quantidade
de usurios simultneos, seria seria substituir um dos recursos do sistema por outro com maior capacidade. Ou
seja, escalar verticalmente.
153
Desta maneira,
Alm
Figura 6.1:
CHAPTER 6.
154
ATRIBUTOS DE
QUALIDADE
Esta abor-
155
Figura 6.2:
CHAPTER 6.
156
ATRIBUTOS DE
QUALIDADE
6.3.1.5 Manutenibilidade
A manutenibilidade uma qualidade, s vezes, negligenciada
pelos usurios, mas muito importante aos desenvolvedores. Ela
a capacidade de o software ser modicado em seu processo de
evoluo. Podemos citar as seguintes caractersticas do atributo de manutenibilidade: a analisabilidade, a modicabilidade
e a testabilidade.
analisabilidade:
157
Exemplo 6.19
No SASF, por termos o mdulo de transmisso
de vdeos separado do gestor de usurios, qualquer mudana ou adio nos formatos suportados
para transmisso no deve afetar ao mdulo de
usurios.
web que tambm foi adotada no SASF a aplicao do padro Model-View-Controller (MVC)
13
Mas, alm
CHAPTER 6.
158
ATRIBUTOS DE
QUALIDADE
6.3.1.6 Portabilidade
O ltimo atributo de qualidade presente no padro ISO/IEC
9126-1:2001 o de portabilidade. Esse atributo a medida de
adaptaes necessrias para que o sistema tenha seus requisitos ou ambientes de execuo modicados, podendo ser o ambiente de software, de hardware ou organizacional. Esse atributo
importante, por exemplo, para jogos, uma vez que desejvel que eles sejam capazes de executar no maior nmero de
plataformas, mas tambm desejvel que o custo para tornar
isso possvel seja baixo.
tivos para celulares. A necessidade de um aplicativo para celulares ser portvel existe porque comum que seus desenvolvedores queiram que ele esteja disponvel em dezenas de modelos
diferentes. Isso signica que um mesmo aplicativo deve estar
disponvel para dezenas de ambientes de hardware diferentes.
Portanto, no faz sentido que o mesmo aplicativo seja reimplementado diversas vezes, mas sim que seja projetado de forma
a minimizar o esforo para alterar o ambiente de hardware.
A portabilidade pode ainda ser dividida nas seguintes caractersticas:
Exemplo 6.20
O Vuze
14
14 http://www.vuze.com (<http://www.vuze.com>)
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
159
CHAPTER 6.
160
ATRIBUTOS DE
QUALIDADE
mercado-alvo
time-to-market
custo e benefcio
vida til do sistema
agenda de lanamento
6.4.1 Mercado-alvo
O arquiteto s capaz de priorizar os atributos de qualidade
em seu design se conhecer o pblico e o mercado para o qual
o software est sendo construdo. Por exemplo, portabilidade
e funcionalidade so buscados para o pblico geral de um pacote de aplicativos de escritrio e, portanto, priorizados neste
caso. Por outro lado, ao se construir um sistema de infraestrutura para uma empresa especca, o arquiteto pode priorizar
a ecincia em detrimento da portabilidade e at mesmo da
usabilidade, uma vez que os usurios comuns desse sistema so
operadores qualicados.
161
6.4.2
Time-to-market
CHAPTER 6.
162
ATRIBUTOS DE
QUALIDADE
J se o software
163
6.6 Referncias
6.6.1 Requisitos funcionais e no-funcionais
Os livros Software Engineering [100], de Sommerville, Requirements Engineering:
A Practitioner's
CHAPTER 6.
164
ATRIBUTOS DE
QUALIDADE
Chapter 7
Tcnicas de Design
Arquitetural
1
1 This
content
is
available
<http://cnx.org/content/m17523/1.5/>.
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
165
online
at
CHAPTER 7.
166
TCNICAS DE DESIGN
ARQUITETURAL
separao de preocupaes; e
uso de padres e estilos arquiteturais.
desempenho e escalabilidade;
segurana;
tolerncia a faltas;
compreensibilidade e modicabilidade; e
operabilidade.
modularizao, separao de preocupaes, acoplamento e coeso, separao de interfaces de suas implementaes, entre
outros. Inclusive, muitos destes j foram apresentados no captulo sobre Design, mas sem o devido foco em design arquitetural. Por isso, nesta seo, descrevemos novamente alguns deles,
desta vez mostrando seu papel na arquitetura. Os princpios e
tcnicas que apresentamos a seguir so trs: uso da abstrao
ou nveis de complexidade, separao de preocupaes e uso de
padres e estilos arquiteturais.
7.1.1 Abstrao
Abstrao a seleo de um conjunto de conceitos que representam um todo mais complexo.
software, a arquitetura j elimina, ou em outras palavras, abstrai naturalmente alguns detalhes do software. Por exemplo,
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
167
tido top-down, o arquiteto usa elementos e relaes arquiteturais descritos em alto nvel de abstrao para iniciar o projeto da arquitetura.
alto, comum que os elementos arquiteturais usados no projeto mostrem apenas o que realizam e no como realizam suas
responsabilidades.
168
CHAPTER 7.
TCNICAS DE DESIGN
ARQUITETURAL
condio de parada podem trazer desvantagens: se as informaes presentes na arquitetura so insucientes, a liberdade
proporcionada ao design de baixo nvel pode resultar numa
soluo que no implementa os requisitos de qualidade esperados. Por outro lado, se so excessivas, a arquitetura pode: (1)
custar mais tempo do que o disponvel para ser projetada; (2)
desmotivar o time de desenvolvimento, por engessar o design
de baixo nvel pela grande quantidade de restries; e (3) ser
invivel, por ter sido projetada sem o conhecimento que muitas
2 Devemos nos lembrar que alguns requisitos de qualidade no so completamente conhecidos em etapas iniciais do ciclo de desenvolvimento. Por
exemplo, a tolerncia a faltas ou o tempo de recuperao podem ser muito
dependentes da soluo de design de baixo nvel.
169
CHAPTER 7.
170
TCNICAS DE DESIGN
ARQUITETURAL
e um
Padres arquitetu-
rais facilitam a comunicao da arquitetura porque descrevem conceitos e elementos que estaro presentes no
171
design.
madas empilhadas, as camadas dos nveis superiores apresentam um nvel de abstrao maior, mais prximas
aos servios disponveis aos usurios. Enquanto isso, nas
camadas inferiores, temos servios mais bsicos, normalmente de infraestrutura, e que servem para compor os
servios de camadas mais acima. Como exemplo de arquitetura que usa este padro, podemos citar a arquitetura da pilha de protocolos TCP/IP. Ela organizada em
cinco camadas, sendo elas: Aplicao, Transporte, Rede,
Enlace e Fsica.
Dois elemen-
Note que
5 Buschmann, F.
et al, Pattern-Oriented Software Architecture, Volume 1: A System of Patterns. John Wiley & Sons, Agosto 1996.
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
CHAPTER 7.
172
TCNICAS DE DESIGN
ARQUITETURAL
modo que possam reusados e recombinados para diferentes propsitos. O exemplo cannico de uso do padro
Pipes & Filters a arquitetura de um compilador, que
pode ser dividida nos seguintes lters:
analisador lx-
Model-View-Controller ::
a lgica de
6 JavaServer
e Spring MVC .
Faces
Technology
(JSF):
http://java.sun.com/javaee/javaserverfaces/
(<http://java.sun.com/javaee/javaserverfaces/>)
7 Apache
Struts :
http://struts.apache.org/
(<http://struts.apache.org/>)
8 Spring
Framework :
http://www.springsource.org/
(<http://www.springsource.org/>)
173
Microkernel::
10
e diversos sis-
11
e o ImageJ
12
12 ImageJ
Image
Processing
and
Analysis
http://rsbweb.nih.gov/ij/ (<http://rsbweb.nih.gov/ij/>)
in
Java:
CHAPTER 7.
174
TCNICAS DE DESIGN
ARQUITETURAL
design que, ao contrrio dos padres, as tticas no necessariamente descrevem elementos arquiteturais que devem existir na soluo. Desta maneira, responsabilidade do arquiteto
deni-los de forma a seguir as dicas contidas nas tticas.
Ao aplicar as tticas ao design, assim como durante a aplicao
de padres, o arquiteto deve tambm considerar os trade-os
existentes:
Por isso,
para facilitar a avaliao dos trade-os durante o design, apresentaremos algumas tticas de acordo com as qualidades que
elas implementam, mas tambm seremos explcitos sobre o que
afetado negativamente.
A seguir, apresentamos tticas de design de acordo com os
seguintes atributos de qualidade:
desempenho e escalabilidade;
segurana;
tolerncia a faltas;
compreensibilidade e modicabilidade; e
operabilidade.
175
no forem capazes de responder a esta carga de novas requisies, eles se tornaro o gargalo da arquitetura, prejudicando
o desempenho de todo o sistema.
CHAPTER 7.
176
TCNICAS DE DESIGN
ARQUITETURAL
7.2.1.3
Caching
177
13 A arquitetura do
MapReduce
13
(ou de
CHAPTER 7.
178
TCNICAS DE DESIGN
ARQUITETURAL
14
), percebemos que
ele divide o processamento em tarefas menores e tenta associar cada tarefa ao processador que esteja mais prximo dos
dados necessrios. Com esta poltica de atribuio de tarefas,
o MapReduce consegue processar grandes massas de dados em
tempo relativamente pequeno.
J a paralelizao de processamento consiste em permitir que
linhas de execuo independentes, por exemplo, chamadas de
usurios diferentes em um sistema web, ocorram simultaneamente.
maneiras:
Clusters [34].
14 Apache
Hadoop:
http://hadoop.apache.org/
(<http://hadoop.apache.org/>)
179
J em nvel
180
CHAPTER 7.
TCNICAS DE DESIGN
7.2.2 Segurana
ARQUITETURAL
181
Esta tcnica
novos elementos arquiteturais soluo. Estes novos elementos, por serem novos conceitos, prejudicam a compreensibilidade do sistema em tempo de design e a operabilidade durante
a execuo. Alm disso, as tticas de segurana tambm requerem a execuo de passos adicionais de processamento (por
exemplo, criptografar uma mensagem ou checar se senha inserida vlida), o que prejudica o desempenho da aplicao.
Entre
CHAPTER 7.
182
TCNICAS DE DESIGN
ARQUITETURAL
Diferentes responsabilidades
183
7.2.3.4 Redundncia
No s podemos distribuir diferentes responsabilidades de processamento a diferentes elementos da arquitetura, como tambm podemos atribuir a mesma responsabilidade a diferentes
elementos.
problema com um dos responsveis, outro pode assumir seu lugar e retornar corretamente a resposta. Isso o que chamamos
de atribuir redundncia a alguns elementos da arquitetura, sejam elementos de dados ou de processamento. Vale observar
que no basta apenas replicar a responsabilidade do elemento
em questo, mas decidir (1) se o elemento redundante car
sempre ativo ou apenas entrar em execuo quando a falha
do original for identicada, (2) como as falhas sero identicadas durante a execuo e (3) como os clientes do elemento
que falhou redirecionaro suas chamadas para o elemento redundante.
CHAPTER 7.
184
TCNICAS DE DESIGN
ARQUITETURAL
7.2.5 Operabilidade
Por m, para proporcionar operabilidade ao sistema de software, o arquiteto deve aplicar as seguintes tcnicas durante o
design da arquitetura.
185
computao autonmica ao software, sua arquitetura deve estar preparada de forma que dados sobre o estado atual do
sistema no sejam apenas coletados, mas tambm sejam analisados automaticamente e os resultados dessa anlise sejam
capaz de ativar automaticamente tarefas de administrao do
sistema.
a monitorao e a
CHAPTER 7.
186
TCNICAS DE DESIGN
ARQUITETURAL
7.3 Resumo
Este captulo exps o que um arquiteto deve saber em relao
s tcnicas e princpios de design arquitetural.
Devemos ad-
mitir que seu objetivo ambicioso, uma vez que que existem
muitos livros e artigos de Design de Software sobre o mesmo
assunto. No entanto, a maioria dos livros e artigos disponveis
no so explicitamente escritos sobre Arquitetura de Software
ou no tm como pblico-alvo o leitor ainda inexperiente. Da
nossa tentativa de preencher esta lacuna.
Ao nal deste captulo, esperamos que o leitor conhea os
seguintes princpios de design arquitetural:
desempenho e escalabilidade;
segurana;
tolerncia a faltas;
compreensibilidade e modicabilidade; e
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
187
operabilidade.
7.4 Referncias
7.4.1 Abstrao e separao de preocupaes
Sobre os benefcios e aplicao da abstrao e separao de
preocupaes no design de software, recomendamos a leitura do
livro Code Complete[74], de McConnell. Alm dele, podemos
citar os seguintes artigos sobre o assunto: The Structure of The
THE-multiprogramming System[37], de Dijkstra, e o On The
Criteria to Be Used in Decomposing Systems Into Modules[81],
de Parnas.
CHAPTER 7.
188
TCNICAS DE DESIGN
ARQUITETURAL
Performance Anti-Patterns[96],
de
Optimistic Replica-
Chapter 8
Documentao da
Arquitetura
1
O documento de arquitetura auxilia no processo de design, uma ferramenta de comunicao entre stakeholders e pode servir de modelo de anlise do software;
1 This
content
is
available
<http://cnx.org/content/m17525/1.6/>.
189
online
at
CHAPTER 8.
190
DOCUMENTAO DA
ARQUITETURA
Um nico diagrama no suciente para conter a quantidade de informao que deve ser mostrada por um arquiteto. Por isso, a necessidade de mltiplas vises arquiteturais;
191
est dividido em grandes mdulos funcionais e, assim, podemos inferir quais so suas principais funcionalidades e algumas
de suas relaes entre si.
Exemplo 8.1
[Deciso Arquitetural 001] O SASF dividido em cinco
CHAPTER 8.
192
DOCUMENTAO DA
ARQUITETURA
svel por prover um conjunto de funcionalidades relacionadas entre si. Os grandes mdulos do SASF so:
Locadora de Filmes;
Transmissor de Filmes;
Motor de Sugestes;
Cadastro de Usurios;
Cadastro de Filmes.
As principais funcionalidades providas por cada mdulo e suas relaes de uso esto descritas no diagrama
representado na Figura 8.1.
193
Figura 8.1:
dica relaes de uso entre os mdulos para que possam implementar suas funes. Por m, o esteretipo
indica uma relao de especializao
dos dados guardados no elemento responsvel pelo cadastro.
especializao
Motivao:
CHAPTER 8.
194
DOCUMENTAO DA
ARQUITETURA
Exemplo 8.2
[Deciso Arquitetural 002] A implantao do mdulo que implementa as funcionalidades do servio de
transmisso de lmes deve depender apenas de um
parmetro:
endereos.servidores.congurao:
dereos
IP
dos
servidores
que
lista de enconstituem
Nele,
195
Exemplo 8.3
[Deciso Arquitetural 002] A implantao do mdulo que implementa as funcionalidades do servio de
transmisso de lmes deve depender apenas de um
parmetro:
endereos.servidores.congurao:
dereos
IP
dos
servidores
que
lista de enconstituem
Nele,
Como a
196
CHAPTER 8.
DOCUMENTAO DA
ARQUITETURA
documentao da arquitetura versa sobre as muitas preocupaes dos stakeholders, ela serve de ferramenta para comunicao, uma vez que prov um vocabulrio comum sobre o
sistema, alm de registrar as relaes entre as preocupaes e
de que forma os eventuais conitos foram ou devem ser resolvidos.
Note que para servir de ferramenta de comunicao, o documento arquitetural deve ser construdo de forma que respeite
o conhecimento e as necessidades dos stakeholders. Para que
isto seja possvel, deve-se conhecer para quem o documento
est sendo escrito. Portanto, devemos escrever a arquitetura
de forma que possua partes que interessem aos usurios, aos
clientes, aos desenvolvedores, aos testadores, ao gerente de projeto ou a outros stakeholders envolvidos no processo.
Por exemplo, os usurios buscam pelas funcionalidades, capacidades e comportamento do sistema, no como ele foi dividido
em mdulos, como os mdulos se comunicam entre si ou se
eles foram desenvolvidos do zero ou tiveram partes reutilizadas
de outros sistemas. Clientes e gerentes tm alguns interesses
semelhantes, como custos de desenvolvimento ou cronograma
de lanamento. No entanto, os clientes tambm se preocupam
com o alinhamento do software ao seu negcio, enquanto o
gerente procura como minimizar os custos para se adequar ao
oramento, ou como as tarefas de implementao sero divididas entre seu time de desenvolvimento. Finalmente, desenvolvedores e testadores esto interessados em aspectos tcnicos
do design, por exemplo, qual a diviso em mdulos do sistema,
quais as alternativas de design disponveis ou como os atributos
de qualidade (desempenho, escalabilidade, tolerncia a faltas,
etc.)
197
A consistncia
Se os
Exemplo 8.4
No SASF, se dividirmos os desenvolvedores em mais
vrios times, comum que haja uma maior interao
entre os membros de um mesmo time do que entre
times diferentes.
CHAPTER 8.
198
DOCUMENTAO DA
ARQUITETURA
Exemplo 8.5
O software de manipulao de imagens ImageJ
de-
sempenha bem dois atributos de qualidade: a extensibilidade e a portabilidade. Sua extensibilidade garantida por ter sua arquitetura ser baseada no uso de plugins. Com isso, ele composto de um ncleo de funcionalidades bsicas e prov meios para que novas funcionalidades sejam adicionadas em tempo de execuo.
J sua portabilidade garantida por ele ter seu ncleo
e plugins implementados usando a linguagem de programao Java, permitindo sua execuo em qualquer
ambiente que disponha da mquina virtual Java.
Como o cdigo-fonte do ImageJ de domnio pblico,
2 ImageJ
Image
Processing
and
Analysis
http://rsbweb.nih.gov/ij/ (<http://rsbweb.nih.gov/ij/>)
in
Java:
199
guma das vises for inconsistente com as outras, podem surgir dvidas sobre:
CHAPTER 8.
200
DOCUMENTAO DA
ARQUITETURA
Exemplo 8.6
Na [Deciso Arquitetural 001], descrita no Exemplo 8.1, apresentamos trs mdulos que devem lidar diretamente com armazenamento: Cadastro de Usurios,
Cadastro de Filmes e Transmissor de Filmes. No entanto, apenas as funes que eles devem implementar
foram descritas, no como devem implementar. As decises a seguir mostram alguns aspectos de como essas
funes devem ser implementadas.
(Deciso Arquitetural 002). O armazenamento das informaes dos mdulos Cadastro de Usurios e Cadastro de Filmes ser realizado usando um Sistema Gerenciador de Banco de Dados Relacional (SGBDR) de
modo a permitir criao, edio, obteno e remoo
das entradas.
As informaes guardadas no SGBDR so os atributos
dos Usurios e Filmes e so essencialmente textuais ou
metainformaes para localizao de arquivos de mdia (fotos ou vdeos).
O armazenamento de arquivos
essencialmente
relacionais,
se
encaixando
perfeita-
201
CHAPTER 8.
202
DOCUMENTAO DA
ARQUITETURA
de validao da arquitetura em
et al
em
[104].
Software Ar-
203
[33].
Evaluating
CHAPTER 8.
204
DOCUMENTAO DA
ARQUITETURA
No entanto,
Architectural Connection
6 Mais
contradas
informaes
no
site:
[7]
sobre
linguagem
MetaH
podem
ser
en-
http://www.htc.honeywell.com/metah/index.html
(<http://www.htc.honeywell.com/metah/index.html>)
7 A ferramenta
205
navegao entre pontos relacionados, sejam eles requisitos, decises de design ou partes da implementao.
A rastreabilidade nos permite analisar qual o impacto de uma
deciso de design, tanto em termos de quais requisitos ela afeta,
quanto quais elementos de software ela dita a existncia ou, em
caso de manuteno, quais elementos so ou devem ser afetados
por mudanas nos requisitos ou nas decises.
O exemplo a
Exemplo 8.7
Se observarmos a arquitetura do SASF e procurarmos
pelas decises responsveis por facilitar a manuteno
do sistema,
206
CHAPTER 8.
DOCUMENTAO DA
ARQUITETURA
Aps a denio,
mencionamos tambm que a arquitetura composta de diversas decises de design (no caso, design de alto-nvel ou arquitetural) e que cada deciso contm, ao menos em nvel conceitual,
uma descrio, objetivos e algum argumento ou motivao.
Como a arquitetura formada por decises arquiteturais, devemos conhecer os tipos de decises arquiteturais para ento
sermos capazes de documentar a arquitetura.
Uma deciso arquitetural, como tambm j denido anteriormente, uma escolha entre as alternativas de design arquitetural, que se prope a alcanar um ou mais atributos de qualidade
do sistema, por meio de estruturas ou regras que ela envolve ou
dene. Em outras palavras, podemos dizer que uma deciso arquitetural descreve parte do design, onde essa descrio pode:
(1) ditar a existncia ou inexistncia de partes do sistema, (2)
especicar propriedades que, durante a construo, partes do
sistema devem satisfazer, ou (3) citar tcnicas que devem ser
seguidas durante a construo de partes do sistema. Podemos
ento dividir as decises arquiteturais em:
207
arquiteturais dinmicos.
CHAPTER 8.
208
DOCUMENTAO DA
ARQUITETURA
Exemplo 8.8
[Deciso Arquitetural 005] Os dados do Cadastro de
Usurios e do Cadastro de Filmes devem ser particionados horizontalmente.
Objetivo: Distribuir carga, melhorar o desempenho e
aumentar o nmero de pontos de falhas.
Motivao: Ao particionar horizontalmente os dados,
permite-se a distribuio da carga de requisies entre vrios servidores de armazenamento, que estaro
executando instncias do SGBDR. Com menor carga,
o desempenho pode ser melhorado.
onde descrevemos as parties do conjunto de dados para ento descrever o comportamento de particionamento dos dados
e assim conseguir algum nvel de escalabilidade horizontal.
Por outro lado, h decises que probem a existncia de elementos arquiteturais. Essas decises so chamadas de decises
209
O papel
Exemplo 8.9
[Deciso Arquitetural 008] Os mtodos pblicos de
cada servio que implementa os mdulos descritos na
[Deciso Arquitetural 001] devem seguir as seguintes
regras de logging :
Deve-se
registrar
todos
os
parmetros
das
CHAPTER 8.
210
DOCUMENTAO DA
ARQUITETURA
Exemplo 8.10
[Deciso Arquitetural 010] Os servios que implementam os mdulos descritos na [Deciso Arquitetural 001]
devem ser replicados, evitando assim pontos nicos de
falha. Para facilitar a replicao, os mdulos no devem manter estado, delegando esta responsabilidade
aos servios de armazenamento.
Objetivo: Replicando instncias de servios, elimina-se
os pontos nicos de falha, aumentando a conabilidade
do sistema e a tolerncia a faltas.
Motivao: Implementando servios stateless, a replicao ca trivial, uma vez que a requisio pode usar
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
211
Exemplo 8.11
Neste exemplo, apresentamos uma deciso hipottica
do software Vuze .
(Deciso Arquitetural 001).
temas operacionais.
Motivao: Como um dos objetivos do Vuze alcanar
o maior nmero de usurios possvel, no queremos impor a barreira de instalao em um ou outro sistema
operacional especco. Uma vez que programas escritos
CHAPTER 8.
212
DOCUMENTAO DA
ARQUITETURA
em Java podem executar em qualquer sistema operacional que seja capaz de executar a Mquina Virtual
Java (JVM) e que a maioria dos sistemas para usurios
nais j dispem da JVM, esta linguagem deve ser usada para poupar o trabalho de portar o Vuze para diferentes sistemas.
Exemplo 8.12
[Deciso Arquitetural 011] O time de desenvolvimento
ser dividido em equipes menores e cada equipe ser
responsvel pela implementao do servio responsvel
pelas funcionalidades de mdulo descrito na [Deciso
Arquitetural 001].
Objetivo: Minimizar o tempo de desenvolvimento.
Motivao: A possibilidade de paralelizar o desenvolvimento pode diminuir o tempo total de construo do
software. No entanto, deve-se respeitar as decises arquiteturais que denem as interfaces entre os mdulos,
para que sua integrao seja facilitada. endexample
213
8.2.4.1 Descrio
O atributo de descrio, como j mencionamos no captulo
de fundamentos, simplesmente a descrio da deciso, que
mostra o que foi decidido na arquitetura. Na descrio, podemos encontrar (1) quais elementos arquiteturais devem estar
presentes, caso seja uma deciso existencial; (2) quais propriedades devem se manifestar nos elementos ou quais regras
ou princpios de design devem ser seguidos, caso seja uma deciso de propriedade; ou (3) qual metodologia deve ser seguida,
como o time deve ser dividido para a implementao dos mdulos ou qual ferramenta deve ser utilizada para integrao,
caso seja uma deciso executiva.
A descrio pode ser representada usando diversas linguagens,
podendo ser textuais ou grcas e formais ou informais. A escolha da linguagem que ser utilizada na descrio depende dos
objetivos da deciso e dos stakeholders interessados. Se, entre
os seus objetivos, queremos que a deciso permita tambm gerao automtica de parte da implementao, anlise baseada
em modelos ou simulaes, ou vericao de conformidade, a
descrio deve utilizar linguagens formais ou semiformais que
facilitam estas atividades. Por outro lado, se esperamos que a
deciso apenas informe que elementos devem estar na arquitetura e suas caractersticas, mas no esperamos gerao, anlise
ou vericao automticas, linguagens semiformais ou mesmo
informais podem ser utilizadas, como a lngua Portuguesa ou
diagramas caixas e setas, desde que a ambiguidade seja evitada por meio de legendas ou explicaes mais detalhadas.
CHAPTER 8.
214
DOCUMENTAO DA
ARQUITETURA
Ao utilizarmos
Exemplo 8.13
[Deciso Arquitetural 001] A arquitetura do SASF
dividida em trs camadas lgicas: apresentao, lgica
de negcio e persistncia de dados. A camada de apresentao se comunica apenas com a lgica de negcio e
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
215
Exemplo 8.14
[Deciso Arquitetural 001] A arquitetura do SASF
dividida em trs camadas lgicas: apresentao, lgica
de negcio e persistncia de dados, que sero mapeadas
respectivamente
para
os
pacotes:
com.sasf.webui,
CHAPTER 8.
216
DOCUMENTAO DA
ARQUITETURA
8.2.4.2 Objetivo
O objetivo da deciso serve para registrarmos o motivo da deciso estar sendo tomada. Como decises de design so conduzidas por requisitos, sejam eles funcionais ou de qualidade, a
identicao dos requisitos deve estar presente neste atributo.
Os objetivos das decises arquiteturais ajudam na rastreabilidade da arquitetura.
No Exemplo 8.15, percebemos duas formas de meno aos requisitos implementados pela deciso. A primeira forma presena o identicador do requisito de qualidade, RNF-01. J a
outra forma uma breve descrio do requisito alcanado.
Exemplo 8.15
(continuao da [Deciso Arquitetural 001])
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
217
Objetivo:
8.2.4.3 Fundamentao
Uma deciso arquitetural deve ser tomada com alguma fundamentao, seja ela uma anlise das alternativas de design,
baseada na experincia prvia do arquiteto, ou baseada em
padres de design. Esta fundamentao resulta no julgamento
das vantagens e desvantagens das alternativas e servem para
justicar a soluo proposta.
No atributo fundamentao, registramos a justicativa da deciso para que haja um registro histrico das motivaes e
consideraes feitas pelo arquiteto para chegar soluo de
design.
CHAPTER 8.
218
DOCUMENTAO DA
ARQUITETURA
Exemplo 8.16
(continuao da [Deciso Arquitetural 001])
Motivao: Projetar os elementos internos do sistema
de modo que cada um pertena a apenas uma camada
lgica ajuda a aumentar a coeso e diminuir o acoplamento.
desenvolvido com o objetivo de ser parte da apresentao, da lgica ou da persistncia do sistema. Dessa
maneira, cada elemento ter sua responsabilidade bem
denida, mesmo que em alto nvel.
Como a comuni-
cao entre as camadas pr-denida, a de seus elementos tambm : elementos da camada de apresentao no se comunicaro com elementos da camada
de persistncia, por exemplo.
Assim, o acoplamento
219
8.2.4.4 Escopo
Nem todas as decises arquiteturais so vlidas durante todo o
ciclo de vida do software ou vlidas em todos os mdulos que o
compem. Por isso, surge a necessidade de registrar o escopo
da deciso. Este registro tipo de registro se torna importante
em decises de propriedades, uma vez que normalmente tratam
de preocupaes transversais e abrangem grandes partes do
sistema, e em decises executivas, que devem, por exemplo,
especicar quais etapas do processo de desenvolvimento devem
usar tais metodologias.
O Exemplo 8.17, a seguir, descreve o escopo da Deciso Arquitetural 001, que bem abrangente.
J no Exemplo 8.18,
10
como
Exemplo 8.17
(continuao da [Deciso Arquitetural 001])
Escopo: Esta deciso vlida para todos os servios
que implementam lgica e que tm interface com o
usurio.
Exemplo 8.18
Escopo: A deciso de usar JMX para exposio das
mtricas de desempenho s vlida para os casos
denidos na [Deciso Arquitetural 008].
8.2.4.5 Histrico
A documentao da arquitetura, assim como o que ela representa, evolui ao longo do tempo. Decises so tomadas, avali-
10 Java
Management
Extensions
http://java.sun.com/products/JavaManagement/
(<http://java.sun.com/products/JavaManagement/>)
(JMX):
CHAPTER 8.
220
DOCUMENTAO DA
ARQUITETURA
Exemplo 8.19
(continuao da [Deciso Arquitetural 001])
Histrico:
revisada,
sugerida
Escopo
(G.
Germoglio,
modicado.
2009/07/15);
(G.
Germoglio,
Da mesma
forma que as decises evoluem ao longo do tempo, elas podem ter diversos estados que merecem ser registrados. Como
o conjunto de estados que podem ser atribudos a uma deciso
arquitetural depende do processo de desenvolvimento adotado,
citamos apenas alguns estados mais comuns:
221
Rejeitada:
Ela
8.2.4.7 Categoria
Assim como o estado atual, o atributo categoria serve para
possibilitar a organizao das decises arquiteturais em grupos
relacionados. Normalmente, esse atributo composto por uma
lista de palavras-chave associadas s decises.
Esse atributo permite, por exemplo, que os stakeholders selecionem decises relacionadas a um atributo de qualidade especco.
CHAPTER 8.
222
DOCUMENTAO DA
ARQUITETURA
11
arquiteturais
em
viewDocumenting
223
4+1 de Kruchten;
Pontos de vista de Rozanski e Woods.
Pontos de vista do Software Engineering Institute;
8.3.2
Viewpoints
de Rozanski e Woods
CHAPTER 8.
224
DOCUMENTAO DA
ARQUITETURA
Working With Stakeholders Using Viewpoints and Perspectives [92]. Ele uma evoluo do conjunto 4+1, pois adiciona
dois novos pontos de vista ao conjunto de Kruchten, e prov
mais informaes que ajudam no design do que na documentao.
Os pontos de vista presentes neste conjunto so:
Funcional: representa o aspecto funcional do software descrito. Vises derivadas deste ponto de vista contm decises sobre as funes presentes no software e os mdulos e submdulos que implementam essas funes. Este
ponto de vista especializado em mostrar a estrutura esttica do software, mostrando suas partes, suas relaes e
suas interfaces. Seu equivalente no conjunto de Kruchten
o ponto de vista Lgico.
de Concorrncia:
comportamentais do software.
ponto de vista contm decises sobre concorrncia, sincronia ou assincronia de chamadas e aspectos temporais
em geral do software e de suas funes. Seu equivalente
no conjunto de Kruchten o ponto de vista de Processo.
de Desenvolvimento:
Seu equivalente
225
Informacional:
Operacional: representa os aspectos operacionais do software. Ou seja, vises derivadas deste ponto de vista contm decises com estratgias de execuo, administrao
e suporte do software em produo.
8.3.3
Viewtypes
stitute
(SEI)
do
de Componentes e Conectores: este ponto de vista se preocupa em descrever os aspectos dinmicos e de comportamento e interaes entre os elementos da arquitetura.
nele em que encontramos os estilos arquiteturais: Pipesand-lters, Publish-Subscribe, Cliente-Servidor, Peer-toPeer e outros.
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
CHAPTER 8.
226
DOCUMENTAO DA
ARQUITETURA
de Mdulos: este ponto de vista se preocupa em descrever a estrutura esttica da arquitetura e em como ela
se divide em unidades de cdigo.
O estilo arquitetural
de Alocao:
227
os
conceitos
apresentados
neste
captulo
no
A diculdade de doc-
cionam orientao na implementao dos requisitos de qualidade, ajuda no controle intelectual sobre a complexidade da
soluo e servem de ferramenta que promove a integridade conceitual entre os stakeholders.
No entanto, um grande sistema de software implica numa
grande soluo de design, que deve conter muitas decises arquiteturais e que devem ser apresentadas a muitos stakeholders, que demandam vises diferentes. A consequncia disso
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
228
CHAPTER 8.
DOCUMENTAO DA
ARQUITETURA
Entre estes
12
12 Software
Architecture
Visualization
and
Evaluation
229
consistncia
entre
implementao
documento
anteriormente, que a inconsistncia do documento com a realidade do software, inutiliza o documento, pois o transforma
numa fonte de informao intil. Assim, considerando que
custoso o processo de criao do documento de arquitetura,
todo o trabalho realizado para tanto pode ter sido em vo.
Para a evitar o deslize arquitetural, recomenda-se que sejam
periodicamente utilizadas durante todo o processo de desenvolvimento tcnicas de vericao de conformidade. Essas tcnicas, quando aplicadas, indicam se a implementao est de
acordo com o design.
http://fc-md.umd.edu/save/default.asp
md.umd.edu/save/default.asp>)
(<http://fc-
CHAPTER 8.
230
DOCUMENTAO DA
ARQUITETURA
8.5 Resumo
O objetivo deste livro no s fazer com que o leitor saiba
projetar arquiteturas, mas tambm que tenha noes de como
documentar o projeto. Dessa maneira, o objetivo deste captulo foi fazer com que o leitor conhea a importncia e a tcnica
primordial da documentao da arquitetura, que representla por meio de mltiplas vises. Assim, esperamos que a partir
de agora o leitor, alm de conhecer alguns conjuntos de pontos
de vista arquiteturais de referncia, seja capaz de entender que:
O documento de arquitetura auxilia no processo de design, uma ferramenta de comunicao entre stakeholders e pode servir de modelo de anlise do software;
Um nico diagrama no suciente para conter a quantidade de informao que deve ser mostrada por um arquiteto. Por isso, a necessidade de mltiplas vises arquiteturais;
231
8.6 Referncias
8.6.1 Benefcios da documentao
Muitos autores armam que a documentao do design arquitetural benca para o processo de desenvolvimento do software. Alm dos trabalhos j referenciados ao longo do texto,
citamos: o livro The Art of Systems Architecting [69] de Maier
e Rechtin, que descreve os benefcios proporcionados quando
o documento de arquitetura consistente entre suas mltiplas
vises; o artigo de Wirfs-Brock, Connecting Design with Code
[108], que cita a importncia de documentar as decises de design em diversos nveis de detalhe, inclusive o arquitetural; o
livro Software Architecture: Foundations, Theory, and Practice [104], de Taylor et al, que mostra este assunto de forma
bem abrangente; e o livro Code Complete [75], de McConnell,
que arma a arquitetura uma ferramenta para o controle da
complexidade do software.
Entre
eles, podemos citar: Building Up and Reasoning About Architectural Knowledge [64], An Ontology of Architectural Design Decisions in Software Intensive Systems [65] e The Decision View's Role in Software Architecture Practice [63], de
Kruchten et al e que so focados em descrever a arquitetura
como decises arquiteturais e em montar um arcabouo conceitual de como descrever decises arquiteturais, propondo inclusive um ponto de vista neste sentido; Architecture Knowledge Management: Challenges, Approaches, and Tools [9], de
Babar e Gorton, que mostram ferramentas para organizar e
documentar as decises arquiteturais; e The Decision View of
Software Architecture [38], de Dueas e Capilla, e Software
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
CHAPTER 8.
232
DOCUMENTAO DA
ARQUITETURA
Bridging The
233
Gap Between Design and Implementation [78] e Software Reexion Models: Bridging The Gap Between Source and HighLevel Models [79], por Murphy et al; Bridging the Software
Architecture Gap [66], de Lindvall e Muthig; e Design tests:
An approach to programmatically check your code against design rules [21], de Brunet et al.
234
GLOSSARY
Glossary
A arquitetura de
software
ou de um conjunto
de funes do
Arquitetura a
organizao
fundamental de
um sistema
software.
D deciso arquitetural
Uma escolha entre
incorporada em
as alternativas de
seus componentes,
design
seus
arquitetural. Essa
relacionamentos
escolha se prope a
com o ambiente, e
alcanar um ou
os princpios que
mais atributos de
conduzem seu
qualidade do
design e evoluo.
atributo de
qualidade
uma propriedade
de qualidade do
software ou de seu
ciclo de
desenvolvimento,
da(s) estrutura(s)
arquiteturais que
ela envolve ou
dene.
M modelo de qualidade
Modelo que dene e
podendo se
organiza os
manifestar como
atributos do
caractersticas,
software
capacidades ou
importantes para a
restries de uma
avaliao de sua
funo especca
qualidade.
GLOSSARY
235
P ponto de vista
arquitetural
um arcabouo
conceitual que
dene elementos,
conexes e tcnicas
que compem uma
viso arquitetural,
Requisito que
restringe o
processo de
desenvolvimento
do software.
requisito
no-funcional de
produto
alm especicar
Requisito que
seu propsito de
especica as
caractersticas que
interessados.
um sistema ou
R rastreamento de
requisitos
o processo/capacidade
de ligar requisitos
subsistema deve
possuir.
requisito
no-funcional
externo
Requisito derivado
do sistema a
do ambiente em
estruturas
que o sistema
arquiteturais.
desenvolvido, que
requisito funcional
a declarao de
uma funo ou
comportamento
providos pelo
sistema sob
condies
especcas.
requisito
no-funcional de
processo
requisito
no-funcional
a descrio de
propriedades,
caractersticas ou
restries que o
software apresenta
exibidas por suas
funcionalidades.
236
GLOSSARY
S stakeholder
Descreve a
Um stakeholder em
uma arquitetura
de software uma
pessoa, grupo ou
entidade com um
interesse ou
preocupaes sobre
a realizao da
arquitetura.
13
V viso arquitetural
a representao
arquitetura do
software ou, em
poucas palavras,
como o software
decomposto e
organizado em
mdulos e suas
relaes.
design de software
" tanto o processo
de denio da
arquitetura,
do sistema ou de
mdulos, interfaces
parte dele da
e outras
perspectiva de um
caractersticas de
conjunto de
um sistema quanto
interesses
o resultado desse
relacionados.
processo.
A alternativa de design
Uma possibilidade
14
design detalhado
Descreve o
comportamento
de soluo
especco e em
representada em
detalhes dos
nvel de
mdulos que
conhecimento.
compem o design
D design arquitetural
arquitetural.
14 Freny Katki
GLOSSARY
237
O objetivo de design
Aquilo que se
pretende alcanar
para resolver as
especcas.
requisito
no-funcional
a descrio de
necessidades do
propriedades,
cliente.
caractersticas ou
R representao de
design
restries que o
software apresenta
exibidas por suas
A linguagem do
processo de design
que representa o
produto do design
para sua
construo e
tambm d
suporte ao
processo de design
como um todo.
requisito funcional
a declarao de
funcionalidades.
restrio de design
A regra, requisito,
relao, conveno,
ou princpio que
dene o texto do
processo de design.
S soluo do design
A descrio do
design que permite
a construo do
uma funo ou
sistema de
comportamento
software que
providos pelo
alcana os
sistema sob
objetivos do
condies
design.
238
BIBLIOGRAPHY
Bibliography
[1]
[2]
Software Evolution.
Arithmetic.
neers, 2008.
[7] Robert Allen and David Garlan. A formal basis for architectural connection.
Component-Oriented Programming.
239
240
BIBLIOGRAPHY
Architecture
In
Software
Architecture in Practice. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1998.
Architecture in Practice.
Software
Addison-Wesley Professional, 2
Architecture in Practice.
Software
Addison-Wesley Professional, 2
Soft-
Addison-
Soft-
Addison-
In
Quanti-
International
page 5928211;605,
Booch.
Goodness
of
t.
Software, IEEE,
23(6):148211;15, 2006.
BIBLIOGRAPHY
241
Software,
[19] Grady Booch, Robert A. Maksimchuk, Michael W. Engel, Bobbi J. Young, Jim Conallen, and Kelli A. Houston.
D. Guerrero,
and J. Figueiredo.
Design
Software Engineering - Companion Volume, 2009. ICSE-Companion 2009. 31st International Conference on, page 2558211;258, 2009.
Software Design.
Addison
Buschmann,
Kevlin
Henney,
and
Douglas
C.
Kevlin
Henney,
and
Douglas
C.
Buschmann,
Pattern Oriented Software Architecture Volume 5: On Patterns and Pattern Languages. Wiley, June
Schmidt.
2007.
[26] Frank Buschmann, Regine Meunier, Hans Rohnert, Peter
Sommerlad, Michael Stal, Peter Sommerlad, and Michael
242
BIBLIOGRAPHY
168211;25, 1996.
[30] Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Robert Nord, and Judith
Staord.
2002.
[31] Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Robert Nord, and Judith
Staord.
2002.
[32] Paul Clements, Felix Bachmann, Len Bass, David Garlan, James Ivers, Reed Little, Robert Nord, and Judith
Staord.
2002.
BIBLIOGRAPHY
243
Open
W.
Dijkstra.
multiprogramming
The
structure
of
the
the-
structure
of
the
the-
Commun.
system.
ACM,
11(5):3418211;346, 1968.
[37] Edsger
W.
Dijkstra.
multiprogramming
The
Commun.
system.
ACM,
11(5):3418211;346, 1968.
[38] Juan C. Due[U+FFFD]nd Rafael Capilla.
The decision
Software Engineering,
IEEE Transactions on, 27(1):18211;12, 2001.
volume 4, page
Software,
244
BIBLIOGRAPHY
tecture.
USA, 1994.
[46] David Garlan and Mary Shaw. An introduction to software architecture.
Springer,
Springer,
June 2006.
[48] Ian Gorton.
June 2006.
[49] Todd Ho. High scalability: Building bigger, faster, more
reliable websites. http://highscalability.com.
[50] Christine Hofmeister, Robert Nord, and Dilip Soni.
Ap-
Addison-Wesley Profes-
BIBLIOGRAPHY
245
Software Architecture, 2005. WICSA 2005. 5th Working IEEE/IFIP Conference on, page 1098211;120, Washington, DC, USA,
In
Software Engineering for Real Time Systems, 1989., Second International Conference on, page 268211;30, 1989.
Requirements En-
The past,
Software,
<http://cnx.org/content/col10722/1.9>
246
BIBLIOGRAPHY
[62] P. B. Kruchten.
[63] Philippe
Kruchten,
Rafael
Capilla,
and
Juan
C.
knowledge.
In
2nd Groningen
Workshop Software Variability, page 548211;61, October
decisions in software intensive systems. In
2004.
tems Architecting.
tems Architecting.
[70] Ruth
ing
Malan
and
non-functional
Dana
Bredemeyer.
requirements.
DenOnline
at:
http://www.bredemeyer.com/pdf_les/NonFunctReq.PDF,
August 2001.
BIBLIOGRAPHY
247
[72] J. McCall.
Code Complete.
Microsoft Press, 2
Code Complete.
Code Complete.
Microsoft Press, 2
Mi-
A classication and
[79] Gail C. Murphy, David Notkin, and Kevin Sullivan. Software reexion models: Bridging the gap between source
In
248
BIBLIOGRAPHY
[80] Inc. Object Management Group. Unied modeling language. http://www.uml.org, September 2008.
[81] D. L. Parnas. On the criteria to be used in decomposing
systems into modules.
page 1398211;150.
[82] D. L. Parnas. On the criteria to be used in decomposing
systems into modules.
Software aging.
In
[85] Andy Powell, Mikael Nilsson, Ambjrn Naeve, Pete Johnston, and Thomas Baker. Dcmi abstract model. DCMI
Recommendation, June 2007.
[86] Roger Pressman.
Approach.
McGraw-Hill Science/Engineering/Math, 6
C++ Journal,
1992.
Software Systems
Architecture: Working With Stakeholders Using Viewpoints and Perspectives. Addison-Wesley Professional,
April 2005.
BIBLIOGRAPHY
249
Software Systems
Architecture: Working With Stakeholders Using Viewpoints and Perspectives. Addison-Wesley Professional,
April 2005.
Software Systems
Architecture: Working With Stakeholders Using Viewpoints and Perspectives. Addison-Wesley Professional,
April 2005.
Software Systems
Architecture: Working With Stakeholders Using Viewpoints and Perspectives. Addison-Wesley Professional,
April 2005.
Software Systems
Architecture: Working With Stakeholders Using Viewpoints and Perspectives. Addison-Wesley Professional,
April 2005.
[93] Jungwoo Ryoo, Phil Laplante, and Rick Kazman.
In
Michael Stal,
Hans Rohnert,
and
Performance anti-patterns.
Queue,
4(1):448211;50, 2006.
[97] G. F. Smith and G. J. Browne. Conceptual foundations
of design problem solving.
250
BIBLIOGRAPHY
[98] Kari Smolander. Four metaphors of architecture in software organizations: Finding out the meaning of architec-
Society.
Software Architecture: Foundations, Theory, and Practice. John Wiley & Sons, January 2009.
Software Architecture: Foundations, Theory, and Practice. John Wiley & Sons, January 2009.
Software Architecture: Foundations, Theory, and Practice. John Wiley & Sons, January 2009.
[105] Richard N. Taylor and Andre van der Hoek. Software design and architecture 8211; the once and future focus of
software engineering. In
ware Engineering,
Team.
Engineering
facebook.
http://www.facebook.com/notes.php?id=9445547199.
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
BIBLIOGRAPHY
251
252
INDEX
Keywords do not
Terms
They are
apples, 1.1
apples, 1
arquitetura de software,
design de software,
5(105), 6(125),
design detalhado, 30
8(189)
documentao, 8(189)
atributo de qualidade,
137
atributos de qualidade,
3(41), 4(55),
5(105), 6(125)
6(125)
engenharia de software,
escalabilidade, 7(165)
compreensibilidade,
estilos arquiteturais,
7(165)
7(165)
desempenho, 7(165)
design arquitetural, 30,
4(55), 7(165)
integridade conceitual,
8(189)
INDEX
253
interessados, 5(105)
20, 128
ISO 9126-1:2001,
requisito no-funcional
6(125)
de processo, 130
M modelo de qualidade,
requisito no-funcional
de produto, 130
6(125), 142
requisito no-funcional
modicabilidade,
externo, 131
7(165)
requisitos, 3(41),
N nveis de abstrao,
5(105), 6(125)
requisitos
7(165)
no-funcionais, 6(125)
O objetivo de design, 19
operabilidade, 7(165)
padres arquiteturais,
restrio de design, 21
segurana, 7(165)
separao de
7(165)
preocupaes, 7(165)
ponto de vista
software, 2(9),
arquitetural, 8(189),
8(189)
222
software architecture,
princpios de design,
4(55)
2(9)
software engineering,
projeto arquitetural,
4(55)
7(165)
soluo do design, 28
stakeholder, 111
7(165)
stakeholders, 4(55),
projeto de software,
5(105)
7(165)
streaming, 3(41)
Q qualidade, 6(125)
R rastreamento de
requisitos, 76
representao de design,
25
requisito funcional, 19,
126
tolerncia a faltas,
7(165)
tcnicas de design
arquitetural, 7(165)
V video, 3(41)
viso arquitetural, 89,
8(189)
requisito no-funcional,
Available for free at Connexions
<http://cnx.org/content/col10722/1.9>
254
ATTRIBUTIONS
Attributions
Collection: Arquitetura de Software
Edited by: Guilherme Germoglio
URL: http://cnx.org/content/col10722/1.9/
License: http://creativecommons.org/licenses/by/3.0/
Module: "Mensagens do Livro"
By: Guilherme Germoglio
URL: http://cnx.org/content/m17526/1.7/
Pages: 1-8
Copyright: Guilherme Germoglio
License: http://creativecommons.org/licenses/by/2.0/
Module: "Introduo a Design de Software"
By: Guilherme Germoglio
URL: http://cnx.org/content/m17494/1.26/
Pages: 9-39
Copyright: Guilherme Germoglio
License: http://creativecommons.org/licenses/by/2.0/
Module: "Estudo de Caso: SASF"
By: Guilherme Germoglio
URL: http://cnx.org/content/m23389/1.5/
Pages: 41-53
Copyright: Guilherme Germoglio
License: http://creativecommons.org/licenses/by/3.0/
Module: "Fundamentos de Arquitetura de Software"
By: Guilherme Germoglio
URL: http://cnx.org/content/m17524/1.21/
Pages: 55-103
Copyright: Guilherme Germoglio
License: http://creativecommons.org/licenses/by/2.0/
ATTRIBUTIONS
Module: "Stakeholders"
By: Guilherme Germoglio
URL: http://cnx.org/content/m26195/1.3/
Pages: 105-123
Copyright: Guilherme Germoglio
License: http://creativecommons.org/licenses/by/3.0/
Module: "Atributos de Qualidade"
By: Guilherme Germoglio
URL: http://cnx.org/content/m17527/1.5/
Pages: 125-164
Copyright: Guilherme Germoglio
License: http://creativecommons.org/licenses/by/2.0/
Module: "Tcnicas de Design Arquitetural"
By: Guilherme Germoglio
URL: http://cnx.org/content/m17523/1.5/
Pages: 165-188
Copyright: Guilherme Germoglio
License: http://creativecommons.org/licenses/by/2.0/
Module: "Documentao da Arquitetura"
By: Guilherme Germoglio
URL: http://cnx.org/content/m17525/1.6/
Pages: 189-233
Copyright: Guilherme Germoglio
License: http://creativecommons.org/licenses/by/2.0/
255
Arquitetura de Software
Um livro de Arquitetura de Software para alunos de graduao.
About Connexions
Since 1999, Connexions has been pioneering a global system
where anyone can create course materials and make them fully
accessible and easily reusable free of charge. We are a Webbased authoring, teaching and learning environment open to
anyone interested in education, including students, teachers,
professors and lifelong learners. We connect ideas and facilitate
educational communities.
Connexions's modular, interactive courses are in use worldwide by universities, community colleges, K-12 schools, distance learners, and lifelong learners.
Connexions materials
Con-