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.