Resumão da disciplina Metodologias Ágeis

Aula 1 – [SIS]ANO1C3B1S1A1.pdf

  • Introdução e Conceitos:
    • Definição do levantamento de requisitos e sua importância para o sucesso dos projetos de desenvolvimento de software.
    • Diferenciação entre requisitos funcionais (o que o sistema deve fazer) e não funcionais (como o sistema deve se comportar).
  • Atividade Prática:
    • Exemplo com cenário de um aplicativo para agendamento de consultas, enfatizando a coleta e análise dos requisitos.

Aula 2 – [SIS]ANO1C3B1S1A2.pdf

  • Técnicas e Ferramentas:
    • Abordagens e métodos para coletar requisitos, com ênfase em técnicas como entrevistas, workshops e brainstorming.
    • Comparação entre metodologias ágeis e tradicionais na coleta de requisitos.
  • Estudo de Caso:
    • Exemplo prático utilizando um software de e-commerce, detalhando os requisitos funcionais e não funcionais.
  • Atividades e Quizzes:
    • Exercícios e questionários para fixação dos conceitos apresentados.

Aula 3 – [SIS]ANO1C3B1S1A3.pdf

  • Desafios e Gestão de Mudanças:
    • Identificação dos principais desafios do levantamento de requisitos, como a comunicação com stakeholders e a gestão de alterações no escopo.
    • Estratégias para lidar com mudanças inesperadas nos requisitos, incluindo análise de riscos e impacto.
  • Exercícios Práticos:
    • Atividades que simulam situações reais de mudanças de requisitos, com foco na adaptação e na negociação entre as partes envolvidas.

II. Testes de Software

(Arquivos: S7A3, S7A1, S7A2, S2A3, S2A1, S2A2)

A. Testes Funcionais: Conceitos e Metodologias

Aula 1 – [SIS]ANO1C3B1S7A1.pdf

  • Fundamentos dos Testes Funcionais:
    • Importância de testar se o software atende aos requisitos funcionais definidos.
    • Etapas do processo de teste: planejamento, preparação do ambiente, levantamento de requisitos, design dos casos de teste, execução e registro de defeitos, além da elaboração do relatório de teste.
  • Desenvolvimento de Casos de Teste:
    • Criação de cenários que cobrem as funcionalidades essenciais do software.

Aula 2 – [SIS]ANO1C3B1S7A2.pdf

  • Metodologias de Teste:
    • Comparação entre abordagens tradicionais (modelo cascata) e ágeis (iterativas e incrementais).
    • Integração dos testes funcionais no ciclo das sprints e a importância da automação para testes repetitivos.
  • Atividade Prática:
    • Criação de fluxogramas que ilustrem o processo de teste funcional e discussão sobre estratégias de execução.

Aula 3 – [SIS]ANO1C3B1S7A3.pdf

  • Melhores Práticas e Estratégias:
    • Planejamento, execução e gerenciamento dos testes funcionais.
    • Uso de ferramentas e tecnologias para automatização e organização dos testes.
    • Avaliação de riscos e priorização dos testes com base no impacto dos defeitos.

B. Introdução aos Testes de Software e Tipos de Testes

Aula 1 – [SIS]ANO1C3B1S2A1.pdf

  • Conceitos Básicos:
    • Introdução aos testes de software, destacando a importância dos processos de verificação e validação.
    • Objetivos dos testes: garantir qualidade, identificar defeitos e prevenir problemas na operação.
  • Exercício Prático:
    • Desenvolvimento de um plano de teste simples para uma aplicação de to-do list.

Aula 2 – [SIS]ANO1C3B1S2A2.pdf

  • Diversidade e Tipos de Testes:
    • Diferenciação entre testes funcionais e não funcionais (desempenho, usabilidade, segurança, etc.).
    • Comparação entre testes manuais e automatizados, com exemplos de ferramentas como Selenium, JUnit, JMeter, entre outras.
    • Abordagem dos testes de regressão, que garantem que novas alterações não comprometam funcionalidades já existentes.

Aula 3 – [SIS]ANO1C3B1S2A3.pdf

  • Gerenciamento de Testes:
    • Estratégias para o desenvolvimento de um plano de testes abrangente, alinhando os objetivos de negócio às atividades de teste.
    • Organização e priorização dos casos de teste com base na criticidade das funcionalidades e impacto no negócio.
    • Uso de métricas para rastrear a eficácia dos testes (taxa de cobertura, tempo médio para correção, entre outros).
  • Atividade Prática:
    • Elaboração de fluxogramas e relatórios que demonstram o processo de teste em cenários práticos (exemplo: máquina de cartão de crédito).

III. Modelagem de Dados e Conceitos Fundamentais

(Arquivos: [SIS]ANO1C3B1S3A1.pdf, [SIS]ANO1C3B1S3A2.pdf, [SIS]ANO1C3B1S3A3.pdf)

  • Conceito e Importância:
    • A modelagem de dados é essencial para estruturar, organizar e armazenar informações de forma eficiente.
    • Facilita a comunicação entre analistas, desenvolvedores e usuários, garantindo integridade e qualidade dos dados.
  • Abordagens e Tipos de Modelos:
    • Modelagem Conceitual: Criação de diagramas (por exemplo, ER) para representar entidades, relacionamentos e regras de negócio sem entrar em detalhes técnicos.
    • Modelagem Lógica: Detalha a estrutura dos dados com definição de tabelas, colunas, tipos de dados e restrições, independente da implementação física.
    • Modelagem Física: Implementa o modelo lógico em um sistema de banco de dados, otimizando o desempenho com técnicas como particionamento e índices.
    • Normalização: Processo de organizar dados para reduzir redundâncias e melhorar a integridade.
  • Arquitetura de Dados e Tendências:
    • Discussão sobre diferentes abordagens de arquitetura, como data warehouses, data lakes e arquiteturas orientadas a serviços.
    • Consideração sobre tendências futuras, como o uso de Big Data, IoT, blockchain e a importância da segurança e conformidade (LGPD).
  • Atividade Prática:
    • Exercício de criação de um esquema de banco de dados para uma livraria on-line, envolvendo identificação de entidades (livro, autor, pedido, cliente), definição de atributos e relacionamento entre elas.

IV. UML – Introdução e Visão Geral dos Diagramas

(Arquivos: [SIS]ANO1C3B1S4A1.pdf, [SIS]ANO1C3B1S4A2.pdf, [SIS]ANO1C3B1S4A3.pdf)

  • Conceito e Origem:
    • A UML (Unified Modeling Language) é uma linguagem padrão para visualização, especificação, construção e documentação de sistemas de software.
    • Surgiu a partir da unificação de métodos de modelagem orientada a objetos (Booch, OMT, OOSE) nos anos 1990.
  • Componentes e Elementos Básicos:
    • Classes, Objetos e Relacionamentos: Base para a modelagem de sistemas, permitindo representar entidades e suas interações.
    • Diagramas:
      • Casos de Uso: Representam as funcionalidades do sistema a partir da perspectiva dos usuários.
      • Diagramas de Classe: Mostram a estrutura estática do sistema, com atributos e métodos.
      • Diagramas de Sequência e Colaboração: Detalham a interação entre objetos ao longo do tempo.
      • Diagramas de Atividade e de Estado: Representam fluxos de trabalho, processos e os diferentes estados de um objeto durante seu ciclo de vida.
  • Aplicação Prática:
    • Uso de UML para documentar e comunicar requisitos de software de forma rápida, inclusive em ambientes ágeis.
    • Atividades práticas incluíram a elaboração de diagramas para processos como “resgate de senha” e a criação de apresentações para explicar a UML a colegas.

V. Programação Orientada a Objetos (POO) e Seus Pilares

(Arquivos: [SIS]ANO1C3B1S5A1.pdf, [SIS]ANO1C3B1S5A2.pdf, [SIS]ANO1C3B1S5A3.pdf)

  • Fundamentos da POO:
    • Paradigma que utiliza “objetos” – entidades que combinam dados (atributos) e comportamentos (métodos) – para modelar problemas do mundo real.
    • Permite a criação de sistemas modulares, reutilizáveis e de fácil manutenção.
  • Quatro Pilares da POO:
    • Encapsulamento: Protege os dados internos dos objetos, permitindo acesso somente por meio de métodos definidos.
    • Abstração: Simplifica a complexidade, focando nos aspectos essenciais e ignorando detalhes irrelevantes.
    • Herança: Permite que classes derivadas herdem atributos e comportamentos de classes base, promovendo a reutilização de código.
    • Polimorfismo: Habilidade de diferentes classes responderem de maneira própria a métodos com a mesma assinatura, facilitando o tratamento uniforme de objetos.
  • Conceitos Complementares:
    • Classes e Objetos: As classes servem como moldes (receitas) para a criação de objetos concretos.
    • Métodos: Funções internas às classes que definem o comportamento dos objetos.
    • Padrões de Projeto e Princípios SOLID: Orientam o design de software para garantir sistemas flexíveis e manuteníveis, exemplificados por padrões criacionais, estruturais e comportamentais.
  • Atividades Práticas:
    • Exercícios de definição e criação de classes com atributos e métodos (exemplo: classe “Cachorro” e objeto “Bidu”).
    • Divisão de um contexto (como um sistema de gerenciamento de pedidos) em classes, estabelecendo relacionamentos e métodos apropriados, com elaboração de resposta em formato de e-mail.

VI. Técnicas de Elicitação de Requisitos

(Base: [SIS]ANO1C3B1S6A1.pdf ​, [SIS]ANO1C3B1S6A2.pdf ​, [SIS]ANO1C3B1S6A3.pdf ​)

  • Aula 1 – Fundamentos da Elicitação:
    • Definição e importância da elicitação de requisitos para o sucesso dos projetos.
    • Diferença entre requisitos de usuário, sistema e funcionais.
    • Técnicas básicas como entrevistas, questionários, workshops e observação para coletar informações.
    • Enfoque na validação e negociação dos requisitos para assegurar que reflitam as reais necessidades dos stakeholders.
  • Aula 2 – Estratégias Avançadas:
    • Uso de modelagem e prototipagem para visualizar e testar funcionalidades antes da implementação.
    • Análise de stakeholders para identificar e envolver todas as partes impactadas.
    • Aplicação de técnicas de elicitação em metodologias ágeis, com ciclos iterativos, uso de User Stories, backlog grooming e feedback contínuo.
    • Atividade prática: criação de um questionário, diagrama de fluxo e esboço de agenda para um evento, consolidando as informações necessárias.
  • Aula 3 – Comunicação, Colaboração e Gestão de Conflitos:
    • Importância das habilidades de comunicação (escuta ativa, feedback construtivo, clareza e uso de ferramentas visuais) durante a elicitação.
    • Condução de workshops para reunir stakeholders e definir requisitos de forma colaborativa.
    • Técnicas para identificar e resolver conflitos que podem surgir durante a coleta dos requisitos.
    • Atividade prática: simulação de resposta a um e-mail de conflito, propondo um plano de ação para alinhar as expectativas da equipe.

VII. Modelagem de Dados Relacional

(Base: [SIS]ANO1C3B1S8A1.pdf ​, [SIS]ANO1C3B1S8A2.pdf ​, [SIS]ANO1C3B1S8A3.pdf ​)

  • Aula 1 – Fundamentos da Modelagem Relacional:
    • Introdução à modelagem relacional, definindo conceitos básicos como entidades, atributos, chaves primárias e estrangeiras.
    • Explicação do processo de normalização, visando minimizar a redundância e garantir a integridade dos dados.
    • Exemplos práticos (como a modelagem de um banco de dados escolar com entidades “Estudante” e “Curso”).
  • Aula 2 – Técnicas de Relacionamento e Integridade:
    • Detalhamento dos tipos de relacionamentos: um-para-um, um-para-muitos e muitos-para-muitos.
    • Abordagem sobre como modelar associações e a importância da integridade referencial, garantindo que as chaves estrangeiras referenciem registros válidos.
    • Atividade prática: elaboração de um modelo para um novo recurso (exemplo: integração de “Evento de Curso” com a entidade “Alunos”) com a definição dos relacionamentos e, quando necessário, a criação de tabelas de associação.
  • Aula 3 – Técnicas Avançadas e Tendências:
    • Discussão sobre estratégias avançadas, como a desnormalização, quando e como aplicá-la para melhorar o desempenho das consultas.
    • Utilização de índices para otimizar a performance e considerações para adaptação da modelagem relacional em contextos de Big Data.
    • Atividade prática: planejamento de uma estratégia de desnormalização para um cenário onde o desempenho das consultas está comprometido, com discussão dos impactos e vantagens da técnica.

Esses novos tópicos ampliam os conhecimentos anteriores, reforçando tanto a importância de técnicas eficazes para a coleta de requisitos (desde os fundamentos até estratégias avançadas e resolução de conflitos) quanto os princípios e técnicas avançadas para modelar dados de forma relacional, garantindo a integridade e o desempenho dos bancos de dados. Conforme forem enviados novos materiais, podemos continuar atualizando e complementando este resumão.