Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

📚 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.

UnidadeTemática PrincipalFoco Prático (Stack Principal)
I. FundamentosModelos de Processos e ÁgilCiclo de Entrega Corporativo
II. RequisitosElicitação e Histórias de UsuárioValidações com Jakarta Bean Validation
III. ModelagemObjetos e Casos de Uso (UML)Injeção de dependências (Spring DI)
IV. DiagramasSequência e AtividadesFluxo REST e Mapeamento de Classes
V. QualidadeSCM 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ísticaImpacto na Engenharia
Engenharia, não ManufaturaO custo está no design e na arquitetura, não na "produção" de cópias.
Não se DesgastaO software não quebra fisicamente; ele degrada por falta de manutenção ou bugs lógicos.
Complexidade CrescenteToda 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? 🚀