🚀 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:
- Processo: O caminho a seguir (as regras do jogo).
- Métodos: Como fazer cada tarefa (as técnicas de construção).
- Ferramentas: O que usamos para ajudar (os softwares de apoio).
- 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:
- Digitar um código em Python para calcular a média de duas notas de um aluno.
- 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.
- 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).
- Cite dois problemas graves que essa equipe provavelmente vai enfrentar.
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 01 EngSoftware) e clique em Commit to main. - 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:
- Programação pura (Tarefa isolada e simples).
- Engenharia de Software (Análise de requisitos e escalabilidade).
- Engenharia de Software (Garantia de qualidade e automação). Gabarito da Prática 2:
- Um programador pode apagar o código do outro sem querer.
- 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.