Capítulo 1: Guia de Engenharia de Software para Concursos Públicos

Mauricio Lacerda
Engenharia de Software para Concursos
5 min readJul 26, 2019

Os concursos de TI

A área de TI é privilegiada quando o assunto é concurso público. Pouquíssimas áreas têm tantas oportunidades como a nossa. Isso é fácil de entender: tudo que o governo precisa fazer depende de TI. Enquanto outras áreas perdem oportunidades e expressão, em um momento de crise por exemplo, a TI ganha relevância. Não há como fazer redução de gastos sem TI. Não há como fazer controle sem TI. Não há como combater a corrupção sem TI. Não há como gerir sem TI.

Sobre a remuneração, muitas vezes são superiores as da iniciativa privada. Na minha trajetória de serviço público vi recém-formados, em seu primeiro emprego, com remuneração superior à dos chefes que tive na iniciativa privada.

Neste mundo de oportunidades temos as empresas públicas e os poderes executivo, legislativo e judiciário. Além de termos concursos de TI tanto para nível intermediário quanto para nível superior.

As menores remunerações iniciais de TI no serviço público estão perto dos quatro mil reais para nível intermediário e superam os cinco mil reais para nível superior. No topo remuneratório dos concursos de TI está o poder legislativo. Com remuneração que supera os vinte e cinco mil reais iniciais. Aposto que você nunca viu um jovem recém-formado com uma remuneração destas na iniciativa privada.

Os principais concursos de TI são organizados por bancas sérias e que possuem ampla experiência no assunto. Resumindo, as bancas não serão o problema. Neste rol incluo o Cespe, a FCC, a ESAF e a FGV. Se estiver preparado para estas, certamente estará preparado para todas.

Engenharia de software nos concursos públicos

A disciplina de engenharia de software está presente em praticamente todos os concursos da área de TI. O conteúdo é bastante extenso mas oscila pouco entre os editais facilitando a vida do concurseiro.

Em geral, a bibliografia se restringe a dois autores: Roger S. Pressman e Ian Sommerville. Não há como falar de engenharia de software dissociada destes dois. A depender da banca organizadora, frequentemente há preferências. Há as que prefiram o primeiro e as que optam pelo segundo. Portanto, ao concurseiro, resta estudar ambos os autores e complementar com outras publicações de menor expressão.

As publicações destes dois autores são bastante extensas. Juntas facilmente ultrapassam as mil e quinhentas páginas. O nível de informação destes livros geralmente excede ao que é exigido nas provas. Definir o que estudar destes dois autores e quais as outras fontes devem ser recorridas é um dos objetivos deste guia.

Conceitos básicos da engenharia de software

Não há como falar de engenharia de software sem passarmos, mesmo que brevemente, pelos seus conceitos básicos. Concordo que muitos termos parecerem óbvios por estarem impregnados no nosso dia dia. Mas acreditem! As bancas examinadoras adoram saber se estamos por dentro de como os principais autores da área descreveram esses conceitos. Para complicar um pouquinho mais, infelizmente estes autores não concordaram em todos os aspectos. Mas disto é feita a Ciência. Não haveria porque existir mais de uma publicação sobre o mesmo tema se elas fossem iguais. Não há outro jeito a não ser estudar.

Bem, faça um exercício rápido e tente definir Engenharia de Software. Este ramo da engenharia se limita a que? Apesar de parecer uma resposta simples, podemos facilmente cair em armadilhas.

Veja esta questão elaborada pelo nosso querido Cespe.

Cespe — TCE/RO — 2013 — Com relação à engenharia de software, julgue os itens seguintes.

Engenharia de software não está relacionada somente aos processos técnicos de desenvolvimento de softwares, mas também a atividades como gerenciamento de projeto e desenvolvimento de ferramentas, métodos e teorias que apoiem a produção de softwares.

Para responder a esta questão precisamos recorrer a Ian Sommervile em seu livro Engenharia de Software que disse o seguinte:

Todos os aspectos da produção de software.

A engenharia de software não se preocupa apenas com os processos técnicos do desenvolvimento de software. Ela também inclui atividades como gerenciamento de projeto de software e desenvolvimento de ferramentas, métodos e teorias para apoiar a produção de software.

Percebam que a banca examinadora apenas parafraseou o autor cobrando explicitamente um conceito que pode facilmente ser confundido.

Portanto a assertiva está CORRETA.

Devemos ainda complementar a definição de engenharia de software. Roger S. Pressman, em seu livro Engenharia de Software, apresentou o conceito que engenharia de software é uma tecnologia em camadas com o foco na qualidade do software desenvolvido. Ou seja, a engenharia de software engloba um processo, métodos de gerenciamento e desenvolvimento de software, bem como ferramentas conforme apresentado na figura a seguir.

Camadas da Engenharia de Software de Pressman — (Fonte: Engenharia de software 8ª Edição — Roger S. Pressman)

Espero que estejam convencidos sobre a importância do estudo destes tópicos conceituais.

Atributos essenciais de um bom software

Antes de falarmos sobre os atributos essenciais de um bom software, é de extrema importância esclarecermos alguns questionamentos acerca termos ou expressões comumente utilizados em engenharia de software. A tabela a seguir descreve, sucintamente, os principais itens que são motivo de dúvidas gerais.

Fique atento aos itens grifados. Estes itens frequentemente estão presentes em nossas provas.

Software: São programas de computador e documentação associada

Atributos de um bom software: Entregar as funcionalidades e o desempenho desejados pelo usuário. Deve ser confiável, fácil de manter e usar

Engenharia de software: É uma disciplina de engenharia que se preocupa com todos os aspectos de produção de software

Principais atividades da Engenharia de software: Especificar, desenvolver, validar e evoluir software

Diferença entre engenharia de software e de sistemas: Engenharia de sistemas engloba todos os aspectos do desenvolvimento de sistemas (hardware, software e processo). Engenharia de software é uma parte específica desse processo mais abrangente

Além dos conceitos já apresentados, temos 4 características básicas que um software deve conter para ser um bom software. Estas características estão apresentadas a seguir:

Manutenibilidade: Deve ser viável evoluir o software para atender às necessidades dos clientes

Confiança e proteção: Confiança abrange confiabilidade, proteção e segurança. Software confiável é aquele que não causa prejuízos em caso de falha

Eficiência: O software não deve desperdiçar os recursos do sistema

Aceitabilidade: Deve ser compreensível e usável pelo tipo de usuário para o qual foi projetado e ser compatível com outros sistemas usados por ele

Resumo

Neste capítulo vimos:

  1. Uma breve explanação sobre as oportunidades de concursos para área de TI.
  2. As principais referências bibliográficas utilizadas pelas bancas examinadoras sobre engenharia de software.
  3. Conceitos básicos de engenharia de software e a importância de estudá-los.
  4. A abordagem em camadas (processo, métodos, ferramentas) para definir engenharia de software proposta por Pressman.
  5. Os atributos essenciais de um bom software (manutebilidade, confiança e proteção, eficiência e aceitabilidade).
  6. O conceito de software, engenharia de software e sua diferenciação com a engenharia de sistemas.
  7. As principais atividades da engenharia de software (especificar, desenvolver, validar e evoluir software).

--

--