Programação – 3 Bimestre

Validação e Verificação de Requisitos

  • Verificação de requisitos: Processo que assegura clareza, completude, consistência, rastreabilidade e testabilidade antes do desenvolvimento.
    • Técnicas: revisões por pares, análise de gap, checklists, matriz de rastreabilidade e critérios de aceitação.
    • Ferramentas: IBM Rational DOORS, JIRA e Enterprise Architect.
  • Validação de requisitos: Garante que o sistema atenda às necessidades dos stakeholders, evitando mal-entendidos e retrabalho.
    • Ferramentas: planilhas de validação, reuniões com clientes, critérios claros de aceitação e feedback contínuo.
    • Exemplo: uso em sistemas de e-commerce, finanças pessoais e reservas de voos.

Pilares da Programação Orientada a Objetos (POO) – Encapsulamento

  • Conceito: Protege atributos e métodos de uma classe, permitindo acesso controlado através de getters e setters.
  • Benefícios:
    • Segurança: impede alterações indevidas nos dados.
    • Manutenibilidade: facilita ajustes e ampliações no código.
    • Modularidade: separa responsabilidades, tornando o sistema mais organizado.
  • Exemplos práticos em Python:
    • Controle de curtidas em e-commerce.
    • Sistema de gestão de carros com atributos encapsulados.
    • Sistema de biblioteca com implementação de métodos de acesso.

Principais Aprendizados

  1. Requisitos bem validados e verificados reduzem falhas e retrabalho no desenvolvimento.
  2. POO com encapsulamento reforça boas práticas de segurança e organização no código.
  3. Ferramentas de apoio (planilhas, checklists, IDEs) otimizam processos técnicos e colaborativos.
  4. Exemplos reais facilitam a compreensão e aplicação dos conceitos de engenharia de software.

Encapsulamento em Projetos Práticos (POO)

  • Reforço do encapsulamento: Controle de atributos e métodos com segurança e acesso controlado, melhorando integridade e confiabilidade do código.
  • Exemplo prático: Sistema de controle de estoque de carros, com classes Carro e Estoque, aplicação de getters e setters, e métodos como adicionar_carro.
  • Benefícios: Segurança, manutenção facilitada, modularidade e prevenção de bugs.
  • Questões éticas: Proteção de dados, segurança cibernética e transparência no uso de informações.

Testes Não Funcionais

  • Desenvolvimento e execução: Identificação de requisitos não funcionais (desempenho, segurança, usabilidade, confiabilidade), definição de critérios e uso de ferramentas apropriadas.
  • Ferramentas e práticas:
    • Pentest: Exploração de vulnerabilidades usando Kali Linux e ferramentas como SQLMap e PortSwigger.
    • Burp Suite: Interceptação e modificação de requisições HTTP para identificar falhas de controle de acesso.
  • Testes de desempenho e segurança: Avaliação de escalabilidade, estabilidade, vulnerabilidades e usabilidade.
  • OWASP Top 10: Referência essencial para práticas de segurança web.

Diagramas UML – Diagrama de Estados

  • Definição: Representa mudanças de estados de um objeto ou sistema em resposta a eventos.
  • Elementos principais:
    • Estados (inicial, intermediários e final).
    • Transições acionadas por eventos.
    • Ações associadas às mudanças de estado.
  • Exemplos práticos:
    • Controle de acesso eletrônico (porta: fechada, abrindo, aberta, fechando, trancada).
    • Processo de matrícula em instituições educacionais.
  • Benefícios: Visualização do comportamento do sistema, identificação de falhas e melhor comunicação entre stakeholders.

Diagramas UML – Atividades

  • Definição: Ferramenta visual que modela o fluxo de atividades, ações e decisões em sistemas e processos.
  • Aplicações:
    • Modelagem de processos de negócios (reservas de passagens aéreas).
    • Desenvolvimento de software (fluxos de tela, módulos específicos).
    • Engenharia de sistemas complexos (controle de tráfego aéreo).
  • Benefícios:
    • Facilita comunicação entre stakeholders.
    • Identifica gargalos e otimiza processos.
    • Documenta sistemas e facilita manutenção.
  • Ferramentas: Lucidchart, Draw.io, Microsoft Visio.

Herança em POO

  • Conceito: Permite que classes herdem atributos e métodos de outras, criando hierarquias reutilizáveis.
  • Exemplo prático:
    • ContaBancaria (superclasse): métodos comuns (depositar, sacar, consultar_saldo).
    • ContaCorrente, ContaPoupanca e ContaInvestimento (subclasses) com funcionalidades específicas.
  • Reutilização de código:
    • Implementação de cálculos de tarifas com métodos estáticos e classes utilitárias.
    • Inclusão de novas funcionalidades (ex: conta universitária gratuita) sem duplicação de código.
  • Método de transferência: Transferência entre contas com verificação de saldo.
  • Aspectos éticos:
    • Privacidade dos dados, segurança de transações e transparência nas práticas bancárias.

Principais Aprendizados

  1. Diagramas de atividades ajudam na visualização, comunicação e melhoria de sistemas.
  2. Herança simplifica manutenção e amplia escalabilidade, evitando duplicação de código.
  3. Práticas éticas e segurança devem ser consideradas na implementação de sistemas financeiros.
  4. Ferramentas de modelagem e POO combinadas fornecem base sólida para projetos de software.

Gerenciamento de Mudanças em Requisitos

  • Definição: Processo contínuo que ocorre durante todo o ciclo de vida do projeto, envolvendo identificação, análise, documentação, priorização e controle de requisitos.
  • Importância:
    • Permite adaptação às mudanças de mercado e necessidades do cliente.
    • Minimiza riscos e falhas decorrentes de requisitos mal gerenciados.
  • Boas práticas:
    • Documentação clara e enxuta.
    • Avaliação de impacto (prazo, custo e qualidade).
    • Controle rigoroso de versões e rastreabilidade.
  • Exemplos práticos: Aplicação em sistemas de saúde (SUS), lojas e softwares corporativos, com foco em segurança e ética (proteção de dados).

Herança em Projetos Práticos (POO)

  • Exemplo aplicado: Sistema de gestão de loja de eletrônicos.
    • Classe base: ProdutoEletronico (atributos e métodos comuns).
    • Subclasses: Smartphone, Laptop, Televisor, cada uma com características próprias.
  • Benefícios da herança:
    • Reutilização de código.
    • Estrutura hierárquica clara e extensível.
    • Facilidade de manutenção e escalabilidade.
  • Prática de implementação:
    • Testes práticos para validar métodos.
    • Flexibilidade para novos tipos de produtos.

Principais Aprendizados

  1. Gerenciamento eficaz de requisitos é essencial para evitar falhas e alinhar o projeto às expectativas do cliente.
  2. Documentação ágil e enxuta facilita comunicação e evita burocracia excessiva.
  3. Herança em POO permite criar sistemas organizados, reutilizáveis e preparados para expansão.
  4. Aspectos éticos e segurança devem ser considerados tanto no gerenciamento de mudanças quanto na implementação de software.

Herança em Projetos Práticos

  • Exemplo aplicado: Sistema de gerenciamento escolar com classes Pessoa, Funcionario e Aluno, mostrando a criação de estruturas hierárquicas e reutilização de código.
  • Conceitos aplicados:
    • Encapsulamento de atributos e métodos.
    • Uso de composição (objetos como atributos de outras classes).
    • Estrutura hierárquica clara e extensível para novos tipos de entidades.

Polimorfismo (POO)

  • Definição: Permite que objetos de diferentes classes respondam de forma distinta a uma mesma interface, aumentando flexibilidade e reutilização.
  • Tipos abordados:
    • Sobreposição (override): Subclasses redefinem métodos herdados da classe pai.
    • Exemplo prático: Sistema de entregas com veículos (carro, caminhão, bicicleta), cada um com cálculo específico de tempo de entrega.
  • Aplicações adicionais:
    • Loja virtual com diferentes tipos de produtos (livros, eletrônicos e alimentos).
    • Sistema de rastreamento de encomendas com classes Encomenda, Pacote, Carta e RemessaGrande, utilizando herança e sobreposição para especializações.

Benefícios Chave

  1. Reutilização de código: Com herança e polimorfismo, métodos comuns são centralizados e especializados conforme necessário.
  2. Flexibilidade e extensibilidade: Fácil adição de novos tipos de classes sem alterar estruturas existentes.
  3. Modelagem próxima ao mundo real: Representação clara de entidades e suas relações hierárquicas.
  4. Manutenção simplificada: Alterações localizadas reduzem riscos de falhas globais no sistema.