Buscar

Exercício de Engenharia de Software 52

Prévia do material em texto

58 
 
 
 
 
 
 
 
 
 
 
17.5 Usando um exemplo de componente que implementa um tipo de dados abstrato, como 
uma pilha ou uma lista, mostre por que geralmente é necessário estender e 
adaptar componentes para reutilização. 
 
 
Tomemos, por exemplo, um componente de pilha. Isso fornecerá operações básicas comuns 
a todas as pilhas, como Inicializar (criar uma pilha), Empurrar (um item na pilha), Retirar (um 
item da pilha), Tamanho (o número de itens atualmente na pilha), e talvez outros. No entanto, 
cada aplicativo usará pilhas de maneiras diferentes e, portanto, poderá exigir versões 
diferentes dessas operações e operações adicionais. 
 
Por exemplo, considere uma operação de navegação gráfica que permite aos 
usuários navegar em uma biblioteca digital. A biblioteca está dividida em áreas e o 
identificador de cada área aponta para os livros dessa área. Quando o usuário entra em 
uma área, seu identificador é colocado em uma pilha e retirado da pilha quando ele sai 
dessa área e volta para a área anterior. Assim, o topo da pilha sempre se refere aos livros 
da área atual. No entanto, existe um requisito para fornecer um recurso onde o usuário 
possa visualizar todas as áreas visitadas e isso requer uma operação de pilha adicional que 
forneça acesso a todos os elementos da pilha. Isso então deve ser adicionado ao componente 
da pilha. Também requer que a operação Pop seja modificada para que, quando um item 
for retirado da pilha, ele seja adicionado a uma lista de 'áreas visitadas' que possa ser 
exibida em conjunto com os elementos atuais da pilha. 
 
 
 
17.6 Explique por que é difícil validar um componente reutilizável sem o código-fonte do 
componente. De que forma uma especificação formal de componente 
simplificaria os problemas de validação? 
 
 
A validação de componentes sem código-fonte é muito difícil porque não há como avaliar 
como o componente lida com exceções (e isso raramente é definido em uma especificação 
de componente). O único método de validação que pode ser usado é o teste de caixa preta, 
portanto, técnicas estáticas não podem ser usadas. As especificações dos componentes 
raramente são completas e isso aumenta os problemas dos testes de caixa preta. As 
especificações formais ajudariam porque definiriam com precisão o que o componente 
deveria fazer e seu comportamento real poderia ser comparado com a especificação. 
No entanto, as especificações formais raramente cobrem todas as exceções e não ajudam 
nos testes de desempenho, confiabilidade ou outras características não funcionais. 
 
 
 
17.8 Usando exemplos, ilustre os diferentes tipos de adaptadores necessários para suportar 
composição sequencial, composição hierárquica e composição aditiva.

Continue navegando

Outros materiais