Pular para o conteúdo
Questões de Tecnologia da Informação · INEP (ENEM)

Tecnologia da InformaçãoQualidade de software e refatoraçãoINEP (ENEM) 2019

ENADE

Questão de Tecnologia da Informação

Rigidez é a tendência de um software ser difícil de modificar. Cada mudança causa uma cascata de mudanças subsequentes em módulos dependentes. O trecho de código a seguir faz parte de um sistema com suporte à comunicação entre diferentes dispositivos de comunicação via rádio (modems): 1 struct Modem { enum Type {hayes, courrier, ernie) type; }; 2 struct Hayes { 3 Modem::Type type; 4 // Detalhes do modem tipo Hayes 5 }; 6 struct Courrier { 7 Modem::Type type; 8 // Detalhes do modem tipo Courrier 9 }; 10 struct Ernie { 11 Modem::Type type; 12 // Detalhes do modem tipo Ernie 13 }; 14 void LogOn(Modem& m, string& frq, string& user, string& pw) { 15 if (m.type == Modem::hayes) 16 OpenHayesChannel((Hayes&)m, frq); 17 else OpenCourrierChannel((Courrier&)m, frq); 18 // depois de conectado, enviar user, pw, etc. 19 // (continua) Disponível em: <http://www.staff.cs.utu.fi/staff/jouni.smed/doos_06/material/DesignPrinciplesAndPatterns.pdf>. Acesso em: 15 jun. 2019 (adaptado). Nesse trecho, cada tipo de modem tem suas particularidades e foram criadas estruturas específicas para cada tipo (linhas 2 a 13). Um "enumeration" (linha 1) é utilizado para identificar o tipo de modem. O procedimento LogOn (linhas 14 a 19) é responsável por realizar a conexão a um modem. Dados o tipo do modem (m), a frequência (frq), o nome de usuário (user) e a senha (pw), inicialmente, é feita a abertura do canal de comunicação, que corresponde a uma chamada específica para cada tipo de modem (linhas 15 a 17). Como os modems do tipo Courrier e Ernie são similares em termos de abertura de canal, o programador decidiu otimizar o código, utilizando a função do modem Courrier para ambos (OpenCourrierChannel - linha 17). Uma vez conectado, o código continua o processo de LogOn na linha 18 em diante. Nesse projeto do código um sintoma de rigidez é que

Sua resposta

Mais questões de Qualidade de software e refatoração

Questão de prova oficial, com o gabarito definitivo publicado pela banca. Reproduzida para fins de estudo.