Prévia do material em texto
28/04/2025 1 Unidade 2 PROCESSOS DE SOFTWARE 28/04/2025 2 PROCESSO DE SOFTWARE Processo de Software • Conjunto de passos envolvendo atividades e recursos que produz um resultado1 • Seqüência de passos previsíveis que ajuda a criar a tempo um sistema de alta qualidade2 • Envolve um conjunto de técnicas e ferramentas da engenharia de software • Importante para: • Garantir a qualidade do software • Aumentar a produtividade da equipe • Manter prazos e orçamentos estimados • Melhorar o controle e evolução contínua do sistema 28/04/2025 3 PROCESSO DE SOFTWARE • O desenvolvimento de software não consiste apenas em escrever código. Ele passa por várias fases, que formam o ciclo de vida do software • Ciclo de Vida do Software representa todas as fases pelas quais um software passa, desde a concepção até sua aposentadoria (descontinuação)desde a concepção até sua aposentadoria (descontinuação) • Por que é importante entender o ciclo de vida do software? • Ajuda a planejar melhor o projeto • Permite a gerência de riscos • Facilita a comunicação entre equipe e cliente • Ajuda a escolher o modelo de desenvolvimento mais adequado 28/04/2025 4 CICLO DE VIDA DE SOFTWARE Etapas básicas do Ciclo de Vida de Software • Análise (requisitos) • Projeto (Design) • Codificação (Implementação) Análise Projeto• Codificação (Implementação) • Testes (Validação) • Implantação 28/04/2025 5 Projeto Codificação Testes Implantação CICLO DE VIDA DE SOFTWARE Análise de Requisitos (levantamento e especificação) • O que o software deve fazer • Levantamento com o cliente • Análise de necessidades • Definição de funcionalidades • Ex: “O sistema deve permitir o cadastro de novos usuários com CPF e email únicos”• Ex: “O sistema deve permitir o cadastro de novos usuários com CPF e email únicos” Projeto (Design) • Como o software será construído • Arquitetura do sistema • Interface com o usuário • Estrutura dos dados • Ex: Diagramas UML, wireframes da interface 28/04/2025 6 CICLO DE VIDA DE SOFTWARE Codificação (Implementação) • Desenvolvimento real do sistema • Programação dos módulos • Integração das partes • Uso de boas práticas (clean code, versionamento) Testes e Validação • Verifica se o sistema está fazendo o que deveria fazer • Testes unitários, de integração, de sistema e de aceitação • Correção de falhas 28/04/2025 7 CICLO DE VIDA DE SOFTWARE Implantação • O sistema é colocado em produção • Treinamento dos usuários • Suporte inicial • Publicação no ambiente real *Manutenção • A vida após a entrega • Correção de bugs • Adição de novas funcionalidades • Adaptação a mudanças 28/04/2025 8 MODELOS DE PROCESSO • Modelos de Processo são formas alternativas de organizar o desenvolvimento, mais adaptáveis a contextos diferentes • Existem diferentes tipos de modelos de processo, cada um apropriado para um determinado contexto • Prazo• Prazo • Qualidade • Gerenciamento • Evolução do software • Ajuda a equipe: • Planejar, gerenciar e controlar o desenvolvimento • Atender os requisitos • Cumprir prazos e orçamento 28/04/2025 9 MODELOS DE PROCESSO As atividades fundamentais dos processos (maioria dos modelos) Atividade Função principal Comunicação Levantamento e negociação dos requisitos com stakeholders 28/04/2025 10 Planejamento Estimativa de esforço, cronograma, recursos Modelagem Representação do software (requisitos, arquitetura, design) Construção Codificação + Testes Entrega Deploy do sistema para o cliente Gerência de mudanças Controle de versões, correção de erros, melhorias MODELOS DE PROCESSO Tipos de Processos • Cascata (Modelo Clássico) • Prototipação • Incremental• Incremental • Espiral • Desenvolvimento Ágil • XP (eXtreme Programming) • Scrum 28/04/2025 11 MODELO CASCATA Modelo Cascata (Clássico) • Modelo tradicional de processo de software • Desenvolvimento linear e sequencial • Cada fase deve ser concluída para iniciar a próxima • Resultado de uma fase Entrada da fase seguinte• Resultado de uma fase Entrada da fase seguinte 28/04/2025 12 MODELO CASCATA Levantamento com o cliente Análise de necessidades Definição de funcionalidades 28/04/2025 13 MODELO CASCATA Design/projeto 28/04/2025 14 Design/projeto Interface com o usuário Modelagem do software Representações gráficas dos requisitos Arquitetura do sistema MODELO CASCATA 28/04/2025 15 Desenvolvimento do código-fonte Implementação do Banco de Dados Construção das Interfaces MODELO CASCATA 28/04/2025 16 Testar o comportamento do software Testar as funcionalidades Identificar erros e inconsistências Verificar os resultados das diferentes entradas MODELO CASCATA 28/04/2025 17 Começa após a entrega para o cliente Adaptação ao ambiente de trabalho Alterações, mudanças e correção de erros Novas funcionalidades/serviços (Evolução do software) MODELO CASCATA • Vantagens: • Clareza nas etapas • Fácil gerenciamento • Desvantagens: • Projetos reais raramente seguem o fluxo seqüencial• Projetos reais raramente seguem o fluxo seqüencial • Dificuldade de adaptação a mudanças • Difícil estabelecer todos os requisitos corretamente no começo do projeto • Feedback tardio do cliente • A versão executável só fica disponível no fim do processo 28/04/2025 18 MODELO DE PROTOTIPAÇÃO • Focado na construção rápida da versão inicial (protótipo) • Busca entender os requisitos do usuário para obter a melhor definição dos requisitos do sistema • Apropriado quando o cliente ainda não definiu detalhadamente os requisitos • Fases: 1. Levantamento inicial de requisitos. 2. Construção do protótipo. 3. Avaliação pelo cliente. 4. Refinamento do protótipo até chegar ao sistema final. 28/04/2025 19 Modelo de PrototipaçãoObter Requisitos Elaborar Projeto Rápido MODELO DE PROTOTIPAÇÃO 20 Elaborar Projeto Rápido Construir Protótipo Avaliar Protótipo Refinamento do Protótipo Modelo de PrototipaçãoObter Requisitos Elaborar Projeto Rápido 11-- OBTENÇÃO DOS REQUISITOSOBTENÇÃO DOS REQUISITOS:: desenvolvedor e cliente definem os objetivos gerais do software, MODELO DE PROTOTIPAÇÃO 21 Elaborar Projeto Rápido Construir Protótipo Avaliar Protótipo Refinamento do Protótipo cliente definem os objetivos gerais do software, identificam quais requisitos são conhecidos e as áreas que necessitam de definições adicionais. Modelo de PrototipaçãoObter Requisitos Elaborar Projeto Rápido MODELO DE PROTOTIPAÇÃO 22 Elaborar Projeto Rápido Construir Protótipo Avaliar Protótipo Refinamento do Protótipo 22-- PROJETO RÁPIDO:PROJETO RÁPIDO: representação dos aspectos do software que são visíveis ao usuário (abordagens de entrada e formatos de saída) Modelo de PrototipaçãoObter Requisitos Elaborar Projeto Rápido MODELO DE PROTOTIPAÇÃO 23 Elaborar Projeto Rápido Construir Protótipo Avaliar Protótipo Refinamento do Protótipo 33-- CONSTRUÇÃO PROTÓTIPO:CONSTRUÇÃO PROTÓTIPO: implementação rápida do projeto Modelo de PrototipaçãoObter Requisitos Elaborar Projeto Rápido MODELO DE PROTOTIPAÇÃO 24 Elaborar Projeto Rápido Construir Protótipo Avaliar Protótipo Refinamento do Protótipo44-- AVALIAÇÃO DO PROTÓTIPOAVALIAÇÃO DO PROTÓTIPO:: cliente e desenvolvedor avaliam o protótipo Modelo de PrototipaçãoObter Requisitos Elaborar Projeto Rápido 55-- REFINAMENTO DO PROTÓTIPO:REFINAMENTO DO PROTÓTIPO: cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido. MODELO DE PROTOTIPAÇÃO 25 Elaborar Projeto Rápido Construir Protótipo Avaliar Protótipo Refinamento do Protótipo Modelo de PrototipaçãoObter Requisitos Elaborar Projeto Rápido MODELO DE PROTOTIPAÇÃO 66-- CONSTRUÇÃO PRODUTO:CONSTRUÇÃO PRODUTO: identificados os requisitos, o protótipo deve ser descartado e a versão de produção deve ser construída 26 Elaborar Projeto Rápido Construir Protótipo Avaliar Protótipo Refinamento do Protótipo versão de produção deve ser construída considerando os critérios de qualidade. MODELO DE PROTOTIPAÇÃO Vantagens: •Facilita a compreensão dos requisitos. • Reduz o risco da má comunicação entre desenvolvedores e clientes. Desvantagens:Desvantagens: • Protótipos podem ser confundidos com o sistema final. • Se não gerenciado corretamente, pode resultar em um processo mais demorado. 28/04/2025 27 MODELO INCREMENTAL • Combina elementos do modelo Cascata com prototipação • O desenvolvimento é dividido em pequenas partes (Incrementos) • Cada parte é projetada, desenvolvida e testada de maneira independente • Objetivo: • Entregar o sistema em partes, onde cada parte agrega valor ao sistema final. • Fases: • Análise/Requisitos • Projeto/Design • Codificação • Teste 28/04/2025 28 MODELO INCREMENTAL 28/04/2025 29 MODELO INCREMENTAL • O primeiro incremento entregue é o produto principal (requisitos básicos) • Após validação (cliente), novos incrementos vão sendo integrados no produto principal • O processo se repete até a conclusão do software Vantagens: • Entregas parciais permitem testes e validações contínuas. • Requisitos podem ser ajustados entre incrementos. Desvantagens: • Integração contínua pode ser complexa. • Demora para o cliente receber o software completo • Requisitos não tão bem definidos inicialmente podem causar atrasos. 28/04/2025 30 MODELO ESPIRAL • Incorpora características dos modelos incremental, cascata e prototipação • Incluindo uma nova abordagem: Análise de riscos • O desenvolvimento ocorre em vários ciclos • Cada ciclo representa uma etapa de desenvolvimento• Cada ciclo representa uma etapa de desenvolvimento • Os riscos vão sendo minimizados a cada nova iteração • Usa a Prototipação em qualquer etapa da evolução do produto 28/04/2025 31 MODELO ESPIRAL 28/04/2025 32 MANIFESTO ÁGIL • Métodos tradicionais de desenvolvimento de software • Rígidos e burocráticos • Documentação extensa • Planejamento minucioso e detalhado (desde o início do projeto) • Resultava em atrasos e softwares abaixo das expectativas dos clientes • Manifesto Ágil surgiu como alternativa aos métodos tradicionais• Manifesto Ágil surgiu como alternativa aos métodos tradicionais • Documento assinado por um grupo de programadores experientes, em 2001 • Manifesto contra os modelos de processo tradicionais • Conjunto de valores e princípios para o processo de desenvolvimento de software Valores • Indivíduos e interações mais que processos e ferramentas • Software em funcionamento mais que documentação abrangente • Colaboração com o cliente mais que negociação de contratos • Responder a mudanças mais que seguir um plano 28/04/2025 33 MANIFESTO ÁGIL Princípios do Manifesto Ágil • Entregar software funcional com frequência, priorizando ciclos curtos • Adaptar-se a mudanças para garantir vantagem competitiva • Manter a colaboração constante entre desenvolvedores e clientes • Construir projetos em torno de indivíduos motivados, oferecendo autonomia• Construir projetos em torno de indivíduos motivados, oferecendo autonomia • Preferir comunicação face a face para maior eficiência • Medir o progresso pelo funcionamento do software • Manter um ritmo sustentável de desenvolvimento • Buscar excelência técnica e design simples • Incentivar equipes autogerenciáveis • Refletir continuamente para melhorar processos. 28/04/2025 34 MÉTODOS ÁGEIS • O manifesto deu origem a vários métodos Ágeis • Kanban • FDD (Feature Driven Development) • Scrum • XP (eXtreme Programming) Métodos Ágeis • Foco na entrega rápida e incremental de um produto funcional • Incorpora características dos modelos iterativo e incremental (prototipação) • Trabalho cooperativo • Interações constantes 28/04/2025 35 MÉTODOS ÁGEIS Características dos Métodos Ágeis • Iterações curtas: Desenvolvimento em ciclos curtos "sprints" (1 a 4 semanas) • Entrega contínua de valor: Entrega de uma versão funcional (fim de cada sprint) • Flexível à mudanças: Facilidade de adaptado às mudanças de requisitos (qualquer fase)• Flexível à mudanças: Facilidade de adaptado às mudanças de requisitos (qualquer fase) • Colaboração com o cliente: Cliente participa de todo o processo de desenvolvimento • Equipes multidisciplinares: Equipes auto-gerenciáveis e multidisciplinares • Feedback contínuo: Reuniões constantes entre os envolvidos (cliente, equipe, stakeholders) 28/04/2025 36 XP (Extreme Programming) Programação XP • Voltada para equipes de até 20 pessoas / 40 horas de trabalho • Adequada para projetos cujo os requisitos são vagos e/ou mudam constantemente • Programação em pares• Programação em pares • Desenvolvimento Dirigido por Testes (TDD) • Envolvimento do cliente durante todo o processo • Uso de Histórias do usuário e Metáforas (em vez de documentação detalhada) • Histórias do usuário: Descrições curtas e simples das funcionalidades que o usuário deseja • Metáfora: Descrição simplificada de como o sistema funciona (comparações com situações familiares) 28/04/2025 37 XP (Extreme Programming) Etapas: • Planejamento • Projeto • Codificação • Teste 28/04/2025 38 Scrum Programação Scrum • Um dos métodos ágeis mais populares • Usada para o gerenciamento de projetos / desenvolvimento de software • Abordagem iterativa e incremental: Sprint curto (1/4 sem.), entrega contínua (Inc./sprint) Papéis • Product Owner (Dono do Produto): Define as funcionalidades/prioriza tarefas (Product Backlog) • Scrum Master: Gerencia todas as etapas garantindo que a equipe siga os princípios ágeis • Time de Desenvolvimento: Equipe multifuncional responsável por entregar incrementos Artefatos Scrum • Product Backlog: Lista priorizada de tudo que é necessário para o produto • Sprint Backlog: Lista de tarefas selecionadas do Product Backlog (executadas no Sprint) • Incremento: Itens do Product Backlog concluídos na Sprint (pronto para uso) Scrum Eventos Scrum • Planejamento da Sprint (Sprint Planning): Reunião de planejamento (início de cada sprint) • Scrum Diário (Daily Scrum): Reunião diária (15 min.) para sincronizar e ajustar as atividades • Revisão da Sprint (Sprint Review): Reunião no final do Sprint (discutir resultados) • Retrospectiva da Sprint (Sprint Retrospective): Reunião para refletir os erros e acertos