Escolar Documentos
Profissional Documentos
Cultura Documentos
E
METODOLOGIA ÁGIL DE
DESENVOLVIMENTO DE
SOFTWARE
Prof. Luciano José Savio
ONDE ATUA A
ENGENHARIA
DE SOFTWARE
MODELOS DE
PROCESSO DE
SOFTWARE E
ATIVIDADES DE
SOFTWARE
Ao longo do tempo
a forma de se
construir softwares
evoluiu...
▶ Softwares da Primeira era –
1950 🡪 1965
▶ Software era customizado
▶ Software era personalizado
▶ Software era processado offline
(em batch)
▶ Sem documentação
específica
EVOLUÇÃO NA CONSTRUÇÃO DE
SOFTWARES
▶ Softwares da Segunda era –
1965 🡪 1975
▶ Software Multiusuário
▶ Operação em tempo real
▶ Conexão com banco de
dados
▶ Profissionalização da
construção do software –
software houses
EVOLUÇÃO NA CONSTRUÇÃO DE
SOFTWARES
▶ Softwares da Terceira era – 1975 🡪 1985
▶ Sistemas distribuídos
▶ Inteligência Artificial
▶ Redução do custo de hardware
EVOLUÇÃO NA
CONSTRUÇÃO DE
SOFTWARES
▶ Softwares da Quarta era – 1985 🡪 1990
▶ Sistemas Especialistas
▶ Redes Neurais Artificiais
▶ Computação paralela
EVOLUÇÃO NA CONSTRUÇÃO DE
SOFTWARES
▶ Softwares da Quinta era – 1990…
▶ Conectividade
▶ Ambientes Virtuais
▶ Cloud computing
▶ IoT
▶ Evolução tecnológica
EVOLUÇÃO NA CONSTRUÇÃO DE
SOFTWARES
▶ São programas de “computador”
... e mais que isso...
…Também faz parte toda a
documentação associada ao seu
desenvolvimento e uso.
https://www.youtube.com/watch?v=wdU9L3DqU2w
▶ Área que se preocupa com todos
os aspectos da produção do
software.
▶ Principais atividades da
engenharia de software
▶ Especificação
▶ Desenvolvimento
▶ Validação
▶ Evolução
Conjunto de atividades que levam São consideradas atividades
à produção de um software essenciais
Pode ser desenvolvido totalmente Especificação
Pode ser estendido a partir de um software já Projeto
existente Implementação
Pode ser composto por componentes pré- Validação
existentes (bibliotecas de código)
Evolução
PROCESSO DE SOFTWARE
MODELOS DE PROCESSO DE
SOFTWARE
REQUISITOS / funcionamento.
DE
REQUISITOS
• Engenharia de requisitos (Requirements engineering):
processo de descobrir, analisar documentos, verificar e
validar esses serviços e restrições.
NÍVEIS DE REQUISITOS
• Nível de requisito varia:
• Declaração abstrata (alto nível) → requisito do usuário
• Definição detalhada (baixo nível) → requisito de sistema
NÍVEIS DE REQUISITOS
• Requisito de usuário:
• Linguagem natural (podendo ter
diagramas)
• Quais serviços o sistema deverá
fornecer a seus usuários • Requisito de sistema:
• Quais restrições com as quais o • Costuma ser chamado de
sistema deverá operar “especificação de requisitos”
• Deve definir exatamente o que
dever ser implementado
• Pode ser parte do contrato entre
comprador/desenvolvedor
NÍVEIS DE REQUISITOS: exemplo
TIPOS DE REQUISITOS
Requisitos
Requisitos
não
funcionais
funcionas
TIPOS DE REQUISITOS
• Requisitos funcionais:
Requisito organizacional
Usuários do sistema MHC-PMS devem se autenticar com seus cartões de
identificação da autoridade da saúde.
Requisito externo
O sistema deve implementar as disposições de privacidade dos pacientes, tal
como estabelecido Hstan-03-2006-priv.
DOCUMENTOS DE REQUISITOS
Depois de finalizada etapa de levantamento de
requisitos temos o documento
Especificação de requisitos do Sistema
MODELAGEM DE
SOFTWARE
Análise de Requisitos
ANÁLISE DE REQUISITOS
ABORDAGEM TRADICIONAL
Trata-se de um documento
Documento muito Documento “sem
oficial do processo de
importante... utilidade”
especificação do software
• Consta “o quê” os • Em software houses ou • Metodologia ágeis de
desenvolvedores devem fábricas de software, desenvolvimento
implementar empresas especializadas
• Não consta “como” os em construir software
desenvolvedores os
devem implementar
O ANALISTA DE REQUISITOS
• Profissional responsável por construir a
especificação de requisitos do sistema
• Não necessariamente deve ser um
profundo conhecedor de tecnologia
• Habilidades interpessoais são essenciais
• Habilidades comunicativas
• “Fino trato” com outras pessoas
• Perspicácia investigativa
• Saber “como” obter respostas
• Psicologia comportamental
• Entender o comportamento dos usuários
•Validar se suas necessidades estão
Clientes contempladas
DOCUMENTO
É UTILIZADO?
•Testam o software com base nas
Testadores necessidades (requisitos) do cliente
É realmente
necessário??
Classificação
Especificação e organização
de requisitos de requisitos
Priorização de
requisitos
ELICITAÇÃO DE REQUISITOS
OBTENDO INFORMAÇÕES
Validação Verificação
Checa se os requisitos representam o Checa se os requisitos estão
sistema corretamente. representados corretamente.
• Esta funcionalidade do sistema atende • Esta funcionalidade do sistema está
ao que o cliente deseja? definida corretamente?
Um caso de uso sempre
deve estar associado a
um ator.
(Erro de verificação)
Quem registra o
paciente não é o
médico!!
(Erro de Validação)
PROBLEMAS COMUNS
• Validade/Corretude
• A função era exatamente aquela?
• Consistência
• Diferentes requisitos em conflito.
• Completude
• Todos os requisitos estão contemplados?
• Realismo
• Os requisitos são passíveis de serem implementados?
• Testabilidade
• Os requisitos podem ser validados no sistema assim que implementado?
TÉCNICAS DE VERIFICAÇÃO
E DE VALIDAÇÃO (V&V)
• Revisão
• Revisar os requisitos periodicamente em busca de erros.
• Prototipação
• Uma implementação simplificada do modelo é demonstrada para os usuários,
a fim de validar se atende às suas necessidades.
• Projeto casos de testes
• Adiantar projetos de casos (situações) de testes .
O GERENCIAMENTO DE
REQUISITOS
• Em função das mudanças de requisitos (principalmente em
ambientes muito dinâmicos) o gerenciamento destas
mudanças é vital para a construção adequada do sistema.
• Exemplos de mudanças
• Evolução de hardware
• Integração com outros sistemas
• Legislação
• Prioridade nos negócios
• Conflitos entre cliente e usuários
• Conflitos entre usuários
MATRIZ DE RASTREABILIDADE
DE REQUISITOS
• Consiste em uma matriz onde são registrados todos os requisitos e os
documentos que estão associados a estes de acordo com as etapas em
que o requisito foi submetido.
• Pode conter em uma matriz
• Descrição do Requisito
• Estado do Requisito: finalizado, aprovado, em construção...
• Documento de projeto
• Documento de código Principais
• Documento de testes informações
• Documento de manual de usuário
GERENCIAMENTO
DE REQUISITOS
Com este
gerenciamento é
possível uma evolução
dos requisitos
GERENCIAMENTO DA MUDANÇA
DE REQUISITOS
• As mudanças nos requisitos durante o projeto vão acontecer... Temos que
estar preparados para elas!!
Modelagem de
Software
Metodologias ágeis
Evolução na construção de Software e a
Crise do Software
• 1960 / 1970: Crise do
O bicho software
• Problemas com orçamento
• Problemas com prazo
pegou! • Problemas com qualidade
• Problemas com requisitos
• Problemas com manutenção
• ...
• Motivo???
• Para solucionar os problemas necessitava-se
• Sistematizar a construção de software...
• Acompanhamento adequado
• Atendimento aos requisitos iniciais
• Métodos formais e adequados
Solução para • Garantia de qualidade
• O termo engenharia em outras áreas
a crise do tecnológicas cumpre papel de sistematizar
software • Então por que não utilizar o termo engenharia de
software
tradicional software
Processo de desenvolvimento
bastante austero e com muito
controle
• Necessário para solucionar os
problemas enfrentados na crise do
software
• Por que de um modelo de desenvolvimento
de software austero e controlado
Engenharia • Gastava-se muito na produção do software
• Estourava-se o tempo com frequência
de software • Não se tinha controle de qualidade
tradicional • As necessidades dos usuários (requisitos) nem
sempre eram atendidos adequadamente
Vamos
arrumar esta
bagunça!!!
• Atendeu muito bem às demandas para os
anos de 1980 a 1990
• Softwares grandes e muitas vezes críticos eram
desenvolvidos
• Sistemas bancários
Engenharia • Sistemas aeroespaciais
• Sistemas de governo (civil e militar)
de Software • Sistemas com vida longa
• Necessitando de manutenção adequada
Tradicional • Empresas bem estruturadas tecnologicamente
utilizavam a engenharia de software tradicional
• Grandes equipes trabalhando no
desenvolvimento de sistemas
• Geograficamente distantes
• Longo tempo de desenvolvimento
Vosmecê por
obséquio teria
intenção em
Aí Gata...
pegar uma afresca
Vamos dar um
ao jardim??
rolê??
Desenvolvimento
E a tecnologia??? (e o software??)
de software ágil • Exigência de softwares com ciclo de vida mais curto
• Utilizados por pouco tempo e renovados em seguida
• O mercado também muda muito rápido, e o software deve acompanhar
esta mudança.
• Softwares menores (mais fragmentados e especializados)
• Maior rapidez no desenvolvimento de software (e produtos como um
todo)
• Tempo passa a ter importância crucial
• Inclusive mais importante que a qualidade em muitos casos
Metodologia de Desenvolvimento Ágil
https://www.youtube.com/watch?v=HdE8S2ALvWI
• O desenvolvimento de software tradicional
consegue se enquadrar neste cenário??
• As mudanças não acontecem de uma hora para
Desenvolvimento outra
• Há um grande mercado para o desenvolvimento
de software ágil de software tradicional
• Softwares corporativos
• De longa duração
• Softwares críticos
• Requisitos instáveis
• Durante o processo de desenvolvimento os
requisitos mudam
• Definir todos os requisitos antes de começar o
desenvolvimento pode acarretar em um
software desatualizado ao ser entregue ao
usuário
Desenvolvimento • Empresas menores passam a utilizar mais e mais
de software ágil softwares
• O modelo tradicional de desenvolvimento de
software dispende muito tempo planejando e pouco
tempo desenvolvendo.
• E isto não se adequa mais a este novo cenário
mais dinâmico.
• Ao final da década de 90 começam a ser propostos
os modelos ágeis de desenvolvimento
2001... O “Manifesto Ágil”
PRINCÍPIOS DESCRIÇÃO
Envolvimento do cliente Os clientes devem estar intimamente envolvidos no processo de desenvolvimento. Seu papel é fornecer e
priorizar novos requisitos do sistema e avaliar suas iterações.
Entrega incremental O software é desenvolvido em incrementos com o cliente, especificando os requisitos para serem
incluídos em cada um
Pessoas, não processos As habilidades da equipe de desenvolvimento devem ser reconhecidas e exploradas. Membros da equipe
devem desenvolver suas próprias maneiras de trabalhar, sem processos prescritivos.
Aceitar as mudanças Deve-se ter em mente que os requisitos do sistema vão mudar. Por isso, projete o sistema de maneira a
acomodar essas mudanças.
Manter a simplicidade Focalize a simplicidade, tanto do software a ser desenvolvido quanto do processo de desenvolvimento.
Sempre que possível, trabalhe ativamente para eliminar a complexidade do sistema.
• Usuário (cliente) é mais envolvido no
desenvolvimento
• Requer mais tempo e dedicação
• Todas as partes interessadas devem estar
representadas
• Todos os usuários devem participar ativamente
Limitações e
• Membros da equipe não se adequando ao
barreiras novo método de trabalho
• Ter o usuário próximo do desenvolvimento
• Organizações muito baseadas em processos
podem ter dificuldade com esta nova cultura
de desenvolvimento.
• Dificuldades em priorizar mudanças
• Especialmente quando existem muitas partes
envolvidas
• Ciclo de desenvolvimento de
software com XP
• Foca mais nas atividades
sob o ponto de vista
técnico
• Ex.: Como realizar o
levantamento de
requisitos junto ao
usuário
XP
Ciclo de desenvolvimento de software
Ciclo
XP
Ciclo de desenvolvimento de software
• Planejamento do release
• É traçado um plano para o
desenvolvimento das
tarefas a fim de
contemplar as
necessidades daquele
release
Ciclo
XP
Ciclo de desenvolvimento de software
• Desenvolvimento
• Desenvolve-se de acordo
com o que foi planejado
• Integração
• Integra-se com os demais
releases já desenvolvidos
• Teste
• Realiza-se os testes
necessários para aquele Ciclo
release
XP
Ciclo de desenvolvimento de software
• Liberar Software
• O software é liberado
para avaliação
Ciclo
XP
Ciclo de desenvolvimento de software
• Avaliação do software
• O software é avaliado
pelos usuários
Ciclo
XP
Ciclo de desenvolvimento de software
• Seleciona-se outra“parte” do
software para ser
desenvolvido naquele novo
release, dando continuidade
ao ciclo de desenvolvimento
do software
Ciclo
Práticas utilizadas no XP
Várias destas práticas estão em conformidade com os princípios gerais do desenvolvimento ágil
PRÁTICA DESCRIÇÃO
Planejamento incremental Os requisitos são gravados em cartões de história e as histórias que serão incluídas em um
release são determinadas pelo tempo disponível e sua relativa prioridade. Os
desenvolvedores dividem essas histórias em ‘Tarefas’. Veja os quadros 3.1 e 3.2
Pequenos releases Em primeiro lugar, desenvolve-se um conjunto mínimo de funcionalidades úteis, que
fornecem o valor do negócio. Releases do sistema são frequentes e gradualmente
adicionam funcionalidade ao primeiro release
Projeto simples Cada projeto é realizado para atender às necessidades atuais, e nada mais
Desenvolvimento test-first Um framework de testes iniciais automatizados é usado para escrever os testes para uma
nova funcionalidade antes que a funcionalidade em si seja implementada
Práticas utilizadas no XP
Várias destas práticas estão em conformidade com os princípios gerais do desenvolvimento ágil
PRÁTICA DESCRIÇÃO
Refatoração Todos os desenvolvedores devem refatorar o código continuamente assim que encontrarem melhorias de
código. Isso mantém o código simples e manutenível
Programação em pares Os desenvolvedores trabalham em pares, verificando o trabalho dos outros e prestando apoio para um bom
trabalho sempre.
Propriedade coletiva Os pares de desenvolvedores trabalham em todas as áreas do sistema, de modo que não se desenvolvam ilhas
de expertise. Todos os conhecimentos e todos os desenvolvedores assumem responsabilidade por todo o
código. Qualquer um pode mudar qualquer coisa
Integração contínua Assim que o trabalho em uma tarefa é concluído, ele é integrado ao sistema como um todo. Após essa
integração, todos os testes de unidade do sistema devem passar
Práticas utilizadas no XP
Várias destas práticas estão em conformidade com os princípios gerais do desenvolvimento ágil
PRÁTICA DESCRIÇÃO
Ritmo sustentável Grandes quantidades de horas-extra não são consideradas aceitáveis, pois o
resultado final, muitas vezes, é a redução da qualidade do código e da
produtividade a médio prazo.
Cliente no local Um representante do usuário final do sistema (o cliente) deve estar disponível
todo o tempo à equipe de XP. Em um processo de Extreme Programming, o
cliente é um membro da equipe de desenvolvimento e é responsável por levar a
ela os requisitos de sistema para implementação.
Exemplo de uma estória
Kate é uma médica que deseja prescrever medicamentos para um paciente de uma clínica. O prontuário do paciente já
está sendo exibido em seu computador, assim, ela clica o campo ‘medicação’ e pode selecionar ‘medicação atual’,
‘nova medicação’, ou ‘formulário’.
Se ela selecionar ‘medicação atual’, o sistema pede que ela verifique a dose. Se ela quiser mudar a dose, ela altera esta
e em seguida, confirma a prescrição.
Se ela escolher ‘nova medicação’, o sistema assume que ela sabe qual medicação receitar.
Ela digita as primeiras letras do nome do medicamento. O sistema exibe uma lista de possíveis fármacos que começam
com essas letras. Ela escolhe a medicação requerida e o sistema responde, pedindo-lhe para verificar se o
medicamento selecionado está correto.
Ela insere a dose e, em seguida, confirma a prescrição.
Se ela escolhe ‘formulário’, o sistema exibe uma caixa de busca para o formulário aprovado.
Ela pode, então, procurar pelo medicamento requerido. Ela seleciona um medicamento e é solicitado que verifique se
a medicação está correta. Ela insere a dose e, em seguida, confirma a prescrição.
O sistema sempre verifica se a dose está dentro da faixa permitida. Caso não esteja, Kate é convidada a alterar a dose.
Após Kate confirmar a prescrição, esta será exibida para verificação. Ela pode escolher ‘OK’ ou ‘Alterar’. Se clicar em
‘OK’, a prescrição fica gravada nos bancos de dados da auditoria.
Planejamento do
desenvolvimento da
estória
Desenvolvimento
Ágil
Scrum
• Vantagens do uso do Scrum segundo Rising e
Janoff (2000)
• O produto é decomposto em um conjunto de
partes gerenciáveis e compreensíveis.
• Requisitos instáveis não atrasam o progresso.
Desenvolvimento • Toda a equipe tem visão de tudo, e,
consequentemente, a comunicação da equipe é
Ágil melhorada.
Scrum • Os clientes acompanham a entrega de
incrementos dentro do prazo e recebem
feedback sobre como o produto funciona.
• Estabelece-se confiança entre clientes e
desenvolvedores e cria-se uma cultura positiva,
na qual todo mundo espera que o projeto tenha
êxito.
Scrum https://cysneiros.com.br/metodologias-ageis-produtividade-empresa/
Quando aplicar uma
metodologia ágil
• Geralmente é indicado para
• Produtos novos
• Produtos de pequeno/médio porte
• O cliente está disposto a participar
ativamente do desenvolvimento
• Não há muita dependência de
elementos externos (leis, regras,
regulamentos) que afetam o
desenvolvimento do software
• Equipes pequenas e integradas
Quando uma metodologia ágil
não é indicada
• Sistemas de grande porte
• Sistemas críticos, onde uma análise completa do problema
é necessária
• Equipes grandes ou distribuídas geograficamente
• Manutenção e/ou extensão de software
• O cliente não pode estar muito envolvido com o
desenvolvimento
• Passa a especificação e recebe o produto
• Depende de regulamentações externas que não mudam
com frequência (requisitos estáveis)
Quando uma metodologia ágil
não é indicada
• Sistemas de grande porte
• Não é possível focar apenas no código do software, o projeto,
planejamento do todo é essencial.
• A arquitetura do software todo deve ser pensada antes
(software complexo)
• Aspectos críticos do sistema devem ser documentados
• Definir esquemas de banco de dados
• Definir conexão com outros sistemas
• Descrever a divisão do trabalho em equipe
• Estes indicativos não são elementos que impossibilitam a
aplicação de métodos ágeis
• Há relatos de sucesso na utilização destes métodos em
sistemas com as características apontadas acima
• Geralmente adaptações e ajustes devem ser aplicados
em cada caso.
Sommerville, Ian. Engenharia de
Software. 10ª Edição. Pearson.
https://plataforma.bvirtual.com.br
/Acervo/Publicacao/168127
Capítulo 3
Capítulo 4