Baixe o app para aproveitar ainda mais
Prévia do material em texto
Uniritter Laureate Internacional Universities* Graduação em Análise e Desenvolvimento de Sistemas Cíntia Carvalho Selbach Processos de Software Porto Alegre 2022 2 Lista de ilustrações Figura 1 – Figura 01: Modelo em cascata. ................................................................. 11 Figura 2 – Figura 02: Modelo de processo em espiral. ................................................. 12 3 Sumário 1 Introdução 4 2 Modelos Tradicionais ......................................................................... 5 2.1 Cascata ............................................................................................. 5 2.2 Espiral ................................................................................................ 6 2.3 RUP - Rational Unified Process .......................................................... 8 3 Comparativo Entre os Métodos .......................................................... 8 4 Agile................................................................................................... 9 4.1 Manifesto Ágil .................................................................................. 10 4.1.1 Valores do Manifesto Ágil ................................................................... 10 4.1.2 Príncipios do Manifesto Ágil ............................................................... 10 4.2 Modelos de Métodos Ágeis .............................................................. 11 4.2.1 FDD - Feature Driven Development ................................................... 11 4.2.2 XP - eXtreme Programming ................................................................ 11 4.2.3 MSF - Microsoft Solutions Framework ................................................ 12 4.2.4 DSDM - Dynamic System Development Model .................................. 12 4.2.5 SCRUM ............................................................................................... 12 5 Agile e o Método Tradicional ............................................................ 13 6 Utilização dos Modelos de Desenvolvimento .................................... 13 7 Conclusão ........................................................................................ 14 Referências..........................................................................................15 4 1 Introdução Processo de software é como uma metodologia para as atividades, ações e tarefas necessárias para desenvolver software com alta qualidade. Assim, um processo de software é como uma série de passos previsíveis, ou um roteiro, que vai ajudar na criação de um produto e/ou sistema de alta qualidade e fazendo com que seja cumprido o prazo estabelecido entre as partes. Um processo de software pode ser diferente dependendo da organização ou do projeto, sendo assim, ele é adaptável às necessidades. Dessa forma temos os modelos tradicionais como o Cascata, Espiral e RUP e os métodos ágeis como o Scrum e o XP. 5 2 Modelos Tradicionais 2.1 Cascata Este método é conhecido também como método tradicional, é uma forma de gerenciamento de projetos que utiliza fases sequenciais, longo planejamento, projetos com custos, escopo e cronograma fixos. Abrange fases básicas que são: planejamento, execução, validação e entrega. Com o tempo, o mercado também passou a chamar esse tipo de método de preditivo, porque com ele é possível estimar e prever o tempo e orçamento totais do projeto. Nesse método, a fase de planejamento ganha grande importância no processo, todas os requisitos são analisados em todos os aspectos. Este modelo sugere uma abordagem sequencial e sistemática para o desenvolvimento de software. Dessa forma, começamos com o levantamento de requisitos ou necessidades junto ao cliente, depois vamos para a fase de planejamento onde definimos estimativas, cronograma e acompanhamento, após isso partimos para a modelagem onde fazemos a análise e projeto, seguindo da construção onde codificamos e testamos, passamos para a implantação ou emprego onde efetuamos a entrega, suporte e feedback do software concluído. O modelo cascata é o paradigma mais antigo da engenharia de software. Porém, mesmo sendo bastante antigo e ainda utilizado na indústria esse processo recebe muitas críticas que gerou questionamentos sobre a sua eficácia até mesmo pelos seus maiores defensores. A principal característica do Modelo Cascata é sua fluidez mostrada na Figura 01 e a correlação entre suas etapas de desenvolvimento. As fases desta metodologia só funcionam após a finalização da etapa anterior, algo que torna esse processo de desenvolvimento mais demorado. 6 Um ponto fundamental no Modelo Cascata é que suas etapas devem ser realizadas em parceria com o cliente, pois será ele quem vai indicar as necessidades e prioridades do software. Ou seja, a equipe de desenvolvimento não atua de forma consultiva identificando pontos de melhoria no projeto, apenas executando da forma apresentada pelo cliente. Esse detalhe é uma das maiores desvantagens desta metodologia, porque é difícil os clientes saberem, desde o início, o que desejam e precisam. Outra questão, é o tempo que um projeto realizado por meio da Metodologia Waterfall dura. Por depender da finalização de etapas e a impossibilidade de erros, cada fase deve ser desenvolvida com todos seus aparatos prontos e finalizados, para que a próxima etapa comece e o projeto não tenha erros. 2.2 Espiral Neste modelo que foi criado em 1988, as fases são tratadas de modo cíclico. A cada iteração (ou “volta” do ciclo), o usuário tem acesso a versões evolucionárias do software. Nele, há menos flexibilidade para lidar com possíveis falhas e bugs. Por isso, cada etapa demanda maior planejamento. A empresa deve estar atenta para possíveis problemas, testando funcionalidades e avaliando eventuais 7 incompatibilidades. Além disso, é necessário manter o cliente vinculado a cada etapa aplicando feedbacks e orientando mudanças futuras. Este método busca combinar as melhores características dos modelos: Linear e Prototipação. O mesmo ainda acrescenta um novo recurso, a análise de riscos, inexistente nesses outros modelos. Uma das vantagens é que o método fornece um grande potencial para que possamos ter rápido desenvolvimento de versão cada vez mais completas, dessa forma possui diversas atividades definidas pela engenharia de software, onde cada uma dessas atividades representa um segmento do caminho espiral. Para termos uma ideia melhor, a Figura 02 demonstra o modelo espiral. Suas principais desvantagens é que possui muita ênfase a parte funcional, sua avaliação dos riscos exige experiência, é melhor aplicado a sistemas de larga escala e é um modelo relativamente novo e não tem sido muito utilizado. O processo espiral não termina após a entrega do software, como nos outros modelos, podendo ser adaptado para uma aplicação posterior como um projeto de aperfeiçoamento do produto entregue. Este modelo é o considerado mais realístico possível, pois assume que usuários, analistas e desenvolvedores adquirem maior conhecimento sobre o projeto como decorre do tempo. 8 2.3 RUP - Rational Unified Process O RUP é uma metodologia com práticas ágeis, assim como Scrum e o Extreme Programming (XP). Esses métodos possuem em comum a utilização de boas práticas que auxiliam na obtenção de uma rotina e técnicas produtivas. A metodologia utiliza uma abordagem de orientação a objetos em sua concepção e é projetado e documentado utilizando o UML para ilustrar os processos. Tem como principais características ser incremental e iterativo. Incrementalsignifica que aquele software é construído e entregue em pedaços, constituindo um conjunto de funcionalidades completas. Nesta metodologia, o projeto passa por 4 fases básicas: Inception, elaboration, construction e transition. Apesar de parecer um modelo em cascata, na verdade cada fase é composta de uma ou mais iterações, o que se assemelha a um modelo em espiral. Estas iterações são em geral curtas (1-2 semanas) e abordam algumas poucas funções do sistema. Isto reduz o impacto de mudanças, pois quanto menor o tempo, menor a probabilidade de haver uma mudança neste período para as funções em questão. Além das fases e iterações, existem os workflows. Cada workflow é na verdade uma sequência de tarefas encadeadas e relacionadas a um aspecto importante do projeto, tal como análise do negócio, testes, etc. Os gráficos da figura mostram a ênfase de cada workflow em cada etapa do projeto. A utilização desse processo se faz muito benéfico para o desenvolvimento do projeto pois garante a qualidade de software, produtividade no desenvolvimento, operação e manutenção de software. Além de que permite ao profissional controle sobre o desenvolvimento dentro de custos, prazos e níveis de qualidade desejados. Apesar das vantagens, a escolha na utilização da metodologia RUP pode também gerar problemas por ser complexo e trabalhoso, muito caro para projetos de pequeno porte, exigir experiência da equipe e também equipes especialistas. 3 Comparativo Entre os Métodos A definição do melhor modelo de criação de sistemas e o mais adequado para o negócio vai variar conforme as características do software que o empreendimento irá 9 desenvolver. Sendo assim, o primeiro passo para escolher o ideal é conhecer melhor o perfil da aplicação, do usuário e seus requisitos. Dessa forma, o gestor consegue avaliar a melhor metodologia para o sistema. Uma das principais diferenças entre o RUP, o Espiral e o Cascata é sua abordagem individual em relação à qualidade e aos testes. No modelo Cascata, a fase de teste vem depois da fase de construção, mas, na metodologia RUP, o teste é tipicamente executado simultaneamente com a programação ou pelo menos na mesma iteração; Todas as fases de desenvolvimento do projeto, como design, desenvolvimento, testes, requisitos, design e etc. são concluídas uma vez no modelo Cascata, enquanto que, como parte da metodologia ágil, elas seguem uma abordagem de desenvolvimento iterativo. Como resultado, planejamento, desenvolvimento, prototipagem e outras fases podem aparecer mais de uma vez durante todo o ciclo de vida do desenvolvimento; Em muitos casos, a metodologia de cascata é escolhida pela sua formalização maior. Quando um time terceirizado é contratado para criar uma aplicação, por exemplo, esse modelo tende a ser o preferido: por dar menos espaço para mudanças e ter um escopo muito claro desde o início, nas metodologia RUP, as mudanças ocorrem entre cada etapa. É possível adicionar, remover ou modificar funcionalidades entre as fases facilmente, graças ao foco na comunicação. Em resumo, a principal diferença entre uma metodologia ágil e um método em cascata/espiral está na abertura a mudanças. 4 Agile Com nascimento em meados dos anos 1990, o conceito de Agile não demorou a ser difundido entre os especialistas, o que resultou na criação de diferentes modelos que dão suporte à gestão de projetos. O motivo pela qual surgiram estes métodos é para fazer frente aos modelos tradicionais, apontados como lentos e burocráticos pela quantidade de formalização necessária (documentação), com o objetivo de reduzir o ciclo de desenvolvimento em semanas ou meses — nos modelos “conservadores”, esse ciclo pode durar anos. Em 2001, foi lançado o Manifesto Ágil, no qual o conceito é explicado detidamente, os seus 4 valores e seus 12 princípios estão disponibilizados. 10 4.1 Manifesto Ágil O Manifesto Ágil é uma declaração de valores e princípios essenciais para o desenvolvimento de software. Embora seja relacionada a um setor tecnológico, os impactos do Manifesto e do desenvolvimento ágil proposto por ele são inegáveis para empresas de diversos setores. O documento foi criado em fevereiro de 2001, quando 17 profissionais, que já praticavam métodos ágeis como XP, DSDM, Scrum, FDD etc, se reuniram nas montanhas nevadas do estado norte-americano de Utah. Embora esses 17 desenvolvedores utilizassem abordagens e métodos diferentes, eles compartilhavam dos mesmos fundamentos. Ao decorrer da reunião decidiram escrever um documento que serviria como grito de guerra aos novos processos de desenvolvimento de software. A segunda parte da reunião foi dedicada à escrita de um documento que desencadearia o Agile Manifesto, nele estaria contido a declaração das crenças e valores que aquelas 17 pessoas possuíam. 4.1.1 Valores do Manifesto Ágil • Indivíduos e interação entre eles mais que processos e ferramentas; • Software em funcionamento mais que documentação abrangente; • Colaboração do cliente mais que negociação de contratos; • Responder a mudanças mais que seguir um plano. 4.1.2 Príncipios do Manifesto Ágil 1. Nossa maior prioridade é satisfazer o cliente através da entrega contínua e adiantada de software com valor agregado. 2. Aceitar mudanças de requisitos, mesmo no fim do desenvolvimento. Processos ágeis se adequam a mudanças, para que o cliente possa tirar vantagens competitivas. 3. ntregar frequentemente software funcionando, de poucas semanas a poucos meses, com preferência à menor escala de tempo. 4. Pessoas de negócio e desenvolvedores devem trabalhar diariamente em conjunto por todo o projeto. 5. Construir projetos em torno de indivíduos motivados, dando a eles o ambiente e o suporte necessário e confiando neles para fazer o trabalho. 11 6. O método mais eficiente e eficaz de transmitir informações para e entre uma equipe de desenvolvimento é por meio de conversa face a face. 7. Software funcionando é a medida primária de progresso. 8. Os processos ágeis promovem desenvolvimento sustentável. Os patrocinadores, desenvolvedores e usuários devem ser capazes de manter um ritmo constante indefinidamente. 9. Contínua atenção a excelência técnica e bom design aumenta a agilidade. 10. Simplicidade: a arte de maximizar a quantidade de trabalho não realizado é essencial. 11. As melhores arquiteturas, requisitos e designs emergem de times auto- organizáveis. 12. Em intervalos regulares, a equipe reflete sobre como se tornar mais eficaz e então refina e ajusta seu comportamento de acordo. 4.2 Modelos de Métodos Ágeis Os principais métodos ágeis aos quais a sua equipe pode aderir são o FDD, XP, MSF, DSDM e Scrum. É importante sempre lembrar que não há a “melhor metodologia”, mas a solução mais adequada dentro do contexto da empresa e do projeto que está sendo desenvolvido. 4.2.1 FDD - Feature Driven Development É um método que reúne as melhores práticas de outros métodos, como o Coad. A sua premissa básica tem o foco em funcionalidades, o que permite à equipe do projeto fazer um planejamento incremental, isto é, por fases. Esse tipo de atuação ajuda a dar agilidade ao desenvolvimento de soluções em ambientes de extrema incerteza, nos quais as mudanças são inevitáveis. A programação 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. 4.2.2 XP - eXtreme Programming Possui o foco no desenvolvimento de softwares com base em três pilares: agilidade no desenvolvimento da solução, economia de recursos e qualidade do produto final. 12 Para chegar à excelência nos serviços prestados, uma equipe XP deve se basear em valores, isto é, um contrato de atitudes e comportamentos que levam ao sucesso. Esses comportamentos e atitudes norteiam as ações da equipe XP em cada atividadea ser desempenhada, garantindo a integração e a sinergia necessárias para o bom desempenho. 4.2.3 MSF - Microsoft Solutions Framework É um dos métodos ágeis mais usados por se destinar ao desenvolvimento de soluções tecnológicas por equipes reduzidas, com foco na diminuição de riscos para o negócio e no aumento da qualidade do produto final. Seu propósito é identificar as falhas mais comuns em projetos de tecnologia, mitigando-as e aumentando as taxas de sucesso de cada iniciativa. Dessa forma, assim como o Scrum, o MSF tem mais foco na gestão de projetos que no desenvolvimento da solução em si. 4.2.4 DSDM - Dynamic System Development Model É um dos métodos ágeis mais antigos empregados não só no desenvolvimento de projetos como no meio tecnológico. Um tanto diverso dos demais métodos ágeis, ele é destinado ao desenvolvimento de projetos com orçamento fixo e prazos curtos, considerando que o cliente não tem como saber quanto custará a solução final. Entre as suas melhores práticas estão o desenvolvimento incremental e iterativo, a colaboração entre cliente e equipe, além da integração de funcionalidades, o que também vemos nos demais métodos ágeis. Vale ressaltar que este método diverge dos demais métodos ágeis tanto em sua estrutura — que é composta por processos interligados de modelagem, concepção, construção e implementação — como na gestão do tempo — que não é flexível, até permitindo que as funcionalidades mudem, mas desde que os prazos de execução continuem os mesmos. 4.2.5 SCRUM Esse é, sem dúvidas, o método ágil mais usado nos dias de hoje, principalmente porque pode ser integrado a outros métodos ágeis com facilidade, aplicando-se não só ao desenvolvimento de softwares como a qualquer ambiente de trabalho. 13 Com foco na gestão de projetos, o Scrum tem como base o planejamento iterativo e incremental, que se dá, conforme já explicado, pelas reuniões conhecidas como Sprints. Ele reitera, desde o início do projeto, a lista de funcionalidades a serem desenvolvidas — prática também chamada, no caso, de product backlog. Ao fim de cada Sprint é feita a Sprint Review Meeting, uma reunião de alinhamento sobre o que foi entregue. A partir daí, começa-se a planejar o próximo Sprint. Essas etapas acontecem sucessivamente até que o produto final esteja pronto para a entrega. 5 Agile e o Método Tradicional A metodologia tradicional tem etapas bem definidas sendo o planejamento do projeto, uma estimativa em termos de prazo e orçamento, a execução e entrega no final. Segue um modelo sequencial, ou seja, uma etapa deve ser executada após a outra, sendo assim, uma tarefa não pode ser iniciada enquanto a anterior não for concluída. Já nos métodos ágeis, apesar do nome, a palavra ágil não significa agilidade e sim o poder de “quebrar” o projeto em partes menores. Ao contrário da metodologia tradicional que você faz apenas uma entrega já com o projeto final, aqui você faz entregas constantemente até entregar todo o projeto. Essa metodologia surgiu da necessidade de minimizar riscos e custos associados ao desenvolvimento de software. No método tradicional temos como modelo iterativo e incremental o método Cascata e nos métodos ágeis temos com essas características o Scrum. 6 Utilização dos Modelos de Desenvolvimento De acordo com informações retiradas do Scrum Case Studies, existem cerca de 38 grandes empresas de sucesso que utilizam o Scrum em seu modelo de gestão, entre elas a Netflix, Google e FBI adotam a metodologia. Inicialmente a Spotify utilizava o Scrum, porém com o seu crescimento foi visto a dificuldade de comunicação entre os times e a complexidade dos projetos, com isso tiveram que adaptar a forma que a ferramenta caberia a empresa, criando assim o Spotify Squad, time formado por 8 pessoas com o objetivo de manter a comunicação e manter fluido o desenvolvimento de projetos sem problemas adversos por falta de comunicação. 14 7 Conclusão Dessa forma, conclui-se que tanto os métodos tradicionais quanto os ágeis são sim muito bons e úteis no desenvolvimento de um projeto, o que diferencia sua usabilidade é as características do que será desenvolvido, as necessidades da empresa, sua forma de trabalho e o tamanho de tal projeto, importante dessa forma sempre manter contato com o cliente, entendendo se há uma definição clara do projeto ou se está aberto a mudanças ao longo de sua execução, isso também influência muito na melhor escolha a tomar ao definir o tipo de método e a melhor ferramenta. . 15 Referências PRESSMAN, R. Engenharia de Software: Uma abordagem Profissional. 7º edição. Editora Bookman. MJVINNOVATION: modelo cascata, 2018. Disponível em: <https://www.mjvinnovation.com/pt-br/blog/modelo-cascata-modelo-agil/>. Acesso em: 14 de abr. de 2022. ROBSON CAMARGO: metodo cascata, 2019. Disponível em: <https://robsoncamargo.com.br/blog/metodo-cascata/>. Acesso em: 14 de abr. de 2022. BLOG CRONNAP: Qual é o melhor momento para utilizar cada metodolog ia, 2020. Disponível em: <https://blog.cronapp.io/entenda-as-diferencas-entre-o- desenvolvimento-agil-e-em- cascata/#Qual_e_o_melhor_momento_para_utilizar_cada_metodologia>. Acesso em: 14 de abr. de 2022. DEVMEDIA: Introdução ao Modelo Cascata, 2020. Disponível em: <https://www.devmedia.com.br/introducao-ao-modelo-cascata/29843/>. Acesso em: 21 de abr. de 2022. TREINAWEB: O que é RUP - Rational Unified Process?, 2020. Disponível em: <https://www.treinaweb.com.br/blog/o-que-e-rup-rational-unified-process/>. Acesso em: 21 de abr. de 2022. VOITTO: Como funciona o processo chamado RUP e quais são as 4 fases desse método, 2020. Disponível em: <https://www.voitto.com.br/blog/artigo/o-que-e-rup/>. Acesso em: 23 de abr. de 2022. UNIVAS: Comparação Geral das Metodologias Clássicas de Desenvolvimento de Software., 2018. Disponível em: <http://metodologiasclassicas.blogspot.com/p/blog- page.html/>. Acesso em: 23 de abr. de 2022. DEVMEDIA: Introdução aos Processos de Software e o Modelo Incremental e Evolucionário, 2021. Disponível em: <https://www.devmedia.com.br/introducao-aos- processos-de-software-e-o-modelo-incremental-e-evolucionario/29839>. Acesso em: 24 de abr. de 2022. AGILE MANIFESTO: Manifesto para Desenvolvimento Ágil de Software, 2001. Disponível em: <https://agilemanifesto.org/iso/ptbr/manifesto.html/>. Acesso em: 24 de abr. de 2022. PROJECT BUILDER: Quais são os principais tipos de métodos ágeis?, 2021. Disponível em: < https://www.projectbuilder.com.br/blog/quais-sao-os-principais-tipos- de-metodos-ageis/>. Acesso em: 24 de abr. de 2022.
Compartilhar