Please enable JavaScript.
Coggle requires JavaScript to display documents.
Metodologias de Desenvolvimento de Software, EQUIPE 3: AMIR BRITO, MATHEUS…
Metodologias de Desenvolvimento de Software
Metodologias Tradicionais
Cascata
Características
Metodologia de desenvolvimento em que cada etapa leva a outra, como a queda de uma cachoeira.
Metodologia de estática fluida, pois não há alterações em seus processos.
Suas etapas devem ser realizadas em parceria com o cliente, pois será ele quem vai indicar as necessidades e prioridades do software.
Video :arrow_forward:
Desvantagens
Fases
Só funcionam após a finalização da etapa anterior, algo que torna esse processo de desenvolvimento mais demorado.
Falhas
Erros, são inadmissíveis. Caso ocorram, é necessário voltar para o ponto de partida do projeto.
Vantagens
Tempo.
Apresentava vantagens em relação ao tempo anterior às metodologias, posteriormente, todas as metodologias são iguais ou melhores para se trabalhar.
Minimiza o tempo de planejamento.
Iterativo e Incremental
Características
Atividades são intercaladas
Geração de versões intermediárias do sistema até a versão final
Tem como objetivo dar feedback rápido ao cliente
Video :arrow_forward:
Desvantagens
Gestão
A gerência do software é complicada
Desorganização
O processo pode ficar confuso
Estrutura
A estrutura do produto tende a se corromper com adição de incrementos
Especificação
O sistema não é completamente especficado a priori
Vantagens
Flexibilidade
Pode-se começar o sistema pelas partes melhor entendidas
Custo
Custo reduzido de mudanças de requisitos
Participativo
Permite trabalhar com o cliente o entendimento dos requisitos
Feedback
Simplicidade ao obter feedback do cliente
Em V
Características
Pode ser considerado uma extensão do modelo cascata com algumas melhorias em relação ao processo que não é sequencial
A porção esquerda do modelo em V representa a fase de definição de projetos
Tipos de Teste
Integração
Unitários
Sistema
Aceitação do usuário
A parte horizontal inferior representa a construção do produto
Desvantagens
Segurança
A simplicidade do modelo pode dar falsa sensação de segurança
Prazos de Entrega
O fato de testes serem realizados no final pode levar a prazos espremidos
Incapaz de responder a mudanças
Incentiva uma visão rígida e linear do desenvolvimento de software
Vantagens
Promove
Desenvolvimento
Design
Documentação
Construir produtos de software estáveis
Suporta
Agilidade
Em todo processo de desenvolvimento de software
Flexibilidade
Possui a fase de testes e integração já incorporada ao processo de desenvolvimento
Integração
Incorporadas ao processo de desenvolvimento
Testes
Ultimamente está sendo utilizado pela indústria de dispositivos médicos
Abordagem altamente disciplinada
Espiral
Características
Criado por Barry Boehm em 1988
Melhoria do Modelo Incremental e possui nome por conta da sua representação
Subdivida em fases
2 - Avaliação e Redução de Riscos
3 - Planejamento e Especificação
1 - Definição dos objetivos
4 - Implementação e Validação
Cada volta do espiral percorre todas as fases do processo de software
As voltas devem ser repetidas quantas vezes forem necessárias até a finalização do software
Video :arrow_forward:
Desvantagens
Custo
Inadequado para pequenos projetos devido ao alto custo
Complexidade
Maior complexidade em relação a outros modelos
A espiral pode continuar indefinidamente
Gestão de Tempo
Número de fases desconhecido e isso gera dificuldade na gestão de tempo
Vantagens
Versátil para lidar com mudanças
Reflete as práticas de engenharia de software atual
Suporta mecanismos de redução de riscos
Baseada em Componentes
Características
Decomposição de sistemas em componentes
Componentes Funcionais
Componentes Lógicos
Interfaces dos componentes bem definidas
Similar a engenharia de software orientada a objetos
Comunicação forte entre os próprios componentes
Video :arrow_forward:
Desvantagens
Custo
Manutenção: uma vez que a equipe não terá acesso ao código-fonte, os elementos utilizados no sistema podem sofrer alterações de terceiros e não ser compatível com o restante da aplicação
Criação, manutenção e uso de uma biblioteca de componentes podem ter alto custo
Integração
Pode ser complexo a integração de novos componentes ao sistema de biblioteca de componentes
Vantagens
Produtividade
Existência de componentes já prontos
Qualidade
Maior qualidade no produto final que utiliza componentes
Equipe
Equipe orientada a desenvolvimento nos moldes da componetização
Prototipagem
Características
Pode ser considerado um ciclo de vida ou pode ser usado em outros.
É a construção de um exemplar do que foi entendido dos requisitos capturados do cliente.
Pode ser um desenho de uma tela ou um software contendo algumas funcionalidades do sistema.
Operação
Operacionais: Quando já podem ser utilizados pelo cliente no ambiente real.
Não-Operacionais: Não estão aptos a serem utilizados pelo cliente.
Video :arrow_forward:
Desvantagens
Simplicidade
Pode passar a impressão errada para o cliente, de que é excessivamente simples o trabalho que está no protótipo, fazendo com que o prazo dado por ele seja extremamente curto.
Vantagens
Facilidade em Gerar
Relatórios
Geradoras de Telas
Poupa esforço de programação e diminui o tempo de entrega
Visualização
Facilita a visualização do cliente para o que será implementado.
Modelo Evolutivo
Características
Descreve um processo na qual o software deve ser desenvolvido de forma a evoluir a partir de protótipos iniciais.
É necessário compreender prototipação para um melhor entendimento.
Desvantagens
Mudanças e Problemas.
Ônus de tempo.
Ônus financeiro
O cliente pode mudar ou exigir uma mudança que vai impactar grandemente uma versão anterior.
O sistema pode nunca ficar pronto, pois sempre há um pedido do cliente.
Vantagens
Cliente Participativo
A participação constante do cliente
Baixo Risco
Redução do risco por má interpretação
Entregas
Entregas funcionais mais cedo no processo, pois com a ajuda do cliente já é possível fazer entregas atendendo algumas necessidades.
Modelo RUP
Características
Uso de iterações para evitar o impacto de mudanças no projeto
Subdividido em Fases
Transition - ajustes, implantação e transferência de propriedade do sistema
Construction - desenvolvimento principal do sistema
Inception - entendimento da necessidade e visão do projeto
Elaboration - especificação e abordagem dos pontos de maior risco
Iterações geralmente curtas (1 a 2 semanas)
Visualização dos pontos de maior risco o mais cedo possível
Desvantagens
Custo
Muito caro para projetos de pequeno porte
Complexidade
Pode gerar problemas por ser complexo e trabalhoso.
Equipe capacitada
Exige experiência e especialização de equipes.
Vantagens
Garante a qualidade do software
Produtividade no desenvolvimento
Gestão
Prazos
Permite ao profissional o controle do desenvolvimento
Níveis de qualidade esperados
Controle de custos
Modelo RAD
Características
Sua alta velocidade é conseguida através de uma abordagem de desenvolvimento baseada em componentes
Modelagem do negócio
Modelagem do processo
Modelagem dos dados
Geração da aplicação
Teste e modificação
Enfatiza um ciclo de desenvolvimento curto, com o intuito de ter um desenvolvimento melhor e mais rápido
Usado quando os requisitos são bem definidos e o escopo do sistema é restrito
Desvantagens
Equipe
Necessita de profissionais experientes
Necessita de equipes com colaboração muito boa
Necessita de uma quantidade maior de pessoas para suprir a demanda de agilidade.
Vantagens
Feedback ao cliente
Garante feedback rápido e constante
Flexibilidade
Mais flexível em relação a mudanças
Reaproveitamento de módulos.
Metodologias Ágeis
SCRUM
Características
Desenvolvido por Jeff Sutherland, é uma ferramenta de gestão e desenvolvimento de software.
Agentes do Scrum
Product Owner (Responsável por definir o que seja feito e em qual ordem de prioridade)
Scrum Master (Responsável por ajudar a todos da equipe a entender e abraçar os valores, princípios e práticas do Scrum)
Team Scrum (Responsáveis pela concepção, construção e testes do produto final).
Termos técnicos do Scrum
Product Backlog (Objetivos do Projeto)
Sprints (Ciclos de cada projeto para realização das tarefas)
Daily (Reunião que acontece diariamente para discutir atividades desenvolvidas)
Video :arrow_forward:
Desvantagens
Tempo
Pode levar ao aumento de escopo devido a falta de uma data definida.
Equipe
As reuniões diárias podem frustrar os membros da equipe pela questão da constância e repetitividade.
Caso a equipe não esteja comprometida com o projeto e/ou com as práticas do Scrum, as chances de fracasso são altas.
Grande impacto ao perder algum membro da equipe durante o projeto.
Vantagens
Flexibilidade
Pode ser usado em outros setores e áreas, não exclusivamente no desenvolvimento de software.
Priorização das tarefas mais importantes e urgentes.
Equipes
Equipes com poucas pessoas.
Alinhamento dos principais pontos diariamente de forma rápida.
Visualização de cada tarefa a ser realizada dentro do projeto.
XP
Características
Metodologia de desenvolvimento de software que pode ser adotada por diferentes níveis de desenvolvedores.
Pode ser utilizado de forma complementar ao Scrum.
Criado na década de 90 por Kent Beck, Ward Cunningham e Ron Jeffries.
Excelente para mudanças rápidas de requisitos.
Pontos do XP
Cliente Presente
Testes Constantes
Planejamento
Padronização do código
40h por semana no máximo
Refatoração
Design simples
Programação em par
Stand Up Meeting: Reuniões curtas para alinhar a equipe
CI/CD
Código coletivo
Releases Curtos
Metáforas para expor ideias ao cliente
Valores do XP
Simplicidade
Respeito
Feedback
Comunicação
Coragem
Video :arrow_forward:
Desvantagens
Documentação
Apesar da grande aceitabilidade de mudanças (basicamente em qualquer estágio do desenvolvimento), essas mudanças não são documentadas adequadamente.
Design
Por focar muito no código, o design pode deixar a desejar, podendo deixar o cliente insatisfeito
Vantagens
Dinâmico
Flexibilidade
Pode ser utilizado em conjunto com outras metodologias.
Simplicidade
Kanban
Características
É uma estratégia altamente adaptável à realidade de diferentes organizações.
Tipos de Kanban
Produção é o mais utilizado em empresas de desenvolvimento de software.
Movimentação é o kanban clássico, voltado para indústria e usado para controle de estoque.
É um sistema de organização e administração de projetos que visa controlar fluxos de maneira eficiente.
Kanban tem origem japonesa junto com o Toyotismo na década de 60 e significa “cartões”.
Video :arrow_forward:
Desvantagens
Equipe
Necessária disciplina dos membros da equipe no preenchimento do quadro.
Falhas
Instável em situações de imprevisto, pois fica difícil ajustar as demandas em situações emergenciais.
Vantagens
Equipe
Aumenta o foco da equipe.
É um método cooperativo, que é muito benéfico para o entrosamento da equipe.
Melhora o fluxo de trabalho da equipe.
Simplicidade
Fácil acesso de novos colaboradores ao backlog de tarefas.
É um método organizacional extremamente simples.
Custo
Reduz custos por utilizar ferramentas gratuitas.
Lean
Características
É o produzir sem desperdícios que surgiu no Toyotismo e tem como objetivo otimizar os processos na criação, no lançamento e no desenvolvimento de uma empresa.
Refere-se a algo reduzido, evitar desperdícios.
Video :arrow_forward:
Desvantagens
Ausência de metas de curto, médio e longo prazo.
Equipe
Ausência de líderes formados para essa metodologia.
Baixo engajamento das equipes nas atividades relacionadas ao Lean.
Pouco engajamento em relação aos níveis da empresa.
Ausência de renovação e treinamento da equipe.
Vantagens
Amplifica o aprendizado
Entregar o mais rápido possível
Empodera o time
Constroi qualidade
Eliminar o desperdício
Decidir o mais tarde possível
Otimizar os processos.
TDD
Características
Desenvolvimento orientado a testes.
É uma prática que permite pensar nos testes que devem ser feitos antes mesmo da implementação do código.
Testes devem seguir o modelo F.I.R.S.T.: Fast, Isolated, Repeatable, Self-Verifying, Timely.
Isolated
Repeatable
Fast
Self-Verifying
Timely
Ciclo do TDD
Criação do Teste
Implementação da Funcionalidade que passe no teste criado
Refatoração.
Faz parte do Manifesto Ágil desenvolvido por diversos Engenheiros de Software renomados, entre eles, Kent Beck.
Desvantagens
Tempo
O projeto levará mais tempo para ser lançado.
É necessária uma grande mudança na cultura de desenvolvimento do time, sendo assim, requer um tempo maior no início da adoção para correta adaptação.
Vantagens
Qualidade
O teste é desenvolvido antes para que reduza o leque de falhas do sistema.
Gera um código limpo e bem escrito, resultado da simplicidade no momento da criação e o tempo para refatorar.
Segurança
É seguro, pois cada passo tomado estará devidamente testado.
Rapidez
Em caso de bugs, bastam poucos minutos para se descobrir onde foram essas falhas.
Crystal
Características
Altamente adaptável, se ajustando conforme os requisitos
Possui diferentes técnicas para diferentes tamanhos de projeto, se adequando a necessidade do mesmo
Tamanho de equipe
Criticidade do projeto
Prioridade do Projeto
Princípio ultraleve, ou seja, sem documentação extensa, sem regras ou gerenciamentos rígidos e sem relatórios específicos.
Desenvolvida por Alistair Cockburn em 1991 a pedido da IBM
Uma das abordagens mais leves e flexíveis para desenvolvimento
Desvantagens
Por possuir diversas técnicas, os princípios a serem seguidos podem variar de acordo com o tamanho da equipe e do projeto, dificultando a compreensão
Necessita de comunicação constante, podendo não funcionar em projetos que possuem muitas áreas de trabalho.
Vantagens
Equipe
Promove a comunicação eficaz da equipe, ajudando os membros a aprenderem uns com os outros.
Prioriza os componentes críticos e altamente essenciais do projeto
Flexibilidade
Pode se ajustar ao tipo de projeto, tamanho da equipe e requisitos do projeto
OpenUP
Características
OpenUP é um subset do RUP que possui fases
Concepção
Elaboração
Construção
Transcrição
Processo para o desenvolvimento de produtos de software que agrega muitos conceitos do RUP e adiciona valor e práticas ágeis principalmente de metodologias como o XP e o Scrum.
Processo dirigido a riscos, considera-se bom ter no máximo 20 riscos na lista, pois apenas riscos de alto grau devem ser levados em consideração.
Baseado em 4 princípios básicos
Focar na articulação da arquitetura
Colaborar para alinhar interesses e compartilhar conhecimento
Balancear prioridades concorrentes com o retorno de valor para o Stakeholder
Envolvimento contínuo para obtenção de feedback e melhorias.
Desvantagens
Dependendo do projeto será necessário adicionar mais atividades e artefatos pois é bem enxuto.
Vantagens
Integra o planejamento e controle do RUP com o gerenciamento de iteração e microambiente do Scrum.
Foco em projetos com equipes pequenas.
Entrega software com o mínimo de formalismo e artefatos gerados.
FDD
Características
Por se tratar de uma ferramenta com foco no desenvolvimento pode ser perfeitamente integrado ao Scrum.
A programação por FDD começa com a visão global do negócio, já que esse método considera a soma de tudo mais importante de cada uma das partes separadamente. Então, passa-se para o detalhamento do produto, com a subdivisão por áreas a serem modeladas, culminando na descrição de cada funcionalidade
A sua premissa básica tem o foco em funcionalidades, o que permite à equipe do projeto fazer um planejamento incremental, isto é, por fases.
Criado em Cingapura, entre 1997 e 1999, o FDD é um método ágil que reúne as melhores práticas de outros métodos, como o Coad.
Video :arrow_forward:
Desvantagens
Não é ideal para projetos de pequeno porte.
Equipe
Grande dependência de uma pessoa (programador chefe), aumentando as chances de erros humanos.
Design e Iterações.
O design desse método acontece de forma que as iterações não sejam bem definidas pelo processo, são específicas do projeto e atendem aos requisitos do projeto. Portanto, nenhum procedimento padrão para iteração existe.
Vantagens
Gestão
Planejamento incremental
Gerenciamento de configurações
Controle de qualidade em todas as fases do projeto
Um único programador é responsável pela funcionalidade desenvolvida
Desenvolvimento
Integração contínua das funcionalidades
Desenvolvimento por funcionalidades
Teste de software.
Entrega Contínua
Características
É a prática de entregar cada trecho do software de maneira rápida
Foca nas entregas pequenas e rápidas, reduzindo as chances de erro e tendo maior controle de qualidade;
Faz uso de automação em várias partes do projeto para viabilizar os versionamentos mais velozes.
Video :arrow_forward:
Desvantagens
Necessita maturidade da equipe para lidar com o acúmulo de responsabilidades
Necessita da participação constante dos responsáveis pelo projeto no processo de validação para não haver travamento no desenvolvimento.
Vantagens
Otimização do trabalho dos desenvolvedores
Maior agilidade no lançamento de produtos
Redução de custos
Redução de erros
Link -> Documento Referência
EQUIPE 3: AMIR BRITO, MATHEUS ALVES, VAGNER DA SILVA DE JESUS.