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
- Requisitos bem validados e verificados reduzem falhas e retrabalho no desenvolvimento.
- POO com encapsulamento reforça boas práticas de segurança e organização no código.
- Ferramentas de apoio (planilhas, checklists, IDEs) otimizam processos técnicos e colaborativos.
- 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
eEstoque
, aplicação de getters e setters, e métodos comoadicionar_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.
- ContaBancaria (superclasse): métodos comuns (
- 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
- Diagramas de atividades ajudam na visualização, comunicação e melhoria de sistemas.
- Herança simplifica manutenção e amplia escalabilidade, evitando duplicação de código.
- Práticas éticas e segurança devem ser consideradas na implementação de sistemas financeiros.
- 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
- Gerenciamento eficaz de requisitos é essencial para evitar falhas e alinhar o projeto às expectativas do cliente.
- Documentação ágil e enxuta facilita comunicação e evita burocracia excessiva.
- Herança em POO permite criar sistemas organizados, reutilizáveis e preparados para expansão.
- 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
- Reutilização de código: Com herança e polimorfismo, métodos comuns são centralizados e especializados conforme necessário.
- Flexibilidade e extensibilidade: Fácil adição de novos tipos de classes sem alterar estruturas existentes.
- Modelagem próxima ao mundo real: Representação clara de entidades e suas relações hierárquicas.
- Manutenção simplificada: Alterações localizadas reduzem riscos de falhas globais no sistema.