Buscar

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 56 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 56 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 56 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

See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/264999748
Engenharia de Software
Article
CITATIONS
0
READS
9
1 author:
Some of the authors of this publication are also working on these related projects:
Apps Factory View project
Gabriel Lara Baptista
Faculdade de Tecnologia Termomecânica
6 PUBLICATIONS   3 CITATIONS   
SEE PROFILE
All content following this page was uploaded by Gabriel Lara Baptista on 07 October 2020.
The user has requested enhancement of the downloaded file.
https://www.researchgate.net/publication/264999748_Engenharia_de_Software?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_2&_esc=publicationCoverPdf
https://www.researchgate.net/publication/264999748_Engenharia_de_Software?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_3&_esc=publicationCoverPdf
https://www.researchgate.net/project/Apps-Factory?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_9&_esc=publicationCoverPdf
https://www.researchgate.net/?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_1&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Gabriel-Baptista?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_4&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Gabriel-Baptista?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_5&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Gabriel-Baptista?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_7&_esc=publicationCoverPdf
https://www.researchgate.net/profile/Gabriel-Baptista?enrichId=rgreq-c130c700c72b0ba481daeeb7e4a2a641-XXX&enrichSource=Y292ZXJQYWdlOzI2NDk5OTc0ODtBUzo5NDQxMjcwMTMzMTA0NjRAMTYwMjEwODgyOTIxMg%3D%3D&el=1_x_10&_esc=publicationCoverPdf
24/09/2018
1
Engenharia de Software
Este material pode ser apresentado para os cursos:
• Ciência da Computação
• Sistemas de Informação
• Tecnologia em Gestão da Tecnologia da Informação
• Tecnologia em Análise e Desenvolvimento de Sistemas
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Para começar!
• Horário – 19:15 às 23:00
• Intervalo – 20:50 às 21:15
• Avaliações:
(A1 + A2) / 2 >= 6
A1 = Turma => Prova + Trabalho
A2 = Integrada
Introdução a Engenharia de Software: Histórico, 
áreas de atuação, sistemas legados, importância e 
crise.
Aula 1
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Discussão Inicial
O que vocês entendem por Engenharia 
de Software?
Engenharia de Software - Professor Gabriel Baptista
Ementa do Curso
Estudo do papel da Engenharia de Software para 
determinação de um processo adequado de 
desenvolvimento. Conceituação da diferença entre 
produto e processo de software. Aspectos gerais das 
etapas do processo de desenvolvimento. Modelos de 
desenvolvimento: cascata, evolucionário, iterativos, 
engenharia baseada em componentes, processo 
unificado e metodologias ágeis.
Engenharia de Software - Professor Gabriel Baptista
Objetivos do Curso
Apresentar a Engenharia de Software, conceituando os 
modelos de processo existentes, de modo a permitir a 
identificação e determinação das atividades essenciais 
em um processo de desenvolvimento.
Engenharia de Software - Professor Gabriel Baptista
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
2
Conteúdo Programático
• Introdução sobre a Engenharia de Software
• Produto de software, processo de software e modelo de 
processo de software.
• Atividades essenciais no processo de desenvolvimento de 
software
• Modelos de desenvolvimento
• Melhores práticas para Engenharia de Software
• Processo Unificado 
• Metodologias Ágeis
• Métricas
• Modelagem de Processos
• Ferramentas CASE
• Desenvolvimento de Sistemas Críticos
Engenharia de Software - Professor Gabriel Baptista
Bibliografia
Engenharia de Software - Professor Gabriel Baptista
BIBLIOGRAFIA BÁSICA: 
Sommerville, Ian.: Engenharia de software / Ian Sommerville ; tradução de 
Maurício de Andrade ; revisão de Kechi Hirama. São Paulo Editora Addison 
Wesley 2003.
Pressman, Roger.: Engenharia de software / Roger Pressman ; tradução de José 
Carlos Barbosa dos Santos ; revisão técnica Paulo Cesar Masiero, José Carlos 
Maldonado, Rosely Sanches. São Paulo Makron Books 1995. 
BIBLIOGRAFIA COMPLEMENTAR:
Kruchten, Philippe.: Introdução ao RUP – Rational Unified Process; tradução de 
Deborah Rüdiger. Rio de Janeiro Editora Ciência Moderna Ltda., 2003.
Sommerville, Ian.: Engenharia de software / Ian Sommerville ; tradução de 
Selma Melnikoff, Reginaldo Arakaki e Edílson Barbosa; revisão de Kechi Hirama. 
São Paulo Editora Addison Wesley 2007.
E agora?
O que vocês imaginam que irá 
acontecer após esta disciplina?
Engenharia de Software - Professor Gabriel Baptista
Um pouco de História...
1972 e a Crise do Software:
O início:
- Desenvolvimento informal
- Necessidades pessoais
(Edsger Wybe Dijkstra)
Engenharia de Software - Professor Gabriel Baptista
... e começam as evoluções...
- Hardware potente
- Redes locais (cliente - servidor)
- Internet
- Dispositivos móveis 
Engenharia de Software - Professor Gabriel Baptista
... novos conceitos a serem 
aplicados!
- Software Houses
- Fábricas de Software
- Modelos de Processo
- Qualidade de Software
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
3
Para hoje:
- Termos software em todas as 
empresas e cada vez mais em todas as 
residências.
- Lidarmos com software o tempo 
inteiro
- Votarmos através de um software
- Lermos e estudamos com auxílio de 
software
Engenharia de Software - Professor Gabriel Baptista
Mas...
A CRISE DO 
SOFTWARE 
PERSISTE!
Engenharia de Software - Professor Gabriel Baptista
Algumas perguntas:
Vocês conhecem algum prédio construído 
sem planta?
Algum remédio sem fórmula?
Carro sem manual?
Engenharia de Software - Professor Gabriel Baptista
Algumas perguntas:
E software sem 
documentação?
Engenharia de Software - Professor Gabriel Baptista
Como resolver?
ENGENHARIA 
DE SOFTWARE
Engenharia de Software - Professor Gabriel Baptista
Mas afinal...
1. O que é software?
2. O que é Engenharia de Software?
3. Quais os desafios enfrentados pela Engenharia 
de Software?
4. Quais os atributos de um bom software?
5. O que são softwares legados?
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
4
O que é software?
- Programas de Computador
- Documentação
- Arquivos de Ajuda
- Instalação
Engenharia de Software - Professor Gabriel Baptista
O que é Engenharia de 
Software?
“Disciplina da engenharia que se ocupa de todos 
os aspectos da produção de software”
(SOMMERVILLE, 2003)
Engenharia de Software - Professor Gabriel Baptista
Quais os desafios enfrentados pela 
Engenharia de Software?
- Custo
- Qualidade
- Prazo
- Pessoas
- Funcionalidades
Engenharia de Software - Professor Gabriel Baptista
Atributos de um bom software:
- Funcional
- Fácil manutenção (Manutenibilidade)
- Confiável (Confiabilidade)
- Seguro
- Fácil uso (Usabilidade)
Engenharia de Software - Professor Gabriel Baptista
O que são softwares legados?
“Ossistemas legados são sistemas sociotécnicos 
baseados em computadores e que foram 
desenvolvidos no passado, freqüentemente 
usando tecnologias mais antigas e obsoletas.”
(SOMMERVILLE, 2008)
Engenharia de Software - Professor Gabriel Baptista
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
5
Definição e conceituação de software, sistema, produto de software, processo 
de software e modelo de processo de software.
Atividades essenciais no processo de desenvolvimento de software: 
Especificação, Desenvolvimento, Validação e Evolução.
Aula 2
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Revisando...
Engenharia de Software - Professor Gabriel Baptista
1. O que vem a ser a Crise do Software?
2. O que é software?
3. O que é Engenharia de Software?
4. Quais os desafios enfrentados pela Engenharia 
de Software?
5. Quais os atributos de um bom software?
6. O que são softwares legados?
Mais algumas perguntas...
Engenharia de Software - Professor Gabriel Baptista
1. Qual a diferença entre software e sistema?
2. O que é um processo de software?
3. O que é um modelo de processo de software?
Software x Sistema
Software +
Hardware + 
Processo = 
SISTEMA
Engenharia de Software - Professor Gabriel Baptista
O que é um processo de 
software?
Atividades documentadas e executadas, com o 
propósito de desenvolvimento de um software, 
que podem ser reproduzidas e evoluídas em 
um novo desenvolvimento.
Engenharia de Software - Professor Gabriel Baptista
E o modelo?
Engenharia de Software - Professor Gabriel Baptista
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
6
O que estamos produzindo quando 
estamos fazendo software?
Engenharia de Software - Professor Gabriel Baptista
Resposta: O produto de software!
“Software development efforts result in the delivery of a 
software product which satisfies user requirements.”
(SWEBOK, 2004)
“O esforço em desenvolvimento de software resulta na 
entrega de um produto de software que satisfaça aos 
requisitos do usuário”
Mas o que é software mesmo?
Engenharia de Software - Professor Gabriel Baptista
“Programas de computador e documentação associada. Os 
produtos de software podem ser desenvolvidos para um 
cliente específico ou para um mercado geral”.
(SOMMERVILLE, 2007)
E quais são os produtos de software 
que temos?
Engenharia de Software - Professor Gabriel Baptista
- Documentos para determinação de escopo (Especificação de 
Requisitos)
- Documentos técnicos de projeto (DER, DFD’s / Diagramas UML*, 
etc.)
- Documentos para controle do projeto (Planos de projeto, 
cronogramas, etc.)
- Código-fonte e scripts de banco de dados
- Manuais técnicos e de usuários
- Planos e relatórios de teste
- Documentação para treinamento
- Instalações
Consideramos todos estes documentos artefatos de 
software.
* Unified Modeling Language
E como fazemos todos estes 
documentos?
Engenharia de Software - Professor Gabriel Baptista
Processos de Software!
“É o que as pessoas fazem, utilizando métodos, ferramentas, 
etc., para adquirir, desenvolver, manter e melhorar 
software e produtos associados”
(SALVIANO, 2007)
E como isso funciona?
Engenharia de Software - Professor Gabriel Baptista
1º Precisamos entender o ciclo 
de vida do software!!!
Ciclo de Vida do Software?
Engenharia de Software - Professor Gabriel Baptista
O que vem a ser um ciclo 
de vida?
24/09/2018
7
Atividades fundamentais do 
Software
Engenharia de Software - Professor Gabriel Baptista
• Especificação: Definição de
funcionalidades e restrições.
• Projeto (Desenho): Definição dos
desenhos que servirão como auxílio para a
produção do software.
• Implementação: Produção do software de
acordo com o especificado / desenhado.
• Validação: Garantia que o software faz o
que foi especificado.
• Evolução: Evolução natural para atender
às necessidades do cliente.
E depois?
Engenharia de Software - Professor Gabriel Baptista
2ª Que tal seguirmos um 
Modelo de Processo de 
Software?
Modelo de Processo de Software?
Engenharia de Software - Professor Gabriel Baptista
• “Repositório” de boas (ou melhores)
práticas
• Define “o que” (e “quão bem”) deve
ser feito, não o “como” fazer.
• Independente da tecnologia a ser
utilizada
(SALVIANO, 2007)
Modelos de processo de 
software
Engenharia de Software - Professor Gabriel Baptista
• Genéricos
• Com o objetivo de mostrar as
tendências no desenvolvimento do
software
• Diferentes abordagens
• Evolução
Só isso?
Engenharia de Software - Professor Gabriel Baptista
NÃO
• Muitas vezes, o modelo foi pensado com
base em um certo tipo de projeto.
• Cada projeto que participamos pode
apresentar situações diversas.
• Daí o motivo de precisarmos estudar
diferentes modos de produção de software.
Importante
Engenharia de Software - Professor Gabriel Baptista
• Não existe um processo de
software ideal!
• Não existem ferramentas
mágicas!
• A melhoria de processo deve
ser implementada!
24/09/2018
8
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
Modelos de desenvolvimento: Cascata, Evolucionário 
(Exploratório e Prototipação) e Técnica de Quarta Geração.
Aula 3
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Revisando...
Engenharia de Software - Professor Gabriel Baptista
1. Qual a diferença entre software e sistema?
2. O que é produto de software?
3. O que é um processo de software?
4. O que é um modelo de processo de software?
5. Quais são as atividades fundamentais do 
software?
Modelo em “Cascata”
(Royce, 1970)
Engenharia de Software - Professor Gabriel Baptista
Modelo em “Cascata”
Engenharia de Software - Professor Gabriel Baptista
• Retrato das atividades fundamentais.
• Idealizado para não existir iteração
entre as fases. Porém, na prática,
existe uma pequena iteração.
• Costuma-se “congelar” determinados
documentos a partir de um certo ponto
do projeto.
Vamos pensar um pouco?
Engenharia de Software - Professor Gabriel Baptista
• Quais as vantagens do modelo em
cascata?
• Quais as desvantagens do modelo em
cascata?
• Em que tipo de projeto você utilizaria
o modelo em cascata?
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
9
Observações sobre o modelo em 
“Cascata” 
Engenharia de Software - Professor Gabriel Baptista
• Deve ser utilizado se os requisitos
forem bem compreendidos.
• Na prática, ao encontrar um erro,
deve-se retornar até a fase causadora
do erro e reiniciar o projeto daquele
ponto.
Modelo evolucionário
Engenharia de Software - Professor Gabriel Baptista
Vamos pensar um pouco?
Engenharia de Software - Professor Gabriel Baptista
• Quais as vantagens do modelo
evolucionário?
• Quais as desvantagens do modelo
evolucionário?
• Em que tipo de projeto você utilizaria
o modelo evolucionário?
Modelo evolucionário
Engenharia de Software - Professor Gabriel Baptista
• Dois tipos:
 Exploratório: Evolução a partir de
propostas do cliente
 Protótipos descartáveis: O objetivo é
compreender os requisitos
Observações sobre o modelo 
evolucionário
Engenharia de Software - Professor Gabriel Baptista
• Facilidade de interação com o cliente
• Especificação desenvolvida 
gradativamente
• Processo não é visível
• Sistemas mal-estruturados
Protótipo
Engenharia de Software - Professor Gabriel Baptista
1 Primeiro tipo; primeiro exemplar; modelo, padrão.
2 O exemplar mais exato, de maior perfeição.
(Michaelis)
24/09/2018
10
Prototipação
Engenharia de Software - Professor Gabriel Baptista
Técnica que tem por objetivo reduzir riscos
• Avaliar viabilidade de um produto
• Determinar desempenho de uma determinada 
tecnologia
• Entender requisitos
• Avaliar aparência do produto
• Avaliarusabilidade do produto
Conceitos de protótipo - RUP
Sobre os protótipos
Engenharia de Software - Professor Gabriel Baptista
“ Um protótipo exploratório e comportamental, que 
pretenda experimentar muito rapidamente alguma 
interface de usuário, raramente evolui para um 
produto forte e flexível”
(Conceitos de protótipo – RUP)
Como criar protótipos de 
interface?
Engenharia de Software - Professor Gabriel Baptista
• Uso de Ferramentas RAD -> Rapid Application
Development
• Estudo de outras aplicações existentes no
mercado
• Pouca preocupação com a consistência dos dados
• Foco na disposição dos objetos
• Foco na usabilidade (por exemplo, número de
cliques)
• Dica – Padrão corporativo de interface
Como criar protótipos para 
avaliar desempenho?
Engenharia de Software - Professor Gabriel Baptista
• Usar o ambiente real de desenvolvimento
• Buscar as melhores práticas de programação
• Garantir que as medições resultam em valores
reais
Técnica de Quarta Geração
Engenharia de Software - Professor Gabriel Baptista
Observações sobre a Técnica de 
Quarta Geração
Engenharia de Software - Professor Gabriel Baptista
• Especificação e projeto de software em um
nível próximo à linguagem natural
• Geração de código-fonte de forma
automática
• Algumas ferramentas:
• SQL
• Geradores de relatórios
• Editores gráficos de formulários
• Geradores de código
(Professor Marcos Antonio Ribeiro, 2009)
24/09/2018
11
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
Iteração de processo:
Desenvolvimento espiral e incremental.
Aula 4
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Revisando...
Engenharia de Software - Professor Gabriel Baptista
1. O que você sabe sobre o modelo cascata?
2. O que você sabe sobre o modelo 
evolucionário?
3. O que você sabe sobre a técnica de quarta 
geração?
4. Qual é o uso adequado da prototipação?
Como já falado...
Engenharia de Software - Professor Gabriel Baptista
• Não existe um processo de software
ideal!
• Cada projeto que participamos pode
apresentar situações diversas.
• A melhoria de processo deve ser
implementada!
• Daí o motivo de precisarmos estudar
diferentes modos de produção de
software.
Que tal unirmos esforços?
Engenharia de Software - Professor Gabriel Baptista
• Processos iterativos!
• Possibilidade de repetição de alguns
pontos do processo para
redimensionamento ou mesmo melhor
entendimento do software.
• Destaques
• Desenvolvimento incremental
• Desenvolvimento espiral
Engenharia de Software - Professor Gabriel Baptista
Modelo Espiral
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
12
Vamos pensar um pouco?
Engenharia de Software - Professor Gabriel Baptista
• Quais as vantagens do modelo
espiral?
• Quais as desvantagens do modelo
espiral?
• Em que tipo de projeto você utilizaria
o modelo espiral?
Observações sobre o 
desenvolvimento em espiral
Engenharia de Software - Professor Gabriel Baptista
• Cada loop representa uma fase do
processo: viabilidade, requisitos, projeto,
etc.
• Quatro vetores:
 Definição de objetivos
 Avaliação e redução de riscos
 Desenvolvimento e validação
 Planejamento
• Consideração explícita dos riscos
• Abrangência de outros processos para
produção de artefatos.
Desenvolvimento incremental
Engenharia de Software - Professor Gabriel Baptista
Vamos pensar um pouco?
Engenharia de Software - Professor Gabriel Baptista
• Quais as vantagens do
desenvolvimento incremental?
• Quais as desvantagens do
desenvolvimento incremental?
• Em que tipo de projeto você utilizaria
o desenvolvimento incremental?
Observações sobre o desenvolvimento 
incremental
Engenharia de Software - Professor Gabriel Baptista
• Meio de reduzir o retrabalho
• Funções prioritárias devem ser
entregues primeiro
• Risco menor de fracasso total
• Cuidado com o número de
incrementos!
• Cuidado com o número de funções
por incremento!
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
13
Melhores práticas para desenvolvimento de software
Desenvolver de forma iterativa e gerenciar requisitos
Aula 5
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Revisando...
Engenharia de Software - Professor Gabriel Baptista
1. O que você sabe sobre o modelo espiral?
2. O que você sabe sobre o modelo incremental?
gabriel.baptista@uni9.pro.br
Melhores Práticas em 
Desenvolvimento de Software
Engenharia de Software - Professor Gabriel Baptista
 Desenvolvimento iterativo
 Gerenciamento de requisitos
 Utilização de arquiteturas baseadas em 
componentes
 Modelagem visual do software
 Controle de mudanças do software
 Verificação contínua da qualidade do software
1. Desenvolver o software 
iterativamente
Engenharia de Software - Professor Gabriel Baptista
• Cada iteração resulta em um lançamento 
executável (release).
• Facilidade de encontrar problemas mais cedo.
• Usuário mais participativo.
• Equipe é forçada a pensar nos pontos mais 
críticos.
• Lições aprendidas podem ser melhoradas dentro 
do próprio projeto.
• Facilidade de verificação do status do projeto.
• Equipe de teste tem trabalho mais uniforme.
Um pouco de reflexão:
Engenharia de Software - Professor Gabriel Baptista
Acabou aí?
Engenharia de Software - Professor Gabriel Baptista
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
14
Tem mais?
Engenharia de Software - Professor Gabriel Baptista
Mas na verdade...
Engenharia de Software - Professor Gabriel Baptista
Isto é comum?
SIM!!!
• Em 1995, um relatório elaborado pelo Grupo Standish*, 
chamado CHAOS, alertou que apenas 16,2% dos projetos 
eram encerrados com sucesso.
• O mesmo estudo em 2004 apresentou uma melhoria no 
índice, passando para 34%.
• Na verdade, fala-se em crise do software desde 1968!
Engenharia de Software - Professor Gabriel Baptista
* 1995. Acessado através de http://net.educause.edu/ir/library/pdf/NCP08083B.pdf
Isto é comum?
Segundo Capers Jones and Bill Curtis:
- 25% dos projetos de software falham ou são abandonados;
- 15% dos defeitos permanecem no produto entregue ao cliente;
- 30% a 44% do tempo está sendo utilizado para retrabalho nas 
companhias (tempo não produtivo);
- 50% dos prazos são atendidos pelas companhias.
Segundo Professor Dr. Ivanir Costa:
- 65% dos erros ocorrem na fase de requisitos
- 8% dos erros ocorrem na fase da codificação*
* Testes caixas pretas só conseguem verificar estes erros
Engenharia de Software - Professor Gabriel Baptista
A questão é... Por quê?
Para Jack Ganssle:
• Let's face it: any idiot can write code. 
Estudo do Grupo Standish*:
• Falta de Envolvimento do Usuário
• Falta de Gerenciamento
• Falta de necessidades claras
Engenharia de Software - Professor Gabriel Baptista
* 1995. Acessado através de http://net.educause.edu/ir/library/pdf/NCP08083B.pdf
A questão é... Por quê?
Segundo Humphrey*:
- Cronogramas fora da realidade
- Equipe inapropriada
- Mudanças de Necessidades
- Trabalho com baixa qualidade
- Crenças em mágica
* Maio de 2002. Acessado através de www.computerworld.com
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
15
Agora imaginem...
Um idiota programando +
Lista de necessidades confusas 
ou inexistentes +
Necessidades sendo modificadas
a toda hora
_____________________________
Engenharia de Software - Professor Gabriel Baptista
CAOS
Relatório do Grupo Standish CHAOS -
2009
As coisas pioraram...
- 32% dos projetos de software com sucesso;
- 44% atrasados, acima do custo, e/ou com menos 
funcionalidades;
- 24% cancelados ou nunca usados.
Engenharia de Software - Professor Gabriel Baptista
Existe algo a ser feito?
Engenharia de Software - Professor Gabriel BaptistaEngenharia de Requisitos
“A Engenharia de Requisitos ajuda os 
engenheiros de software a compreender 
melhor o problema que eles vão trabalhar 
para resolver. Ela inclui o conjunto de tarefas 
que elevam a um entendimento de qual será o 
impacto do software sobre o negócio, do que 
o cliente quer e de como os usuários finais vão 
interagir com o software”
Engenharia de Software - Professor Gabriel Baptista
* Pressman, 2006
Engenharia de Requisitos
O que é um requisito?
“Os requisitos para um sistema de software 
estabelecem o que o sistema deve fazer e 
definem restrições sobre sua operação e 
implementação”
Engenharia de Software - Professor Gabriel Baptista
* Sommerville, 2005
Engenharia de Requisitos
Tipos de requisitos
- Requisitos do usuário
- Funções que o sistema deve ter, visualizados de uma
maneira simples
- Requisitos do sistema
- Domínio: Leis, normas ou até mesmo uma restrição
funcional obtidos a partir das necessidades específicas do
sistema.
- Funcionais: Funcionalidades ou os serviços que se espera
que o sistema forneça.
- Não-funcionais: Não dizem respeito diretamente às
funções específicas do sistema. Definem atributos como
confiabilidade e restrições.
Engenharia de Software - Professor Gabriel Baptista
* Sommerville, 2005
24/09/2018
16
Engenharia de Requisitos
Engenharia de Software - Professor Gabriel Baptista
* Costa, 2007: Sub-Componentes do domínio da Engenharia de Requisitos
Desenvolvimento de Requisitos
Elicitação
“Vamos tentar extrair as necessidades do 
cliente...”
- Introspecção (Imaginação)
- Questionários
- Entrevistas
- Etnografia (Observação)
- JAD (Joint Application Development)
Engenharia de Software - Professor Gabriel Baptista
Desenvolvimento de Requisitos
Análise
“Vamos pensar sobre tudo que foi levantado e, 
de alguma maneira, vamos documentar estas 
necessidades na forma de sistema...”
- JAD (Joint Application Development)
- Use cases
- Prototipação
Engenharia de Software - Professor Gabriel Baptista
Desenvolvimento de Requisitos
Especificação
“Vamos criar um contrato com o nosso 
cliente...”
- O objetivo é gerar um documento que possa
ser lido por diversos stakeholders:
- Clientes
- Gerentes
- Engenheiros de Desenvolvimento
- Engenheiros de Teste
- Engenheiros de Implantação
Engenharia de Software - Professor Gabriel Baptista
Desenvolvimento de Requisitos
Especificação
Engenharia de Software - Professor Gabriel Baptista
* Sommerville, 2005
Desenvolvimento de Requisitos
Validação
“Vamos confirmar o que o foi pedido pelo 
cliente...”
- Prototipação
- Revisões formais
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
17
Desenvolvimento de Requisitos
Engenharia de Software - Professor Gabriel Baptista
* Costa, 2007: Desenvolvimento de requisitos em um processo iterativo
Só isso?
Engenharia de Software - Professor Gabriel Baptista
RUP – Rational Unified Process
2. Gerenciar requisitos
Engenharia de Software - Professor Gabriel Baptista
• Identificar os verdadeiros requisitos do sistema é 
um processo contínuo.
• Compreensão do usuário sobre os requisitos do 
sistema também muda.
• Se faz necessária a utilização de uma 
abordagem disciplinada.
• Facilitação da comunicação.
• Possibilidade de filtrar, localizar e priorizar 
requisitos.
• Permite a detecção de problemas mais cedo.
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
Entendendo a especificação de requisitos
Aula 6
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Revisando...
Engenharia de Software - Professor Gabriel Baptista
• Cite as melhores práticas de 
desenvolvimento de software estudadas 
até agora.
• Cite uma vantagem de termos o software 
sendo desenvolvido de forma iterativa.
• Por que levantamos os requisitos?
• Quais os tipos de requisitos existentes?
• Como desenvolvemos requisitos?
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
18
Por onde começar?
Escrevendo os 
requisitos!!!
Engenharia de Software - Professor Gabriel Baptista
Como escrever requisitos?
• Escrita de tal maneira que diversos
públicos possam entender
• Deve determinar o escopo do projeto!
• Após a leitura, todos os stakeholders
devem concordar!
Engenharia de Software - Professor Gabriel Baptista
Tópicos básicos de uma ER
1. Revisões
2. Índice
3. Objetivo
4. Visão da Solução
5. Perspectiva da Solução
6. Características do Usuário
7. Glossário
8. Requisitos Funcionais
9. Requisitos Não-Funcionais
10. Anexos
Engenharia de Software - Professor Gabriel Baptista
Características dos requisitos
• Clareza
• Classificação
• Número, Versão, Dificuldade, Prioridade, Estabilidade
• Utilização de tópicos
• Destaque do primeiro tópico
• Utilize o tempo verbal futuro do presente para
descrever cada requisito
• Cuidado para não escrever requisitos ambíguos ou
contraditórios.
Engenharia de Software - Professor Gabriel Baptista
Somente os requisitos são suficientes?
Muitas vezes não!!
• Modelo de Caso de Uso
• Prototipação
Engenharia de Software - Professor Gabriel Baptista
Modelo de Casos de Uso
• Uma das maneiras utilizadas para
desenvolvimento dos requisitos
funcionais.
• Composto por:
• Diagrama
• Especificação
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
19
Para que serve?
• Entender o comportamento do sistema
• Identificar as funcionalidades de
arquitetura
• Localizar as classes
• Identificar casos de teste
• Planejar
• Criar manuais
Engenharia de Software - Professor Gabriel Baptista
Caso de Uso
“O modelo de casos de uso é um modelo 
das funções pretendidas do sistema e seu 
ambiente, e serve como um contrato 
estabelecido entre o cliente e os 
desenvolvedores. O modelo de casos de uso 
é usado como fonte de informações 
essencial para atividades de análise, design 
e teste.”
Engenharia de Software - Professor Gabriel Baptista
http://www.wthreex.com/rup/
Diagrama de Caso de Uso
Engenharia de Software - Professor Gabriel Baptista
Exemplo de diagrama de Caso de Uso
Engenharia de Software - Professor Gabriel Baptista
Ator
Engenharia de Software - Professor Gabriel Baptista
“Um ator define um conjunto coerente 
de papéis que os usuários do 
sistema podem desempenhar ao 
interagir com ele. Uma instância de 
ator pode ser desempenhada tanto 
por um indivíduo quanto por um 
sistema externo.”
http://www.wthreex.com/rup/
Caso de Uso
“Um caso de uso define um conjunto de 
instâncias de casos de uso, no qual cada 
instância é uma seqüência de ações
realizadas por um sistema que produz 
um resultado de valor observável para 
determinado ator.”
Engenharia de Software - Professor Gabriel Baptista
http://www.wthreex.com/rup/
http://www.wthreex.com/rup/
http://www.wthreex.com/rup/
http://www.wthreex.com/rup/
24/09/2018
20
Relacionamentos existentes
• Associação
• Generalização (Herança)
• Inclusão
• Extensão
Engenharia de Software - Professor Gabriel Baptista
Generalização
• Conceito de Herança
• Pode ser aplicado no caso de uso e no ator
Engenharia de Software - Professor Gabriel Baptista
Inclusão
• Ação do sistema que será executada
por mais de um caso de uso.
• A seta é direcionada para o caso de
uso que será incluído.
Engenharia de Software - Professor Gabriel Baptista Engenharia de Software - Professor Gabriel Baptista
Inclusão
Extensão
• Ação do sistema que pode ser
executada por mais de um caso de uso.
• A seta é direcionada para o caso de
uso que poderá executar o caso de uso
opcional.
Engenharia de Software - Professor Gabriel Baptista
Extensão
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
21
Especificação do Caso de Uso
• Número: Número identificador do UC
• Nome: Nome dado ao UC no diagrama
• Breve descrição: Descrição em um parágrafo falando sobre o UC
• Pré-condições: O que deve acontecer antes do caso de uso ser executado.• Fluxo de eventos: Fluxo básico (principal ou happy day), Fluxos alternativos,
Fluxos de exceção)
• Requisitos Especiais: Alguma informação adicional que deva ser comentada
• Pós-condições: O que deve acontece após o caso de uso executar.
• Inclusões: Pontos de inclusão
• Extensões: Pontos de extensão
• Relacionamentos: Atores relacionados, UC’s de especialização ou
generalização.
Engenharia de Software - Professor Gabriel Baptista
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
Melhores práticas para desenvolvimento de software: 
Modelar de forma visual
Diferença entre as abordagens de análise estruturada, orientada a objetos e 
orientada a aspectos.
Aula 7
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Revisando...
Engenharia de Software - Professor Gabriel Baptista
• Por que levantamos os requisitos?
• Mencione um dos capítulos necessários 
dentro de uma especificação de requisitos 
e o que escrevemos nele.
• Cite uma boa prática de escrita da 
especificação de requisitos.
• No que o modelo de casos de uso pode 
ajudar na especificação de requisitos?
• Do que é formado o modelo de casos de 
uso?
Melhores Práticas em 
Desenvolvimento de Software
Engenharia de Software - Professor Gabriel Baptista
 Desenvolvimento iterativo
 Gerenciamento de requisitos
 Modelagem visual do software
 Utilização de arquiteturas baseadas em 
componentes
 Controle de mudanças do software
 Verificação contínua da qualidade do software
Requisitos estão prontos...
E agora?
Engenharia de Software - Professor Gabriel Baptista
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
22
O que significa Análise?
“Exame ou estudo da natureza de uma 
coisa complexa ou determinação de 
suas feições essenciais, por esse 
método.”
(Dicionário Michaelis)
Engenharia de Software - Professor Gabriel Baptista
O papel do analista...
"Análise é o estudo de um problema, que 
antecede à tomada de um ação”
"A preocupação dominante da análise não é 
obter sucesso, mas evitar fracasso".
(DeMarco, 1979)
Análise e Projeto de Sistemas - Professor Gabriel Baptista
Como fazemos a análise?
Engenharia de Software - Professor Gabriel Baptista
Depende... A verdade é que temos 
diferentes abordagens:
1. Análise Estruturada
2. Análise Orientada a Objetos
3. Análise Orientada a Aspectos
3. Modelar visualmente o software
Engenharia de Software - Professor Gabriel Baptista
• Simplificação da realidade que 
descreve completamente um 
sistema.
• Perspectiva particular.
• Padronização da comunicação.
• Ferramentas de suporte.
• Cuidado: com o nível de 
detalhamento.
Análise Estruturada
• Conceito de Decomposição Funcional
• Foco voltado para as funções
• Preocupação com os processos
• Artefatos produzidos
 Diagrama de Entidade-Relacionamento
 Diagrama de Fluxo de Dados
 Dicionário de Dados
Engenharia de Software - Professor Gabriel Baptista
Exemplo de DFD
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
23
Conceito de Níveis do DFD
(Decomposição Funcional)
Engenharia de Software - Professor Gabriel Baptista
DER (Modelo Conceitual)
Engenharia de Software - Professor Gabriel Baptista
MER (Modelo Lógico)
Engenharia de Software - Professor Gabriel Baptista
Exemplo de DER – Ferramenta Case
(Visio 2007)
Engenharia de Software - Professor Gabriel Baptista
Análise Orientada a Objetos
“O mundo real é composto por objetos. Cada 
objeto tem propriedades e comportamentos. 
Então porquê não desenvolver programas 
que simulem no computador os objetos do 
mundo real com suas propriedades e 
comportamentos?”
Engenharia de Software - Professor Gabriel Baptista
Análise Orientada a Objetos
• Conceito bottom-up
• Enfoque nos dados
• Maior detalhe na modelagem
• Mais próximo da realidade
• Comunicação mais fácil com o usuário
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
24
UML
• Unified Modeling Language
• Padronizada pela OMG: Object
Management Group
• Os três amigos: Rumbaugh, Jacobson e
Booch
• Versão 2.0
Engenharia de Software - Professor Gabriel Baptista
Sobre a UML
“(UML®) helps you specify, visualize, 
and document models of software 
systems, including their structure and 
design, in a way that meets all of these 
requirements”
http://www.omg.org/gettingstarted/what_is_uml.htm
Engenharia de Software - Professor Gabriel Baptista
UML 2.0
• 13 Diagramas:
 Estrutura: Classe, Objetos, Componente,
Estrutura Composta, Pacote e Distribuição
(Implantação).
 Comportamento: Caso de Uso, Atividade,
Máquina de Estado.
 Interação: Seqüência, Comunicação,
Temporização e Interação.
Engenharia de Software - Professor Gabriel Baptista
Hierarquia dos diagramas
Engenharia de Software - Professor Gabriel Baptista
Diagrama de Classes
• Conjunto de classes, interfaces e
colaborações, apresentando seus
relacionamentos.
• Diagrama mais comum da OO.
• Visão estática da arquitetura do
sistema.
Engenharia de Software - Professor Gabriel Baptista
Diagrama de Classes
Engenharia de Software - Professor Gabriel Baptista
http://www.omg.org/gettingstarted/what_is_uml.htm
24/09/2018
25
Diagrama de Pacotes
• Decomposição do modelo dentro da
organização e suas dependências.
• Um pacote pode ter qualquer
diagrama da UML.
Engenharia de Software - Professor Gabriel Baptista
Diagrama de Pacotes
Engenharia de Software - Professor Gabriel Baptista
Diagrama de Caso de Uso
• Conjunto de casos de uso e atores
(tipo especial de classe) e seu
relacionamento.
• Visão de uso estática do sistema.
• Modelagem do comportamento do
sistema.
Engenharia de Software - Professor Gabriel Baptista
Diagrama de Caso de Uso
Engenharia de Software - Professor Gabriel Baptista
Diagrama de Atividade
• Estrutura do processo.
• Passo a passo da execução.
• Visão dinâmica do sistema.
Engenharia de Software - Professor Gabriel Baptista
Diagrama de Atividade
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
26
Diagrama de Seqüência
• Diagrama de Interação
• Enfatiza a cronologia de troca de
mensagens entre classes.
Engenharia de Software - Professor Gabriel Baptista
Diagrama de Seqüência
Engenharia de Software - Professor Gabriel Baptista
http://www.wthreex.com
Análise Orientada a Aspectos
• Estado da arte!
• Ainda não aplicado em sistemas de
mercado.
• Novo tipo de abstração agregado à
UML: Aspecto
Engenharia de Software - Professor Gabriel Baptista
Aspecto
• Assuntos que podem ser aplicados de
forma transversal no sistema.
• Relacionados à requisitos específicos
• Logging
• Segurança
Engenharia de Software - Professor Gabriel Baptista
Assuntos
Engenharia de Software - Professor Gabriel Baptista
Pontos de Corte
• Definem o local aonde determinado
assunto será associado:
• Antes de execução de um método específico
• Após uma exceção
• Quando um valor de um objeto for
modificado.
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
27
Pontos de Junção
• Pontos dentro de um programa aonde
um assunto pode ser associado.
Engenharia de Software - Professor Gabriel Baptista
Exemplo de programação
Engenharia de Software - Professor Gabriel Baptista
aspect authentication 
{ 
 before: call (public void update* (..)) // this is a pointcut 
 { 
// this is the advice that should be executed when woven into 
// the executing system 
 int tries = 0 ; 
string userPassword = Password.Get ( tries ) ; 
 while (tries < 3 && userPassword != thisUser.password ( ) ) 
 { 
 // allow 3 tries to get the password right 
 tries = tries + 1 ; 
 userPassword = Password.Get ( tries ) ; 
 } 
 if (userPassword != thisUser.password ( )) then 
 //if password wrong, assume user has forgotten to logout 
 System.Logout (thisUser.uid) ; 
 } 
} // authentication 
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
As melhorespráticas de Engenharia de Software: Usar arquitetura baseada em 
componentes. 
Engenharia de software baseada em componentes: definição, conceituação e 
projeto com reuso.
Engenharia de software orientada a serviços.
Aula 8
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Revisando...
Engenharia de Software - Professor Gabriel Baptista
• Cite vantagens em utilizarmos a modelagem
visual do software.
• Quais são as formas / maneiras conhecidas
no mercado para modelagem visual do
software.
• O que você sabe sobre a análise estruturada?
• O que você sabe sobre a análise orientada a
objetos?
• O que você sabe sobre a análise orientada a
aspectos?
4. Usar arquiteturas baseadas em 
componente
Engenharia de Software - Professor Gabriel Baptista
• Melhor organização do sistema como um todo.
• Estudo dos requisitos funcionais e não-
funcionais.
• Separação clara de elementos de um sistema.
• Ferramentas de modelagem permitem a 
automação para este tipo de desenvolvimento.
• Reutilização facilitada por padrões de mercado.
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
28
Projeto com reuso
Engenharia de Software - Professor Gabriel Baptista
“O processo de projeto, na 
maioria das disciplinas de 
engenharia, baseia-se no 
reuso de sistemas 
existentes ou componentes”
(SOMMERVILLE, 2008)
Projeto com reuso
Engenharia de Software - Professor Gabriel Baptista
• Preocupação desde os requisitos com os 
pontos do projeto que podem ou serão 
potenciais itens de reuso.
• Dependente de um processo de 
desenvolvimento voltado para tal tarefa.
• Custo inicial pode ser mais alto, entretanto, 
o retorno do investimento vai acontecer à 
medida que o componente for reutilizado.
Projeto com reuso
Engenharia de Software - Professor Gabriel Baptista
Requisitos gerais 
do sistema
Identificar 
componentes 
candidatos
Alterar requisitos 
de acordo com 
componentes 
encontrados
Projeto de 
arquitetura
Identificar 
componentes 
candidatos
Compor 
componentes para 
criar sistema
Desenvolvimento sem reuso
Engenharia de Software - Professor Gabriel Baptista
Sistema A
Verificação 
do CPF
Sistema B
Verificação 
do CPF
Sistema C
Verificação 
do CPF
Desenvolvimento com reuso
Engenharia de Software - Professor Gabriel Baptista
Sistemas
Biblioteca 
Comum
Verificação 
do CPF
Sistema A
Sistema B
Sistema C
Vantagens do reuso
Engenharia de Software - Professor Gabriel Baptista
• Confiança aumentada
• Risco de processo reduzido
• Uso eficiente de especialistas
• Conformidade com padrões
• Desenvolvimento acelerado
24/09/2018
29
Desvantagens do reuso
Engenharia de Software - Professor Gabriel Baptista
• Falta de apoio de ferramenta
• Síndrome do não-inventado-aqui
• Criação e manutenção de uma 
biblioteca de componentes
Abordagens que apóiam o reuso
Engenharia de Software - Professor Gabriel Baptista
• Design patterns
• Desenvolvimento baseado em 
componentes
• Frameworks
• Empacotamento de sistemas legados
• Sistemas orientados a serviços
• Linhas de produtos de aplicação
• Softwares de prateleira
• Bibliotecas
• Desenvolvimento de software orientado a 
aspectos
Evolução das bibliotecas
Engenharia de Software - Professor Gabriel Baptista
• LIB: Compilado junto com a aplicação.
• DLL*: Arquivo distinto da aplicação.
• COM*: Serviço disponível para um 
computador, baseado em mensagens 
Windows.
• COM+*: Processamento distribuído. 
Conceito de servidor de componentes.
• WebServices: Serviços na Internet. 
Baseado no HTTP.
* Tecnologia Windows
Desenvolvimento Orientado a Serviços
Engenharia de Software - Professor Gabriel Baptista
“ As arquiteturas orientadas a 
serviços são um caminho para 
o desenvolvimento de sistemas 
distribuídos nos quais os 
componentes desses sistemas 
são serviços dedicados”
(SOMMERVILLE, 2008)
Desenvolvimento Orientado a Serviços
Engenharia de Software - Professor Gabriel Baptista
• SOA – Service Oriented Architecture
• Na prática, implementado a partir de 
WebServices.
• A empresa foca no serviço que ela se 
propõe a oferecer e deixa serviços 
adjacentes para serem feitos por parceiros.
• Interoperabilidade.
Interoperabilidade?
Engenharia de Software - Professor Gabriel Baptista
“Intercâmbio coerente de informações e 
serviços entre sistemas. Deve 
possibilitar a substituição de qualquer 
componente ou produto usado nos 
pontos de interligação por outro de 
especificação similar, sem 
comprometimento das funcionalidades 
do sistema.” 
(Governo do Reino Unido)
24/09/2018
30
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
As melhores práticas de Engenharia de Software:
Verificar Continuamente a Qualidade do Software
Controlar Mudanças de Software
Aula 9
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Revisando: Correção às 19:45
Engenharia de Software - Professor Gabriel Baptista
• Cite vantagens em utilizarmos a
modelagem visual do software.
• Quais são as formas / maneiras
conhecidas no mercado para
modelagem visual do software.
• Cite vantagens e desvantagens do
projeto com reuso.
• O que significa a sigla SOA e o que
você pode comentar sobre esta
arquitetura.
Melhores Práticas em 
Desenvolvimento de Software
Engenharia de Software - Professor Gabriel Baptista
Desenvolvimento iterativo
Gerenciamento de requisitos
Utilização de arquiteturas baseadas 
em componentes
Modelagem visual do software
 Verificar continuamente a qualidade 
do software
Controlar mudanças de Software
5. Verificar continuamente a 
qualidade do software
Engenharia de Software - Professor Gabriel Baptista
Tempo
C
u
s
to
Garantia da Qualidade de Software
Qualidade de Software - Professor Gabriel Baptista
Atividade: Quem é você e o que significa um projeto de 
software de boa qualidade?
Cada grupo fará uma análise visando um dos diversos tipos de 
stakeholders que conhecemos:
Ao final da análise, o grupo deverá reportar o resultado conclusivo 
gerado com a discussão interna. Deve-se apresentar um ou dois 
parágrafos que mostrem as observações feitas pelos membros 
representantes de cada um dos papéis estudados.
• Investidor
• Usuário
• Responsável pela solução no 
cliente
• Gerente de Projetos
• Analista de Negócios
• Analista de Requisitos
• Arquiteto de Software
• Analista de Sistemas
• Programador
• Analista de Testes
• Testador
• Implantador / Integrador
• Product Owner
• Scrum Master
• Analista de Dados
• Engenheiro de Software
• Analista de Configuração
• Pentester
• UX professional
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
31
Garantia da Qualidade de Software
Qualidade de Software - Professor Gabriel Baptista
Pergunta 1: Qual é o meu 
papel em um projeto de 
software?
Pergunta 2: O que significa um 
projeto de software de boa 
qualidade na minha visão?
Cenários
Cenário 1: Projeto inovador, envolvendo a área
financeira, dentro de uma Fintech com ciclo de
vida ágil.
Cenário 2: Indústria de grande porte, com
problemas por ainda desenvolver projetos no
modelo tradicional.
Cenário 3: Empresa de varejo com muitas
unidades e departamento de TI próprio.
Cenário 4: Pequena empresa desenvolvendo
software para escritórios de contabilidade.
E agora?
Qualidade de Software - Professor Gabriel Baptista
• Monte o grupo do cenário
• Máximo de 5 papéis por cenário
• Conte no seu grupo o motivo por ter
escolhido:
• Quem é você (Qual é o seu papel)?
• O que é qualidade para você?
• Porque você escolheu esse cenário?
• Prepare uma resposta única para
apresentar às 21:35.
Você já leu essa frase?
A qualidade é relativa. O que 
é qualidade para uma pessoa 
pode ser falta de qualidade 
para outra.
(Weinberg)
Qualidade de Software- Professor Gabriel Baptista
https://youtu.be/2pi
rMAwZF5g
Vertentes de Qualidade
Qualidade no Produto
Engenharia de Software - Professor Gabriel Baptista
Foca garantir que os artefatos estão 
sendo desenvolvidos com a qualidade 
necessária, atendendo às 
expectativas de todos os leitores e 
das normas vinculadas ao produto. 
Não está preocupada em saber se o 
que está escrito condiz com a 
necessidade do cliente.
24/09/2018
32
Vertentes de Qualidade
Qualidade no Processo
Engenharia de Software - Professor Gabriel Baptista
Exige que todos os passos 
determinados no processo estejam 
sendo executados na ordem proposta, 
inclusive a geração dos artefatos. 
Entretanto, não está preocupado com 
o conteúdo dos arquivos gerados.
Como garantir a qualidade do 
conteúdo?
Engenharia de Software - Professor Gabriel Baptista
Processo de Verificação
“Estamos construindo o produto corretamente?” 
(Boehm)
Processo de Validação
“Estamos construindo o produto correto?”
(Boehm)
Modelo V
(GRANJA, Ivan)
Engenharia de Software - Professor Gabriel Baptista
Teste de Aceitação
(homologação funcional)
Teste de Unidade
Implementação:
Código
Requisitos Não 
Funcionais e 
Restrições 
Requisitos
Funcionais
(Obtidos c/ o 
Usuário)
Teste de Sistema
(homologação da aplicação / 
produto)
Teste de Integração
Análise DinâmicaAnálise Estática
Planos de Teste
Planos de Teste
Planos Projeto: Arquitetura da 
Modelos Aplicação + RNF
Físicos
Definição 
e Análise:
Modelos
Lógicos
Verificação e Validação Estática
Engenharia de Software - Professor Gabriel Baptista
“Não se faz necessário executar o 
software no computador”
• Inspeções ou revisões por pares
Verificação e Validação Dinâmica
Engenharia de Software - Professor Gabriel Baptista
“Envolve executar uma 
implementação com dados de 
teste”
• Testes de software
SQA – Software Quality Assurance
(GRANJA, Ivan)
Engenharia de Software - Professor Gabriel Baptista
SQA
Sw
Testing
Quality
Control
Gestão de
Configuração
e Versão
SQA
Sw
Testing
Quality
Control
Gestão de
Configuração
e Versão
Normas e Padrões Procedimentos
Convenções e Especificações
Analise Dinâmica
Estratégias, 
Técnicas e 
Ferramentas,
Verificação e 
Validação
Análise Estática
Integração ao 
Processo, 
Técnicas de 
Verificação 
Contínua
24/09/2018
33
6. Controlar mudanças do software
Engenharia de Software - Professor Gabriel Baptista
• Necessidade de um controle disciplinado: 
Equipes distantes, projetos de integração, 
stakeholders com visões diferentes.
• Fluxos repetíveis para gerenciar mudanças 
em todos os artefatos.
• Conceito de baseline (linha base).
• Rastreabilidade.
• Estatísticas em torno de mudanças.
• Ferramentas.
Sim! Os requisitos mudam!
“E devemos agradecer sempre por eles 
mudarem!”
- Novas necessidades
- Novas leis
- Mudanças tecnológicas
“Só temos que nos prevenir de mudanças de 
requisitos que causem a falha do projeto!”
Engenharia de Software - Professor Gabriel Baptista
Controle de mudanças do software
“A maioria das modificações no software é 
justificada. Não condene modificações. 
Em vez disso, certifique-se de que dispõe 
de mecanismos para cuidar delas.”
[PRESSMAN]
Engenharia de Software - Professor Gabriel Baptista
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
O processo unificado (UP): conceitos e relação com as melhores práticas 
de Engenharia de Software.
Papéis e artefatos do RUP
Aula 10
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Atividade
Engenharia de Software - Professor Gabriel Baptista
1. Qual a diferença entre produto e processo 
de software?
2. Qual a diferença entre processo de 
software e modelo de processo de 
software?
3. Cite um artefato de software essencial no 
desenvolvimento.
4. Cite as atividades fundamentais do 
desenvolvimento de software e o que 
basicamente é realizado em cada uma 
delas.
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
34
O Processo Unificado
Engenharia de Software - Professor Gabriel Baptista
• Processo de Engenharia de 
Software
• Modelo de Processo
• Produto de Processo
• Melhores Práticas em 
Desenvolvimento moderno de 
software
Melhores Práticas em 
Desenvolvimento de Software
Engenharia de Software - Professor Gabriel Baptista
 Desenvolvimento iterativo
 Gerenciamento de requisitos
 Utilização de arquiteturas baseadas em 
componentes
 Modelagem visual do software
 Verificação contínua da qualidade do 
software
 Controle de mudanças do software
Desenvolver o software 
iterativamente
Engenharia de Software - Professor Gabriel Baptista
• Cada iteração resulta em um lançamento 
executável.
• Facilidade de encontrar problemas mais cedo.
• Usuário mais participativo.
• Equipe é forçada a pensar nos pontos mais 
críticos.
• Lições aprendidas podem ser melhoradas dentro 
do próprio projeto.
• Facilidade de verificação do status do projeto.
• Equipe de teste tem trabalho mais uniforme.
Gerenciar requisitos
Engenharia de Software - Professor Gabriel Baptista
• Identificar os verdadeiros requisitos do sistema é 
um processo contínuo.
• Compreensão do usuário sobre os requisitos do 
sistema também muda.
• Se faz necessária a utilização de uma 
abordagem disciplinada.
• Facilidade de comunicação.
• Possibilidade de filtrar, localizar e priorizar 
requisitos.
• Permite a detecção de problemas mais cedo.
Usar arquiteturas baseadas em 
componente
Engenharia de Software - Professor Gabriel Baptista
• Melhor organização do sistema como um todo.
• Facilidade na recuperação rápida do sistema.
• Estudo dos requisitos funcionais e não-
funcionais.
• Separação clara de elementos de um sistema.
• Reutilização facilitada por padrões de mercado.
• Facilidade no gerenciamento da configuração.
• Ferramentas de modelagem permitem a 
automação para este tipo de desenvolvimento.
Modelar visualmente o software
Engenharia de Software - Professor Gabriel Baptista
• Simplificação da realidade que descreve 
completamente um sistema.
• Perspectiva particular.
• UML = Unified Modeling Language.
• Padronização da comunicação.
• Cuidado com o nível de detalhamento.
• Ferramentas de suporte.
24/09/2018
35
Verificar continuamente a qualidade 
do software
Engenharia de Software - Professor Gabriel Baptista
Tempo
C
u
s
to
Controlar mudanças do software
Engenharia de Software - Professor Gabriel Baptista
• Necessidade de um controle disciplinado: 
Equipes distantes, projetos de integração, 
stakeholders com visões diferentes.
• Fluxos repetíveis para gerenciar mudanças em 
todos os artefatos.
• Conceito de baseline (linha base).
• Rastreabilidade.
• Estatísticas em torno de mudanças.
• Ferramentas.
O Processo Unificado
Engenharia de Software - Professor Gabriel Baptista
O Processo Unificado e suas 
extensões
Engenharia de Software - Professor Gabriel Baptista
Processo Unificado
(Jacobson, Booch e Rumbaugh - 1999)
RUP: IBM Rational
Unified Process
(Três Amigos)
AUP: Agile Unified
Process
(Scott W. Ambler)
EUP: Enterprise 
Unified Process
(Scott W. Ambler)
EssUP 
Essential Unified 
Proccess
(Ivar Jacobson)
O Modelo RUP
Engenharia de Software - Professor Gabriel Baptista
Estrutura do RUP
Engenharia de Software - Professor Gabriel Baptista
1. Quem?
2. O quê?
3. Quando?
4. Como?
24/09/2018
36
Papéis (Quem?)
Engenharia de Software - Professor Gabriel Baptista
• Analista
• Desenvolvedor
• Testador
• Gerente
• Adicionais
Papéis do Analista
Engenharia de Software - Professor Gabriel Baptista
Analista de Sistemas
Designer de Negócios
Revisor do Modelo de Negócios
Analista do Processo de Negócios
Revisor de Requisitos
Especificador de Requisitos
Analista de Teste
Designer de Interface de Usuário
Papéis do Desenvolvedor
Engenharia de Software - Professor GabrielBaptista
Designer de Cápsula
Revisor de Código
Designer de Banco de Dados
Implementador
Integrador
Arquiteto de Software
Revisor de Arquitetura
Revisor de Design
Designer
Designer de Teste
Papéis do Testador
Engenharia de Software - Professor Gabriel Baptista
Testador
Papéis do Gerente
Engenharia de Software - Professor Gabriel Baptista
Engenheiro de Processo
Gerente de Projeto
Gerente de Controle de Mudança
Gerente de Configuração
Gerente de Implantação
Revisor do Projeto
Gerente de Testes
Papéis Adicionais
Engenharia de Software - Professor Gabriel Baptista
Envolvidos
Todos os Papéis
Desenvolvedor do Curso
Artista Gráfico
Especialista em Ferramentas
Administrador de Sistema
Redator Técnico
http://www.wthreex.com/rup/portugues/process/workers/wk_sysan.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_bdes.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_bmrv.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_bpan.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_reqrv.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_ucaut.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_tstanl.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_uides.htm
http://www.wthreex.com/rup/portugues/addin_realtime/process/workers/wk_ccdsr.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_codrv.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_dbdsr.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_implm.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_syint.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_archt.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_arvwr.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_desrv.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_dsgnr.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_tstds.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_tstr.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_prcen.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_projm.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_ccmgr.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_cmmgr.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_depm.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_prrev.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_tstmng.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_sthld.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_any.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_crsdv.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_grart.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_tlsmt.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_sysad.htm
http://www.wthreex.com/rup/portugues/process/workers/wk_tchwr.htm
24/09/2018
37
Links interessantes
Engenharia de Software - Professor Gabriel Baptista
• Agile Unified Process Download:
http://www.ambysoft.com/unified
process/agileUP.html
Bibliografia Complementar
Engenharia de Software - Professor Gabriel Baptista
• KRUCHTEN, Philippe Introdução ao RUP 
- Rational Unified Process. Rio de 
Janeiro: Ciência Moderna Ltda., 2003.
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
Artefatos, Fases e Disciplinas do RUP
Aula 11
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Revisando...
Engenharia de Software - Professor Gabriel Baptista
1. Cite as melhores práticas para
desenvolvimento de software e um dos
motivos pelo qual chamamos cada uma
delas de melhor prática.
2. O que é o UP?
3. O que é o RUP? Qual a diferença entre o
RUP e o UP?
4. Cite três papéis mencionados pelo RUP e
o que basicamente eles fazem durante o
processo de desenvolvimento.
Relembrando:
Estrutura do RUP
Engenharia de Software - Professor Gabriel Baptista
1. Quem?
2. O quê?
3. Quando?
4. Como?
http://www.ambysoft.com/unifiedprocess/agileUP.html
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
38
O Modelo RUP
Engenharia de Software - Professor Gabriel Baptista
Artefatos (O quê?)
Engenharia de Software - Professor Gabriel Baptista
• Modelagem de Negócios
• Requisito
• Análise e Design
• Implementação
• Teste
• Implantação
• Gestão de Configuração e Mudança
• Gestão de Projeto
• Ambiente
Artefatos da Modelagem de Negócios
Engenharia de Software - Professor Gabriel Baptista
Artefatos de Requisito
Engenharia de Software - Professor Gabriel Baptista
Artefatos de Análise e Design
Engenharia de Software - Professor Gabriel Baptista
Artefatos de Implementação
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
39
Artefatos de Teste
Engenharia de Software - Professor Gabriel Baptista
Artefatos de Implantação
Engenharia de Software - Professor Gabriel Baptista
Artefatos de Gestão de 
Configuração e Mudança
Engenharia de Software - Professor Gabriel Baptista
Artefatos de Gestão de Projeto
Engenharia de Software - Professor Gabriel Baptista
Artefatos de Ambiente
Engenharia de Software - Professor Gabriel Baptista
Quando?
(Tempo)
Engenharia de Software - Professor Gabriel Baptista
• Iniciação
• Elaboração
• Construção
• Transição
24/09/2018
40
Tempo de Iniciação: Objetivos
Engenharia de Software - Professor Gabriel Baptista
• Obter contexto e requisitos mais 
importantes
• Planejar (Caso de uso de negócio, riscos, 
pessoas, custo, prazo, rentabilidade)
• Visualizar arquitetura possível
Tempo de Iniciação: Resultados
Engenharia de Software - Professor Gabriel Baptista
• Documento de visão
• Glossário
• Caso de uso (inicial)
• Risco x Mitigação
• Plano de Projeto
• Modelo de Negócio
• Protótipos
• Especificação de Requisitos
Tempo de Iniciação: 
Marco a ser atingido
Engenharia de Software - Professor Gabriel Baptista
• Aceite de custo e estimativas por parte dos 
stakeholders.
• Entendimento dos requisitos / escopo.
• Despesas atuais versus planejadas 
conforme planejado.
Tempo de Elaboração: Objetivos
Engenharia de Software - Professor Gabriel Baptista
• Definir arquitetura de acordo com visão: 
negócio, custo e prazo
• Planejar a construção
• Selecionar componentes
• Decidir entre fazer, comprar e/ou reutilizar 
Tempo de Elaboração: Resultados
Engenharia de Software - Professor Gabriel Baptista
• Caso de uso (80% completo)
• Adequações nos requisitos
• Arquitetura
• Plano para desenvolvimento
Tempo de Elaboração: Marco a ser 
atingido
Engenharia de Software - Professor Gabriel Baptista
• Visão estável
• Arquitetura estável
• Plano de construção adequado
• Despesas aceitáveis
• Stakeholders de acordo
24/09/2018
41
Tempo de Construção: Objetivos
Engenharia de Software - Professor Gabriel Baptista
• Evitar trabalho.
• Alcançar a qualidade adequada.
• Gerar versões úteis o mais rápido possível.
Tempo de Construção: Resultados
Engenharia de Software - Professor Gabriel Baptista
• Programas.
• Manuais.
• Release notes.
Tempo de Construção: Marco a ser 
atingido
Engenharia de Software - Professor Gabriel Baptista
• Software com capacidade de operação no 
nível adequado de Qualidade.
• Produto estável.
• Despesas aceitáveis.
Tempo de Transição: Objetivos
Engenharia de Software - Professor Gabriel Baptista
• Levar o software até os usuários.
• Treinar usuários e mantenedores.
• Converter bases operacionais.
• Receber o aceite do cliente.
Tempo de Transição: Resultados
Engenharia de Software - Professor Gabriel Baptista
• Pacote comercial.
• Treinamento.
• Folhas de avaliação e aceitação 
preenchidas.
Tempo de Transição: 
Marco a ser atingido
Engenharia de Software - Professor Gabriel Baptista
• Lançamento do produto.
• Usuário satisfeito.
• Despesas adequadas.
24/09/2018
42
Como?
(Conteúdo / Fluxo / Disciplina)
Engenhariade Software - Professor Gabriel Baptista
• Disciplinas de Engenharia
 Modelagem de negócios
 Requisitos
 Análise e Design
 Implementação
 Teste
 Implantação
• Disciplinas de Suporte
 Gerenciamento de Configuração e Mudanças
 Gerenciamento de projeto
 Ambiente
Modelagem de negócios
Engenharia de Software - Professor Gabriel Baptista
Requisitos
Engenharia de Software - Professor Gabriel Baptista
Análise e Design
Engenharia de Software - Professor Gabriel Baptista
Implementação
Engenharia de Software - Professor Gabriel Baptista
Teste
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
43
Implantação
Engenharia de Software - Professor Gabriel Baptista
Gerenciamento de Configuração e Mudanças
Engenharia de Software - Professor Gabriel Baptista
Gerenciamento de projeto
Engenharia de Software - Professor Gabriel Baptista
Ambiente
Engenharia de Software - Professor Gabriel Baptista
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
Métricas de Software
Aula 12
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
44
Para pensar...
Engenharia de Software - Professor Gabriel Baptista
Um dos objetivos básicos da 
Engenharia de Software é: a 
transformação da criação de 
sistemas de software de uma 
maneira artística, 
indisciplinada e pouco 
entendível para uma forma 
devidamente controlada, 
quantificada e previsível.
(Huzita, Elisa H. M.)
Quantificada e previsível?
Engenharia de Software - Professor Gabriel Baptista
SIM!!!
“Não se pode gerenciar o que não se pode 
medir”
(Tom De Marco)
“When you find something that looks 
funny, measure amount of funny – This 
is engineering. Numbers do tell a story”
(Jack Ganssle)
E como fazemos isso?
Engenharia de Software - Professor Gabriel Baptista
Através de métricas de software!
Medição de determinada informação 
sobre:
• O software
• O processo de produção
• Os envolvidos no processo de
produção
Exemplos de métricas
Engenharia de Software - Professor Gabriel Baptista
• Tamanho do produto de software (ex: Número de 
Linhas de código)
• Número de pessoas necessárias para implementar 
um caso de uso
• Número de defeitos encontrados por fase de 
desenvolvimento
• Esforço para a realização de uma tarefa
• Tempo / Prazo para a realização de uma tarefa
• Custo para a realização de uma tarefa
• Grau de satisfação do cliente (ex: adequação do 
produto ao propósito, conformidade do produto com 
a especificação)
E por que medimos o software?
Engenharia de Software - Professor Gabriel Baptista
• Gerir o projeto de desenvolvimento 
• Avaliar retorno sobre investimento (ROI)
• Aprender sobre o processo de 
desenvolvimento de software
• Melhorar o processo de produção de 
software
• Definir a produtividade da equipe
• Indicar qualidade no produto e no processo 
de software
Os quatro papéis da medição
(Humphrey)
Engenharia de Software - Professor Gabriel Baptista
Processos, Processos, 
Produtos e Produtos e 
ServiServiçços de os de 
SoftwareSoftware
EntenderEntenderEntenderEntender
AvaliarAvaliarAvaliarAvaliar PreverPreverPreverPrever
ControlarControlarControlarControlar
24/09/2018
45
Características das métricas
Engenharia de Software - Professor Gabriel Baptista
• O cálculo deve ser simples e barato
• Os valores obtidos podem ser utilizados para 
estudos estatísticos, desde que confiáveis
• O resultado deve ser expresso em alguma unidade
• Preferencialmente, a métrica deve ser 
automatizada
• Pode ser utilizada como sinalizador para avaliar e 
atuar em melhorias no processo de 
desenvolvimento
Categoria das métricas
Engenharia de Software - Professor Gabriel Baptista
Tipo Definição Exemplo
Direta Básica, a partir de 
contagem
Número de páginas do 
documento, número de 
linhas de código (KLOC), 
Número de erros 
detectados em uma versão
Indireta Derivada de uma ou 
mais métricas
Complexidade, Facilidade 
de manutenção, 
Custo, Pontos por função, 
Pontos por caso de uso
Cuidados a serem tomados
Engenharia de Software - Professor Gabriel Baptista
• Comparações indevidas, que podem acabar 
resultando em:
• Metas inadequadas
• Decisões inapropriadas
• Demissões
• Baixa no relacionamento entre a equipe
GQM – Goal, Question, Metrics
(Huzita, Elisa H. M.)
Engenharia de Software - Professor Gabriel Baptista
Objetivo 1 Objetivo 2
Questão 1 Questão 2 Questão 3 Questão 4
Métrica 1 Métrica 2 Métrica 3 Métrica 4 Métrica 5
Ciclo de medição
Engenharia de Software - Professor Gabriel Baptista
• Planejamento – Geração do plano de 
métricas
• Medição
• Análise dos dados
• Tomada de decisões e ações a serem 
realizadas
• Implementação das ações
• Nova rodada!
Como estimar software?
Engenharia de Software - Professor Gabriel Baptista
• Tamanho
 Quanto de software deve ser produzido?
• Esforço
 Quantas horas preciso para produzir um 
software com este tamanho?
• Prazo
 Com o número de pessoas que tenho no 
projeto, quanto tempo levarei para produzir este 
software?
• Custo
 Quanto ao final sairá o projeto?
24/09/2018
46
Histórico
Engenharia de Software - Professor Gabriel Baptista
• Década de 70: Número de linhas de código, 
complexidade
• Década de 80: Esforço e custo, medidas na 
etapa da especificação
• Década de 90: Relatórios com 
Benchmarking, ferramentas de medição, 
Análise de Pontos de Função, Pontos por 
Caso de Uso
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
Estimativa de Software
(Pontos por Função e Pontos por Caso de Uso)
Aula 13
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Revisando
Engenharia de Software - Professor Gabriel Baptista
• Por que medimos o software?
• Qual a diferença entre as métricas diretas e as 
métricas indiretas?
• Qual foi a técnica citada para detecção e obtenção das 
métricas adequadas para a solução de determinado 
problema?
• Para que serve a métrica que tem por unidade de 
medida o kLOC e em que tipo de categoria ela se 
encaixa?
• O que significa complexidade ciclomática?
Como estimar software?
Engenharia de Software - Professor Gabriel Baptista
• Tamanho
 Quanto de software deve ser produzido?
• Esforço
 Quantas horas preciso para produzir um 
software com este tamanho?
Como estimar software?
Engenharia de Software - Professor Gabriel Baptista
• Prazo
 Com o número de pessoas que tenho no 
projeto, quanto tempo levarei para produzir 
este software?
• Custo
 Quanto ao final sairá o projeto?
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
47
Mas como descobrir o tamanho do 
software?
Engenharia de Software - Professor Gabriel Baptista
• Base histórica
• Análise de Pontos por Função
• Análise de Pontos por Caso de Uso
Análise de Pontos por Função
Engenharia de Software - Professor Gabriel Baptista
“Da mesma maneira que a medida em metros quadrados do 
tamanho de uma casa não permite deduzir a velocidade 
com a qual a casa pode ser construída ou o seu tempo de 
construção, o tamanho em Pontos de Função NÃO mede a 
produtividade ou o esforço de desenvolvimento. Pontos de 
função medem o tamanho do QUE o software faz, ao invés 
de COMO ele é desenvolvido e implementado. Isto significa 
que, dado um conjunto de requisitos de usuário, o tamanho 
funcional do software será o mesmo, seja ele desenvolvido 
com a utilização de COBOL ou DB2, usando 
desenvolvimento rápido de aplicações (RAD), ou métodos 
estruturados de desenvolvimento.”
(Carol A. Dekkers)
Passos da APF
(Carol A. Dekkers)
Engenharia de Software - Professor Gabriel Baptista
• Identificar a fronteira da aplicação
• Contar os tipos de funções de dados
• ArquivosLógicos Internos ou ALIs, que são os grupos lógicos 
de dados mantidos dentro da fronteira da aplicação
• Arquivos de Interface Externa ou AIEs, os quais são apenas 
referenciados pela aplicação
• Contar os tipos de funções de transaçõe
• Entradas Externas ou EEs, que são processos de entrada de 
dados
• Saídas Externas ou SEs, por exemplo, relatório de 
empregados existentes
• Consultas Externas ou CEs, por exemplo, Consultar 
Detalhes de Empregados).
Passos da APF
(Carol A. Dekkers)
Engenharia de Software - Professor Gabriel Baptista
Tipo de 
Função
Baixa Média Alta
EE 3 4 6
SE 4 5 7
CE 3 4 6
ALI 7 10 15
AIE 5 7 10
Passos da APF
(Carol A. Dekkers)
Engenharia de Software - Professor Gabriel Baptista
• Determinar o Fator de Ajuste de Valor (FAV)
FAV = 0,65 + (Soma das Características Gerais do Sistema x 0,01
• Avaliação, em uma escala de 1 a 5, das seguintes quatorze 
Para terminar
Engenharia de Software - Professor Gabriel Baptista
Para obter a contagem ajustada (tamanho)
Tamanho = (contagem não ajustada * AFV)
Para obter esforço:
Esforço = contagem final de PF * valor HH p/ 1 PF
Para obter o prazo em dias:
Prazo = Esforço / Nº Desenvolvedores / Horas projeto dia
Para obter o custo:
Custo = Esforço * Custo HH
24/09/2018
48
Use case points
Engenharia de Software - Professor Gabriel Baptista
• Proposto por Gustav Karner em 1993
• Evolução dos pontos por função
• Objetivo: Determinar o tamanho do 
software
• Unidade de medida: UCP
• Baseai-se na avaliação da 
complexidade dos elementos dos casos 
de uso e do ambiente do sistema.
Passo 1 – Calcular UAW
(Unajusted Actor Weight)
Engenharia de Software - Professor Gabriel Baptista
Ator Interface Peso
Simples Interface de programa (API) 1
Médio
Protocolo (Ex.:TCP/IP) ou interface em modo 
texto
2
Complexo Interface gráfica 3
Passo 2 – Calcular UUCW
(Unajusted Use Case Weight)
Engenharia de Software - Professor Gabriel Baptista
Caso de 
Uso
Descrição Peso
Simples
< 3 transações ou < 5 
classes de análise
5
Médio
4-7 transações ou 5 a 10 
classes de análise
10
Complexo
> 7 transações ou > 10 
classes de análise
15
Passo 3 – Determinar o TCF (Technical 
Complexity Factor)
Engenharia de Software - Professor Gabriel Baptista
Fator Descrição Peso
T1 Sistema distribuído 2
T2 Objetivos de performance 1
T3 Eficiênca on-line 1
T4
Complexidade de 
processamento 1
T5
Código reusável em outras 
aplicações 1
T6 Facilidade de instalação 0,5
Passo 3 – Determinar o TCF (Technical 
Complexity Factor)
Engenharia de Software - Professor Gabriel Baptista
Fator Descrição Peso
T7 Facilidade de uso 0,5
T8 Portabilidade 2
T9
Facilidade de alterações 
(changeability) 1
T10 Concorrência 1
T11 Segurança 1
T12 Acesso direto a terceiros 1
T13
Necessidade de facilidades 
especiais de treinamento para 
usuários 1
Passo 4 – Determinar o EF 
(Environmental Factor)
Engenharia de Software - Professor Gabriel Baptista
Fator Descrição Peso
F1 Familiaridade da equipe com RUP 1,5
F2 Experiência da equipe 0,5
F3 Experiência da equipe em OO 1
F4 Capacidade dos analistas da equipe 0,5
F5 Motivação 1
F6 Estabilidade dos requisitos 2
F7 Estagiários ou funcionários em tempo parcial -1
F8 Dificuldade da linguagem de programação -1
24/09/2018
49
Passo 5 - Cálculos
Engenharia de Software - Professor Gabriel Baptista
UUCP = UAW + UUC
TCF = 0,6 + 0,01 * SOMA (Peso * Valor)
EF = 1,4 - 0,03 * SOMA (Peso * Valor)
UCP = UUCP * TCF * EF
Esforço
Engenharia de Software - Professor Gabriel Baptista
Por padrão:
1 UCP = 20 h/H
Obrigado!
Engenharia de Software - Professor Gabriel Baptista
Metodologias Ágeis
Aula 14
(Versão 2018-02)
Engenharia de Software
Professor Gabriel Baptista
( gabriel.baptista@uni9.pro.br )
( http://sites.google.com/site/professorgabrielbaptista )
Engenharia de Software - Professor Gabriel Baptista
Extreme Programming (XP) 
Engenharia de Software - Professor Gabriel Baptista
De acordo com Kent Beck, 12 ou 13 regras
1. O jogo de planejar
• Tarefas pequenas para cada iteração
2. Releases pequenos
• Novos releases diários, semanais ou mensais
3. Metáforas
• Com o objetivo de expressar funcionalidades do
sistema
4. Design simples
• Sem duplicação de código, feito uma única vez
5. Testes
• Testes são escritos continuamente
• Clientes também escrevem casos de teste
mailto:gabriel.baptista@uninove.br
http://sites.google.com/site/professorgabrielbaptista
24/09/2018
50
Extreme Programming (XP) 
Engenharia de Software - Professor Gabriel Baptista
6. Refactoring
• Simplicidade, flexibilidade, redução de redundância
7. Programação em par
• Dois codificadores compartilhando o mesmo
computador
8. Integração contínua
• Todo novo código é integrado imediatamente
9. Controle coletivo
• Todos os integrantes podem acessar qualquer código
10. Cliente no local de desenvolvimento
• Ao menos um cliente disponível full-time
11. 40 horas por semana
• A necessidade de trabalho fora do horário é um
sintoma de um grande problema.
Extreme Programming (XP)
Engenharia de Software - Professor Gabriel Baptista
12. Área de trabalho aberta
• Grande sala
13. Padrões de codificação
• Promove fácil entendimento e uniformidade
Extreme Programming (XP)
Engenharia de Software - Professor Gabriel Baptista
• Funcionalidades = Stories
• As stories devem ser:
• Orientados ao negócio
• Testáveis
• Estimáveis
• Terminadas em poucos dias
• Para cada release, um conjunto de stories
é liberado
• O teste do release é fundamental para o
XP
SCRUM
Engenharia de Software - Professor Gabriel Baptista
• Técnica para gestão de projetos
• Baseado em conceitos ágeis
• Três papéis dentro da equipe
• Product owner
• Scrum master
• Team (Time)
Product Owner
Engenharia de Software - Professor Gabriel Baptista
• Define as funcionalidades do produto
• Prioriza funcionalidades de acordo com o 
valor de negócio 
• Decide a data e o conteúdo da entrega
• Tira dúvidas da equipe durante os Sprints 
• Aceita ou rejeita os resultados do trabalho
Scrum Master
Engenharia de Software - Professor Gabriel Baptista
• Cuida da gestão do projeto
• Garante o uso dos princípios e práticas do Scrum
• Remove impedimentos 
• Garante a produtividade do time
• Garante a cooperação entre todos os papéis e 
funções
• Protege o time de interferências externas
24/09/2018
51
Time
Engenharia de Software - Professor Gabriel Baptista
• Define as tarefas
• Estima esforço
• Desenvolve as funcionalidade do produto
• Garante qualidade
• Evolui o processo
Metodologia Scrum
Engenharia de Software - Professor Gabriel Baptista
Product Backlog
Engenharia de Software - Professor Gabriel Baptista
• Possui requisitos de alto nível
• Idealmente expressado de forma que os itens 
tenham valor para os usuários e clientes do produto
• Priorizado pelo Product Owner
• Repriorizado no início de cada Sprint
• Muda e evolui durante o projeto
Sprint
Engenharia de Software - Professor Gabriel Baptista
• Duração típica de 2 a 4 semanas
• Uma duração constante proporciona um melhor 
ritmo
• O produto é projetado, codificado e testado 
durante o Sprint
Reuniões durante um Sprint
Engenharia de Software - Professor Gabriel Baptista
• Sprint Planning – Ocorre no início do sprint com 
todos os envolvidos.
• Daily Meeting – Reunião em pé para verificação 
do andamento do projeto.
• Retrospectiva – Reunião de encerramento do 
Sprint
Ferramentas – Burndown Chart
Engenharia de Software - Professor Gabriel Baptista
24/09/2018
52
Ferramentas – Scrum board
Engenharia de Software - Professor Gabriel Baptista
Ferramentas – Scrum board
Engenharia de Software - Professor Gabriel Baptista
Engenharia de Software - Professor Gabriel Baptista
* DSDM = Dynamic Systems Development Method
Adoção do Scrum Importante
Engenharia de Software - Professor Gabriel Baptista
• Conceitos de Engenharia de Software 
devem ser utilizados!
• Não confundir métodos ágeis com falta de 
métodos!
Obrigado!

Continue navegando