Artigo

Concurso AUFC/TCU (2015) – Engenharia de Software e Desenvolvimento de Sistemas

Galera,

 

Achei que a prova veio com poucas questões de Engenharia de Software e Desenvolvimento de Sistemas, visto que a última prova tinha privilegiado mais essa área. Quanto à dificuldade… bem, é TCU! Eu não esperaria menos! Vamos ver os comentários?

 

112. Quando duas ou mais aplicações mantém e(ou) referenciam a mesma função de dados, deve-se contar os DERs (dados elementares referenciados) de todas as funções de dados das aplicações envolvidas.

(Dificuldade: Difícil) Apesar de a redação confundir um pouco o entendimento, a questão quis dizer que temos uma única base de dados (ALI/AIE) sendo referenciada por duas ou mais aplicações. Faz sentido contar os Dados Elementares Referenciados (DER) para cada aplicação? Não, conta-se apenas uma vez.

 

113. Imprimir um cheque e identificá-lo como pago na conta-corrente será considerado um processo elementar se, juntas, essas atividades corresponderem à menor unidade da atividade significativa para o usuário.

(Dificuldade: Fácil) Questão perfeita. O Processo Elementar é definido como a menor unidade de atividade significativa para o usuário. Ele deve ser completo em si mesmo, independente e deixar a aplicação em um estado consistente. Percebam que a questão afirma que será considerado um processo elementar se,juntas, corresponderem a menor unidade da atividade significativa para o usuário. Logo, podemos inferir que é impossível imprimir um cheque sem identificá-lo como pago na conta-corrente.

 

118. Conforme a metodologia SCRUM, Sprint Planning Meeting é uma reunião de planejamento em que o Scrum Master prioriza os itens do Product Backlog e a equipe seleciona as atividades a serem implementadas no período.

(Dificuldade: Fácil) Pessoal, quem prioriza itens do Product Backlog? É o Product Owner (PO) e, não, o Scrum Master (SM). Vimos em aula que o SM comunica os itens à equipe, mas quem prioriza é o PO.

 

119. O método para a implantação de mudanças denominado Kanban não prevê papéis nem cerimônias específicas.

(Dificuldade: Média) De fato, ele não prevê papéis ou cerimônias específicas. Aposto que muitos ficaram em dúvida por conta de a questão dizer que é um método de gerenciamento de mudanças. Galera, Kanban é um coringa – ele serve para um bocado de coisas, desde que gerencie o progresso do trabalho. Na aula, nós vimos que ele é construído sob o conceito de melhoria contínua, impulsionando mudanças (dissemos, inclusive, que se trata de um acelerador para a condução de mudanças).

 

120. A cada nova funcionalidade de software adicionada na prática de refactoring (refatoração) em XP, a chance, o desafio e a coragem de alterar o código-fonte de um software são aproveitados como oportunidade para que o design do software adote uma forma mais simples ou em harmonia com o ciclo de vida desse software, ainda que isso implique a alteração de um código com funcionamento correto.

(Dificuldade: Recurso) Que loucura é essa? Vimos insistentemente em aula que Refactoring não adiciona novas funcionalidades. Não entendi porque a banca considerou a questão como certa. Para mim, cabe recurso!

 

121. Os casos de testes são especificações acerca das entradas para o teste e da saída esperada e englobam, também, uma declaração do que está sendo testado. Devido ao tamanho do espaço de possibilidades de teste, a geração automática exaustiva de casos de testes que exploram todas as entradas e saídas para qualquer configuração de teste é impossível ou computacionalmente intratável.

(Dificuldade: Fácil) Questão perfeita! É inviável testar todo o espaço amostral de testes possíveis. Vocês se lembram que nós vimos em aula a técnica de Partição de Equivalência? Vocês se lembram que nós vimos que um dos princípios de teste é que “Testes exaustivos são impossíveis”, i.e., é inviável testar todas as combinações de entradas e pré-condições, exceto para casos triviais? Pois é ;)

 

122. O teste de integração consiste em construir gradualmente o sistema, por integração de seus componentes, e testar o sistema resultante, buscando identificar e analisar problemas originados a partir das interações entre esses componentes, em um ambiente de execução com características próximas àquelas a serem utilizadas no ambiente operacional real.

(Dificuldade: Fácil) Isso é pura linguagem do Sommerville. Questão tranquila, apenas descreve o Teste de Integração.

 

123. As áreas cobertas pela ePING estão segmentadas em: interconexão, segurança, meios de acesso, organização e intercâmbio de informações, além de melhoria continuada dos serviços de governo eletrônico. Para cada uma dessas áreas, são apresentados componentes que podem variar quanto à situação de adoção ou ao estudo feito pelo governo federal.

(Dificuldade: Fácil) Melhoria Continuada dos Serviços do Governo Eletrônico? Viajou! O último segmento é ‘Áreas de Integração para Governo Eletrônico’ (lembraram do nosso mnemônico na hora da prova?).

 

124. De acordo com a arquitetura ePING, alguns algoritmos especificados para definição de chave de cifração simétrica são RC4, IDEA, 3DES e AES

(Dificuldade: Asiática) Galera, essa daqui é para ninjas! Quem aí tentou decorar os algoritmos para definição de chave de cifração? Não se preocupem com itens como esse – não compensa estudar esse tipo de coisa.

 

128. A partir da interpretação do trecho JSF (JavaServer Faces), versão 2, no código a seguir, verifica-se que uma providência válida é configurar o managed-bean clientePage no arquivo faces-config.xml.

(Dificuldade: Fácil) O código trata de um formulário simples. A questão afirma que é válido configurar o clientePage no arquivo faces-config.xml. Perfeito, é lá mesmo que nós podemos descrever e configurar um MB.

 

129. No contexto de um código na linguagem Java, o comando a seguir é utilizado com a finalidade específica de passar para o campo de visibilidade pública saldo o valor da variável deposito com o tipo double. public void saldo (double deposito).

(Dificuldade: Média) A redação ficou um pouco confusa, mas vejam que a questão fala em passar para campo. Que campo? Isso é um método!

 

130. O servidor Tomcat não pode ser usado como um servidor JEE completo, pois, mesmo dispondo de um container Servlet e JSP, ele não implementa EJB.

(Dificuldade: Fácil) Quem viu a aula achou tranquilo! Vimos insistentemente que o Tomcat não é um Servidor JEE completo porque – entre outras coisas – não implementa EJB.

 

131. No trecho do código JavaScript a seguir, o valor retornado em this, da função minhaMsg, será CampoRequerido. var minhaMsg ={ m1: “Campo”, m2:”Requerido”, mensagem: function () { return this; } } minhaMsg.mensagem();

(Dificuldade: Difícil) Na questão, temos o objeto minhaMsg, contendo três pares de nomes de propriedades do objeto e valores associados. O último é uma função que retorna o objeto global. O JavaScript permite definir uma função como método de um objeto, que é o que ocorreu na questão, i.e., o objeto minhaMsg tem duas propriedades (m1 e m2) e um método (mensagem). A palavra-chave this retorna sempre o ‘dono’ do código. Esse método pertence ao objeto minhaMsg, logo retornará [object Object]. Para retornar “CampoRequerido”, o código seria return this.m1 + this.m2;

 

132. Caso um usuário, ao utilizar o software de controle de versões Subversion, tente sobrescrever uma mudança já realizada por outro e isso gere uma situação designada como conflito, o software não tentará resolver automaticamente essa situação.

(Dificuldade: Média) Galera, quando você atualiza sua cópia de trabalho, o Subversion mostra uma telinha com todos os conflitos gerados e VOCÊ tem a responsabilidade de resolver os conflitos na mão – isso não ocorre automaticamente.

 

133. No desenvolvimento de aplicação para dispositivos móveis, em vez de se utilizar uma plataforma específica ou um ambiente cross-platform, pode-se optar por um tipo híbrido, como, por exemplo, um componente HTML 5 envelopado em containers para acessar recursos específicos de cada plataforma.

(Dificuldade: Difícil) O tipo híbrido contém um componente web (baseado em HTML5) e um container nativo para acessar recursos específicos da plataforma e do dispositivo. O código principal em HTML5 é envelopado em um container, como se fosse um app nativo. Assim, ele pode ser disponibilizado em uma loja de aplicativos. Questão bastante complicada.

 

134. Uma característica positiva da ferramenta SonarQube, quando utilizada para realizar a análise estática de código-fonte, é a conveniência de instalação e utilização em dispositivos móveis.

(Dificuldade: Recurso) Galera, o primeiro edital cobrava SonarQube. A retificação retirou, logo não faz sentido cobrar essa ferramenta. Para mim, é recurso na certa!

 

135. Nos padrões de projeto (design patterns) estruturais, utilizam-se técnicas que valorizam um forte acoplamento entre as classes para favorecer o aprendizado e a portabilidade das aplicações.

(Dificuldade: Fácil) Forte acoplamento? Que padrão de projeto valoriza forte acoplamento? Pelo contrário, valoriza o fraco acoplamento, i.e., a redução das dependências.

 

136. Os padrões de projeto classificados como EAI (enterprise integration patterns) fundamentam-se nas aplicações distribuídas e privilegiam o uso das mensagens eletrônicas síncronas.

(Dificuldade: Difícil) Falamos disso em aula: é uma combinação de tecnologias que permite organizar processos de negócio de uma organização, visando o compartilhamento de dados e processos através da integração de suas aplicações. Galera, pensem comigo: faz sentido privilegiar mensagens síncronas em um ambiente distribuído? Não, um dos aspectos dos Padrões de Projeto EAI é o processamento assíncrono.

 

137. Um projeto de software orientado pela governança SOA deve estar alinhado não só com a governança de TI, mas também com a governança da arquitetura empresarial.

(Dificuldade: Fácil) É até um pouco óbvio! Dissemos em aula que a Governança SOA estende a Governança de TI, e evidentemente que essa está alinhada à governança da arquitetura empresarial.

 

142. Na gerência de um pipeline de implantação (deployment pipeline), recomenda-se que o código-fonte seja compilado repetidas vezes em contextos diferentes: durante o estágio de commit, nos testes de aceitação, nos testes de capacidade e nos testes exploratórios

(Dificuldade: Difícil) A questão afirma que, em cada fase, recomenda-se que o código seja compilado. Vocês se lembram da figura apresentada em aula? Pois é, o código deve ser compilado todas as vezes em que falhar em alguma das fases, porque há o feedback e a correção. Caso não haja falha, não faz sentido compilar o código em cada fase.

 

143. De acordo com a abordagem DevOps (development – operations), os desafios da produção de software de qualidade devem ser vencidos com o envolvimento dos desenvolvedores na operação dos sistemas com os quais colaboraram no desenvolvimento

(Dificuldade: Difícil) Essa questão permite duas interpretações de ‘envolvimento’: (1) no sentido de interação e colaboração entre equipes; (2) no sentido de mão na massa mesmo – na operação dos sistemas. Eu entendi como (1), e erraria essa questão se tivesse feito a prova; acredito que o examinador entendeu como (2) e, por isso, marcou como errado. Eu acredito que cabe recurso também.

 

144. Para que a prática de integração contínua seja eficiente, é necessário parametrizar e automatizar várias atividades relativas à gerência da configuração, não somente do código-fonte produzido, mas também de bibliotecas e componentes externos

(Dificuldade: Média) Questão perfeita! Parametrizam-se e automatizam-se componentes como código-fonte, bibliotecas, scripts de build, entre outros, ajustando a dependência entre eles.

 

Valeu, galera (principalmente aqueles que fizeram o curso comigo). Qualquer dúvida ou erro nos comentários, fiquem à vontade para me enviar pelo facebook:

 

https://www.facebook.com/professordiegocarvalho

 

Grande abraço! ;)

Deixe seu comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Veja os comentários
  • Professor, Pode ser que aceitem, mas o mais certo seria se nós conseguíssemos um caso que já tenha ocorrido em alguma prova anterior do Cespe. Um caso que eles tenham alterado o edital retirando algum item, e tenham anulado alguma questão por terem cobrado o item retirado. Estou fazendo pesquisas pelos documentos de justificativas publicados pelo Cespe, mas está difícil. Se você puder nos dizer um caso, já ajudaria muito!
    Solange em 19/08/15 às 22:10
  • DIEGO CARVALHO, Poderia me ajudar a redigir um recurso sobre a extrapolação na 134. Creio isso irá me ajudar!!
    micheli em 19/08/15 às 10:36
  • Boa noite, Raphael. Tudo certo? O lance é que eles não acrescentaram, já constava da primeira versão do edital. Veja: 1.9 Noções e conceitos de desenvolvimento para dispositivos móveis. 1.10 Análise estática de código fonte (Clean Code e ferramenta SonarQube). Como eles retiraram a parte entre parênteses na retificação, subentende-se que não seriam cobradas ferramentas específicas (até porque, não há como estudar todas as ferramentas do mercado). Em algumas provas, é comum cobrar, por exemplo: Controle de Versão de Código-fonte - isso significa que serão cobrados conceitos sobre controle de versão, mas não particularidades de ferramentas específicas. Quando ele deseja fazê-lo, ele coloca entre parênteses as ferramentas que ele deseja cobrar (CVS, Subversion, Git, Mercurial, etc). Por essa razão, eu acredito que cabe recurso. Não sei se aceitarão, mas quem desejar, pode entrar. Bacana? Abraço =)
    Diego Carvalho em 19/08/15 às 00:52
  • *terem retirado
    Raphael Lacerda em 19/08/15 às 00:42
  • Muito bacana Diego! Valeu pelos comentários! Só acredito que na 134 não cabe recurso não. Apesar deles terem retirando o nome Sonar do edital, eles acrescentaram: 1.10 Análise estática de código fonte. E é exatamente isso que o Sonar faz, em conjunto com outros plugins como FindBugs, CheckStyle e PMD. O lance é que eles não cobraram FindBugs, CheckStyle nem PMD, mas cobraram Sonar
    Raphael Lacerda em 19/08/15 às 00:41