Gabriela Fachine Brito PROPOSTA DE UTILIZAÇÃO DO KANBAN E LEAN PARA MELHORIA DO GERENCIAMENTO DE SOFTWARE - PDF
Gabriela Fachine Brito PROPOSTA DE UTILIZAÇÃO DO KANBAN E LEAN PARA MELHORIA DO GERENCIAMENTO DE SOFTWARE
Download "Gabriela Fachine Brito PROPOSTA DE UTILIZAÇÃO DO KANBAN E LEAN PARA MELHORIA DO GERENCIAMENTO DE SOFTWARE"
Manuella Gameiro Casqueira
1 Gabriela Fachine Brito PROPOSTA DE UTILIZAÇÃO DO KANBAN E LEAN PARA MELHORIA DO GERENCIAMENTO DE SOFTWARE Palmas - TO 2013
2 Gabriela Fachine Brito PROPOSTA DE UTILIZAÇÃO DO KANBAN E LEAN PARA MELHORIA DO GERENCIAMENTO DE SOFTWARE Trabalho de Conclusão de Curso (TCC) elaborado e apresentado como requisito parcial para obtenção do título de bacharel em Sistemas de Informação pelo Centro Universitário Luterano de Palmas (CEULP/ULBRA). Orientador: Profª. M.Sc. Cristina Filipakis. Palmas - TO 2013
3 Gabriela Fachine Brito PROPOSTA DE UTILIZAÇÃO DO KANBAN E LEAN PARA MELHORIA DO GERENCIAMENTO DE SOFTWARE Trabalho de Conclusão de Curso (TCC) elaborado e apresentado como requisito parcial para obtenção do título de bacharel em Sistemas de Informação pelo Centro Universitário Luterano de Palmas (CEULP/ULBRA). Orientador: Profª. M.Sc. Cristina Filipakis. Aprovada em 05 de Dezembro de BANCA EXAMINADORA Prof. M.Sc. Edeilson Milhomem Centro Universitário Luterano de Palmas Prof. M.Sc. Madianita Bogo Centro Universitário Luterano de Palmas Prof. M.Sc. Cristina Filipakis Centro Universitário Luterano de Palmas Palmas - TO 2013
4 II AGRADECIMENTOS Agradeço primeiramente a Deus, que foi o responsável por tudo existir e pela capacidade me dada para suportar todas as dificuldades. Foi Ele quem me guiou durante todos os dias de luta desde os primeiros dias de aula, que não foram nada fáceis, foi Ele o responsável pela minha coragem em continuar durante os momentos de desespero, onde o cansaço era maior do que a força de vontade. Foi Ele quem me confortou nos momentos difíceis, como: as viagens diárias de 120km para chegar na faculdade, as noites de provas, noites de defesas, noites de entregas e/ou apresentação de trabalhos e outras inúmeras noites. Ele quem sempre me mostrou o melhor caminho a seguir, iluminando os meus passos e me ajudando a cumprir as missões me oferecidas. Agradeço aos meus pais, que sempre me apoiaram e que sempre foram os maiores incentivadores desta vitória. Primeiro a minha mamãe (Lilian), minha melhor amiga, sempre me transmitindo calma e forças pra continuar. Segundo o meu pai (Pascual), meu herói, que sempre me mostrou o caminho da honestidade e do amor ao próximo. Agradeço a Deus pela chance de ser filha (única) do melhor casal desse mundo, que me ajudaram a seguir até aqui. Sei que não foi fácil me manter em uma faculdade particular, pagar as despesas de ônibus entre Paraíso X Palmas todos os dias durante todos estes anos, mas a vontade de vencer foi maior e conseguiu superar todas as dificuldades. Agradeço aos meus pais pela liberdade de tomar algumas decisões e de me apoiarem independentemente das minhas escolhas, é por eles que vivo e esta vitória é para eles. Agradeço minha mamãe e meu papai por tudo que eles me deram, agradeço ao meu namorado (Thalisson) por toda a paciência, por todas as piadinhas para me alegrar, por todo incentivo durante o curso e por todos os planos investidos... Agradeço a minha sogra (Dona Rosilmar) por ter me colocado em suas orações para que eu pudesse atingir este objetivo. Agradeço a minha madrinha (Tia Andréa) por todo apoio e incentivo, pelo abraço apertado e pelas orações durante o curso, agradeço ao meu primo André pelas conversas sobre os nossos cursos, pelos abraços apertados e pelo incentivo me dado. Agradeço a vóvó mais linda deste mundo (Vóvó Jussara), que sempre orou para que eu conseguisse atingir meus objetivos, quem sempre me incentiva nas minhas decisões e que mesmo estando longe se faz presente, seja por mensagens no Facebook ou breves ligações e SMS. Muito obrigada, amo vocês. Agora os agradecimentos a quem me ajudou dentro da faculdade, desde uma caneta emprestada até um trecho de código. Agradeço ao Diego (amigo de Paraíso) por toda a
5 III paciência e auxílio em todo o curso, ao Jan Tarik por toda alegria contagiante, ao Mário e Willian por sempre me ajudarem nas disciplinas sempre quando precisei, ao Fábio pelo companheirismo e gentileza, a Cristiane pelas risadas, tardes de estudos e amizade verdadeira, a Cleydiane que mesmo de longe continua me ajudando muito, ao meu primo Douglas pelos trabalhos que me ajudou e pelas primeiras conversas sobre o curso e tardes de introdução aos algoritmos, agradeço a Katia pelo companheirismo em algumas disciplinas e pela amizade verdadeira. Agradeço a todos os meninos do curso que sempre me ajudaram quando precisei, seja para responder alguma dúvida minha ou para me ajudar a andar em Palmas. Muito obrigada. Agradeço a todos os amigos de Paraíso, que sempre me incentivaram e apoiaram o estudo em Palmas, que mesmo de longe se faziam presente. Agradeço a professora Cristina, minha mãe dentro do curso, pela orientação, pela amizade, pelas conversas, pelos conselhos, pelas matérias mais interessantes do curso, pelo exemplo de profissional, pelo apoio e ajuda quando precisei e vários outros fatores que nem cabem aqui. Muito obrigada Cris. Agradeço ao professor Jackson, por toda a paciência comigo durante as aulas de programação, pelas conversas, pela fé nos alunos e pelas caronas para Paraíso. Muito obrigada Jack. Agradeço ao professor Fernando por tudo que foi ensinado, pelos conselhos ditos em salas de aula. Muito obrigada Fernando. Agradeço ao professor Fabiano por fazer das aulas mais atrativas, sempre com piadas educativas. Muito obrigada Fabiano. Agradeço ao professor Edeilson por todas as conversas, danças no corredor e piadas. Muito obrigada Ed. Agradeço a professora Madianita, minha segunda mãe dentro do curso, por todas as conversas, conselhos, paciência e orientação. Muito obrigada Madia. Por fim, agradeço a professora e tia Parcilene, que sempre me ajudou seja de forma direta ou indireta, de algum modo, minha vida acadêmica, agradeço os s breves, conselhos, caronas para Paraíso e por ter me recebido em sua casa nestes últimos meses. Muito obrigada Tia Parci. Vocês serão inesquecíveis na minha vida profissional e pessoal, todos foram exemplos de vida para mim. Enfim, agradeço a todos, que me ajudaram diretamente ou indiretamente no desenvolvimento do curso. Foram cinco anos (2009/1 à 2013/2) de lutas e glórias. Isto é um sonho realizado que jamais esquecerei. Muito obrigada.
6 IV RESUMO O presente trabalho tem como objetivo propor a utilização da ferramenta Kanban juntamente com a metodologia Lean Software Development para melhor monitoramento de atividades, estas no âmbito de gerenciamento de software. Isto se faz necessário devido aos atrasos nas entregas, mal divisão de tarefas e responsabilidades, e, mal direcionamento de recursos. A ferramenta Kanban foca no controle visual, onde todas as equipes acompanham todas as atividades do projeto por meio de um quadro Kanban. Já a metodologia Lean possui várias abordagens e seu foco principal é a eliminação de desperdícios e conseqüente agregação de valor para o produto final. Com a junção destas duas práticas foi possível definir princípios, papéis, processos, etapas, artefatos e melhorias contínuas no software desenvolvido para uma maior satisfação tanto para o desenvolvedor quanto para o cliente. Com isso, a proposta abrange o desenvolvimento de processos para melhor gerenciamento de projetos de software. PALAVRAS-CHAVE: Lean Software Development; Kanban; monitoramento; gerenciamento; atividades; melhoria contínua.
7 V LISTA DE FIGURAS Figura 1 - Fases do Rup (Fonte: BASSI, 2008)... 6 Figura 2 - Ciclo de vida do RUP (Fonte: SEGET, 2008)... 7 Figura 3 - O modelo em Cascata (Fonte: SOMMERVILLE, 2010)... 8 Figura 4 - Desenvolvimento iterativo e em espiral (Fonte: DEVMEDIA, 2010)... 9 Figura 5 - Ciclo do Scrum (Fonte: BARDUSCO, 2010 ) Figura 6 - Fontes de Desperdícios Lean Figura 7 - Relação de Valor, Custo e Desperdício (Fonte: FORTES, 2010) Figura 8 - Mapa mental básico Lean Figura 9 - Fontes de Desperdícios Lean de Software Figura 10 - Lean e Métodos Ágeis Figura 11 - Fluxo Lean (Fonte: UNIVERSITY OF ST ANDREWS, Adaptado) Figura 12 - Solicitação Figura 13 - Escopo Figura 14 - Planejamento Figura 15- Treinamento Figura 16 - Redesign Figura 17 - Implementação Figura 18 - Revisão Figura 19 - Feedback Figura 20 - Exemplo da utilização do quadro Kanban (Fonte: PUPO, 2011) Figura 21 - Exemplo básico de quadro Kanban (Fonte: KNIBERG e SKARIN, 2009) Figura 22 - Mau direcionamento da limitação do trabalho em progresso (Fonte: KNIBERG e SKARIN, 2009)... 42
8 VI Figura 23 - Aumentando a limitação do trabalho em progresso. (Fonte: KNIBERG e SKARIN, 2009) Figura 24 - Problemas com a limitação do trabalho em progresso (Fonte: KNIBERG e SKARIN, 2009) Figura 25 - Identificação do problema (Fonte: KNIBERG e SKARIN, 2009) Figura 26 - Limite do trabalho em progresso alterado (Fonte: KNIBERG e SKARIN, 2009) 45 Figura 27 - Equipes e Atividades no Kanban (Fonte: KNIBERG e SKARIN, 2009) Figura 28 - Sistema kanban e Método Kanban Figura 29 - Kaizen Figura 30 - Processo Just-in-time (Fonte: SILVEIRA, 2012) Figura 31- Metodologia do Projeto Figura 32 - Princípios da Metodologia Figura 33 - Componentes essenciais Figura 34 - Visão geral das Abordagens utilizadas Figura 35 - Etapas e Papéis Figura 36 - Juntando os processos: Lean e Kanban Figura 37 - Papéis da Metodologia Figura 38 - Tipos de Cliente Figura 39 - Legenda dos Papéis Figura 40 - Início do projeto Figura 41 - Escopo do projeto Figura 42 - Planejamento Figura 43 - Treinamento Lean Figura 44 - Kanban Figura 45 - Implementação... 83
9 VII Figura 46 - Pontos de Melhorias Contínuas Figura 47 - Redesign Figura 48 - Fim do projeto Figura 49 - Exemplo de Gráfico Visual (Fonte: DENK, 2005) Figura 50 - Exemplos de pautas para as Reuniões Figura 51 - Microsoft Test Manager (Fonte: MICROSOFT, 2012) Figura 52 - Rounds da Metodologia Figura 53 - Coluna de atividades a serem feitas (Fonte: NICOLAY, 2013) Figura 54 - Coluna de atividades em andamento (Fonte: NICOLAY, 2013) Figura 55 - Coluna de atividades concluídas (Fonte: NICOLAY, 2013) Figura 56 - Lista de Membros e Papéis Figura 57 - Plano de Reunião... 99
10 VIII LISTA DE TABELAS Tabela 1 - Evolução da terminologia Lean. (Fonte: Fortes, 2010) Tabela 2 - Desenvolvimento e Excelência Lean Tabela 3 - Princípios da Produção Enxuta e sua adaptação para Serviços (Fonte: PASA, adaptado) Tabela 4 - Características específicas do Kanban Tabela 5 - Lean e Kanban Tabela 6 - Correlação e disparidade entre as metodologias Tabela 7 - Kanban e Just-in-time... 57
11 IX SUMÁRIO 1. INTRODUÇÃO REFERENCIAL TEÓRICO Gerência de Projetos Metodologias de Gerenciamento de Projetos Desenvolvimento de Software Dirigido a Planos Rational Unified Process (RUP) Modelo em Cascata Desenvolvimento Ágil de Software Scrum Metodologia Lean Abordagens Lean Fontes de Desperdício Produção Lean Desenvolvimento Lean de Software Lean Software Development Fluxo da metodologia Lean Ferramentas de Produção Kanban Kaizen Just-in-time MATERIAIS E MÉTODOS Local e Período Materiais Métodos RESULTADOS E DISCUSSÃO Os Princípios da Metodologia Etapas e Processos da Metodologia Papéis da Metodologia Etapas e Processos da Metodologia Artefatos da Metodologia CONSIDERAÇÕES FINAIS Trabalhos Futuros REFERÊNCIAS BIBLIOGRÁFICAS
12 1. INTRODUÇÃO Com o crescente progresso na globalização de tecnologias de comunicação e informação, houve uma necessidade maior das organizações se coordenarem de forma com que seus processos, recursos e custos sejam melhores aplicados e direcionados, para que seus produtos e serviços sejam produzidos de maneira satisfatória e, consequentemente, novos clientes sejam conquistados. Frequentemente, por meio de diagnósticos é possível observar que as organizações e empresas sofrem inúmeros problemas, e estes problemas muitas vezes são causados pela má gerência ou a falta dela. A falta de gerenciamento faz com que os objetivos e metas das empresas se distorçam do que é de fato desejado, ficando cada vez mais difícil de serem alcançados de acordo com a realidade da empresa. Muitas destas organizações fracassam por causa de uma gerência ineficiente ou pela falta dela, isto foi evidenciado pelo relatório do Standish (CHAOS REPORT, 2011), através da análise e pesquisas em projetos de TI, que sempre citam a falta de utilização de técnicas de gerenciamento de projeto, a realização de estimativas não confiáveis e falta de acompanhamento e controle dos processos de software. Para minimizar estes índices, segundo Leite (2010, online), surgiram as metodologias de desenvolvimento de software, que possuem como objetivo auxiliar no processo de produção do software. A pesquisa mais recente do Standish (2011) mostra, através de análises nos projetos de TI, que o índice de sucesso dos projetos pode estar diretamente ligado com a utilização de processos ágeis em seu desenvolvimento. Da mesma forma, o Standish Group (2001) apresentou por meio de seu relatório Chaos e análises de projetos, que tem como foco o desenvolvimento de software comercial, que 31% dos softwares são cancelados antes de serem concluídos; 53% dos projetos de software excedem mais do que a sua estimativa de custo; e, somente 9% dos projetos, em grandes empresas, foram entregues no tempo e orçamento estabelecidos. No cenário nacional, o SEBRAE realiza frequentemente pesquisas sobre os fatores condicionantes e taxa de mortalidade de empresas no Brasil. A má gestão financeira é um dos principais motivos do fechamento de micro e pequenas empresas brasileiras. Segundo o artigo científico Pequenas Empresas Fecham por Falta de Gerenciamento (SEBRAE, 2011), das 11 mil indústrias existentes no cenário brasileiro, 95% são micro e pequenas empresas. E
13 2 destes 95%, 90% decretam falência por problemas na administração, e não por falta de mercado. O SEBRAE (2011) afirma que um dos fatores que contribuem para a mortalidade das empresas é a falta de gerenciamento dos recursos com o exato controle de estoque, de compras, financeiro e contabilidade. Com o objetivo de auxiliar no processo de adaptação da engenharia de software, conforme Poppendienck (2003), foram desenvolvidas as metodologias Lean e Kanban, a primeira aplicada nas indústrias automobilísticas, e a segunda aplicada de forma a obter um melhor controle visual dos processos. Direcionando-as para computação e desenvolvimento de sistemas, surgiu o conceito Lean Software Development (LSD), que é a aplicação da metodologia Lean em desenvolvimento de software. Um dos criadores do conceito Lean Software Development, Poppendienck (2003, online), apresenta princípios e práticas da melhor forma de desenvolvimento dos projetos de software, focando na eliminação dos desperdícios. O Kanban visa o trabalho em progresso e, conforme Santos (2011, p. 13), é um método ágil de desenvolvimento de software e, sempre que necessário, as metodologias recorrem ao Kanban para colocar em prática boa parte de seus processos de monitoramento. O Kanban foca na visualização em progresso das atividades, gerando uma melhor apresentação e controle das mesmas. Existem inúmeras ferramentas que as metodologias utilizam para garantir uma implantação eficaz e sólida na organização para completar e auxiliar o Kanban. As ferramentas Kanban, Kaizen e Just-in-time serão aplicadas na metodologia Lean Software Development com o intuito de completá-la. Diante de todas as metodologias e técnicas destinadas a auxiliar e gerenciar projetos existentes, neste trabalho, foram selecionadas as metodologias RUP e SCRUM. Esta seleção foi realizada para elaborar uma tabela que ilustra as disparidades e vantagens que a metodologia Lean Software Development e a técnica Kanban possuem diante das demais supracitadas. A relação do RUP e SCRUM com a proposta do trabalho é apresentar o que a metodologia Lean Software Development e o Kanban possuem de diferenças em relação às metodologias tradicionais. Isto justificará o motivo dos quais estas foram escolhidas para o desenvolvimento da proposta. Este trabalho, portanto, apresenta uma proposta para amenizar, através da transparência e visibilidade no monitoramento de atividades, os problemas relacionados ao gerenciamento de projetos e controle de atividades. Esta proposta foca no envolvimento e utilização da técnica Kanban em conjunto com a metodologia Lean Software Development para melhoria do gerenciamento de software. E como problema de pesquisa, foi possível observar, através do estudo aprofundado dos temas, se a relação entre Kanban e Lean pôde
14 3 tornar a etapa de monitoramento de atividades mais eficaz. Esse estudo englobou os fluxos e atividades existentes em ambas metodologias para possibilitar a inserção de novos passos e processos. Isto se fez viável devido a adequação realizada em ambas para que fosse garantido um novo fluxo de processos, que resolveu o problema proposto. A metodologia Lean Software Development se difere das demais por ser um modelo baseado na manufatura das indústrias, mais precisamente da Toyota. Segundo Anderson (2010), um dos idealizadores do Lean para desenvolvimento de software, um processo precisava ser adaptado para cada situação, e que para fazer isso, era necessária uma liderança ativa em cada equipe. A metodologia Lean Software Development busca aumentar a satisfação dos clientes através de um melhor aproveitamento de recursos, evitando os desperdícios. Dessa forma é garantida uma maior satisfação por parte de seus clientes, com uma aplicação menor de valores e aproveitando ao máximo os recursos disponíveis, tendo como consequência, um melhor custo benefício para o cliente. Outra ferramenta comumente utilizada para auxiliar o gerenciamento dos projetos é a técnica Kanban, que utiliza de cartões e um quadro branco para permitir agilizar a entrega de projetos e a visualização sobre o que acontece como um todo. É uma ferramenta com o foco no controle visual, permitindo visualizar o projeto de forma mais clara e sem acúmulo de estoque. Diante deste contexto, é possível observar a deficiência nas gestões de projetos, muitas vezes por aplicação errada de metodologias existentes. Com isso, o presente trabalho objetiva criar uma proposta de metodologia de desenvolvimento e planejamento para área de computação, baseada nas técnicas Kanban e metodologia Lean Software Development.
15 4 2. REFERENCIAL TEÓRICO Esta seção abordará os conceitos relacionados ao trabalho, de modo a contextualizá-los em uma revisão de literatura de acordo com as referências bibliográficas encontradas sobre os assuntos: Gerência de Projetos; Metodologias de Gerenciamento de Projetos; Metodologia Lean e Kanban Gerência de Projetos Um projeto segundo o Project Management Institute (2011), é um empreendimento temporário com o objetivo de criar um produto ou serviço único. Os projetos poderão ser desenvolvidos em todos os níveis hierárquicos das empresas, podendo ter início, meio e fim bem planejados. Para que o projeto seja vantajoso e benéfico é importante ressaltar que seja diferente dos demais produtos e serviços semelhantes. Conforme a ONU (1984), Projeto é um empreendimento planejado que consiste num conjunto de atividades inter-relacionadas e coordenadas, com o fim de alcançar objetivos específicos dentro dos limites de um orçamento e de um período de tempo dados. A probabilidade de projetos se tornarem bem sucedidos ao seu final aumenta quando aplicada a Gerência de Projetos, que possui como base a utilização de cronogramas, equipes, coordenadores, análises e vários outros critérios que colaboram positivamente com o desenvolvimento de projetos. Conforme o artigo Gestão de Projetos de Software (2010): Gestão de Projetos é um conjunto de práticas que serve de guia a um grupo para trabalhar de maneira produtiva. Ela compreende métodos e ferramentas que organizam as tarefas, identificam sua sequência de execução e dependências existentes, apoia a alocação de recursos e tempo, além de permitir o rastreamento da execução das atividades e medição do progresso relativo ao que foi definido no plano do projeto. Neste contexto, a Gestão de Projetos possui algumas características, como: envolver a comunicação dos progressos e resultados às equipes de desenvolvimento do projeto; análise e controle de tarefas, prazos, custos e recursos envolvidos no projeto. Turner (1994) possui uma concepção significativa sobre a Gestão de Projetos, onde ele se refere a ela como:
16 5 Um processo através do qual um projeto é levado a uma conclusão. Tem três dimensões: objetivos (âmbito, organização, qualidade, custo, tempo); processo de gestão (planejar, organizar, implementar, controlar); e, níveis (integrativo, estratégico, tático). A importância da Gerência de Projetos é observada, conforme Schlichter (2001), como uma disciplina articulada em nível organizacional, onde a competência é fundamental para a realização das estratégias corporativas, através da contínua entrega de projetos bem sucedidos. Além disto, o gerenciamento de projetos engloba o conhecimento, habilidades, ferramentas e técnicas às atividades do projeto a fim de cumprir os requisitos préestabelecidos (PMBOK, 2010). O Gerenciamento de Projeto de Software, conforme afirmado por Dinsmore (1992), é a capacidade de equilibrar dedicação e implementação de tecnologia, ao mesmo tempo liderando e inspirando os membros da equipe. Ou seja, é aplicar as técnicas de gerenciamento de projeto que englobam habilidades e conhecimentos para aplicar à informática para atingir às solicitações do projeto. A Gerência de Projetos de Software envolve, dentre outros, o planejamento e acompanhamento das pessoas envolvidas no projeto, o produto sendo desenvolvido e o processo para evoluir o software para uma implementação concreta e operacional (PMBOK, 2010). Conforme abordado nesta seção, a Gerência de Projetos é de suma importância no desenvolvimento de projetos e para isso existem as metodologias de Gerenciamento de Projetos, que servem como guias aos gestores, possuindo diversas características e possibilitando a escolha de acordo com as estratégias de trabalho. Estas metodologias serão abordadas na próxima seção Metodologias de Gerenciamento de Projetos Existem diversas divisões entre as metodologias que possibilitam o desenvolvimento dos projetos de software. A presente seção propõe a explanação de três grupos, são eles: Desenvolvimento de Software Dirigido a Planos; Desenvolvimento Ágil de Software; e, Desenvolvimento Lean de Software.
17 Desenvolvimento de Software Dirigido a Planos Segundo Peterson (2010), o desenvolvimento de software dirigido a planos está focado em planejar tudo desde o início do projeto. Este grupo de desenvolvimento foca na produção de artefatos no planejamento inicial do projeto, e estes artefatos acompanham todo o desenvolvimento do projeto até que seja concluído. Esta abordagem é dividida por fases e, no final de cada fase, são produzidos novos artefatos para comprovação de que a fase foi concluída para que possa ser iniciada a próxima fase (BOSNIC, 2012). Este grupo de metodologias possui como exemplo o RUP e o Ciclo de Vida Clássico, que apesar de serem adaptáveis foram desenvolvidos primeiramente para grandes projetos. Ambos serão abordados nas próximas seções Rational Unified Process (RUP) Um exemplo de processo dirigido a planos é o Rational Unified Process, RUP. Este processo contém as atividades de engenharia de software as quais são executadas durante todo o ciclo de vida do projeto. O RUP possui quatro fases: concepção, elaboração, construção e transição. Figura 1 - Fases do Rup (Fonte: BASSI, 2008) Conforme exibido pela Figura 1, as disciplinas da engenharia de software participam de quase todas as fases, a única diferenciação existente é a intensidade entre elas. De acordo com Kroll e Kruchten (2003), o RUP possui três definições, são elas: O RUP é uma maneira de desenvolvimento de software que é iterativa, centrada à arquitetura e guiada por casos de uso; O RUP é um processo de engenharia de software bem definido e bem estruturado; e, O RUP é também um produto de processo que oferece estrutura customizável para a engenharia de software.
18 7 Uma vantagem considerável do RUP é que ele é bastante flexível, podendo ser aplicado a projetos de pequeno, médio e grande porte. O RUP possui princípios, que segundo (KRUTCHEN, 2003), acompanham as premissas referentes à garantia da qualidade do processo visando alcançar a garantia da qualidade do produto de software a ser desenvolvido. O RUP possui alguns elementos como papéis, atividades, artefatos, fluxos de trabalho e disciplinas. Como exibido na Figura 2, o Ciclo de Vida de um projeto RUP possui quatro fases: Iniciação, Elaboração, Construção e Transição. Figura 2 - Ciclo de vida do RUP (Fonte: SEGET, 2008) Sempre que uma fase acaba considera-se um marco (Figura 2) e cada fase é constatada como um intervalo de tempo entre dois marcos principais. A fase de Iniciação foca nos riscos relacionados com o caso de negócio; A fase de elaboração foca nos riscos técnicos e arquiteturais; A fase de Construção foca nos riscos lógicos e boa parte do trabalho é realizado; Por fim, a fase de transição foca nos riscos associados a logística de distribuição do produto para os usuários. O RUP possibilita uma maior qualidade do software e um maior controle sobre o desenvolvimento dos projetos a respeito de custos, prazos e níveis Modelo em Cascata Outro exemplo de processo dirigido a planos é o modelo em cascata (SOMMERVILLE, 2011). Este processo é executado de forma sequencial, seguindo um conjunto de passos das diferentes etapas do desenvolvimento de software. A Figura 3 ilustra o modelo em cascata e suas fases.
19 8 Figura 3 - O modelo em Cascata (Fonte: SOMMERVILLE, 2010) Segundo Bosnic (2012), o principal objetivo desta abordagem é prover uma estrutura para execução do processo de desenvolvimento de software. Presman (2004) define ainda que em cada uma destas fases seja realizado um conjunto predefinido de tarefas. Estas tarefas produzem os artefatos que liberarão o início do desenvolvimento da fase seguinte. Conforme Yourdon (1990), todo projeto desenvolvido segundo o Ciclo de vida Clássico é executado mediante algum método de análise de sistemas, projeto e implementação. Assim, o número de fases varia de organização para organização. O Ciclo de vida Clássico exige que o usuário declare explicitamente todas as suas prioridades, mas nem sempre isso é perceptível, dificultando o processo, isso às vezes impede que o projeto siga o fluxo sequencial que o modelo propõe (PRESSMAN, 1995). Este ciclo colabora com um melhor controle de qualidade e abrange atividades, ciclos e é comumente usado em sistemas transacionais. As metodologias de ciclo de vida clássico são as mais antigas e continuam sendo as mais utilizadas no desenvolvimento de software por conta de sua estrutura significativa nos projetos Desenvolvimento Ágil de Software Esta abordagem surgiu a partir de um manifesto, que tinha como objetivo satisfazer o cliente entregando rapidamente e com frequência, sistemas com algum valor. Desenvolvimento ágil, ou simplesmente agilismo, é um rótulo genérico para todos os métodos de desenvolvimento de software baseados no manifesto ágil (BECK, 2001). Para Cohn (2006), um plano ágil:
20 9 É aquele que nós não só iremos, como estamos ansiosos para mudar. Nós não queremos mudar o plano apenas pela mudança, nós queremos mudar porque a mudança significa que nós aprendemos algo ou evitamos um erro. O termo desenvolvimento ágil identifica metodologias de desenvolvimento que adotam os princípios do manifesto ágil. Estes princípios são (TELES, 2004): Indivíduos e interação entre eles 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. A Figura 4 ilustra o processo iterativo e em espiral, adotado pelos projetos no desenvolvimento ágil. Figura 4 - Desenvolvimento iterativo e em espiral (Fonte: DEVMEDIA, 2010) Neste processo (Figura 4), as fases são executadas diversas vezes ao longo do projeto, produzindo ciclos curtos que se repetem ao longo de todo o desenvolvimento. E ao final de cada ciclo, têm-se um software funcional, testado e aprovado. Estes ciclos são denominados iterações e crescem de acordo com as funcionalidades a cada repetição que é executada (TELES, 2004). Este método permite que ao longo de todo o ciclo de vida podem ser fornecidas evidências concretas para os envolvidos sobre o estado do projeto. E, além disso, o feedback é bem mais presente no sistema, de forma que os requisitos possam ser bem mais facilmente
21 10 encontrados e os problemas identificados são colocados em evidência, contribuindo para reagir da forma mais adequada nos projetos Scrum O Scrum é uma metodologia ágil para gestão e planejamento de projetos de software. É fundamentado na teoria de controle de processos empíricos, emprega uma abordagem iterativa e incremental para otimizar a previsibilidade e controlar riscos (SCHWABER, 2009). Esta metodologia tem como conteúdo o conjunto de Times Scrum (projetados para otimizar flexibilidade e produtividade); Time-Boxes (cria regularidade) e Regras (fazem o elo entre os time-boxes e os artefatos do Scrum). Figura 5 - Ciclo do Scrum (Fonte: BARDUSCO, 2010 ) O ciclo Scrum (Figura 5) começa com o Product Owner definindo uma visão (1) de produto compartilhada com o time. Essa visão é transformada em Product Backlog (2), que contém uma lista de requisitos de todos os entregáveis para que aquele produto faça sentido. Essa lista deve estar sempre priorizada por valor de negócio. Requisitos podem ser adicionados ou removidos a qualquer tempo, assim como a prioridade também pode mudar. Ou seja, o Backlog precisa ser continuamente mantido pelo Product Owner, visando maximizar o retorno sobre o investimento. É feito o Sprint Planning 1 (3), onde será definido o quê será feito durante o Sprint. Essa é a fase de documentação do projeto. O Selected Product Backlog (4), que é o