Conceitos Essenciais em Engenharia de Software e Desenvolvimento
Classificado em Computação
Escrito em em português com um tamanho de 13,32 KB
1. O que é Medição de Software?
A medição de software é a avaliação quantitativa de qualquer aspecto dos processos e produtos de software. Ela permite um melhor planejamento, controle e melhoria do que se produz e do que é produzido.
2. O que o Controle Estatístico faz pela Qualidade do Software?
Para que um software tenha qualidade, é preciso organizar a medição e planejar, verificar riscos e qualidades para que se obtenha um software com a qualidade esperada.
3. Qual o Ciclo do TDD (Test-Driven Development)?
- Adicionar um teste
- Executar todos os testes
- Escrever código
- Executar os testes automatizados
- Refatorar código
- Repetir tudo
4. O que são Fakes e Mocks?
A interface deve ser implementada de duas maneiras: uma que realmente acessa o processo externo, e outra que é um fake ou mock.
Objetos Fake precisam fazer um pouco mais do que adicionar mensagens "objeto pessoa salvo", criando registro de rastreio e identificando que asserções podem ser executadas para verificar o comportamento correto.
Mock Objects diferem pelo fato de que eles mesmos contêm asserções que podem fazer com que o teste falhe, por exemplo, se o nome da pessoa ou outro dado não é como o esperado.
Métodos de objetos fake e mock que retornem dados, aparentemente de um armazenamento de dados ou de usuário, podem ajudar o processo de teste a sempre retornar os mesmos dados, nos quais os testes podem confiar.
5. O que são Bancos de Dados NoSQL?
“NoSQL é um movimento que promove soluções de armazenamento de dados não relacionais.”
Não se trata apenas de uma linguagem, mas sim de um conjunto de ferramentas e estruturas. Esse conjunto consiste em diversas tecnologias capazes de resolver certos problemas de forma mais específica, abordando, para tal, cada cenário de uma forma bem particular.
Contudo, o objetivo do NoSQL não é substituir a linguagem SQL, como muitos pensam. Sua proposta é (como o nome denomina: Not Only SQL – não apenas SQL) usar também modelos não-relacionais, para trazer a melhor solução para um determinado problema.
6. Explique o Modelo Chave-Valor.
É um modelo bem simples, que se baseia em tabelas de hash para garantir que cada registro seja armazenado com uma chave única. Esta chave está posicionada antes do próprio conteúdo do registro, agilizando sua busca e possibilitando uma estrutura flexível para armazenar um dado. Muito utilizada para a gravação de logs.
7. Explique os Componentes de Formação de uma Ontologia.
- Conceitos: Representam qualquer coisa em um domínio, como uma tarefa, uma função, uma estratégia, um conjunto ou classe de entidades, entre outras coisas. Organizados em taxonomias.
- Relacionamentos: Representam um tipo de interação entre os conceitos de um domínio, sendo a cardinalidade sempre N para N.
- Funções: Uma função é um caso especial de relacionamento em que um conjunto de elementos tem uma relação única com outro elemento, ou seja, a cardinalidade é N para 1.
- Axiomas: São as sentenças que restringem a interpretação e o uso do conceito e são sempre verdadeiras, independentes da situação, ou seja, devem ser verdadeiras em todos os mundos possíveis.
- Instâncias: São utilizadas para representar os elementos específicos do domínio, ou seja, os próprios dados.
8. O que são Taxonomias?
Forma primitiva de representação de conhecimento, as quais determinam uma hierarquia conceitual formada por classes e subclasses de objetos, relacionadas através de relacionamentos de generalização/especialização, que visam facilitar e classificar o acesso à informação em um sistema.
9. Explique o SOA Pattern: Atomic Service Transaction.
Esse padrão define que uma transação de negócio deve ocorrer por completo ou não ocorrer em nenhum dos serviços envolvidos.
Exemplo: Em uma transação de venda que envolve três serviços, se a gravação no banco de dados de algum dos serviços falhar, as outras duas não podem ocorrer.
10. Relacione os SOA Patterns: Service Callback e Asynchronous Queuing.
Tanto o Asynchronous Queuing quanto o Service Callback são serviços voltados para troca de mensagens. Os dois permitem que os serviços e os consumidores troquem mensagens de forma independente e assíncrona.
13. CMMI: Nível de Maturidade Mais Comum e Razões.
A maior parte das empresas está no Nível 3, pois nos níveis acima a dificuldade aumenta consideravelmente. Além disso, o Nível 3 já é considerado bem avançado e é o nível mínimo solicitado em processos de escolha de empresas para negócios.
14. Quais os 3 Tipos de SCAMPI?
- O SCAMPI A é o método mais rigoroso e o único que fornece uma classificação como resultado (aquilo que o mercado chama de certificação).
- O SCAMPI B fornece opções no escopo de modelo, mas a caracterização é feita somente nas práticas implementadas e é baseada em uma escala.
- O SCAMPI C fornece uma ampla gama de opções, incluindo a caracterização de abordagens planejadas para implementação de processos de acordo com uma escala definida pelo usuário.
Ferramentas de Controle de Versão
15. Explique os 3 Tipos de Ferramentas de Controle de Versão.
- Versões Locais: O método preferido de controle de versão por muitas pessoas é copiar arquivos em outro diretório (talvez um diretório com data e hora). Esta abordagem é muito comum por ser tão simples, mas é também muito suscetível a erros.
- Versões Centralizadas: Possuem um único servidor central que contém todos os arquivos versionados e vários clientes que podem resgatar (check out) os arquivos do servidor.
- Versões Distribuídas: Assim, se um servidor falha, qualquer um dos repositórios dos clientes pode ser copiado de volta para o servidor para restaurá-lo. Cada checkout (resgate) é, na prática, um backup completo de todos os dados.
16. Explique Check-in, Checkout, Branch e Merge.
- Check-in: Gravar as alterações no repositório, gerando uma nova versão do arquivo.
- Checkout: Obter um elemento do sistema de controle de versões. Pode ser reservado (não permite trabalho simultâneo no mesmo arquivo) ou não reservado (vários usuários podem ter a posse do arquivo, permitindo o trabalho simultâneo).
- Branch: Criar ramos paralelos de desenvolvimento.
- Merge: Combinar alterações feitas por usuários distintos sobre o mesmo arquivo.
BPM e Six Sigma
17. O que é Six Sigma?
Six Sigma é definido por um conjunto de práticas que visam melhorar de forma sistêmica os processos, eliminando defeitos.
18. Quando usar o DMAIC e o DMADV?
O DMAIC é usado para projetos focados em melhorar processos de negócios já existentes. Já o DMADV é usado para projetos focados em criar novos desenhos de produtos e processos.
19. O que é Big Data?
Big Data são ferramentas que exaltam padrões em grandes volumes de informações que podem ser obtidas de diversas fontes (ERP, Facebook, etc.). Sua estruturação, armazenamento e a forma de acesso devem possibilitar correlações e conclusões diversas para o negócio, e no tempo de cada negócio. Uma grande parte será descartada, outra utilizada e medida sua assertividade.
20. Quais os 5 Vs do Big Data?
- Valor: A informação deve ser valiosa para o negócio que será utilizada.
- Veracidade: Deve ter um embasamento, ser verdadeira, para que possa ser utilizada.
- Variedade: Deve ser obtida de mais de uma fonte, para que os resultados sejam mais precisos.
- Volume: É a principal característica do Big Data; o grande volume da informação é importante para que seja possível encontrar padrões de informações.
- Velocidade: Deve ser obtida assim que possível, para que seja utilizada na velocidade do negócio.
Desenvolvimento Android
21. Estrutura de Projeto Android: Tipos de Arquivo em /res.
- drawable-hdpi: Onde você coloca os bitmaps em alta resolução; tem também um diretório ldpi para baixa e um mdpi para média.
- layout: Contém os arquivos que definem a interface do aplicativo (app).
- values: Contém XMLs com definições de strings.
22. O que são os Outlets?
Propriedade (variável de instância com get e set) usada nos controllers para falar com suas views. Criam-se outlets dos objetos controller para as views e estes outlets são propriedades pelas quais o controller fala com suas views.
23. Explique o que é e para que serve um Intent.
Os Intents ligam componentes separados, como duas Activities.
24. O que é uma Activity?
25. Descreva Brevemente o Ciclo de Vida das Activities.
O ciclo de vida das Activities são ativadas, carregadas, pausadas, desativadas, etc., por meio de métodos de callback, isto é, métodos chamados indiretamente, pois é o sistema operacional que os chama.
26. Ciclo de Vida da Activity: Pause-Resume vs. Stop-Start. Qual a Diferença?
A diferença é que, quando um usuário para alguma coisa, como um vídeo, ou precisa persistir informações que seriam perdidas se o usuário sair do sistema, no ciclo Pause-Resume, ele chama onResume()
quando o usuário volta para a atividade que estava realizando antes de fechá-la, e onPause()
se o seu aplicativo for parcialmente obstruído por outro.
No ciclo Stop-Start, a atividade entra em stop quando o usuário abre a janela de aplicativos recentes e muda do seu aplicativo para outro. Quando o usuário volta para seu aplicativo, o sistema chama onRestart()
. O usuário inicia uma nova Activity no seu aplicativo; esta é parada quando a segunda é criada e chama onRestart()
quando o usuário clica em "voltar" e o start reinicia uma atividade.
Desenvolvimento para iOS
27. Descreva as Ferramentas do Ambiente de Desenvolvimento iOS.
Xcode (possui ambiente de teste, controle de versão integrado, ambiente de desenvolvimento de tela), Instruments e o Simulador.
28. Para que Serve o Instruments?
Lê o código que está sendo executado e coleta estatísticas de desempenho (memória, processamento). Também chamado de code profiling.
29. Qual a Linguagem de Programação para iOS? Características.
Objective-C. Linguagem orientada a objetos com APIs próprias para desenvolvimento iOS.
30. iOS: 4 Camadas. Cite e Explique Cada uma Delas.
- Cocoa Touch: Versão da interface gráfica para dispositivos sensíveis ao toque. Semelhante ao Swing do Java.
- Media: Contém toda a parte de multimídia: som, vídeo, imagem, PDF, animação, OpenGL.
- Core Services: Camada praticamente igual à Core OS, porém é orientada a objetos (também em Objective-C). Contém o SQLite, Address Book, File Access, Collections, etc. Camada visível ao desenvolvedor.
- Core OS: Camada mais baixa do sistema operacional que conversa diretamente com o hardware. API em C que contém o kernel, sockets, segurança, certificados, acesso ao file system, gerenciamento de energia, etc. Quem desenvolve geralmente não mexe nesta camada.
31. Para que Serve o Pattern MVC?
Separa os objetos da aplicação em três partes: Model, View e Controller.
32. Qual o Papel do Model?
O Model é o que a aplicação faz.
33. Qual o Papel do View?
A View exibe o que o Controller mandar.
34. Qual o Papel do Controller?
O Controller conversa com o Model e manda a View exibir. Define a lógica de interface.
35. Explique como a View Fala com o Controller.
Essa comunicação é “cega” e estruturada, e acontece de duas formas:
- Target-Action: Em que a View configura um Controller como target e, quando uma ação ocorre (ex: um botão sendo clicado), ele informa esta ação para o target.
- Delegação: Em que se mantém View e Controller sincronizados; a View pode dizer ao Controller que algo aconteceu (did), acontecerá (will) ou é permitido acontecer (should).