·
Análise e Desenvolvimento de Sistemas ·
Qualidade de Software
Send your question to AI and receive an answer instantly
Recommended for you
11
Aula 04 - Principais Conceitos do Processo de Teste de Software
Qualidade de Software
UNOPAR
11
Aula 02 - Modelos de Ciclo de Vida de Software
Qualidade de Software
UNOPAR
4
00 - Apresentação - Qualidade e Testes de Software
Qualidade de Software
UNOPAR
11
Aula 03 - Qualidade de Teste de Software
Qualidade de Software
UNOPAR
2
Aula 01 - o que É Engenharia de Software anexo 1
Qualidade de Software
UNOPAR
11
Aula 05 - Ciclo de Vida do Processo de Testes de Software
Qualidade de Software
UNOPAR
7
Atividade 3 - Qualidade e Teste de Software
Qualidade de Software
FMU
2
Prova Discursiva Legislação e Propriedade Intelectual
Qualidade de Software
UMG
5
Eps_ Alunos10
Qualidade de Software
UMG
8
Avaliação On-line 5 aol 5 - Teste de Software
Qualidade de Software
UMG
Preview text
Qualidade e teste de software\nAula 1: O que é engenharia de software\n\nI Apresentação\nNesta aula, vamos saber o que é o produto software, o processo de desenvolvimento no gerenciamento de projetos com o Manifesto Ágil para Desenvolvimento de Software e os 12 princípios por trás deste manifesto, conceitos de Engenharia de Software e as atividades do processo de desenvolvimento de software.\n\nVamos conhecer também a Declaração de Interdependência no gerenciamento de projetos ágeis e alguns métodos ágeis, como Feature Driven Development - FDD (Desenvolvimento dirigido a funcionalidades), Dynamic Systems Development Method - DSDM (Metodologia de desenvolvimento de sistemas dinâmicos) e Crystal.\n\nI Objetivos\n• Propor melhorias e inovações no plano do projeto de construção e manutenção de software, baseados nas técnicas de qualidade;\n• Identificar a necessidade de gerenciar projetos de software com eficiência;\n• Descobrir a necessidade de rastrear, acompanhar e monitorar projetos de software.\n\nI Contextualização\nO mundo moderno exige cada vez mais tecnologia e novas plataformas de gestão da informação e comunicação.\nO software hoje está voltado não só para a web, mas também para diversos segmentos como indústria, comércio, saúde, segurança e muito mais. Além disso, atua na inteligência artificial, estando presente nos eletrodomésticos como TV, geladeiras, lavadoras, micro-ondas, sistema elétrico residencial e muitos outros. I O que é projeto?\nProjeto é um esforço temporário empreendido para criar um produto, serviço ou resultado exclusivo. Também pode ser descrito como: \"uma original organização de pessoas e recursos para atingir um propósito específico, num período de tempo finito\".\n\nEsmiuçando um pouco essa definição, temos:\n• Original\nCada projeto é diferente de todos os outros.\n• Organização de pessoas e recursos\nUma mistura de talentos e conhecimentos humanos, com recursos técnicos e físicos.\n• Para atingir um propósito específico\nEnfatiza a necessidade de os projetos terem sempre um objetivo tangível e realizável.\n• Num período de tempo finito\nDiferencia um projeto de um processo.\n\nI O que é software? Software é \"uma sequência de instruções a serem executadas, com o objetivo de gerar informações a partir de uma série de dados coletados ou armazenados\". Também podemos definir como sendo \"os programas que comandam o funcionamento de um computador\".\n\nPodemos classificar o software como a parte lógica cuja função é fornecer instruções para o hardware.\n\nI Composição e classificação do software\nComposição do software\nUm software é composto por módulos, instruções, bibliotecas, que gera um programa executável que lhe dados denominados \"entradas\" ou inputs ao final do processo de desenvolvimento, e este, quando executado, recebe algum tipo de \"entrada\" de dados (input), processa as informações e libera uma \"saída\" (output) como resultado desse processamento.\n\nClassificação do software\nPodemos os softwares podem ser classificados em três tipos:\n• Software de Sistema: é o conjunto de informações que gerenciam o hardware, que permitindo a interação entre o usuário e os periféricos do computador.\nExemplos: Windows e Linux.\n• Software de Programação: é o conjunto de ferramentas que permitem ao programador desenvolver sistemas informáticos.\nExemplos: exemplo, C++, C#, VB, ASP, Delphi, GO.\n• Software de Aplicação: são programas de computadores que permitem ao usuário executar uma série de tarefas específicas em diversas áreas de atividade. Exemplos: planilha eletrônica, editores de texto e editores de apresentações (como PowerPoint).\n\nI Manifesto\nDiferentes tipos de projetos necessitam de diferentes métodos de gerenciamento. A abordagem ágil é muito utilizada em projetos orientados a valor. Existem diversos tipos de abordagens ágeis, e estas buscam estar alinhadas com diversos princípios definidos no documento Manifesto for Agile Software Development, criado em fevereiro de 2001 por diversos especialistas em projetos de software.\n\nTipos de programação ágil:\n\nProgramação extrema - XP (eXtreme Programming)\nMuito utilizado para equipes pequenas e médias que desenvolvem softwares com requisitos vagos e em constantes mudanças.\n\nA estratégia adotada é de constante acompanhamento e realização de vários pequenos ajustes durante o desenvolvimento de software. Tem valores fundamentais como: comunicação, simplicidade, feedback, coragem e respeito.\n\nContinue lendo...\n\nMétodo Scrum\nScrum não é um processo prescritivo, ou seja, não descreve o que fazer em cada situação. Ele é usado para trabalhos complexos nos quais é impossível prever tudo o que irá ocorrer.\n\nÉ um processo de desenvolvimento iterativo e incremental (criado em resposta às fraquezas do modelo em cascata) para gerenciamento de projetos e desenvolvimento ágil de software.\n\nContinue lendo...\n\nManifesto para desenvolvimento ágil de software\nEstamos descobrindo maneiras melhores de desenvolver softwares, fazendo-nos nós mesmos e ajudando outros a fazerem o mesmo. Através deste trabalho, passamos a valorizar (valores declarados do Manifesto):\n\n- Indivíduos e interações mais que processos e ferramentas;\n- Software em funcionamento mais que documentação abrangente;\n- Colaboração com o cliente mais que negociação de contratos;\n- Responder a mudanças mais que seguir um plano.\n\nOu seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda. A seguir, vamos verificar cada um desses itens. Indivíduos e interações mais que processos e ferramentas\nObserve que o primeiro valor do manifesto deixa claro uma importante mensagem. Processos e as ferramentas serão necessários no projeto; porém, devemos tentar concentrar a atenção da equipe sobre os indivíduos e interações envolvidos no projeto.\n\nLembre-se que projetos são realizados por pessoas, e não por ferramentas, assim como os problemas são resolvidos por pessoas, e não por processos.\n\nFocando primariamente no desenvolvimento dos indivíduos envolvidos no projeto e enfatizando as interações produtivas e eficientes, melhoramos as chances de sucesso do projeto.\n\nIsso, no entanto, não quer dizer que processos e ferramentas não podem ajudar na conclusão de um projeto com êxito. Processos e ferramentas bem desenhados e adequados são ativos de grande importância.\n\nSão as denominadas ferramentas CASE (Computer-Aided Software Engineering), que correspondem a todas as ferramentas que auxiliam os projetos de software, indo da análise de requisitos, modelagem até a implementação e os testes.\n\nSeu objetivo é auxiliar o desenvolvedor em todo o ciclo de desenvolvimento de software.\n\nSoftware em funcionamento mais que documentação abrangente\nO segundo valor do manifesto destaca a necessidade de entregar o software. Projetos de software são iniciados com o objetivo de criar valor para a empresa por meio de um produto de software de alta qualidade, mas muitas vezes entregar em prazos intermediários (incrementos).\n\nReiterar a documentação é atualizada de forma completa e reflete a realidade do software, porém é essencial documentar ou o que é preciso em um software, sem exagero.\n\nLembre-se sempre que software sem documentação é certamente problemático e dificulta o suporte e a manutenção. Contudo, uma documentação completa sem software não agrega absolutamente nada. Colaboração com o cliente mais que negociação de contratos\nO terceiro valor reforça a necessidade de ser flexível e eficiente, em vez de rígidos e não cooperativos. É semelhante à diferença entre \"estar certo\" e \"fazer a coisa certa\".\n\nPoderíamos construir o produto exatamente como originalmente especificado, mas se o cliente mudar de ideia ou de prioridade, você não concorda que devemos ser flexíveis e trabalhar para a nova meta?\n\nÉ claro que sim. As mudanças às vezes deverão ser refletidas em aditivos contratuais ou ajustes, mas não deve ser um impeditivo para a continuidade do desenvolvimento e entrega do software.\n\nAtualmente existem diversas novas formas de contratos para acolher projetos com características ágeis, como pagamento de preço fixo por interação (ou sprint), pagamento por pontos, histórias ou outras que permitem a flexibilidade necessária para projetos orientados a valor. Feature Driven Development - FDD (Desenvolvimento Dirigido a Funcionalidades)\n\nFoi concebido originalmente por Jeff de Luca. O FDD surgiu em Singapura, entre os anos de 1997 e 1999 com base no método Coad (Criado por Peter Coad - 1980/1990) e nos processos interativos e lean já utilizados por de Luca.\n\nÉ uma abordagem poderosa para o desenvolvimento de produtos. Busca o desenvolvimento por funcionalidade através de um requisito funcional do sistema. Uma equipe de projeto seguindo o método FDD primeiro desenvolveu um modelo global para o produto, construiu uma lista de recursos e planejou o trabalho.\n\nA equipe então se move através da concepção e construção de iterações para desenvolver cada recurso. O FDD busca apresentar resultados frequentes, tangíveis e funcionais.\n\nIMPORTANTE: O FDD pode atuar em conjunto com outras metodologias, principalmente com o Scrum, encaixando-se perfeitamente como metodologia de engenharia ágil de software com projeto ágil.\n\nDesenvolva um modelo global para o produto\nCrie uma lista de funcionalidades\nPlaneje por funcionalidade\nProjete por funcionalidade\nConstrua por funcionalidade\n\nO FDD recomenda uma série de boas práticas oriundas da Engenharia de Software, como:\n\n• Modelagem de domínio do objeto: as equipes de explorar e explicar o domínio (ou ambiente de negócios) do problema a ser resolvido;\n• Desenvolvimento por funcionalidade: esta prática envolve decompor as necessidades em funcionalidades e definir períodos de desenvolvimento de uma ou mais funcionalidades em intervalos de duas semanas ou mais curtos;\n• Propriedade individual (código): as áreas de código devem ter um único proprietário para garantir consistência, desempenho e integridade conceitual. (Nota-se que é bem diferente de ideia de propriedade código coletiva do XP, que visa difundir o conhecimento para outros membros da equipe);\n• Times dinâmicos: devem-se formar pequenas equipes, de forma dinâmica, de acordo com características de cada projeto. Os times ajudam a mitigar o risco associado à propriedade individual;\n• Inspeções: são revisões que ajudam a garantir boa qualidade e design de código;\n• Gerenciamento de configuração: essa prática envolve rotação de código, controle de alterações e gerenciamento do código-fonte;\n• Construções regulares: através de entregas frequentes e constantes, o time incrementa o produto de software com a nova funcionalidade desenvolvida. Esta prática também permite criar facilmente uma versão demo;\n• Visibilidade: controle e acompanhamento do progresso dos resultados, baseados em funcionalidades desenvolvidas.\n\nPara comparação, é importante mostrar o percentual de tempo gasto em cada etapa:\n• Levantamento do domínio da aplicação = 1%; • Projeto = 40%;\n• Inspeção do projeto = 3%;\n• Desenvolvimento = 45%;\n• Inspeção do código = 10%;\n• Integração = 1%;\n\nVocê poderá aprofundar seus conhecimentos sobre o FDD, acessando o website oficial da metodologia, disponível em: //www.featuredrivendevelopment.com/. Acesso em: 16 maio 2019.\n\nDynamic Systems Development Method - DSDM (Metodologia de Desenvolvimento de Sistemas Dinâmicos)\n\nDSDM foi um dos pioneiros dos métodos ágeis. É uma metodologia de desenvolvimento bastante prescritiva, baseada em Rapid Application Development - RAD (Desenvolvimento Rápido de Aplicações), que enfatiza o envolvimento constante do usuário durante todo o projeto.\n\nOferece uma metodologia para construir e manter sistemas que atendem restrições de prazo, através do uso da prototipagem incremental. Cria três ciclos iterativos, abrangendo aspectos de um projeto ágil, analisando sempre a viabilidade e necessidade do negócio para a implementação. Ciclo de vida do DSDM\n\nO ciclo de vida do DSDM é iterativo e incremental. Portanto, a solução não pode ser entregue à empresa de uma só vez, mas de uma série de incrementos que facilitam a solução com cada entrega.\n\nDessa forma, as necessidades de negócios urgentes podem ser priorizadas e abordadas cedo, enquanto características menos importantes são implementadas e entregues mais tarde.\n\nA natureza iterativa permite que os representantes de negócios vejam e se envolvam no trabalho em construção, analisando e ajustando as alterações necessárias durante o desenvolvimento de um incremento do modelo funcional.\n\nO DSDM pode ser utilizado sozinho como metodologia ágil, porém o seu uso com outros métodos e boas práticas de gerenciamento de projetos ou técnicas de desenvolvimento detalhados podem contribuir para a melhora nos processos e resultados.\n\nOs ciclos são:\n1. A iteração de modelos funcionais: neste ciclo, é produzido um conjunto de protótipos incrementais que demonstram a funcionalidade para o cliente;\n2. A iteração do projeto e desenvolvimento: neste ciclo, revisamos os protótipos desenvolvidos durante a iteração de modelos funcionais para assegurar que cada um tenha passado por um processo de engenharia para capacitá-los a oferecer aos usuários finais valor de negócio em termos operacionais;\n3. Implementação: não colocamos a última versão do incremento de software (um produto operacionalizado) no ambiente operacional.\n\nATENÇÃO: Em qualquer dos casos, o trabalho do desenvolvimento do DSDM continua, retornando à atividade de iteração do modelo funcional.\n\nVocê poderá aprofundar seus conhecimentos sobre o DSDM, acessando o site oficial da metodologia, disponível em: //www.dsdm.org/. Acesso em: 16 maio 2019. Crystal\n\nCrystal é uma família de metodologias (Família Crystal de Metodologia) desenvolvidas por Alistair Cockburn, em meados da década de 1990.\n\nEla inclui um grande número de métodos diferentes, que são selecionados de acordo com as características do projeto a ser desenvolvido, destinadas para projetos que vão desde aqueles executados por pequenas equipes de desenvolvimento com baixa criticidade e provê abordagens até com grandes equipes que implementam sistemas de alta criticidade.\n\nCaracterísticas comuns a família Crystal:\n\n• Desenvolvimento incremental com ciclos de no máximo quatro meses;\n• Ênfase maior na comunicação e cooperação das pessoas;\n• Não limitação de quaisquer práticas de desenvolvimento, ferramentas ou produtos de trabalho;\n• Incorporação de objetivos para reduzir produtos de trabalho intermediários e desenvolvê-los como projetos evoluídos;\n• Utilização de cores diferentes para indicar o \"peso\" do projeto e qual metodologia aplicar.\n\nMétodo Crystal (Fonte: Wikipedia)\n\nPrincípios ágeis da família Crystal:\n\n• Entregas frequentes\n• Melhoria reflexiva: verificação constante e busca contínua de promoção de melhoria e implementação de novos métodos;\n• Comunicação osmótica: membros são alocados próximos uns dos outros para melhorar a comunicação, conceito também conhecido como War Room (Sala de Guerra);\n• Segurança pessoal: o Crystal defende um ambiente seguro para que todos possam apresentar suas dúvidas e questionamentos;\n• Foco: cada membro do time deve saber o que precisa fazer e ter liberdade suficiente para trabalhar no que é necessário;
Send your question to AI and receive an answer instantly
Recommended for you
11
Aula 04 - Principais Conceitos do Processo de Teste de Software
Qualidade de Software
UNOPAR
11
Aula 02 - Modelos de Ciclo de Vida de Software
Qualidade de Software
UNOPAR
4
00 - Apresentação - Qualidade e Testes de Software
Qualidade de Software
UNOPAR
11
Aula 03 - Qualidade de Teste de Software
Qualidade de Software
UNOPAR
2
Aula 01 - o que É Engenharia de Software anexo 1
Qualidade de Software
UNOPAR
11
Aula 05 - Ciclo de Vida do Processo de Testes de Software
Qualidade de Software
UNOPAR
7
Atividade 3 - Qualidade e Teste de Software
Qualidade de Software
FMU
2
Prova Discursiva Legislação e Propriedade Intelectual
Qualidade de Software
UMG
5
Eps_ Alunos10
Qualidade de Software
UMG
8
Avaliação On-line 5 aol 5 - Teste de Software
Qualidade de Software
UMG
Preview text
Qualidade e teste de software\nAula 1: O que é engenharia de software\n\nI Apresentação\nNesta aula, vamos saber o que é o produto software, o processo de desenvolvimento no gerenciamento de projetos com o Manifesto Ágil para Desenvolvimento de Software e os 12 princípios por trás deste manifesto, conceitos de Engenharia de Software e as atividades do processo de desenvolvimento de software.\n\nVamos conhecer também a Declaração de Interdependência no gerenciamento de projetos ágeis e alguns métodos ágeis, como Feature Driven Development - FDD (Desenvolvimento dirigido a funcionalidades), Dynamic Systems Development Method - DSDM (Metodologia de desenvolvimento de sistemas dinâmicos) e Crystal.\n\nI Objetivos\n• Propor melhorias e inovações no plano do projeto de construção e manutenção de software, baseados nas técnicas de qualidade;\n• Identificar a necessidade de gerenciar projetos de software com eficiência;\n• Descobrir a necessidade de rastrear, acompanhar e monitorar projetos de software.\n\nI Contextualização\nO mundo moderno exige cada vez mais tecnologia e novas plataformas de gestão da informação e comunicação.\nO software hoje está voltado não só para a web, mas também para diversos segmentos como indústria, comércio, saúde, segurança e muito mais. Além disso, atua na inteligência artificial, estando presente nos eletrodomésticos como TV, geladeiras, lavadoras, micro-ondas, sistema elétrico residencial e muitos outros. I O que é projeto?\nProjeto é um esforço temporário empreendido para criar um produto, serviço ou resultado exclusivo. Também pode ser descrito como: \"uma original organização de pessoas e recursos para atingir um propósito específico, num período de tempo finito\".\n\nEsmiuçando um pouco essa definição, temos:\n• Original\nCada projeto é diferente de todos os outros.\n• Organização de pessoas e recursos\nUma mistura de talentos e conhecimentos humanos, com recursos técnicos e físicos.\n• Para atingir um propósito específico\nEnfatiza a necessidade de os projetos terem sempre um objetivo tangível e realizável.\n• Num período de tempo finito\nDiferencia um projeto de um processo.\n\nI O que é software? Software é \"uma sequência de instruções a serem executadas, com o objetivo de gerar informações a partir de uma série de dados coletados ou armazenados\". Também podemos definir como sendo \"os programas que comandam o funcionamento de um computador\".\n\nPodemos classificar o software como a parte lógica cuja função é fornecer instruções para o hardware.\n\nI Composição e classificação do software\nComposição do software\nUm software é composto por módulos, instruções, bibliotecas, que gera um programa executável que lhe dados denominados \"entradas\" ou inputs ao final do processo de desenvolvimento, e este, quando executado, recebe algum tipo de \"entrada\" de dados (input), processa as informações e libera uma \"saída\" (output) como resultado desse processamento.\n\nClassificação do software\nPodemos os softwares podem ser classificados em três tipos:\n• Software de Sistema: é o conjunto de informações que gerenciam o hardware, que permitindo a interação entre o usuário e os periféricos do computador.\nExemplos: Windows e Linux.\n• Software de Programação: é o conjunto de ferramentas que permitem ao programador desenvolver sistemas informáticos.\nExemplos: exemplo, C++, C#, VB, ASP, Delphi, GO.\n• Software de Aplicação: são programas de computadores que permitem ao usuário executar uma série de tarefas específicas em diversas áreas de atividade. Exemplos: planilha eletrônica, editores de texto e editores de apresentações (como PowerPoint).\n\nI Manifesto\nDiferentes tipos de projetos necessitam de diferentes métodos de gerenciamento. A abordagem ágil é muito utilizada em projetos orientados a valor. Existem diversos tipos de abordagens ágeis, e estas buscam estar alinhadas com diversos princípios definidos no documento Manifesto for Agile Software Development, criado em fevereiro de 2001 por diversos especialistas em projetos de software.\n\nTipos de programação ágil:\n\nProgramação extrema - XP (eXtreme Programming)\nMuito utilizado para equipes pequenas e médias que desenvolvem softwares com requisitos vagos e em constantes mudanças.\n\nA estratégia adotada é de constante acompanhamento e realização de vários pequenos ajustes durante o desenvolvimento de software. Tem valores fundamentais como: comunicação, simplicidade, feedback, coragem e respeito.\n\nContinue lendo...\n\nMétodo Scrum\nScrum não é um processo prescritivo, ou seja, não descreve o que fazer em cada situação. Ele é usado para trabalhos complexos nos quais é impossível prever tudo o que irá ocorrer.\n\nÉ um processo de desenvolvimento iterativo e incremental (criado em resposta às fraquezas do modelo em cascata) para gerenciamento de projetos e desenvolvimento ágil de software.\n\nContinue lendo...\n\nManifesto para desenvolvimento ágil de software\nEstamos descobrindo maneiras melhores de desenvolver softwares, fazendo-nos nós mesmos e ajudando outros a fazerem o mesmo. Através deste trabalho, passamos a valorizar (valores declarados do Manifesto):\n\n- Indivíduos e interações mais que processos e ferramentas;\n- Software em funcionamento mais que documentação abrangente;\n- Colaboração com o cliente mais que negociação de contratos;\n- Responder a mudanças mais que seguir um plano.\n\nOu seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à esquerda. A seguir, vamos verificar cada um desses itens. Indivíduos e interações mais que processos e ferramentas\nObserve que o primeiro valor do manifesto deixa claro uma importante mensagem. Processos e as ferramentas serão necessários no projeto; porém, devemos tentar concentrar a atenção da equipe sobre os indivíduos e interações envolvidos no projeto.\n\nLembre-se que projetos são realizados por pessoas, e não por ferramentas, assim como os problemas são resolvidos por pessoas, e não por processos.\n\nFocando primariamente no desenvolvimento dos indivíduos envolvidos no projeto e enfatizando as interações produtivas e eficientes, melhoramos as chances de sucesso do projeto.\n\nIsso, no entanto, não quer dizer que processos e ferramentas não podem ajudar na conclusão de um projeto com êxito. Processos e ferramentas bem desenhados e adequados são ativos de grande importância.\n\nSão as denominadas ferramentas CASE (Computer-Aided Software Engineering), que correspondem a todas as ferramentas que auxiliam os projetos de software, indo da análise de requisitos, modelagem até a implementação e os testes.\n\nSeu objetivo é auxiliar o desenvolvedor em todo o ciclo de desenvolvimento de software.\n\nSoftware em funcionamento mais que documentação abrangente\nO segundo valor do manifesto destaca a necessidade de entregar o software. Projetos de software são iniciados com o objetivo de criar valor para a empresa por meio de um produto de software de alta qualidade, mas muitas vezes entregar em prazos intermediários (incrementos).\n\nReiterar a documentação é atualizada de forma completa e reflete a realidade do software, porém é essencial documentar ou o que é preciso em um software, sem exagero.\n\nLembre-se sempre que software sem documentação é certamente problemático e dificulta o suporte e a manutenção. Contudo, uma documentação completa sem software não agrega absolutamente nada. Colaboração com o cliente mais que negociação de contratos\nO terceiro valor reforça a necessidade de ser flexível e eficiente, em vez de rígidos e não cooperativos. É semelhante à diferença entre \"estar certo\" e \"fazer a coisa certa\".\n\nPoderíamos construir o produto exatamente como originalmente especificado, mas se o cliente mudar de ideia ou de prioridade, você não concorda que devemos ser flexíveis e trabalhar para a nova meta?\n\nÉ claro que sim. As mudanças às vezes deverão ser refletidas em aditivos contratuais ou ajustes, mas não deve ser um impeditivo para a continuidade do desenvolvimento e entrega do software.\n\nAtualmente existem diversas novas formas de contratos para acolher projetos com características ágeis, como pagamento de preço fixo por interação (ou sprint), pagamento por pontos, histórias ou outras que permitem a flexibilidade necessária para projetos orientados a valor. Feature Driven Development - FDD (Desenvolvimento Dirigido a Funcionalidades)\n\nFoi concebido originalmente por Jeff de Luca. O FDD surgiu em Singapura, entre os anos de 1997 e 1999 com base no método Coad (Criado por Peter Coad - 1980/1990) e nos processos interativos e lean já utilizados por de Luca.\n\nÉ uma abordagem poderosa para o desenvolvimento de produtos. Busca o desenvolvimento por funcionalidade através de um requisito funcional do sistema. Uma equipe de projeto seguindo o método FDD primeiro desenvolveu um modelo global para o produto, construiu uma lista de recursos e planejou o trabalho.\n\nA equipe então se move através da concepção e construção de iterações para desenvolver cada recurso. O FDD busca apresentar resultados frequentes, tangíveis e funcionais.\n\nIMPORTANTE: O FDD pode atuar em conjunto com outras metodologias, principalmente com o Scrum, encaixando-se perfeitamente como metodologia de engenharia ágil de software com projeto ágil.\n\nDesenvolva um modelo global para o produto\nCrie uma lista de funcionalidades\nPlaneje por funcionalidade\nProjete por funcionalidade\nConstrua por funcionalidade\n\nO FDD recomenda uma série de boas práticas oriundas da Engenharia de Software, como:\n\n• Modelagem de domínio do objeto: as equipes de explorar e explicar o domínio (ou ambiente de negócios) do problema a ser resolvido;\n• Desenvolvimento por funcionalidade: esta prática envolve decompor as necessidades em funcionalidades e definir períodos de desenvolvimento de uma ou mais funcionalidades em intervalos de duas semanas ou mais curtos;\n• Propriedade individual (código): as áreas de código devem ter um único proprietário para garantir consistência, desempenho e integridade conceitual. (Nota-se que é bem diferente de ideia de propriedade código coletiva do XP, que visa difundir o conhecimento para outros membros da equipe);\n• Times dinâmicos: devem-se formar pequenas equipes, de forma dinâmica, de acordo com características de cada projeto. Os times ajudam a mitigar o risco associado à propriedade individual;\n• Inspeções: são revisões que ajudam a garantir boa qualidade e design de código;\n• Gerenciamento de configuração: essa prática envolve rotação de código, controle de alterações e gerenciamento do código-fonte;\n• Construções regulares: através de entregas frequentes e constantes, o time incrementa o produto de software com a nova funcionalidade desenvolvida. Esta prática também permite criar facilmente uma versão demo;\n• Visibilidade: controle e acompanhamento do progresso dos resultados, baseados em funcionalidades desenvolvidas.\n\nPara comparação, é importante mostrar o percentual de tempo gasto em cada etapa:\n• Levantamento do domínio da aplicação = 1%; • Projeto = 40%;\n• Inspeção do projeto = 3%;\n• Desenvolvimento = 45%;\n• Inspeção do código = 10%;\n• Integração = 1%;\n\nVocê poderá aprofundar seus conhecimentos sobre o FDD, acessando o website oficial da metodologia, disponível em: //www.featuredrivendevelopment.com/. Acesso em: 16 maio 2019.\n\nDynamic Systems Development Method - DSDM (Metodologia de Desenvolvimento de Sistemas Dinâmicos)\n\nDSDM foi um dos pioneiros dos métodos ágeis. É uma metodologia de desenvolvimento bastante prescritiva, baseada em Rapid Application Development - RAD (Desenvolvimento Rápido de Aplicações), que enfatiza o envolvimento constante do usuário durante todo o projeto.\n\nOferece uma metodologia para construir e manter sistemas que atendem restrições de prazo, através do uso da prototipagem incremental. Cria três ciclos iterativos, abrangendo aspectos de um projeto ágil, analisando sempre a viabilidade e necessidade do negócio para a implementação. Ciclo de vida do DSDM\n\nO ciclo de vida do DSDM é iterativo e incremental. Portanto, a solução não pode ser entregue à empresa de uma só vez, mas de uma série de incrementos que facilitam a solução com cada entrega.\n\nDessa forma, as necessidades de negócios urgentes podem ser priorizadas e abordadas cedo, enquanto características menos importantes são implementadas e entregues mais tarde.\n\nA natureza iterativa permite que os representantes de negócios vejam e se envolvam no trabalho em construção, analisando e ajustando as alterações necessárias durante o desenvolvimento de um incremento do modelo funcional.\n\nO DSDM pode ser utilizado sozinho como metodologia ágil, porém o seu uso com outros métodos e boas práticas de gerenciamento de projetos ou técnicas de desenvolvimento detalhados podem contribuir para a melhora nos processos e resultados.\n\nOs ciclos são:\n1. A iteração de modelos funcionais: neste ciclo, é produzido um conjunto de protótipos incrementais que demonstram a funcionalidade para o cliente;\n2. A iteração do projeto e desenvolvimento: neste ciclo, revisamos os protótipos desenvolvidos durante a iteração de modelos funcionais para assegurar que cada um tenha passado por um processo de engenharia para capacitá-los a oferecer aos usuários finais valor de negócio em termos operacionais;\n3. Implementação: não colocamos a última versão do incremento de software (um produto operacionalizado) no ambiente operacional.\n\nATENÇÃO: Em qualquer dos casos, o trabalho do desenvolvimento do DSDM continua, retornando à atividade de iteração do modelo funcional.\n\nVocê poderá aprofundar seus conhecimentos sobre o DSDM, acessando o site oficial da metodologia, disponível em: //www.dsdm.org/. Acesso em: 16 maio 2019. Crystal\n\nCrystal é uma família de metodologias (Família Crystal de Metodologia) desenvolvidas por Alistair Cockburn, em meados da década de 1990.\n\nEla inclui um grande número de métodos diferentes, que são selecionados de acordo com as características do projeto a ser desenvolvido, destinadas para projetos que vão desde aqueles executados por pequenas equipes de desenvolvimento com baixa criticidade e provê abordagens até com grandes equipes que implementam sistemas de alta criticidade.\n\nCaracterísticas comuns a família Crystal:\n\n• Desenvolvimento incremental com ciclos de no máximo quatro meses;\n• Ênfase maior na comunicação e cooperação das pessoas;\n• Não limitação de quaisquer práticas de desenvolvimento, ferramentas ou produtos de trabalho;\n• Incorporação de objetivos para reduzir produtos de trabalho intermediários e desenvolvê-los como projetos evoluídos;\n• Utilização de cores diferentes para indicar o \"peso\" do projeto e qual metodologia aplicar.\n\nMétodo Crystal (Fonte: Wikipedia)\n\nPrincípios ágeis da família Crystal:\n\n• Entregas frequentes\n• Melhoria reflexiva: verificação constante e busca contínua de promoção de melhoria e implementação de novos métodos;\n• Comunicação osmótica: membros são alocados próximos uns dos outros para melhorar a comunicação, conceito também conhecido como War Room (Sala de Guerra);\n• Segurança pessoal: o Crystal defende um ambiente seguro para que todos possam apresentar suas dúvidas e questionamentos;\n• Foco: cada membro do time deve saber o que precisa fazer e ter liberdade suficiente para trabalhar no que é necessário;