Grátis
26 pág.

Unidade 5 Projeto de Arquitetura de Software
Colégio Objetivo
Denunciar
5 de 5 estrelas









2 avaliações

Enviado por
Jonatha Fernandes
5 de 5 estrelas









2 avaliações

Enviado por
Jonatha Fernandes
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