Escolar Documentos
Profissional Documentos
Cultura Documentos
Software
Engineering: A Practiotioner’s
Approach. Editora: McGraw-Hill.
Sommerville, Ian. Software
Engineering. Editora: Addison Wesley.
Modelos de Ciclo de Vida, Métodos Ágeis, Ferramentas CASE
Fernando Pedrosa – fpedrosa@gmail.com
Engenharia de Sistemas é algo maior: [61] A engenharia de software está relacionada com todos os
aspectos da produção de software, desde os estágios iniciais de
preocupa-se com todos os aspectos de especificação do sistema até sua manutenção, depois que este
sistemas baseados em computador entrar em operação. A engenharia de sistemas diz respeito aos
aspectos do desenvolvimento e da evolução de sistemas complexos,
◦ Software nos quais o software desempenha um papel importante.
◦ Hardware
◦ Processos
◦ Pessoas e outros sistemas, etc.
Engenharia de Software é apenas parte
deste processo
1
(IBGE – CONSULPLAN 2009) D) Métodos envolvem um amplo conjunto de tarefas que incluem:
[12] Segundo Pressman (1995), Engenharia de Software é o estabelecimento e planejamento e estimativa de projeto, análise de requisitos de software e
sistemas, projeto de estrutura de dados, arquitetura de programa e
uso de sólidos princípios de engenharia para que se possa obter
algoritmo de processamento, codificação, teste e manutenção.
economicamente um software que seja confiável e que funcione
E) Ferramentas são roteiros para o desenvolvimento de software
eficientemente em máquinas reais, abrangendo um conjunto de três elementos
fundamentais (métodos, ferramentas e procedimentos).
2
Software Processo
Uma série conectada de ações, com a
Programa de computador e
documentação associada intenção de satisfazer um objetivo
Define quem está fazendo o quê,
Produtos de software podem ser
desenvolvidos para um cliente quando e como para atingir um certo
particular ou podem ser desenvolvidos objetivo
para um mercado geral
Processo
Novos softwares podem ser criados Entrada (atividades e sub- Saída
processos)
desenvolvendo-se novos programas
ou reusando softwares existentes
Fernando Pedrosa Lopes 13 Fernando Pedrosa Lopes 14
Processo de Software
Um conjunto estruturado de
atividades para desenvolver um
sistema de software
◦ Especificação
◦ Projeto
◦ Validação
◦ Evolução
3
Modelo “Clássico”, teve origem na Comunicação
indústria de manufatura e construção - Iniciação do projeto
Sua estrutura é composta por várias - Levantamento de Requisitos
Planejamento
- Entrega
- Manutenção
- Feedback
de projeto
(INMETRO - CESPE 2009)
[85] Em um processo de desenvolvimento em cascata, os testes de
software são realizados todos em um mesmo estágio, que acontece
Data (deadline) de
entrega original após a finalização da fase de implementação.
Cronograma do Projeto
4
[86] Em uma empresa que tenha adotado um processo de
desenvolvimento de software em cascata, falhas no levantamento de
Planejamento
requisitos têm maior possibilidade de gerar grandes prejuízos do ◦ Esboçar escopo e requisitos
que naquelas que tenham adotado desenvolvimento evolucionário.
◦ Fazer estimativas razoáveis sobre
recursos, custos e prazos
(SAD/PE - CESPE 2010 - adaptada)
[58] O gerente geral de projetos da empresa decidiu, junto a um
cliente, realizar algumas modificações nos requisitos de um produto Análise e Especificação de Requisitos
de software que já se encontrava na fase de testes e comprometeu-
se a incluir tais requisitos na próxima liberação do produto. Essa
◦ Refinar requisitos e escopo
decisão permite inferir que o modelo de desenvolvimento de ◦ Entender o domínio do problema, com
software empregado não é do tipo cascata.
comportamento e funcionalidades
esperados
Projeto Testes
Incorporar requisitos tecnológicos aos ◦ Realizar diversos níveis de teste, de forma
requisitos essenciais do sistema a fazer a verificação do software.
Projetar a arquitetura do sistema
Implantação, Operação e Manutenção
Implementação ◦ Colocar o software em produção
Traduzir o projeto em uma forma passível ◦ Treinar pessoas
de execução pela máquina ◦ Manter o software
Codificação ◦ Gerenciar os serviços
5
Assim como na prototipagem É útil para sistemas grandes e
evolucionária, pequenas versões complicados, e quando o cliente não
prototípicas são disponibilizadas ao sabe exatamente o que quer
clientes para avaliação Protótipos descartáveis podem ser
Porém, o objetivo aqui é entender e aplicados no contexto de qualquer
clarificar os requisitos do sistema modelo de processo
Deve-se começar com os requisitos ◦ Cascata
mais difíceis e menos compreendidos ◦ Espiral
Ao final, descarta-se o protótipo e a
◦ Iterativo/Incremental, etc.
implementação do software continua
Fernando Pedrosa Lopes 31 Fernando Pedrosa Lopes 32
6
(SERPRO – CESPE 2008)
[65] Para a especificação de software e verificação de sistemas, uma
Motivação: requisitos de sistema
alternativa que se fundamenta na matemática discreta e na lógica é sempre evoluem durante o projeto
o modelo incremental.
Deve-se dividir para conquistar
Duas abordagens
◦ Desenvolvimento Incremental
◦ Desenvolvimento Espiral
7
Desenvolvimento em Espiral
Perfil do projeto O processo é representado como uma
espiral em vez de uma seqüência de
Tradicional
Perfil do projeto
Iterativo atividades
Desenvolvimento
Falha tardia
fase no processo
de projeto
8
(SAD/PE - CESPE 2010 - adaptada)
[58] Imediatamente após ter testado um protótipo evolucionário, um
dos colegas da empresa iniciou a produção de uma lista de riscos
aos quais o projeto está sujeito. Dessa forma, a empresa não utiliza
um modelo de ciclo de vida embasado no espiral.
9
Métodos ágeis, hoje, são considerados Surgimento
uma “família” Em meados de 1990, Kent Beck,
• eXtreme Programming procurou formas mais simples e
• Scrum eficientes de desenvolver Software.
• FDD Em Março de 1996, ele iniciou um
• Lean Software Development projeto com novos conceitos que
• Crystal Family
resultaram na metodologia XP -
• (...)
eXtreme Programming
“Trata-se de uma metodologia ágil para Levar todas as boas práticas ao extremo
equipes pequenas e médias desenvolvendo ◦ Se revisar código é bom, vamos revisá-lo toda
software com requisitos vagos e em hora (pair programming )
constante mudança” – Kent Beck ◦ Se testar é bom, vamos testar toda hora (testes
funcionais)
◦ Se projetar é bom, vamos fazer disso parte do
trabalho diário de cada pessoa (refactoring )
◦ Se integrar é bom, vamos integrar a maior
quantidade de vezes possível (integração
contínua)
◦ Se simplicidade é bom, vamos deixar o sistema
na forma mais simples possível (projeto simples)
Metáfora Refatoração
◦ Uma história que todos – programadores, clientes ◦ O código deve ser constantemente melhorado,
e gerentes – podem contar acerca de como tornando-o mais simples e mais genérico,
funciona o sistema removendo redundâncias e duplicidades
◦ Facilita a comunicação entre os interessados Programação em pares
Projeto simples ◦ Os programadores trabalham em pares, checando
◦ O código está, a qualquer momento, na forma (validando) mutuamente o trabalho feito
mais simples que passe todos os testes ◦ Mesma máquina, mesmo mouse, mesmo monitor
Pequenas versões Propriedade coletiva do código
◦ As entregas são feitas através de pequenos ◦ Todos são responsáveis por todo o código e
releases (pedaços) de software funcionando qualquer pessoa está autorizada a realizar
◦ Dá confiança ao cliente sobre o progresso geral mudanças nele
10
Padrão de codificação Desenvolvimento Orientado a Testes
◦ Todo código é desenvolvido de acordo com um ◦ Uma estrutura de testes unitários automatizada é
estilo e formato consistentes (padrão) criada e os testes são escritos antes mesmo das
Ritmo sustentável funcionalidades serem implementadas
◦ Cada programador trabalha 40 horas por semana, Integração Contínua
no máximo ◦ Os diversos módulos do software são integrados o
Reuniões em pé mais cedo possível, para evitar problemas de
◦ Reuniões rápidas e diárias com a equipe, para integração no futuro
discutir apenas o essencial Planejamento Incremental
Cliente sempre presente ◦ Requisitos são registrados como Estórias dos
◦ O cliente, com conhecimento sobre o negócio, deve Usuários e priorizados para serem incluídos em
estar disponível em tempo integral para a equipe uma determinada iteração
11
O nome é derivado de uma atividade que As equipes se auto-organizam para
acontece em um jogo de Rugby maximizar a comunicação e diminuir a
supervisão
É um framework de processo dentro do
qual podem ser empregados processos e O produto evolui em uma série de “sprints”
técnicas variadas Os requisitos (funcionalidades dos clientes)
são listados em um “product backlog”
É possível adicionar papeis, artefatos, atividades
e “cerimônias” de acordo com a sua necessidade Não há prática de engenharia prescrita
(Scrum se adapta a todas elas)
Scrum pode ser aplicado em qualquer
Scrum é um processo essencialmente
contexto no qual um grupo de pessoas gerencial
trabalhe junto para atingir algum objetivo
Sprint
do produto
peso (prioridade) de acordo com a
Backlog 2-4 Semanas vontade do cliente
É replanejado (repriorizado) no início
de cada Sprint
12
Team Scrum Master
Contém tipicamente entre 5 e 9 pessoas Responsável pela aplicação dos
Multi-funcional valores e práticas Scrum
◦ Programadores, testadores, desenvolvedores Remove obstáculos, facilita resultados
de interfaces, etc.
Garante a plena funcionalidade e
Dedicação integral
◦ Raras Exceções (ex: DBA)
produtividade da equipe
Escudo para interferência externas
Auto-organizável (sem títulos)
Trocas só na mudança de Sprints
13
(TRE/BA - CESPE 2010)
[68] Um princípio chave do Scrum é o reconhecimento de que
Início: Jeff de Luca e Peter Coad em 1997
desafios fundamentalmente empíricos não podem ser resolvidos – projeto para um banco de Singapura
A FDD é focada na entrega regular de
com sucesso utilizando-se uma abordagem tradicional de controle.
O Scrum adota uma abordagem empírica, aceitando que o problema
não pode ser totalmente entendido ou definido, focando na funcionalidades valiosas para o cliente
maximização da habilidade da equipe de responder de forma ágil
Tem mais estrutura do que o XP
aos desafios emergentes.
◦ As equipes podem variar de 10 a 250
[101] A metodologia Scrum é facilitada por um scrum master, que programadores (aproximadamente)
atua como um mediador entre a equipe e qualquer influência
desestabilizadora, além de assegurar que a equipe esteja Porém é mais enxuto do que o RUP
utilizando corretamente as práticas de Scrum, motivando e ◦ Não necessita de tanta documentação, nem é
mantendo o foco na meta da sprint.
tão detalhado
Papéis Papéis
Project Manager Development Manager
Papéis Entendimento
Funcionalidades
que podem ser
Quem implementará
do domínio e a funcionalidade?
Class Owners
implementadas
estabelecimento Qual é a sequência
em até 2 semanas
do escopo de implementação?
◦ São os desenvolvedores individuais
◦ Projetam, codificam, testam e documentam
as funcionalidades
Domain Experts
◦ Usuários, clientes, patrocinadores, etc.
◦ A base de conhecimento para os
desenvolvedores
Projeto e Codificação (tarefas
de engenharia)
Fernando Pedrosa Lopes 83 Fernando Pedrosa Lopes 84
14
(DPE/SP - FCC 2010) (TRF4 - FCC 2010)
[64] Na engenharia de software, um processo iterativo denominado [61] A Feature Driven Development (FDD) é uma metodologia ágil de
sprint, que segue o ciclo PDCA para entregar, num período de 30 desenvolvimento de software, sobre a qual é correto afirmar:
dias aproximadamente, um incremento do software pronto,
caracteriza a metodologia ágil a) Não pode ser combinada a outras técnicas para a produção de
sistemas.
(A) SCRUM. b) Possui cinco processos: Desenvolver um Modelo Abrangente,
(B) DSDM. Construir a Lista de Funcionalidades, Planejar por Funcionalidade,
(C) Crystal. Detalhar por Funcionalidade e Implementar por Funcionalidade.
(D) FDD. c) Divide os papéis em dois grupos: papéis chave e papéis de apoio.
(E) XP. Dentro de cada categoria, os papéis são atribuídos a um único
participante que assume a responsabilidade pelo papel.
d) Mantém seu foco apenas na fase de modelagem.
e) Mantém seu foco apenas na fase de implementação.
(A) MDA
(B) XP
(C) FDD
(D) RUP
(E) MVC
15
Quais são os passos? Como são usadas?
◦ Ferramentas CASE são usadas em ◦ Como complemento às boas práticas de
conjunto com o modelo de processo Engenharia de Software. Ferramentas
adotado. Se for escolhida uma ferramenta CASE não substituem uma metodologia de
completa, pode passar por quase todos os desenvolvimento de software sólida
passos do desenvolvimento de SW
“Um tolo com ferramentas, ainda é apenas
um tolo”
16
Fernando Pedrosa Lopes 97
17