Buscar

APS - Engenharia de Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Centro Universitário das Faculdades Metropolitanas Unidas 
Engenharia de Software 
 
 
 
 
Relatório Técnico 
 
 
 
 
Ailson Rodrigues da Silva RA: 6296339 
Gustavo Toshio Almeida Ueyama RA: 6795647 
Prince Neto RA: 6639050 
 
 
 
 
 
 
 
São Paulo 
Novembro 2020 
 
 
Introdução: 
 
 
 
Nesse relatório técnico irei apresentar diferentes tipos de modelos tradicionais, sendo eles 
Cascata, Espiral e RUP abordando como funcionam suas características, vantagens e 
desvantagens, comparativo entre o Cascata e o Espiral relacionando ao RUP. E sobre o 
AGILE, o manifesto ágil e modelos ágeis de desenvolvimento e também quais modelos de 
desenvolvimento são utilizados nas grandes empresas. 
 
 
Modelo Queda d’Água (Cascata / Waterfall) 
Dispensa apresentações. É o mais conhecido e mais simples/intuitivo. Todas atividades do projeto 
executas em série, ou seja, cada etapa só inicia após a conclusão da anterior. 
 
Modelo de desenvolvimento Waterfall (cascata) 
 
Engenharia de Sistemas (planejamento): Adquirir uma visão geral do sistema a ser 
desenvolvido, incluindo hardware, software, equipamentos, pessoas envolvidas etc.). É 
uma fase de planejamento, mas chamei esta etapa de “Engenharia de Sistemas” pois é 
mencionado assim por muitos autores. 
Análise de Requisitos: Definição dos requisitos de software (detalhamento das 
funcionalidades que ele vai possuir). Define O QUE será desenvolvido, sem definir 
exatamente como. Este trabalho é de suma importância para as demais etapas (por 
motivos óbvios: antes de desenvolver código/programação é necessário saber em 
detalhes o que desenvolver). Se você não entendeu, pense que podemos definir que o 
cliente deverá fazer um cadastro com Nome, CPF e Telefone, mas não vamos definir aqui 
se será um formulário usando a tecnologia X ou Y nem se isso será salvo em um Banco 
Oracle, MySQL etc. São regras de negócio / necessidades do mundo real onde devemos 
tentar abstrair a parte tecnológica e mapear os detalhes de cada necessidade. 
Projeto: Definição de como os requisitos da etapa anterior serão construídos. Aqui 
definimos quais tecnologia usaremos (Java, ASP.Net, Oracle, MySQL), quais frameworks 
(Spring, Struts etc.), qual arquitetura (MVC etc.) e demais questões técnicas antes de 
começar o desenvolvimento. Obviamente alguns projetos já nascem com algumas destas 
questões mapeadas (o cliente pode pedir Java por exemplo, porque já tem outros projetos 
nesta linha). Mesmo assim esta etapa deve formalizar todas estas questões. 
Codificação: É o desenvolvimento / programação. Nas etapas anteriores ocorreram 
somente atividades de planejamento ou especificação. Aqui o software é construído de 
fato. Esta atividade engloba destes o desenho das telas (design e criação do HTML) até a 
programação na linguagem nos moldes definidos na etapa de Projeto. 
Testes e Integração: Onde o programa obtido será submetido a uma bateria de testes 
para verificar e corrigir. Esta etapa envolve alguma codificação em função dos eventuais 
bugs descobertos que serão corrigidos aqui. 
Operação e Manutenção: Onde o software está em produção sendo utilizado pelos 
usuários. Em função do surgimento de novas necessidades ou atualizações tecnológicas 
poderá ser necessário dar manutenção, o que envolve a realização de Codificação nesta 
etapa. 
Atenção para o fato de cada empresa pode definir o seu processo de desenvolvimento de 
software. Portanto este modelo Modelo Queda d’Água (Cascata / Waterfall) pode sofrer 
variações e ainda ser chamado de Modelo Queda d’Água, pois a 
principal característica deste modelo é a execução sequencial das atividades. 
Modelo de Prototipação 
É um conceito diferente. Cria um protótipo que simula o software final funcionando com 
base nos requisitos básicos do sistema. Busca contornar algumas das limitações 
existentes no modelo Queda d’Água (como por exemplo descobrir durante a Codificação 
que um requisito mapeado anteriormente na fase de Análise de Requisitos é inviável de 
construir). O cliente poderá contemplar o protótipo e solicitar mudanças de escopo antes 
de desenvolver todo o software. Para isto, é necessário executar um “miniprojeto” antes 
do projeto, selecionado requisitos essenciais e executando as etapas de Análise de 
Requisitos, Projeto, Codificação e Testes para eles. Estas etapas podem ser executas de 
forma superficial durante o protótipo, pois o foco é simular o software de forma básica. É 
normal o protótipo ser insuficiente, pois seus esforços são concentrados na interface do 
usuário. 
 
Modelo de desenvolvimento em Protótipo 
 
Mode de Desenvolvimento Iterativo 
Cada incremento vai adicionando ao sistema novas capacidades funcionais, até a 
obtenção do sistema final. Busca contornar algumas das limitações existentes no modelo 
Queda d’Água e combinar as vantagens do modelo Prototipação. É como executar vários 
“miniprojetos” onde cada um adiciona novas funcionalidades no software final até que ele 
esteja completo. A metodologia mais conhecida no momento que segue deste modelo é 
a SCRUM. 
 
Modelo de Desenvolvimento Iterativo 
 
Modelo Espiral 
Principais características são a análise de risco e prototipagem. É interativo, mas os 
primeiros ciclos são de planejamento, depois de especificação de requisitos, depois de 
especificação/projeto de software, e nos ciclos finais são de desenvolvimento. Problemas 
em um clico remetem a repetir o anterior. As interações iniciais do projeto são as mais 
baratas, permitindo que as tarefas de maior risco sejam levadas com o mínimo de custos. 
Este modelo é complexo de executar e requer experiência. 
 
 
 
 
 
 
 
A história do surgimento do Manifesto Ágil 
Em meados dos anos 2000, um grupo de pessoas influentes da comunidade do Extreme 
Programming se reuniu para discutir diversos pontos que envolvem o processo de 
desenvolvimento de software com XP (Extreme Programming).Nessa reunião, foram 
levantadas questões como os efeitos da burocratização do processo e o excesso de 
formalização com documentações presentes no Extreme Programming. Naturalmente, 
então, inseriu-se no debate os benefícios de novos métodos que eram contrários a essa 
formalização exagerada, os chamados métodos leves (Lightweight Methods). O resultado 
foi que os presentes perceberam que havia um espaço comum entre os dois métodos, que 
deveria ser observado mais de perto. Assim, um dos integrantes do grupo Robert Cecil 
Martin, conhecido como Tio Bob resolveu convidar os interessados para uma segunda 
reunião e, assim, se aproximar desse espaço comum. Ocorrida no estado americano de 
Utah, nos dias 11 a 13 de fevereiro de 2001, essa segunda reunião se tornou um marco 
para os profissionais da área de gestão de projetos, e contou com a presença de 17 
pessoas muito influentes nesse setor. No decorrer do debate, foi verificado um consenso 
sobre os fatores importantes no desenvolvimento de software e, assim, todos decidiram 
que valia a pena registrar tais questões em um documento. Aqui, aliás, vale lembrar que 
essa não era a intenção inicial dos presentes, mas se tornou inevitável quando eles 
perceberam que estavam lidando com algo grande, e que deveria ser tratado como tal. 
Assim, ali mesmo, eles elaboraram um documento que se tornou um divisor de águas para 
o setor: O Manifesto para o Desenvolvimento Ágil de Software, mais conhecido como 
Manifesto Ágil ou Agile. Esse documento, que reúne um conjunto de valores e princípios, 
teve como principal objetivo nortear as ações das equipes ágeis, mantendo-as focadas no 
que realmente agrega valor tanto para o projeto quanto para o cliente. Baseado em 12 
princípios, ele se tornou uma espécie de guia que orienta as ações, as escolhas de métodos 
e ferramentas dos times ágeis de projetos, maximizando os resultados. Foi uma verdadeira 
revolução! Para ter uma real dimensão do impacto e do peso do Manifesto, basta pensar 
que além de RobertCecil Martin, nomes como Jeff Sutherland e Ken Schwaber fundadores 
do Scrum estavam entre os dezessete signatários. Também estavam presentes nessa 
reunião: Jim Highsmith, Kent Beck, Arie van Bennekum, Alistair Cockburn, Mike Beedle, 
Martin Fowler, James Grenning, Andrew Hunt, Ron Jeffries, Jon Kern, Robert C. Martin, 
Steve Mellor, Ward Cunningham, Brian Marick, Ken Schwaber, Jeff Sutherland e Dave 
Thomas. 
 
Os quatro valores do Manifesto Ágil 
Um ponto que merece destaque sobre o Manifesto para o Desenvolvimento Ágil de 
software é que ele se firmou sobre quatro valores, e doze princípios. O objetivo desses 
fundamentos era mostrar para os profissionais do setor quais eram os fatores valorizados 
https://www.projectbuilder.com.br/blog/e-possivel-desenvolver-novos-produtos-com-metodos-ageis/
por essas pessoas presentes na reunião, ajudando outros profissionais a fazer o mesmo. 
Assim, definiram como mais importante a se valorizar: Indivíduos e a 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 Na prática, esses valores informam que os 
profissionais devem saber da importância dos itens à direita, mas que os itens à esquerda 
possuem maior peso para o processo. Ou seja, eles creditam mais valor ao produto e ao 
processo. 
Os doze princípios do Manifesto Ágil 
Além dos quatro valores instituídos, firmou-se ainda um conjunto de abordagens de 
desenvolvimento de softwares que pode ser apresentado por meio de 12 princípios. A saber: 
PRINCÍPIO 1: valor 
“A maior prioridade está em satisfazer o cliente por meio da entrega adiantada e contínua 
de software de valor. “O principal objetivo das equipes ágeis não é entregar um produto 
final, segundo determinados requisitos, mas entregar valor para o cliente. Ou seja, entregar 
uma solução que traga os melhores resultados. Na prática, isso implica na priorização da 
felicidade do cliente, de sua satisfação. E essa nova forma de ver representou uma quebra 
de paradigma para o setor, pois passou a ser mais importante desenvolver um crescimento 
orgânico do software. Trocando em miúdos, o desenvolvimento passou a ser incremental, 
a partir das necessidades observadas do dia a dia, não mais apenas do briefing inicial. Esse 
princípio lembra a máxima do marketing: entender para atender. O próximo princípio trará 
mais detalhes sobre sua prática. 
PRINCÍPIO 2: flexibilidade 
Processos ágeis se adéquam a mudanças, para que o cliente possa tirar vantagens 
competitivas, aceitando alterações de requisitos mesmo no fim do desenvolvimento. 
Perceba como os princípios estão interligados. Quando o primeiro princípio abre espaço 
para a satisfação do cliente, ele já abarca o segundo, que é ter um projeto flexível e passível 
de alterações. Em um mercado cada vez mais competitivo e complexo, é preciso 
desenvolver projetos de maneira flexível, para que possam sofrer alterações de acordo com 
o contexto em que a empresa está inserida e com suas necessidades, que podem mudar 
durante o desenvolvimento. Isso é, para satisfazer plenamente ao cliente, é necessário que 
o gestor do projeto tenha em mente que, se for necessário, ele terá que fazer alterações, 
inclusões, exclusões etc. Mas essa flexibilidade somente será aplicável se o projeto tiver 
uma frequência de entrega, como veremos a seguir. 
PRINCÍPIO 3: frequência 
“Entregar o software em funcionamento com frequência, seja na escala de semanas ou 
meses, dando preferência a períodos mais curtos. “Novamente, há o entrecruzamento, para 
que o projeto seja flexível e tenha como prioridade a satisfação do cliente — na prática, ele 
deverá ser entregue por partes. Cada etapa estará sujeita a validação e, por consequência, 
o produto final terá maior valor para o cliente. Lembra quando falamos de um processo de 
desenvolvimento incremental? É isso! A cada sprint concluída, o time do projeto deve 
entregar uma funcionalidade ao cliente, com total capacidade para ser utilizada desde o 
primeiro momento. Isso ajuda desde a percepção de valor até a testes e integrações com 
outros componentes do projeto. 
Princípio 4: união 
“Tanto pessoas relacionadas a negócios como desenvolvedores devem trabalhar em 
conjunto, diariamente, durante todo o curso do projeto”. O envolvimento da gestão da 
empresa é fundamental para que os projetos sejam desenvolvidos de acordo com as 
expectativas do cliente. Essa colaboração é o que permite personalizar a solução e validá-
la a cada sprint concluída. Não é à toa que um dos papéis mais importante de um time ágil 
é do Product Owner, profissional responsável por ser um representante do cliente durante 
todo o processo de desenvolvimento. 
Princípio 5: motivação 
“Para construir projetos ao redor de indivíduos motivados, é preciso dar a eles o ambiente 
e o suporte necessários, confiando que farão seu trabalho”. É fundamental que a equipe do 
projeto esteja motivada a desempenhar seu papel e tenha um ambiente adequado para 
desenvolver suas atividades, com suporte tanto na orientação das atividades quanto na 
adequação das metodologias ágeis. a figura do Scrum Master nesse princípio, certo? Ainda, 
é importante que os gestores do projeto tenham em mente que as ações para que esse 
princípio seja posto em prática são de duas frentes, igualmente importantes: manter a 
equipe motivada e subsidiar a equipe com o suporte necessário. 
Princípio 6: comunicação 
“O método mais eficiente de transmitir informações tanto externas como internas para um 
time de desenvolvimento é por meio de uma conversa cara a cara. “Se você voltar às 
demandas que iniciaram o surgimento do manifesto, perceberá que a burocratização era 
um desses pontos. Entretanto, é preciso ter em mente que o manifesto não quis excluir 
todas as formas de comunicação, mas sim otimizá-las. Isso é, identificou-se que era preciso 
cortar o exagero de documentação que engessava e atrasava o processo. Enfim, reuniões 
de planejamento de Sprint são fundamentais, sim, e fazem parte dos princípios do 
manifesto. Afinal, o registro de atividades não é tão eficaz quanto uma reunião da equipe 
do projeto para alinhar objetivos, trocar conhecimentos e planejar as próximas ações. 
Princípio 7: funcionalidade 
“Um software funcional é a medida primária de progresso “A evolução de um projeto 
desenvolvido a partir de métodos ágeis entrega de um software onal e não pela conclusão 
de atividades. Agora, resgate os primeiros princípios apresentados neste artigo: viu como 
a funcionalidade é o resultado para a união dos três primeiros, valor, flexibilidade e 
frequência? Assim, no ato do fazer no caso desenvolver softwares os princípios se imbricam. 
E isso ocorre porque o manifesto é fruto da observação do ato de fazer e da escolha das 
suas melhores maneiras. 
Princípio 8: sustentabilidade 
“Processos ágeis promovem um ambiente sustentável, com patrocinadores, 
desenvolvedores e usuários sendo capazes de manter passos constantes. “Deve-se 
construir o ambiente ideal para o desenvolvimento de projetos, com planejamento por 
iterações e envolvimento de todos os afetados pelo trabalho. Esse processo deve ser 
contínuo, e todos devem estar disponíveis para acompanhá-lo e dar o devido suporte. O 
mais importante nesse tópico é se atentar para construir algo com os recursos atuais, sem 
esgotá-los e multiplicando-os para usos futuros. 
Princípio 9: revisão 
“A contínua atenção à excelência técnica e ao bom design aumenta a agilidade. “A revisão 
constante dos requisitos técnicos como também do design permite a entrega de uma 
solução realmente alinhada aos objetivos de negócio do cliente, dispensando grandes 
mudanças no momento da entrega final. 
Princípio 10: simplicidade 
“Simplicidade é a arte de maximizar a quantidade de trabalho que não precisou ser feito”. 
Menos é mais! Como os métodoságeis dispensam boa parte de registros e outros 
documentos que comprometem o tempo da equipe, o trabalho se torna mais simples de ser 
executado. Sendo, portanto, concluído em menos tempo. Assim se garante o time do 
Market do cliente. 
https://www.projectbuilder.com.br/blog-pb/entry/conhecimentos/quais-sao-os-principais-tipos-de-metodos-ageis
Princípio 11: organização 
“As melhores arquiteturas, os requisitos e os designs emergem de times auto organizáveis. 
“Times ágeis são compostos por profissionais com a capacidade de se organizarem por si 
mesmos. Ou seja, de dividirem as tarefas e responsabilidades entre eles, sem que um 
gerente de projetos tenha que interferir. 
Princípio 12: autoavaliação 
“Em intervalos regulares, o time reflete em como ficar mais efetivo, então, se ajustam e 
otimizam seu comportamento de acordo. “Na prática, esse princípio consiste na revisão do 
trabalho realizada que, ao final de cada sprint, permite que a própria equipe avalie sua 
performance e descubra formas mais interessantes de trabalhar e agilizar todo o processo. 
A continuidade do Manifesto Ágil 
Por fim, o manifesto representou um grito de liberdade de práticas que atravancam o 
processo. No momento, era sabido que, embora dificilmente a essência (valores e 
princípios) mudasse, era necessário ter uma organização que prezasse por seu contínuo 
aperfeiçoamento e que o representasse. assim com esse propósito, no final do mesmo ano 
(2001), surgiu a Agile Alliance. A organização sem fins lucrativos se tornou responsável por 
compartilhar esse conhecimento e promover debates sobre os diversos métodos ágeis 
existentes no mundo. A discussão, bem como a própria organização, é fundamental, pois o 
Agile é como um guarda-chuva, que abarca vários métodos que se assentam sobre seus 
princípios e valores. Assim, essa contínua discussão ajuda a criar um norte para que os 
desenvolvedores de softwares saibam escolher os melhores métodos ou ferramentas. E 
você, já desenvolve essas práticas na sua empresa? Como vem percebendo os resultados? 
Se gostou desse artigo, aproveite para compartilhá-lo em suas redes sociais!

Outros materiais