🚀 Capítulo 01: O que é Engenharia de Software (Tema: LEGO)

NOTE

Este capítulo utiliza a temática de LEGO para explicar a Engenharia de Software. Qualquer um consegue encaixar duas peças de LEGO, mas construir uma cidade inteira que não caia exige engenharia!


1. 🎯 Objetivo da Aula

Compreender o conceito de Engenharia de Software, a diferença fundamental entre simplesmente “programar” e “engenhar” um software, e por que precisamos de processos e métodos para construir sistemas complexos.

2. 🏢 O Cenário Prático (Seu Desafio)

Imagine que você ganhou um balde cheio de blocos de LEGO.

  • Se você quiser construir uma casinha simples, você espalha as peças no chão e começa a encaixar. Em 10 minutos está pronto. Você não precisou de desenho, nem de regras, nem de ninguém te ajudando.
  • Agora, imagine que o seu desafio é construir uma cidade de LEGO em tamanho real, com prédios de 3 andares, pontes que aguentam peso e trens elétricos funcionando.

Se você tentar fazer a cidade do mesmo jeito que fez a casinha (só pegando as peças e empilhando sem pensar), o que vai acontecer? Os prédios vão desabar com o próprio peso, as peças vão faltar e as pessoas da equipe vão bater cabeça! Para construir a cidade, você precisa de Engenharia! No mundo do software é a mesma coisa. Seu desafio é entender como deixar de ser um mero empilhador de peças e se tornar um engenheiro!


🧠 Fundamentos: A Teoria Traduzida

A Engenharia de Software é a aplicação de uma abordagem sistemática, disciplinada e quantificável ao desenvolvimento de software.

💻 Programação vs. Engenharia de Software:

  • Programação (O Encaixe): É o ato de escrever as linhas de código. É focado na solução de um problema específico e imediato. (Construir a casinha).
  • Engenharia de Software (O Plano da Cidade): É todo o processo que envolve o software. Inclui conversar com o cliente, desenhar a arquitetura para o sistema aguentar muitos acessos, garantir a segurança, testar tudo automaticamente e planejar como o sistema vai crescer nos próximos 5 anos.

🏛️ Os 4 Pilares da Engenharia de Software:

  1. Processo: O caminho a seguir (as regras do jogo).
  2. Métodos: Como fazer cada tarefa (as técnicas de construção).
  3. Ferramentas: O que usamos para ajudar (os softwares de apoio).
  4. Pessoas: Quem faz o trabalho (a equipe). O pilar mais importante!

4. 📖 Exemplo Guiado: O Custo da Mudança

Por que planejamos antes de construir? Por causa do custo do erro!

  • Se você está construindo a casinha de LEGO e decide mudar a porta de lugar, você gasta 10 segundos para desencaixar e mudar.
  • Se você está construindo um prédio real de concreto e decide mudar a porta de lugar depois que o prédio está pronto, você terá que quebrar paredes, gastando milhares de reais.

No software é igual: descobrir um erro de lógica enquanto você está apenas desenhando o sistema no papel custa quase nada. Descobrir o mesmo erro depois que o sistema já está sendo usado por milhões de clientes pode falir uma empresa!


5. 🛠️ Prática Obrigatória 1: Programador ou Engenheiro?

Diga se a tarefa descrita parece mais com Programação pura ou com Engenharia de Software:

  1. Digitar um código em Python para calcular a média de duas notas de um aluno.
  2. Reunir-se com a diretoria de um banco para entender como o novo sistema de PIX deve funcionar para não cair no Ano Novo.
  3. Criar um sistema de testes automáticos que verifica se o site de vendas continua funcionando toda vez que alguém atualiza o código.

6. 🛠️ Prática Obrigatória 2: A Importância do Processo

Imagine uma equipe de 10 programadores trabalhando no mesmo sistema sem nenhuma regra ou processo (cada um faz do seu jeito).

  1. Cite dois problemas graves que essa equipe provavelmente vai enfrentar.

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 01 EngSoftware) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

extra_engenharia_de_software/
├── capitulos/
│   ├── capitulo_01_introducao.md
│   └── codigos/
│       └── cap01/
│           └── plano_cidade.txt

💡 Checkpoint de Lógica

Um bom engenheiro de software não é aquele que digita mais rápido, mas aquele que pensa melhor na estrutura antes de começar a digitar!

10. 🔥 Desafio de Fixação

Pesquise a definição de Engenharia de Software segundo o IEEE (Institute of Electrical and Electronics Engineers).

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. Programação pura (Tarefa isolada e simples).
  2. Engenharia de Software (Análise de requisitos e escalabilidade).
  3. Engenharia de Software (Garantia de qualidade e automação). Gabarito da Prática 2:
  4. Um programador pode apagar o código do outro sem querer.
  5. O sistema final pode virar uma colcha de retalhos, onde as partes não se encaixam e ninguém entende o código do outro.

Capitulo Anterior | Proximo Capitulo