Construir é fácil. Manter é onde a conta chega.
A manutenção consome 67% do custo total de um sistema de software.
Roger Pressman Engenharia de Software: Uma Abordagem Profissional
A fase menos planejada consome 67% do orçamento.
Como os 67% se Dividem
Nem toda manutenção tem o mesmo peso
Evolutiva
Adaptativa
Corretiva
Preventiva
A mais eficiente é a menos praticada.
Preventiva: apenas 4%. E é a mais barata.
Dois Mundos. Dois Custos.
Preventiva
Refatora antes do problema aparecer.
Corretiva
Conserta com pressão e sem testes.
Custo cresce. Influência cai. O cliente descobre tarde.
5 Categorias SWEBOK
Toda solicitação de mudança é uma destas
Corretiva
Algo quebrou. Conserta.
Preventiva
Refatora antes da dor.
Adaptativa
O ambiente mudou. Ajusta.
Additive
Nova feature pós-entrega.
Perfectiva
Melhoria sem mudar comportamento. Performance, UX, mensagens.
Todo pedido de mudança passa por esse fluxo.
Programação
Orientada a Objetos
A forma como sistemas grandes aprenderam a não desabar.
O que é OO?
Em uma frase:
Um paradigma que modela software como uma coleção de objetos que conversam entre si, em vez de uma sequência de passos.
Modela entidades
Não passos
Conversa por interfaces
Sem acoplar tudo
Estado + Comportamento
No mesmo lugar
Duas Formas de Pensar
A pergunta que cada paradigma faz
C
"Quais passos executar?"
Java
"Quem é responsável por quê?"
Restaurante Pequeno
Um cozinheiro. Fazendo tudo.
Restaurante Profissional
Cada setor com sua responsabilidade.
Garçom
Recebe pedidos
Cozinha
Prepara a comida
Caixa
Cuida do pagamento
Estoque
Controla ingredientes
Sua Cabeça Muda
Não é só sintaxe. É outra forma de pensar.
Operador
Executa passos.
Linha por linha.
Arquiteto
Organiza responsabilidades.
Modela o domínio.
Estruturada organiza o fluxo.
A Mudança de Paradigma É por isso que sistemas grandes adotaram OO.
OO organiza o domínio.
A base de todo código que sobrevive ao tempo.
Os 3 Pilares da POO
Encapsulamento
Esconda complexidade. Exponha só o necessário.
Herança
Reaproveite. Sem duplicar código.
Polimorfismo
Troque implementação. Sem quebrar nada.
Zona privada protegida. Interface pública controlada.
class ContaBancaria:
def __init__(self, saldo: float = 0):
self._saldo = saldo # protegido
def depositar(self, valor: float):
if valor <= 0:
raise ValueError("Inválido")
self._saldo += valor
Mudou na classe pai. Propagou para todas as filhas.
class Forma(ABC):
@abstractmethod
def area(self) -> float: pass
# Tipos diferentes, mesma interface
formas = [Retangulo(10,5), Circulo(7)]
for f in formas:
print(f.area())
Mesma interface. Comportamentos diferentes.
Sem POO vs Com POO
O impacto direto na manutenção
Sem POO: cada mudança vira caça ao tesouro.
Com POO: mudança em UM lugar propaga limpo.
Soluções testadas para problemas que se repetem.
Os 5 Padrões Essenciais
Resolvem 80% dos problemas de manutenção
Singleton
Uma instância só
Factory
Cria sem acoplar
Strategy
Troca algoritmo
Observer
Notifica sem acoplar
Repository
Separa negócio do banco
Apresentação. Aplicação. Domínio. Infraestrutura.
Cada hora investida em qualidade evita dezenas de horas de manutenção corretiva.
A Lição do Capítulo 4 Use IA com processo. Não com pressa.