📚 CAPÍTULO 01: INTRODUÇÃO E NATUREZA DO SOFTWARE
Seja muito bem-vindo ao módulo estratégico de Engenharia de Software da TecProExpress. Aqui, você aprenderá as bases técnicas para transformar a "arte" de programar em uma disciplina de engenharia rigorosa, focada em desenvolvimento moderno com foco prático no ecossistema corporativo utilizando Java 17 e Spring Boot 3.5. 🛡️🧩
🎯 Objetivo do Módulo
Ao final desta jornada, você não será apenas um programador, mas um arquiteto capaz de planejar, modelar e garantir a qualidade de sistemas complexos que sustentam grandes corporações.
🏢 O Cenário Corporativo (TecProExpress)
Imagine que você acaba de ser contratado como Engenheiro de Software Pleno na TecProExpress. A empresa possui um sistema legado de 15 anos que está "morrendo" (lento e difícil de manter) e precisa ser migrado para uma arquitetura de Microsserviços na nuvem.
"Seu desafio não é apenas escrever código novo, mas entender o ciclo de vida desse software, extrair os requisitos do negócio e garantir que a nova versão seja sustentável pelos próximos 20 anos."
📊 Mapa de Conhecimento do Módulo
Explore os quatro grandes pilares que regem a engenharia moderna de sistemas na TecProExpress.
flowchart TD
subgraph "CICLO DE VIDA DO SOFTWARE"
direction TB
F["🌳 FUNDAMENTOS"] --> R["📋 REQUISITOS"]
R --> M["📐 MODELAGEM UML & SPRING"]
M --> G["🛡️ GERENCIAMENTO & QUALIDADE"]
end
subgraph "PILARES TÉCNICOS"
direction LR
T1["⚡ AGILIDADE"] --- T2["📊 DIAGRAMAS"]
T2 --- T3["🧪 TESTES (JUNIT 5)"]
end
📗 Cronograma de Excelência
Este curso foi desenhado em uma sequência lógica, integrada à realidade do mercado de desenvolvimento corporativo.
| Unidade | Temática Principal | Foco Prático (Stack Principal) |
|---|---|---|
| I. Fundamentos | Modelos de Processos e Ágil | Ciclo de Entrega Corporativo |
| II. Requisitos | Elicitação e Histórias de Usuário | Validações com Jakarta Bean Validation |
| III. Modelagem | Objetos e Casos de Uso (UML) | Injeção de dependências (Spring DI) |
| IV. Diagramas | Sequência e Atividades | Fluxo REST e Mapeamento de Classes |
| V. Qualidade | SCM e Testes (TDD/BDD) | Automação com JUnit 5 e Mockito |
🧠 Fundamentos: O que é Software?
Software de computador é o produto que profissionais desenvolvem e ao qual dão suporte no longo prazo. Diferente de produtos físicos, o software possui características únicas:
| Característica | Impacto na Engenharia |
|---|---|
| Engenharia, não Manufatura | O custo está no design e na arquitetura, não na "produção" de cópias. |
| Não se Desgasta | O software não quebra fisicamente; ele degrada por falta de manutenção ou bugs lógicos. |
| Complexidade Crescente | Toda regra de negócio nova aumenta a chance de "Código Espaguete" se não houver padrão. |
📊 Evolução Histórica (Do Cascata ao Cloud-Native)
timeline
title Marcos da Engenharia de Software
1968 : "Conferência da OTAN (Nascimento do Termo)"
1970 : "Crise do Software (Falta de métodos)"
1990 : "Orientação a Objetos : Ascensão do Java"
2000 : "Manifesto Ágil : Scrum e Kanban"
2010 : "Cloud & Microservices : Spring Boot e DevOps"
🔍 Detalhamento Técnico: Por que a Engenharia é Vital?
Sommerville (2011) destaca que a sociedade moderna depende de softwares para infraestruturas vitais. A falha de uma API de pagamentos por falta de tratamento de exceções (ex: @ExceptionHandler) pode causar colapso financeiro.
[!CAUTION] Dica de Performance Corporativa: "Software não se fabrica, se projeta." O sucesso de um projeto corporativo reside na clareza da arquitetura original. Sem isso, refatorar um monólito engessado é um pesadelo técnico e financeiro. 🧠🛡️
🏺 O Desafio dos Sistemas Legados (Legacy)
Na TecProExpress, você encontrará sistemas antigos (Java EE, Cobol) que sustentam o faturamento. Eles são chamados de "sistemas de herança".
- 🛠️ Arquiteturas Rígidas: Difíceis de integrar com APIs REST.
- 🍝 Código Espaguete: Funções acopladas que violam o SOLID.
- ❌ Falta de Testes: Ausência de cobertura de JUnit.
🔄 A Natureza Mutante
A engenharia moderna na TecProExpress é tracionada por:
graph TD
A["Categorias em Evolução"] --> B["WebApps / APIs REST"]
A --> C["Mobile Apps"]
A --> D["Cloud Computing"]
A --> E["Linhas de Produto B2B"]
style B fill:#e3f2fd,stroke:#1e88e5
style C fill:#e3f2fd,stroke:#1e88e5
style D fill:#e3f2fd,stroke:#1e88e5
style E fill:#e3f2fd,stroke:#1e88e5
💡 Checkpoint de Lógica
[!IMPORTANT] Reflexão Profissional: Quando você estuda Spring Boot, você está se preparando para atuar nos eixos de APIs Cloud que alimentarão tanto WebApps (React/Angular) quanto Mobile (Flutter/Kotlin). Você está pronto para ser o motor dessa engrenagem? 🚀