A engenharia reversa pode ser definida como o processo de desenvolvimento de um conjunto de especificações para um sistema de hardware complexo através do exame ordenado dos componentes do sistema. Enquanto que para o hardware o objetivo tradicional da engenharia reversa é duplicar o sistema, para o software esse processo é mais frequentemente utilizado para se obter um suficiente entendimento do mesmo no nível de desenvolvimento.
A partir do texto acima, analise as afirmações a seguir sobre as Atividades de Reengenharia de Software.
I. A atividade de análise de inventário diz que toda empresa de software deve ter um inventario de todos os aplicativos usados.
II. Na atividade de reestruturação dos documentos crie apenas a documentação necessária para que seja possível entender o software.
III. As atividades de engenharia reversa e engenharia direta ocorrem em um nível relativamente alto de abstração.
IV. Na reestruturação de código ocorre um nível relativamente baixo de abstração, e a reestruturação de dados é considerada uma atividade de reengenharia completa.
É correto o que se afirma em:
Alternativas
Alternativa 1:
I, apenas.
Alternativa 2:
II e III,apenas.
Alternativa 3:
III e IV, apenas.
Alternativa 4:
I, II e IV, apenas.
Alternativa 5:
I, II, III e IV.
Respostas
estou em duvida com a III se o nível de abstração é alto na engenharia direta?
Resposta:Alternativa 4:
I, II e IV, apenas.
Explicação:
Análise de inventário: toda empresa de software deve ter um inventário
de todos os aplicativos. O inventário pode ser: planilhas com informações
detalhadas e ordenadas (tamanho, idade, criticalidade nos negócios,
longevidade, manutenibilidade atual e suportabilidade) para cada aplicação
ativa.
Reestruturação dos documentos: documentação pobre é a marca registrada
de muitos sistemas legados. Quando o sistema não tem nenhuma
documentação, é muito dispendioso tentar criar uma. Em alguns casos,
crie documentação somente daquilo que sofreu alterações. Crie apenas
a documentação necessária para que seja possível entender o software.
■ Engenharia reversa: é o processo para analisar um programa na tentativa
de criar uma representação do sistema em um nível mais alto de abstração
do que o código-fonte. Logo mais, vamos ver com mais detalhes este item.
■ Reestruturação do código: é o tipo mais comum de reengenharia. Por
exemplo, em alguns sistemas legados, a arquitetura é razoavelmente sólida
e os módulos individuais foram codificados de um modo que se torna
difícil de entendê-los, testá-los e mantê-los, mas os códigos dentro dos
módulos podem ser reestruturados.
■ Reestruturação dos dados: um sistema com uma arquitetura de dados
fraca é difícil de adaptar e melhorar. Na reestruturação de código ocorre
um nível relativamente baixo de abstração, e a reestruturação de dados é
considerada uma atividade de reengenharia completa.
■ Engenharia direta: recupera as informações do projeto do software existente
e também usa as informações para alterar ou reconstituir o sistema
existente em um esforço para melhorar sua qualidade geral.