PDS e Metodologias Ágeis

Resumo: Programação, Testes e Modelagem de Sistemas

1. Programação Orientada a Objetos com Python

Conceitos-chave:

  • Classes e Objetos:
    Uma classe é um molde; o objeto é o produto. Classes definem atributos (características) e métodos (ações).
  • Encapsulamento:
    Técnica que protege os dados dentro de uma classe, permitindo acesso controlado através de getters (leitura) e setters (modificação).

Aplicações práticas:

  • Criação de softwares modulares e organizados.
  • Utilização de boas práticas como separação de responsabilidades, reutilização de código e manutenção mais fácil.

Exemplos:

  • Criar uma classe Carro com atributos como cor e métodos como acelerar().

Boas práticas destacadas:

  • Utilizar convenções de encapsulamento (_atributo).
  • Planejar o código com esboços no papel antes da implementação.

2. Testes Não Funcionais: Desempenho, Segurança e Usabilidade

Desempenho

  • Testes de carga e stress:
    Avaliam se o sistema suporta alta demanda (ex.: Black Friday).
  • Otimização de recursos:
    Melhor uso de memória, CPU e armazenamento, como fazem Netflix e Spotify.
  • Monitoramento contínuo:
    Ferramentas como Google Analytics analisam o desempenho em tempo real.

Segurança

  • Testes de invasão (PenTest) e vulnerabilidade:
    Simulam ataques para descobrir falhas.
  • Autenticação e Autorização:
    Como o uso de 2FA (Autenticação de dois fatores).
  • Compliance:
    Seguir normas como GDPR para proteger dados dos usuários.

Exemplo real:
O ataque à Sony Pictures (2014) mostrou falhas como falta de 2FA e servidores desatualizados.

Usabilidade

  • Avaliação heurística:
    Avaliar a facilidade de uso seguindo princípios como os de Nielsen.
  • Testes com usuários reais:
    Observar o uso prático para melhorar a experiência.
  • Acessibilidade:
    Tornar sistemas usáveis para todos, como faz a Apple com seus recursos para deficientes.

3. Diagramas de Casos de Uso (UML)

Exemplo de diagrama de caso de uso: Referencia: https://medium.com/operacionalti/uml-diagrama-de-casos-de-uso-29f4358ce4d5

Use o site site https://www.draw.io/ para gerar o modelo da loja de açaí

O que são:

  • Diagramas que mostram como os usuários (atores) interagem com o sistema.
  • Representam funcionalidades e ajudam no entendimento, planejamento e comunicação do sistema.

Componentes principais:

  • Atores: quem usa (pessoas ou outros sistemas).
  • Casos de uso: o que o sistema faz para atender o ator.
  • Relacionamentos: associação, inclusão e extensão.

Exemplos:

  • E-commerce: Cliente compra produtos; administrador gerencia estoque.
  • Sistema bancário: Cliente faz saques e consultas.
  • Educação: Aluno assiste aula, professor publica material.

Importância prática:

  • Clarificam requisitos e interações antes da programação.
  • Ajudam a prever problemas e definir prioridades de desenvolvimento.

Resumo Final para Aula

TemaPontos PrincipaisExemplos Reais
Programação O.O.Classes, Objetos, EncapsulamentoPython (classe Carro)
Testes Não FuncionaisCarga, Segurança, UsabilidadeNetflix, Sony Pictures
Diagramas de Casos de UsoVisualizar ações do sistemaE-commerce, Saúde, Educação

💬 Sugestão de abordagem com os alunos:

“Hoje vamos aprender como construir softwares organizados, seguros e fáceis de usar, entendendo como desenhar, testar e programar melhor!”

Resumo Elaborado: Programação, Modelagem de Dados e Requisitos de Software


1. Diagramas UML: Casos de Uso, Classes e Sequências

Diagramas de Casos de Uso ​​

  • Representam as funcionalidades que o sistema oferece e como os usuários (atores) interagem com ele.
  • Principais elementos:
    • Atores: Pessoas ou sistemas externos que usam o sistema.
    • Casos de uso: Ações realizadas pelo sistema.
    • Relacionamentos: Mostram como atores e casos de uso se conectam.
  • Aplicações práticas: e-commerce, bancos, sistemas de ensino.
  • Objetivo: Melhorar a comunicação entre desenvolvedores, clientes e usuários.

Diagramas de Classes

referencia: https://slideplayer.com.br/slide/13956163/

  • Representam a estrutura estática do sistema.
  • Cada classe mostra seus atributos (informações) e métodos (ações que podem ser realizadas).
  • Exemplo: Classe “Usuário” com atributos como nome, email e métodos como logar().

Use o site site https://www.draw.io/ para gerar o modelo da loja de açaí

Diagramas de Sequência

Referencia: https://medium.com/documenta%C3%A7ao-uml/introdu%C3%A7%C3%A3o-ao-diagrama-de-sequ%C3%AAncia-1ea5e9563594

Use o site site https://www.draw.io/ para gerar o modelo da loja de açaí

  • Mostram como os objetos interagem no tempo para realizar funções.
  • Utilizados para representar o fluxo de mensagens entre usuários, sistemas e bases de dados.
  • Exemplo: Usuário adiciona produto ao carrinho → Sistema processa → Estoque é atualizado.


2. Modelagem de Dados Relacional ​​

Use o site site https://www.draw.io/ para gerar o modelo da loja de açaí

Fundamentos:

  • Entidades: Representam objetos reais, como Clientes, Produtos, Pedidos.
  • Relacionamentos: Como esses objetos se conectam (ex.: Cliente faz Pedido).

Normalização dos dados:

  • 1ª Forma Normal (1NF): Cada campo com um único valor.
  • 2ª Forma Normal (2NF): Eliminar dependências parciais em chaves compostas.
  • 3ª Forma Normal (3NF): Eliminar dependências transitivas.

Melhores práticas:

  • Chaves primárias e chaves estrangeiras para manter integridade dos dados.
  • Indexação para melhorar a performance de consultas.
  • Monitoramento contínuo do banco para otimizar consultas grandes.

Exemplo de aplicação:

  • Em sistemas de vendas, é necessário dividir dados em tabelas como Clientes, Pedidos, Produtos para evitar repetição de informações.

3. Modelagem de Requisitos de Software ​​

Requisitos de Software:

  • Requisitos Funcionais:
    Descrevem o que o sistema faz (ex.: “Usuário pode se cadastrar”).
  • Requisitos Não Funcionais:
    Definem qualidades do sistema (ex.: “O sistema deve carregar em 2 segundos”).
  • Requisitos de Domínio:
    Específicos de uma área (ex.: um sistema médico que precisa seguir normas de saúde).

Levantamento de requisitos:

  • Técnicas: entrevistas, questionários, observação direta, workshops.
  • Ferramentas: UML, JIRA, Trello.

Documentação:

  • Especificação de Requisitos de Software (SRS): documento técnico detalhado.
  • User Stories (Histórias de Usuário):
    Exemplo: “Como cliente, quero adicionar produtos ao carrinho para finalizar minha compra.”

Requisitos em Metodologias Ágeis:

  • Flexibilidade:
    Permitem mudanças rápidas durante o desenvolvimento.
  • Priorização:
    Entregam primeiro o que é mais importante.
  • User Stories e Critérios de Aceitação:
    Validam se a funcionalidade foi entregue corretamente.

Quadro Resumo para Aula

TemaPontos PrincipaisExemplos
Diagramas de Casos de UsoComo o usuário interage com o sistemaLoja online, Banco, Escola
Diagramas de ClassesEstrutura de dados do sistemaCadastro de clientes
Diagramas de SequênciaOrdem de interação entre objetosCompra online
Modelagem de DadosOrganização eficiente de informaçõesBanco de dados de vendas
Modelagem de RequisitosO que o sistema faz e como deve se comportarCadastro rápido e seguro

Sugestão para Apresentação Oral

Você pode dizer algo assim:

“Hoje vamos conhecer ferramentas essenciais para criar sistemas modernos: vamos entender como desenhar os requisitos de um sistema, organizar seus dados, planejar suas funções e testar se tudo está funcionando corretamente.”

Tabela de Jargões e Significados

JargãoSignificado
UML (Unified Modeling Language)Linguagem usada para desenhar diagramas que explicam como um sistema funciona.
Diagrama de Casos de UsoDesenho que mostra o que o sistema faz e como os usuários (atores) interagem com ele.
AtorQuem interage com o sistema (pessoa, sistema ou dispositivo).
Caso de UsoAção ou funcionalidade que o sistema deve realizar.
Relacionamento (UML)Ligação entre atores e casos de uso ou entre casos de uso diferentes.
Diagrama de ClassesRepresentação das partes de um sistema: suas informações (atributos) e ações (métodos).
Diagrama de SequênciaMostra a ordem em que as ações acontecem entre os objetos de um sistema.
Linha de VidaRepresenta o tempo de vida de um objeto enquanto ele interage no sistema.
Mensagem SíncronaComunicação onde quem envia espera uma resposta antes de continuar.
Mensagem AssíncronaComunicação onde quem envia não precisa esperar resposta para continuar.
Modelagem de Dados RelacionalTécnica para organizar as informações em bancos de dados, evitando erros e repetição.
EntidadeRepresentação de um objeto ou conceito real (ex: cliente, produto).
Relacionamento (Dados)Conexão entre duas entidades no banco de dados.
NormalizaçãoProcesso para organizar os dados em tabelas de forma correta, evitando repetições.
Chave PrimáriaIdentificador único de cada registro numa tabela (ex: CPF de uma pessoa).
Chave EstrangeiraLigação entre duas tabelas diferentes.
User StoryPequena história escrita do ponto de vista do usuário dizendo o que ele precisa fazer.
Critério de AceitaçãoCondições que mostram que uma funcionalidade foi feita corretamente.
MoSCoWTécnica para priorizar tarefas: Must (deve ter), Should (deveria ter), Could (poderia ter), Won’t (não terá agora).
Levantamento de RequisitosProcesso de descobrir tudo o que o sistema precisa fazer.
SRS (Software Requirements Specification)Documento formal que descreve todos os requisitos do sistema.
Framework ÁgilModelo de trabalho que permite fazer entregas rápidas e adaptáveis no desenvolvimento de software.
CI/CD (Integração Contínua/Entrega Contínua)Técnicas para automatizar testes e entregas de novos códigos em sistemas de forma rápida e segura.
WorkshopReunião prática e interativa para resolver problemas ou levantar informações.
ProtótipoModelo simples de um sistema feito para testar ideias antes de fazer a versão final.
Elicitação de RequisitosColeta de informações necessárias para definir o que o sistema precisa fazer.

Resumo Geral para Apresentação — Sistemas, Modelagem e Testes


1. Modelagem de Dados Relacionais

  • Conceitos-chave:
    Entidades (como “Cliente” ou “Produto”), Relacionamentos e Normalização (1ª, 2ª e 3ª Formas Normais)​.
  • Objetivo:
    Garantir organização dos dados, evitando redundância e melhorando a integridade.
  • Exemplos:
    Cadastro de clientes, pedidos em lojas virtuais.

2. Modelagem de Dados Não Relacionais

  • Tipos de bancos:
    • Documentos: Estruturam informações como JSON (ex: MongoDB).
    • Grafos: Representam conexões complexas (ex: Redes Sociais)​.
    • Chave-Valor: Para acesso ultra rápido de informações, como sessões de usuários​.
  • Importância:
    Usados onde precisamos de alta escalabilidade, consultas rápidas ou análise de redes.

3. Diagramas UML: Casos de Uso, Classes e Sequências

  • Casos de Uso:
    Mostram como usuários interagem com o sistema​.
  • Classes:
    Estruturam informações e métodos em sistemas​​.
  • Sequência:
    Representam o fluxo temporal de interações entre objetos​​.
  • Exemplos práticos:
    E-commerce (Cliente → Carrinho → Pagamento → Estoque).

4. Requisitos de Software

  • Funcionais:
    Definem o que o sistema faz (ex: “Cadastrar usuário”).
  • Não Funcionais:
    Definem qualidades do sistema (ex: “Tempo de resposta menor que 2 segundos”).
  • User Stories:
    Pequenas histórias que ajudam a entender melhor o que o usuário precisa.

5. Testes de Software

Testes Funcionais

  • O que são:
    Verificam se o sistema cumpre seus requisitos.
  • Técnicas:
    • Caixa Preta (testar sem saber o código).
    • Testes de equivalência, valor-limite.
    • Automação de testes (ex: usando pytest).
  • Importância:
    Garante que o sistema faça exatamente o que foi prometido.

Testes Não Funcionais ​

  • Tipos:
    • Desempenho:
      Avalia velocidade, escalabilidade e estabilidade.
    • Segurança:
      Testa vulnerabilidades e proteção de dados.
    • Usabilidade:
      Garante facilidade de uso e compatibilidade com vários dispositivos.
  • Exemplos reais:
    • Black Friday: Testes de carga para aguentar milhões de acessos​.
    • Aplicativos bancários: Testes de segurança e compatibilidade em vários celulares​.

6. Planejamento e Gestão de Testes

  • Planejamento de Testes:
    Definição de escopo, cronograma e recursos necessários​.
  • Gestão de Defeitos:
    • Identificar.
    • Registrar (documentar claramente).
    • Monitorar (corrigir e validar).
  • Testes Ágeis:
    Testar continuamente usando integração contínua (CI/CD).

Resumo Final para Aula

TemaFocoExemplos
Modelagem RelacionalOrganização e estruturação de dadosBanco de dados de vendas
Modelagem Não RelacionalEficiência e escalabilidadeMongoDB, Redis, Neo4j
Diagramas UMLEntender funcionamento e interaçõesSistema de Compras Online
RequisitosDefinir o que fazer e como se comportarCadastrar usuário rapidamente
Testes FuncionaisVerificar se tudo funciona como planejadoCadastro de clientes
Testes Não FuncionaisGarantir qualidade, segurança e desempenhoTeste de carga em Black Friday

💬 Sugestão de Introdução para Apresentação:

“Hoje vamos explorar como projetar sistemas, organizar dados, definir funções e testar tudo para garantir que a tecnologia funcione de maneira rápida, segura e fácil de usar no nosso dia a dia.”