A maior rede de estudos do Brasil

Grátis
26 pág.
Unidade 5 Projeto de Arquitetura de Software

Pré-visualização | Página 1 de 5

Arquiteturas e Padrões 
de Software 
Responsável pelo Conteúdo:
 Prof. Me. Wilson Vendramel 
Revisão Textual:
Prof.ª M.ª Sandra Regina Fonseca Moreira 
Projeto de Arquitetura de Software
Projeto de Arquitetura de Software
 
 
• Entender as etapas do desenvolvimento de sistemas de software centrado na arquitetura.
OBJETIVO DE APRENDIZADO 
• Atributos de Qualidade;
• Componentes Arquiteturais;
• Conectores Arquiteturais;
• Configurações Arquiteturais;
• Representação da Arquitetura de Software com Notações UML;
• Projeto Arquitetural.
UNIDADE Projeto de Arquitetura de Software 
Atributos de Qualidade
As Unidades anteriores descreveram padrões de software como uma prática comum 
e apropriada para o reuso e construção de produtos de software de qualidade. Vale 
lembrar que esses padrões são aplicáveis ao longo do processo de desenvolvimento 
de software. Enquanto em uma unidade se enfatizou os padrões de projeto (design 
patterns), em outra se manteve o foco nos padrões de arquitetura (architectural patterns). 
Esta unidade já se concentra no desenvolvimento de sistema de software centrado na 
arquitetura, destacando o projeto baseado em padrões.
Já que os padrões foram recordados, qual a relação do projeto arquitetural com pa-
drões de software?
O projeto de arquitetura estabelece as relações entre os principais elementos estrutu-
rais do software, os estilos arquiteturais e padrões de projeto que podem ser utilizados 
para satisfazer os requisitos definidos para o produto de software e as restrições que 
influenciam o modo como a arquitetura pode ser implementada (SHAW, 1996 apud 
PRESSMAN; MAXIM, 2016, p. 226).
O projeto arquitetural é uma das atividades de projeto de software que tem o obje-
tivo de construir o alicerce de uma arquitetura com base nos requisitos exigidos para 
o sistema, identificando os componentes arquiteturais e seus relacionamentos, ligados 
por conectores arquiteturais. Um conjunto de componentes e conectores comunicantes 
representam uma configuração arquitetural. Além da extração de uma arquitetura, o 
projeto arquitetural também deve levar em consideração atributos que buscam garantir 
a qualidade do sistema de software, denominados atributos de qualidade. Resumindo, é 
possível perceber que o projeto de arquitetura de software não é uma atividade trivial.
Importante!
Segundo Charles A. R. Hoare, “Há duas maneiras de construir um projeto de software. 
Uma delas é fazê-lo tão simples que, obviamente, não existirão deficiências; a outra 
maneira é fazê-lo tão complicado que não há nenhuma deficiência óbvia. O primeiro 
método é bem mais difícil” (PRESSMAN; MAXIM, 2016, p. 227).
Se você considerar atributos de qualidade desejados para um produto de software como 
disponibilidade, modificabilidade, desempenho, segurança, testabilidade, usabilidade, qual 
seria o atributo mais importante no seu entendimento?
Na verdade, todos esses atributos de qualidade, também vistos como requisitos não 
funcionais, são importantes para um produto de software. Esses atributos de qualidade 
foram extraídos da classificação realizada por Bass, Clements e Kazman (2003), visto 
que essa classificação evidencia os requisitos de qualidade que influenciam o projeto 
(design) arquitetural de software, desse modo, são elencados os seguintes atributos: dis-
ponibilidade (availability), modificabilidade (modifiability), desempenho (performance), 
8
9
segurança (security), testabilidade (testability) e usabilidade (usability). É claro que, de-
pendendo do objetivo do software em relação ao domínio de negócio, certos atributos 
de qualidade precisam ser priorizados, enquanto outros devem ficar em segundo plano. 
Certo, mas o que vem a ser atributos de qualidade?
Os atributos de qualidade descrevem capacidades, serviços e comportamentos do 
sistema de software. Esses atributos indicam o quão bem o software satisfaz às neces-
sidades dos stakeholders, devendo ser mensuráveis e testáveis. Tais atributos nunca po-
dem ser atingidos de forma isolada, ressaltando que alguns podem impactar outros. Um 
exemplo claro disso é que quase todos os atributos de qualidade afetam negativamente o 
desempenho do sistema, portanto, para atingir os atributos de qualidade, é importante 
tomar decisões arquiteturais que implicam em vantagens e desvantagens (trade-offs), 
causando consequências para o projeto (BASS; CLEMENTS; KAZMAN, 2003).
De acordo com a classificação de Bass, Clements e Kazman (2003), os atributos de 
qualidade são:
• Disponibilidade: esse atributo se refere à capacidade de um software estar pronto para 
executar funções quando requisitado em um dado momento e sob condições específi-
cas. O atributo de disponibilidade também pode ser entendido como confiabilidade, ou 
seja, a habilidade do sistema de se recuperar diante de falhas em um período de tempo 
pré-estabelecido, sendo assim, o atributo de disponibilidade tem o propósito de mitigar 
falhas para diminuir o tempo de interrupções de funcionamento de um sistema;
• Modificabilidade: esse atributo corresponde à capacidade de um software absor-
ver mudanças com o mínimo de impacto, sabendo que mudanças são inevitáveis já 
que é necessário realizar manutenções no sistema, seja adicionando novas funcio-
nalidades ou melhorando as existentes. Alguns estudos revelam que o maior custo 
de um software acontece após esse ser entregue para o cliente, devido a isso, é 
importante projetar sistemas passíveis de adequação a tais mudanças. Ao tratar de 
mudanças, é importante saber o que pode mudar, qual a probabilidade de a mu-
dança ocorrer, quem é o responsável pela modificação e o custo dessa mudança;
• Desempenho: esse atributo se refere à capacidade do sistema cumprir requisito de 
tempo. Isso significa dizer que, quando ocorrer um evento (mensagens, requisições 
etc.), partindo de um usuário ou outros sistemas, o sistema deve responder dentro 
do tempo. Historicamente, o desempenho é um atributo importante na arquitetura 
de sistemas e, frequentemente, compromete outros atributos de qualidade. Ao lidar 
com eventos é importante mensurar o tempo que o sistema leva para processar 
um evento (latência), a quantidade de eventos que um sistema consegue processar 
em um período de tempo (throughput) e a quantidade de eventos não processados 
quando o sistema está ocupado e rejeita o processamento desses eventos;
• Segurança: esse atributo e corresponde à capacidade de um sistema proteger os 
dados e resistir a acessos não autorizados, garantindo também acesso àqueles que 
tem permissão para acessá-lo. Esse atributo deve considerar características como 
proteção de dados ou serviços de acessos não autorizados (confidencialidade), proteção 
de dados ou serviços de alterações não autorizadas (integridade), garantia de que 
as partes de uma transação são de quem dizem ser (autenticação) e permissão aos 
usuários para realizar uma tarefa (autorização);
9
UNIDADE Projeto de Arquitetura de Software 
• Testabilidade: esse atributo se refere à capacidade do sistema de facilmente de-
monstrar suas falhas por meio de testes. Para um sistema ser testável apropriada-
mente, deve ser possível controlar as entradas, o estado interno e a saída dos com-
ponentes de forma a validar seus comportamentos. Uma medida importante para 
entender o quanto o sistema é testável é quão efetivo são os testes para descobrir 
novas falhas e quanto tempo leva para realizá-los;
• Usabilidade: esse atributo se refere a quão fácil é utilizar uma funcionalidade 
desejada no sistema ou o quanto de suporte esse sistema disponibiliza. O atribu-
to de usabilidade tem se demonstrado uma maneira barata e fácil de melhorar 
a qualidade de um sistema, focando o aprendizado das funcionalidades do sis-
tema, o uso efetivo do sistema, a redução do impacto ao surgimento de erros, 
a adaptação do sistema às necessidades do usuário e o aumento de confiança e 
satisfação do usuário.
Além da classificação apresentada nesta seção, há outras classificações

Crie agora seu perfil grátis para visualizar sem restrições.