Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 5
Processo de Desenvolvimento de Software
l.bertholdo@ifsp.edu.br
Conteúdo
• Processo Unificado
• Processos Ágeis
• eXtreme Programming – XP
• Scrum
l.bertholdo@ifsp.edu.br
Processo Unificado
O Processo Unificado costuma ser chamado
• O Processo Unificado ou RUP de Processo Unificado da Rational (Rational
procura aproveitar os melhores Unified Process – RUP) em homenagem à
Rational Software Corporation
recursos e características dos (posteriormente adquirida pela IBM), uma
modelos tradicionais de processo, das primeiras colaboradoras para o
desenvolvimento e refinamento do Processo
usando alguns dos princípios do Unificado e desenvolvedora de ferramentas
desenvolvimento ágil de software. completas para dar suporte a este processo.
l.bertholdo@ifsp.edu.br
Processo Unificado
• Casos de Uso
• Um caso de uso é um modelo que descreve uma função ou recurso
de um sistema do ponto de vista do usuário. Ele serve de base para
criar um modelo de análise mais refinado posteriormente.
Diagrama de casos de uso para um sistema de almoxarifado
O caso de uso Solicitar Material inclui o
Ator
caso de uso Checar Estoque, porque
sempre que houver uma solicitação de
material haverá a consulta ao estoque
para saber se o material está disponível.
l.bertholdo@ifsp.edu.br
Processo Unificado
• Casos de Uso
• Um caso de uso também pode ser uma narrativa textual. Por exemplo,
uma breve descrição do caso de uso Solicitar Material, poderia ser:
l.bertholdo@ifsp.edu.br
Processo Unificado
• Histórico
• Nos anos 1990, os cientistas da computação James Rumbaugh, Grady
Booch e Ivar Jacobson começaram a trabalhar em um “método
unificado” que combinaria as melhores características de cada um de
seus métodos individuais de análise e projeto orientados a objetos.
• Também adotaram características propostas por outros especialistas
em modelagem orientada a objetos, o que resultou na linguagem de
modelagem unificada UML (Unified Modeling Language).
• A UML possui um conjunto de diagramas voltados para a modelagem e
o desenvolvimento de sistemas orientados a objetos, entre eles:
diagramas de casos de uso, de classes, de sequência, de atividades etc.
• Por volta de 1997, a UML tornou-se um padrão da indústria para o
desenvolvimento de software orientado a objetos.
l.bertholdo@ifsp.edu.br
Processo Unificado
• O Paradigma da Orientação a Objetos Bicicleta Mountain Bike
modelo XYZ
• Objetos do mundo real compartilham duas características:
• Estado: Características ou dados de um objeto. Por exemplo,
bicicletas têm velocidade e marchas.
• Comportamento: Procedimentos ou ações que podem ser
realizadas com o objeto. Por exemplo, bicicletas permitem ações
como pedalar, mudar marcha e frear.
• Objetos também pertencem a uma classe, ou seja, estão
associados a um determinado tipo de objeto. Por exemplo, o
objeto Mountain Bike modelo XYZ pertence à classe “bicicleta”.
Modelagem
(Diagrama de
Classes)
l.bertholdo@ifsp.edu.br
Processo Unificado
• Fase de Concepção
Inclui as atividades de comunicação e planejamento. Durante a
comunicação, os stakeholders (envolvidos) identificam as
necessidades de negócio, propõe-se um esboço de arquitetura
para o sistema e desenvolve-se um planejamento que contemple a
natureza iterativa e incremental do projeto. Requisitos de negócio
básicos e casos de uso preliminares são descritos, explicitando
quais recursos e funções cada categoria de usuário deseja.
l.bertholdo@ifsp.edu.br
Processo Unificado
• Fase de Construção
Nessa fase são desenvolvidos os componentes de
software, que tornarão os casos de uso funcionais
para os usuários. Os modelos iniciados na fase de
elaboração são concluídos, de modo a refletir a
versão final do incremento de software. Em
seguida, implementa-se o código-fonte, com todos
os recursos e funções exigidos para o incremento.
A fase de transição abrange os últimos estágios da fase É comum as fases de construção, transição
de construção e a primeira parte da fase de entrega. e produção serem conduzidas em paralelo
com o início do próximo incremento.
Entrega-se o software aos usuários para testes beta, que
relatam os defeitos e as mudanças necessárias. Além
disso, a equipe de software elabora manuais de usuário, Nem todas as tarefas do RUP são
guias rápidos, procedimentos de instalação, necessários conduzidas em todos os projetos. Cada
para o lançamento da versão. Na conclusão desta, o equipe adapta o processo (ações, tarefas e
incremento torna-se uma versão utilizável do software. artefatos) conforme suas necessidades.
l.bertholdo@ifsp.edu.br
Processos Ágeis
• Em 2001, o norte-americano Kent Beck e outros 16 renomados
desenvolvedores, autores e consultores da área de software
formaram um grupo batizado de Agile Alliance (Aliança dos Ágeis).
• Eles assinaram o Manifesto for Agile Software Development
(Manifesto para o Desenvolvimento Ágil de Software) contendo a
declaração abaixo.
• A ideia era admitir o valor dos itens à direita, porém valorizar mais
ainda aqueles à esquerda.
Ao desenvolver e ajudar outros a desenvolver software, descobrimos formas
melhores de desenvolvimento. Por meio deste trabalho, passamos a valorizar:
• Indivíduos e interações acima de processos e ferramentas.
• Software operacional acima de documentação completa.
• Colaboração dos clientes acima de negociação contratual.
• Respostas a mudanças acima de seguir um plano.
l.bertholdo@ifsp.edu.br
Processos Ágeis
• Na economia moderna, as condições de mercado mudam com rapidez
e as necessidades dos clientes se alteram sem aviso prévio.
• É preciso ser ágil para se adequar às mudanças, pois elas são caras,
particularmente se ocorrerem sem controle e forem mal gerenciadas.
l.bertholdo@ifsp.edu.br
Processos Ágeis
Nos processos de software convencionais, os custos de mudanças aumentam de forma não
linear. É fácil acomodar uma mudança no início de um projeto. Os custos são mínimos e o
tempo demandado pouco afetará o resultado do projeto. Mas, se uma mudança grande é
solicitada próximo do final do projeto, ela pode exigir alterações no projeto de arquitetura,
desenvolvimento de novos componentes, modificações em outros, novos testes etc.
l.bertholdo@ifsp.edu.br
Os 12 princípios para alcançar a agilidade, estabelecidos pela
Agile Alliance:
Processos Ágeis 1. A maior prioridade é satisfazer o cliente com entrega adiantada
e contínua de software funcionando.
2. Aceite bem os pedidos de alterações, mesmo com o
• Um processo ágil de software deve desenvolvimento adiantado. Os processos ágeis se aproveitam
das mudanças para a vantagem competitiva do cliente.
ser adaptável. Para isso, a equipe 3. Entregue software em funcionamento frequentemente, de
algumas semanas a alguns meses, dando preferência a
ágil deve fazer entregas incrementais intervalos mais curtos.
e receber feedback constante do 4. O pessoal do comercial e os desenvolvedores devem trabalhar
em conjunto diariamente ao longo de todo o projeto.
cliente, o que pode ser feito por 5. Construa projetos em torno de pessoas motivadas. Dê a elas o
meio de protótipos operacionais. ambiente e o apoio necessários e acredite que elas farão o
trabalho corretamente.
6. O método mais eficiente e efetivo de transmitir informações
• Os incrementos de software devem para e dentro de uma equipe de desenvolvimento é uma
conversa aberta, presencial.
ser entregues em curtos períodos de 7. Software em funcionamento é a principal medida de progresso.
tempo, para que as adaptações 8. Os processos ágeis promovem desenvolvimento sustentável.
Proponentes, desenvolvedores e usuários devem estar aptos a
acompanhem o ritmo das mudanças. manter um ritmo adequado e constante.
9. Atenção contínua para com a excelência técnica e para com
• Essa abordagem demanda do cliente bons projetos aumenta a agilidade.
10.Simplicidade: a arte de maximizar a quantidade de trabalho
avaliar os incrementos regularmente, que não precisou ser feito é essencial.
fornecer seu feedback e antecipar as 11.As melhores arquiteturas, requisitos e projetos surgem de
equipes auto-organizadas.
adaptações necessárias no processo. 12.Em intervalos regulares, a equipe se avalia para ver como pode
se tornar mais eficiente, então, sintoniza e ajusta seu
comportamento de acordo.
l.bertholdo@ifsp.edu.br
eXtreme Programming – XP
• eXtreme Programming (Programação Extrema) é a abordagem mais
amplamente utilizada para desenvolvimento ágil de software.
l.bertholdo@ifsp.edu.br
eXtreme Programming – XP
Planejamento: É iniciado com uma atividade de levantamento de requisitos. Esta atividade gera um
conjunto de “histórias de usuários” (similar aos casos de uso), que descrevem as funcionalidades
solicitadas. O cliente atribui prioridades às histórias. A equipe XP avalia, então, cada história e atribui
um custo (em semanas de desenvolvimento) a elas. Se a equipe estimar mais de três semanas de
desenvolvimento para a história, é solicitado ao cliente que ele a divida em histórias menores.
l.bertholdo@ifsp.edu.br
eXtreme Programming – XP
Projeto: Para projetar o software em um contexto orientado a objetos, são usados cartões CRC
(Classe-Responsabilidade-Colaboração), que identificam e organizam as classes relevantes
para o incremento de software. Se for encontrado um problema de projeto difícil, pode-se
implementar um protótipo operacional dessa parte do projeto, denominado solução pontual.
Este protótipo é então avaliado, reduzindo assim os riscos para a implementação verdadeira.
l.bertholdo@ifsp.edu.br
eXtreme Programming – XP
l.bertholdo@ifsp.edu.br
O nome Scrum está relacionado a uma atividade que ocorre
Scrum durante o jogo de rugby, onde o grupo de jogadores se juntam ao
redor da bola e trabalham juntos para mover a bola pelo campo.
l.bertholdo@ifsp.edu.br
Scrum
• Principais características:
• Após a seleção, a equipe começa a desenvolver o software.
Reuniões diárias rápidas, envolvendo todos os membros da
equipe, são realizadas para analisar os progressos e, se necessário,
repriorizar o trabalho.
l.bertholdo@ifsp.edu.br
Scrum
Ciclo de uma sprint
3
1 4
l.bertholdo@ifsp.edu.br
Referências
• PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de software: uma
abordagem profissional. 8. ed. Porto Alegre: AMGH, 2016.
l.bertholdo@ifsp.edu.br