Buscar

Fundamentos ESW-Uniarp

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

Fundamentos de Engenharia de Fundamentos de Engenharia de 
SoftwareSoftware
 Luiz CamargoLuiz Camargo
Quem?Quem?
Doutorando em Engenharia de Software pela UFPR. Possui mestrado em 
Ciência da Computação pela UFSC (2001), especialização em Sistemas de 
Informação e Software pela UFRGS (1998), especialização em Análise de 
Sistemas pelo Instituto Filadélfia de Londrina – PR (1995), graduação em 
Tecnologia em Processamento de Dados pelo Centro de Ensino Superior de 
Maringá-PR (1993). 
Atualmente é Professor (Graduação e Pós-Graduação (UTFPR e UNC ) no 
Centro Universitário Tupy (UniSociesc), Consultor adhoc da FAPESC (Fundação 
de Amparo à Pesquisa e Inovação de Santa Catarina) e MIC Manager – 
Microsoftt Inovation Center - possui experiência profissional (Cocamar, Usina 
de Açúcar e Álcool Santa Terezinha, American Entretenimento, Data Sul e 
Agencia DMG – co-fundador) em desenvolvimento, implantação e gestão de 
projetos de software. Mais de 14 anos de experiência na docência do ensino 
superior (Unipar – Universidade Paranaense e UnISociesc).
Quais as perspectivas?
Pós-Graduação ESW - Fundamentos de Engenharia de Software
EmentaEmenta
● Agenda
● Software: produto ou serviço. 
● Características e propriedades do software. 
● Visão geral e princípios fundamentais da Engenharia de 
Software. 
● Processos de Desenvolvimento de Software. 
● RUP (Rational Unified Process). 
● Tendências em Engenharia de Software.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Fundamentos de Engenharia de Fundamentos de Engenharia de 
SoftwareSoftware
Pós-Graduação ESW - Fundamentos de Engenharia de Software
IntroduçãoIntrodução
● O que é software?
● Há mais de 25 anos software era considerado programa 
de computador.
● O que era uma visão muito restritiva.
IDENTIFICATION DIVISION. 
PROGRAM-ID. HELLO-WORLD. 
* ENVIRONMENT DIVISION. 
* DATA DIVISION. 
* PROCEDURE DIVISION. 
 PARA-1. 
 DISPLAY "Hello, World!!".
* STOP RUN. 
Pós-Graduação ESW - Fundamentos de Engenharia de Software
O que é software?O que é software?
● Software é, além do programa, todos os dados de 
documentação e configuração associados, 
necessários para que o programa opere 
corretamente.
● Existem dois tipos básicos:
– Produtos genéricos (de prateleira); e
– Produtos sob encomenda (personalizados).
Pós-Graduação ESW - Fundamentos de Engenharia de Software
O softwareO software
● O software está presente em grande parte das nossas 
atividades do dia a dia.
● Está presente em todos os setores da economia;
Primário Secundário Terciário
Pós-Graduação ESW - Fundamentos de Engenharia de Software
● Computação ubíqua
● The Aware Home Research Initiative
● Interação homem-máquina
● Wii, PS Move, X-Box, Kinect
““Onipresente”Onipresente”
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Algumas mudanças nos últimos Algumas mudanças nos últimos 
25 anos25 anos
● Livros de engenharia de software publicados há 
mais de 20 anos, escritos em terminal “burro”, agora 
lidos em iPad, Kindle, HP slate, Galaxy tab, etc.;
Pós-Graduação ESW - Fundamentos de Engenharia de Software
● Grande capacidade de criação de 
softwares complexos;
● Infra-estrutura nacional (energia, 
comunicação, …) com sistemas 
mais complexos e confiáveis;
● Surgimento de muitas tecnologias 
para sistemas de negócio (JEE, 
JME, .NET, EJB, C#, SOAP, 
BPEL4WS, CBSE, MDE, entre 
outras siglas...).
Ficaram mais complexos...Ficaram mais complexos...
Pós-Graduação ESW - Fundamentos de Engenharia de Software
● Tecnologias do filme “Avatar”
● Estímulos cerebrais refletidos em 
avatares remotos...
● Imagens 3D...
Tentam representar a realidadeTentam representar a realidade
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Estão na rede pública...Estão na rede pública...
● Sistemas para Web
– Home bankings
– Comércio eletrônico
– Jogos on-line
– etc.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Apóiam decisões...Apóiam decisões...
● ERP – Enterprise Resource Planning
Pós-Graduação ESW - Fundamentos de Engenharia de Software
E a engenharia de software E a engenharia de software 
mudou tanto assim? mudou tanto assim? 
● Nem tanto..., segundo Sommerville (2008).
● Estudos IEEE software (2003) mostraram que 40% das 
empresas usam um modelo de processo criado há mais 
20 anos (Cascata);
● Teste é, ainda, a técnica dominante de verificação de 
programas, apesar que inspeções tenham sido bastante 
usadas a partir da década de 70;
● As ferramentas CASE (Computer-Aided Software 
Engineering), apesar de usarem UML (Unified Modeling 
Language), ainda são essencialmente editores de 
diagramas com alguma geração de código.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Os clientes estão satisfeitos?Os clientes estão satisfeitos?
● Apesar dos métodos e técnicas atuais de ES terem 
capacidade de criar softwares mais complexos...
● Muitos projetos continuam atrasando, ultrapassando os 
orçamentos e produzindo softwares que não atendem as 
necessidades dos clientes.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Estimativas...Estimativas...
● Uma pesquisa no Reino Unido sobre um sistema 
para tribunais de justiça (pequenas causas) 
constatou:
● Custo estimado: 156mi libras;
– Prazo estimado: 2001;
● Custo = 390mi libras;
– Em 2004 ainda não estava todo operacional.
● Projeto Crédito Imobiliário da CAIXA.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Muitos projetos são canceladosMuitos projetos são cancelados
 
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Outros problemasOutros problemas
O caso Ariane 5O caso Ariane 5
● Explodiu após 40 seg.
● Projeto de +$300 milhões 
● Pagaria 100 programadores durante um século a $2,500.00/mês.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
O que causou o acidente?O que causou o acidente?
● Os computadores, principal e back-up, deram shut-
down ao mesmo tempo depois de um runtime error;
● Devido a um programa que convertia um valor de 
ponto flutuante para um inteiro de 16 bits (recebeu 
como entrada um valor que estava fora da faixa 
permitida).
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Ainda existe muito amadorismo Ainda existe muito amadorismo 
no desenvolvimento de software...no desenvolvimento de software...
Pedido Entendido Projetado Entregue
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Informações LocaisInformações Locais
● Quantas empresas de software existem na cidade?
● Quantas dessas empresas empregam “engenharia” 
de software na construção de seus produtos?
● Talvez muitas sigam alguns métodos...
● Será que de forma sistemática?
● Como compará-las?
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Portanto...Portanto...
● Existe uma necessidade urgente de ensinar 
engenharia de software.
[Sommerville, 2008]
Pós-Graduação ESW - Fundamentos de Engenharia de Software
O que é Engenharia?O que é Engenharia?
● Desenvolvimento e aplicação sistemática de modelos de 
comprovada eficácia gerando soluções tecnológicas para 
Problemas da Humanidade.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Atividades Típicas de uma Atividades Típicas de uma 
Disciplina de EngenhariaDisciplina de Engenharia
● Uso de Materiais;
● Uso de Ferramentas;
● Criação de processos baseados em 
métodos;
● Projeto e implementação;
● Uso de produtos e serviços;
● Gestão de projetos
● Planejamento, organização, direção, 
controle, gestão de pessoal.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
O que é Engenharia de O que é Engenharia de 
Software?Software?● É um ramo da engenharia cujo foco é o 
desenvolvimento dentro de custos adequados de 
sistemas de software de alta qualidade. 
[Sommerville]
● Engenharia de software é a criação e a 
utilização de sólidos princípios de engenharia a 
fim de obter software de maneira econômica, 
que seja confiável e que trabalhe eficientemente 
em máquinas reais. [Pressman apud Fritz Bauer]
● Aplicação de uma abordagem sistemática, 
disciplinada e quantificável, para o 
desenvolvimento, operação e manutenção de 
software. [IEEE]
Pós-Graduação ESW - Fundamentos de Engenharia de Software
HistóricoHistórico
● O termo foi inicialmente proposto na década de 
1960 e utilizado oficialmente em 1968 na 
Conferência sobre Engenharia de Software da 
OTAN com a participação da ACM - Association for 
Computing Machinery. 
Pós-Graduação ESW - Fundamentos de Engenharia de Software
HistóricoHistórico
● Sua criação surgiu numa tentativa de contornar a chamada 
“crise do software” e dar um tratamento de engenharia (mais 
sistemático e controlado) ao desenvolvimento de sistemas 
de software complexos.
● Problemas tratados desde a primeira vez que o termo 
Engenharia de Software foi usado na OTAN em 1968:
● Cronogramas não observados;
● Projetos com tantas dificuldades que são abandonados;
● Módulos que não operam corretamente quando combinados;
● Programas que não fazem exatamente o que era esperado;
● Programas tão difíceis de usar que são descartados;
● Programas que simplesmente param de funcionar.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
HistóricoHistórico
● Algumas conclusões:
● Houve muito avanço desde 1968;
● Hoje entendemos melhor as atividades envolvidas no 
desenvolvimento de software;
● Novos métodos, notações e ferramentas reduzem o esforço de 
produção de software;
● Não existe uma abordagem “ideal” de engenharia de software;
● Diante da diversidade de sistemas é necessário uma diversidade de 
abordagens de desenvolvimento.
● Enfim, sem softwares complexos não teríamos explorado o 
espaço, não teríamos a Internet, etc.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
● Nos últimos anos, os avanços mais importantes:
● UML (Unified Modeling Language) como padrão para 
descrição de sistemas orientados a objetos;
● Métodos Ágeis (XP, Scrum, Lean, etc.);
● RUP (IBM Rational Unified Process);
● Modelos de Maturidade, como CMMI e MPSBR.
Principais Avanços na ESPrincipais Avanços na ES
Pós-Graduação ESW - Fundamentos de Engenharia de Software
● 691 artigos das 7 melhores Revistas e 7 melhores 
conferências de Software e Engenharia de Software.
● 77% dos artigos em revistas e conferências focam 
20% em Engenharia de Software:
● Teste e Depuração (D.2.5);
● Verificação de software/programa (D.2.4);
● Gestão (D.2.9). 
 [CAI e CARD 2008]
Quais são os assuntos mais Quais são os assuntos mais 
pesquisados atualmente em ES?pesquisados atualmente em ES?
Pós-Graduação ESW - Fundamentos de Engenharia de Software
ACM computing classification ACM computing classification 
system: Software Engineeringsystem: Software Engineering
● D.2.0 General
● D.2.1 Requirements/Specifications
● D.2.2 Design Tools and Techniques
● D.2.3 Coding Tools and Techniques
● D.2.4 Software/Program Verification
● D.2.5 Testing and Debugging
● D.2.6 Programming Environments
● D.2.7 Distribution, Maintenance, and Enhancement
● D.2.8 Metrics
● D.2.9 Management
● D.2.10 Design
● D.2.11 Software Architectures
● D.2.12 Interoperability
● D.2.13 Reusable software
● D.2.m Miscellaneous
Pós-Graduação ESW - Fundamentos de Engenharia de Software
691 papers 691 papers 
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Ênfase do encontroÊnfase do encontro
1. Introdução à engenharia de software e modelos de processo
2. Planejamento - gerência de projetos
3. Métodos orientados a objeto - requisitos de software
4. Métodos orientados a objeto - análise e projeto
5. Verificação e Validação de software
6. Manutenção de software
7. Qualidade de software
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Introdução a engenharia de Introdução a engenharia de 
software e modelos de processosoftware e modelos de processo
Pós-Graduação ESW - Fundamentos de Engenharia de Software
O que é Engenharia de O que é Engenharia de 
Software?Software?
● Engenharia de Software é uma tecnologia em 
camadas, onde a camada que dá apoio a 
engenharia de software é o Foco na 
Qualidade. A camada de Processos é o 
fundamento da engenharia de software, o que 
mantém unidas as camadas de tecnologia e 
permite o desenvolvimento racional de 
software. Os Métodos fornecem a Técnica de 
como fazer para construir software. E as 
Ferramentas fornecem apoio automatizado 
ou semi automatizado para o processo e para 
os métodos.
Uma Tecnologia em Camadas.
[Pressman]
Pós-Graduação ESW - Fundamentos de Engenharia de Software
QualidadeQualidade
● A qualidade é relativa. O que é qualidade para uma 
pessoa pode ser a falta de qualidade para outra.
G. Weinberg.
● A idéia de qualidade é aparentemente intuitiva, 
porém quando examinado mais longamente, o 
conceito se revela complexo.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
O que é qualidade?O que é qualidade?
● É uma área de conhecimento da Engenharia de Software que 
objetiva garantir a qualidade do software através da 
definição e normatização de processos de desenvolvimento 
[Pressman].
● É o grau em que um conjunto de características inerentes a 
um produto, processo ou sistema cumpre os requisitos 
inicialmente estipulados para estes [ISO 9000 - 2000].
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Garantia da QualidadeGarantia da Qualidade
● O propósito da área de garantia da qualidade é 
assegurar que os objetivos planejados no início do 
projeto serão cumpridos.
● Através de:
● Atividades de V&V (verificação e validação);
● Auditorias.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
ProcessoProcesso
● No latim procedere é verbo que indica a ação de 
avançar, ir para frente (pro+cedere). 
● É conjunto sequencial e peculiar de ações que 
objetivam atingir uma meta. É usado para criar, 
inventar, projetar, transformar, produzir, controlar, 
manter e usar produtos ou sistemas.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
O que é processo de software?O que é processo de software?
● Processo de software, ou processo de engenharia de 
software, é uma sequência coerente de práticas que 
objetiva o desenvolvimento ou evolução de sistemas 
de software. 
● Estas práticas englobam as atividades de 
especificação, projeto, implementação, testes;
● Caracteriza-se pela interação de 
ferramentas, pessoas e métodos.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Processo de softwareProcesso de software
● Segundo Sommerville, é um conjunto de atividades 
e resultados associados que produz um produto de 
software.
● Existem 4 atividades fundamentais que são comuns 
a todos os processos de software;
● Especificação de software;
● Desenvolvimento de software;
● Validação de software;
● Evolução de software.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Processo de softwareProcesso de software
● Diferentes tipos de sistemas necessitam de 
diferentes processos de desenvolvimento.
● Por exemplo:
● Um software de tempo real de aeronave deve ser 
completamente especificado antes do início do 
desenvolvimento;
● Um sistema de comércio eletrônico a especificação e o 
programa são, geralmente, desenvolvidos em conjunto.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Ciclos de vida de Ciclos de vida de 
desenvolvimentode softwaredesenvolvimento de software
● Cascata
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Ciclos de vida de Ciclos de vida de 
desenvolvimento de softwaredesenvolvimento de software
● Prototipação
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Ciclos de vida de Ciclos de vida de 
desenvolvimento de softwaredesenvolvimento de software
● Iterativo
Pós-Graduação ESW - Fundamentos de Engenharia de Software
CBSE – Component Based CBSE – Component Based 
Software EngineeringSoftware Engineering
 
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Processo UnificadoProcesso Unificado
 
 
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Como melhorar os processos de Como melhorar os processos de 
software?software?
Qualidade do produto 
de software
Qualidade do processo de
desenvolvimento de software
Modelos de maturidade
(CMMI/MPS.BR)
É obtida por meio de 
É alcançada mais facilmente se baseada em 
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Modelos de Melhoria de Modelos de Melhoria de 
ProcessosProcessos
● É uma coleção de elementos estruturados que 
descrevem as características e melhores práticas de 
processos efetivos;
● Auxilia na definição de objetivos e prioridades do 
esforço de melhoria de processos;
● Fornece um guia para a melhoria de processos 
organizacionais.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Modelos de melhoria de Modelos de melhoria de 
ProcessosProcessos
● CMMI - Capability Maturity Model Integration
● http://www.sei.cmu.edu/cmmi/index.cfm
● MPS.BR - Melhoria de Processo do Software 
Brasileiro
● http://www.softex.br/mpsbr
Pós-Graduação ESW - Fundamentos de Engenharia de Software
MR-MPS e CMMIMR-MPS e CMMI
Em Otimização
Gerenciado Quantitativamente
A
B
DefinidoC
Largamente DefinidoD
 Parcialmente DefinidoE
GerenciadoF
Parcialmente 
Gerenciado
G
2
3
4
5
MR-MPSCMMI
Gerenciado
Definido
Gerenciado 
Quantitativamente
Otimizado
1Iniciado
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Modelo de maturidade de Modelo de maturidade de 
processosprocessos
Fonte: [SIQUEIRA, 2010]
Pós-Graduação ESW - Fundamentos de Engenharia de Software
● CMMI 
Níveis e 
áreas de 
processo
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Maturidade dos construtores de Maturidade dos construtores de 
softwaresoftware
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Maturidade dos construtores de Maturidade dos construtores de 
softwaresoftware
Fonte:http://www.sei.cmu.edu/cmmi/why/profiles/upload/2012MarV3CMMI.pdf
Pós-Graduação ESW - Fundamentos de Engenharia de Software
CMMI: Números – Mar CMMI: Números – Mar 
20132013
Pós-Graduação ESW - Fundamentos de Engenharia de Software
CMMI: Números – Mar CMMI: Números – Mar 
20132013
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Por nível de Por nível de 
maturidade/categoriamaturidade/categoria
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Avaliações de MaturidadeAvaliações de Maturidade
● Para ver as organizações avaliadas e seus níveis de 
maturidade:
● http://sas.sei.cmu.edu/pars/pars.aspx
Pós-Graduação ESW - Fundamentos de Engenharia de Software
● MPS.BR – 
Níveis e áreas 
de processo
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Métodos ágeisMétodos ágeis
● Não são as espécies mais fortes que sobrevivem, 
nem as mais inteligentes, mas aquelas mais sensíveis 
a mudanças.
C. Darwin
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Métodos ÁgeisMétodos Ágeis
● Tornaram-se populares em 2001, quando 17 especialistas em 
processos estabeleceram princípios comuns, criaram a 
Aliança Ágil e estabeleceram o “Manifesto Ágil”.
 [Beck, et al., 2001].
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Manifesto ÁgilManifesto Ágil
(http://www.agilemanifesto.org/)(http://www.agilemanifesto.org/)
● 4 Valores
Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas
Indivíduos e interações - mais que 
processos e ferramentas;
Software em funcionamento - mais que 
documentação abrangente
Colaboração com o cliente - mais que 
negociação de contratos
Responder a mudanças
Pós-Graduação ESW - Fundamentos de Engenharia de Software
12 Princípios12 Princípios
1. Softwares funcionais são entregues frequentemente (semanas, ao invés de 
meses);
2. Softwares funcionais são a principal medida de progresso do projeto;
3. Até mesmo mudanças tardias de escopo no projeto são bem-vindas;
4. Cooperação constante entre pessoas que entendem do ‘negócio’ e 
desenvolvedores;
5. Projetos surgem através de indivíduos motivados, e que deve existir uma 
relação de confiança;
6. Design do software deve prezar pela excelência técnica;
7. Simplicidade;
8. Rápida adaptação às mudanças;
9. Indivíduos e interações mais do que processos e ferramentas;
10.Software funcional mais do que documentação extensa;
11.Colaboração com clientes mais do que negociação de contratos;
12.Responder a mudanças mais do que seguir um plano.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
XP – eXP – eXXtreme treme PProgrammingrogramming
● Criado em 1996, por Kent Bech, no Departamento 
de Computação da montadora de carros Daimler 
Crysler.
● O Extreme Programming é uma disciplina de 
desenvolvimento de software baseada nos valores 
simplicidade, comunicação, feedback e coragem. 
Ela funciona através da união da equipe, uso de 
práticas simples, feedback suficiente para permitir 
que a equipe saiba onde está e ajustes das práticas 
para cada situação.
● http://www.extremeprogramming.org/
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Valores do XPValores do XP
● Comunicação
● Conversas pessoais entre clientes e desenvolvedores;
● Simplicidade
● Código enxuto que não deve possuir funcionalidades 
desnecessárias;
● FeedBack
● Ter informações constantes sobre o código (testes unitários) e 
clientes (avaliação);
● Coragem
● Para implantar os três valores anteriores. Por exemplo, no 
feedback disponibilizar constantemente código para avaliação 
do cliente pode conduzir a mudanças constantes.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Ciclo de vida do XPCiclo de vida do XP
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Práticas do XPPráticas do XP
Pós-Graduação ESW - Fundamentos de Engenharia de Software
XP – pair programmingXP – pair programming
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Problemas do XPProblemas do XP
● [Silva]
● Sentimento de processo caótico “Codifica-remenda”;
● Falta de uso de boas práticas de diagramas na análise;
● Informalidade no levantamento de requisitos;
● [Beck]
● Resistência a programação em pares;
● Equipes geograficamente separadas.
Origins of Lean Software Origins of Lean Software 
DevelopmentDevelopment
● Lean - desenvolvido na Toyota
● Original author : Taiichi Ohno
● Inventor of Just-In-Time manufacturing
● “Costs do not exist to be calculated. Costs exist to be reduced.”
● Taiichi Ohno
● Implementation at Toyota
● Lean vs Batch and Queue
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Principios Lean SoftwarePrincipios Lean Software
1. Eliminar todos os desperdícios que não agregam valor ao 
negócio;
2. Aplificar a aprendizagem;
3. Retardar as decisões do projeto o máximo possível;
4. Capacitea equipe;
5. Entregas rápidas (cuidado! Velocidade x cronograma);
6. Manter a integridade (conceitual e percebida);
7. Veja o todo.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Planejamento - gerenciamento Planejamento - gerenciamento 
de projetosde projetos
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Gestão de ProjetosGestão de Projetos
“Visitei dezenas de instalações comerciais, tanto 
boas como ruins, e observei um grande número de 
gerentes de processamento de dados, tanto bons 
quanto ruins. Frequentemente, observei como esses 
gerentes lutavam inutilmente com projetos que 
constituíam um verdadeiro pesadelo, espremidos por 
prazos de entrega inexequíveis, ou entregavam 
sistemas que irritavam seus usuários e prosseguiam 
devorando enormes parcelas de tempo de 
manutenção”. 
(PRESSMAN, 2002 apud Meiler Page-Jones)
Pós-Graduação ESW - Fundamentos de Engenharia de Software
O que é gerenciamento de O que é gerenciamento de 
projetos?projetos?
● É a arte de confrontar os objetivos da concorrência, 
gerenciar riscos e superar obstáculos para liberar 
com êxito um produto que atenda às necessidades 
dos clientes e de seus usuários
 (RUP, 2008).
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Gerenciamento de ProjetosGerenciamento de Projetos
● É a aplicação de conhecimentos, habilidades, ferramentas e 
técnicas com o objetivo de satisfazer os requisitos do 
projeto.
● Gerenciar um projeto envolve 
● Identificar as necessidades;
● Estabelecer os objetivos;
● Balancear qualidade, escopo, prazo e custo;
● Adaptar o planejamento para atender aos stakeholders;
● Gerenciar interesses e interessados, com necessidades e 
expectativas diferentes.
[PMBoK, 2008]
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Ciclo de vida de gestão, PMBoKCiclo de vida de gestão, PMBoK
● 5 grupos de processos
● 9 áreas de conhecimento
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Framework ScrumFramework Scrum
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Kaban “cartão”/”sinalização”Kaban “cartão”/”sinalização”
Pós-Graduação ESW - Fundamentos de Engenharia de Software
O que é projeto?O que é projeto?
● É um empreendimento temporário com o objetivo 
de criar um produto ou serviço de resultado único.
[PMBoK, 2008]
● TEMPORÁRIO significa que cada projeto tem um 
começo e um fim bem definidos .
● ÚNICO significa que o produto ou serviço produzido é 
de alguma forma diferente de todos os outros produtos 
ou serviços semelhantes. 
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Métodos para estimativa de Métodos para estimativa de 
projetos de softwareprojetos de software
● LOC – Lines of code
● UCP – Use Case Point
● APF – Análise de Pontos de Função
Pós-Graduação ESW - Fundamentos de Engenharia de Software
● LOC – Lines of code
● É uma das medidas mais antigas para determinação do 
tamanho, esforço e, consequentemente, produtividade no 
desenvolvimento de software.
LOCLOC
Pós-Graduação ESW - Fundamentos de Engenharia de Software
● UCP – Use Case Point
● Técnica proposta em 1993 por Gustav Karner para medir 
o tamanho de projetos de software orientados a objeto;
● Metodo_UCP.pdf
UCPUCP
Pós-Graduação ESW - Fundamentos de Engenharia de Software
● APF – Análise de Pontos de Função
● A mais utilizada para mensuração do tamanho de projetos de 
desenvolvimento e melhoria de software;
● Criada no início da década de 70 por Alan Albrecht na IBM;
● Consiste na determinação do tamanho funcional do sistema 
através da visão do usuário do mesmo, independente da 
tecnologia utilizada.
● Metodo_APF_Hazan_2001.pdf
APFAPF
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Motivos para medir o tamanho Motivos para medir o tamanho 
dos softwaresdos softwares
● Determinar esforço, recursos, duração e custo do 
desenvolvimento;
● Gerenciar contratos de software;
● Indicar a qualidade do produto;
● Formar uma baseline para estimativas;
● Avaliar a produtividade do processo.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Como estimar custo e prazo?Como estimar custo e prazo?
● O método de análise por pontos de função (APF)
● A APF é um método padrão para a medição de tamanho 
de software, com base na funcionalidade a ser 
implementada, sob o ponto de vista do usuário. 
● [HAZAN 2001] 
http://www.scribd.com/doc/18175946/Analise-de-Pontos-de-Funcao
Pós-Graduação ESW - Fundamentos de Engenharia de Software
APFAPF
Pós-Graduação ESW - Fundamentos de Engenharia de Software
APFAPF
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Exemplo: sistema webExemplo: sistema web
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Atividade 1Atividade 1
Estimar esforço, prazo, custo e faturamentoEstimar esforço, prazo, custo e faturamento
Realizar em equipe de até 3 estudantes – avaliação in loco
● Considerando:
● Produtividade média mundial Java = 17h/PF
● Custo médio da hora/homem = R$25,00
● Produtividade real da equipe Java = 20h/PF
● Custo fixo = 25%
● ROI esperado = 12%
● Estimar
● Esforço total em horas, prazo em dias, custo e valor de venda 
em reais.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Planejamento – (atividade I)Planejamento – (atividade I)
● Distribuir o esforço pelas fases do processo 
(considerar o RUP)
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Ferramentas para gestão de Ferramentas para gestão de 
projetosprojetos
● OpenProject
● http://openproj.org/
● APF plus
● http://www.ivanmecenas.ecn.br/apf.htm
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Métodos orientados a objeto - Métodos orientados a objeto - 
Requisitos de softwareRequisitos de software
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Introdução à modelagem Introdução à modelagem 
orientada a objetos com UMLorientada a objetos com UML
● Requisitos
● Modelo de casos de uso
● Análise e Design
● Modelo de análise
● Modelo de design
● Modelo da arquitetura
● Modelo de implementação
● Modelo de implantação
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Introdução à UML – Unified Introdução à UML – Unified 
Modeling LanguageModeling Language
● O que é modelagem?
● Uma técnica de engenharia aprovada e bem aceita que tem o 
objetivo de permitir um maior entendimento do sistema e 
para comunicar esse entendimento a outras pessoas.
● O artefato oriundo desta técnica é o modelo, que 
resumidamente pode ser definido como “uma simplificação 
da realidade”.
● Quais os objetivos da modelagem?
● Visualizar o sistema como é ou como deverá ser;
● Especificar a estrutura ou o comportamento do sistema;
● Proporcionar um guia para a construção do sistema;
● Documentar as decisões e soluções.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
UML – Unified Modeling UML – Unified Modeling 
LanguageLanguage
● Autores:
● Grady Booch (Booch method);
● James Rumbaugh (OMT-object modeling technique); e
● Ivar Jacobson (OOSE-object oriented software 
engineering). 
● Em 1997 a UML foi aprovada como padrão pelo 
Object Management Group (OMG).
● É uma linguagem visual para modelar sistemas 
orientados a objetos. 
Pós-Graduação ESW - Fundamentos de Engenharia de Software
O que é requisito de software?O que é requisito de software?
● Um requisito é definido como "uma condição ou uma 
capacidade com a qual o software deve estar de acordo".
● A IEEE [IEEE-Std-830-1998] define algumas características 
para uma especificação de qualidade:
● Correção – requisito a ser construído;
● Precisão – única interpretação;
● Completude– completo em relação a funcionalidade e restrições;
● Consistência – consistente com outros requisitos;
● Priorização – de acordo com a importância (essencial e opcional);
● Verificabilidade – não deve ser ambíguo e qualitativos;
● Modificabilidade – estruturado e sem redundância;
● Rastreabilidade – deve permitir a localização da origem e permitir 
mudança.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Técnicas de levantamento de Técnicas de levantamento de 
Requisitos de SoftwareRequisitos de Software
● Entrevistas
● A técnica mais comum. AS perguntas devem ser objetivas e 
quantitativas;
● Etnografia
● Observação. Quando os usuários não querem ou não têm 
tempo;
● Questionários
● Quando não é possível nenhuma das acima;
● Pode ser combinado com entrevista para 
esclarecimento de dúvidas;
● Cenários
● Casos de uso ou histórias do XP.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Diagrama de caso de usoDiagrama de caso de uso
● Ator: Alguém ou algo fora do sistema que interage com ele.
● Caso de uso: Especificação de uma seqüência de ações que 
um sistema pode executar, interagindo com atores do 
sistema;
● Pacote de casos de uso: Um 
pacote de casos de uso é um 
conjunto de casos de uso, 
atores, relacionamentos, 
diagramas e outros pacotes; 
ele é usado para estruturar o 
modelo de casos de uso 
dividindo-o em partes 
menores.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Fluxo de trabalho de Requisitos Fluxo de trabalho de Requisitos 
[RUP, 2008][RUP, 2008]
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Ferramentas para Gestão de Ferramentas para Gestão de 
RequisitosRequisitos
http://easyweb.easynet.co.uk/~iany/other/vendors.htm#Contour
Comerciais
● IBM Rational Requisite Pro
● Borland CaliberRM
● Free
● TigerPro
● TRUEReq
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Métodos Orientados a Objeto - Métodos Orientados a Objeto - 
Análise e DesignAnálise e Design
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Análise e DesignAnálise e Design
● Finalidades da disciplina Análise e Design: 
● Transformar os requisitos em um design do sistema a ser 
criado;
● Desenvolver uma arquitetura sofisticada para o sistema;
● Adaptar o design para que corresponda ao ambiente de 
implementação, projetando-o para fins de desempenho.
● Qual o propósito da análise?
● Para ajudar no entendimento do negócio;
● É independente de tecnologia 
● Qual o propósito do design?
● Dar solução ao problema ou necessidade.
● É dependente de tecnologia e
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Técnicas de modelagem OOTécnicas de modelagem OO
Diagrama de classes e sequenciaDiagrama de classes e sequencia
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Fluxo de trabalho A&D do RUPFluxo de trabalho A&D do RUP
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Ferramentas para Análise e Ferramentas para Análise e 
DesignDesign
● Comerciais
● IBM Rational Rose
● Astah-professional
● Free
● Astah-Community
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Atividade 2 - ModelagemAtividade 2 - Modelagem
Realizar em equipe de até 3 estudantes – avaliação in loco
● Modelar o requisito abaixo
● Um banco trabalha com três tipos de contas: conta corrente comum; conta corrente com 
limite; conta poupança. Em todos os casos é necessário guardar o número da conta, o 
nome do correntista e o saldo. Para a conta poupança é necessário guardar o dia do 
aniversário da conta (quando são creditados os juros). Já para a conta com limite é 
necessário guardar o valor do limite. As contas também armazenam uma lista de 
transações. Uma transação é definida por uma data, valor da transação e descrição. Se o 
valor for negativo, a transação é considerada um débito (crédito caso contrário). As 
operações possíveis são: depósito, retirada e impressão de extrato. Essas operações 
devem ser definidas numa classe denominada Conta. A operação de depósito é igual nos 
três tipos de conta. A retirada só é diferente na conta com limite, pois esta admite que o 
saldo fique negativo até o limite estabelecido. Finalmente o extrato é diferente para as 
três: na conta comum exibe o número da conta, nome do cliente, transações e o saldo; na 
conta limite imprime também o valor do limite; na conta poupança imprime também o 
dia do aniversário. Implemente um modelo de casos de Uso e um modelo de hierarquia 
de classes das contas explorando polimorfismo.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Verificação e Validação de Verificação e Validação de 
SoftwareSoftware
VV&T VV&T 
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Verificação e ValidaçãoVerificação e Validação
(Sommerville, 2008)(Sommerville, 2008)
● Ver&Val é a denominação dada as atividades para 
verificar e analisar se o software em 
desenvolvimento está de acordo com sua 
especificação e se atende às funcionalidades 
esperadas pelo cliente e seus usuários.
● Verificação
● Estamos construindo o produto corretamente?
● Validação
● Estamos construindo o produto certo?
(Sommerville, 2007 apud Boehm, 1979)
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Ver&ValVer&Val
● O objetivo principal é estabelecer confiança de que 
o software está adequado a seu propósito.
● O nível de confiabilidade depende do propósito do 
software e das expectativas dos usuários:
● Função do software: quão critico é?
● Expectativas do usuário: quão tolerante a defeitos?
● Ambiente de mercado: quão concorrente é o mercado?
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Inspeção e TesteInspeção e Teste
● Dentro do processo de V&V, há duas abordagens 
complementares para a verificação e análise do 
software:
● Inspeção de software ou revisões por pares;
– Verificação estática
● Testes de software
– Verificação dinâmica
Pós-Graduação ESW - Fundamentos de Engenharia de Software
V&V dinâmica e estáticaV&V dinâmica e estática
Pós-Graduação ESW - Fundamentos de Engenharia de Software
V&V dinâmica - TesteV&V dinâmica - Teste
● Teste será sempre a técnica principal de verificação 
e validação de software, apesar da inspeção ser 
usada amplamente, atualmente.
● Há dois tipos distintos de testes (não excludentes):
● Teste de validação
● Teste de defeitos
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Finalidades dos processos de Finalidades dos processos de 
V&V e DebuggingV&V e Debugging
● V&V - são dedicados a verificar a existência de 
defeitos no software;
● Debugging - são dedicados a localizar e corrigir 
esses defeitos.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
DebuggingDebugging
Pós-Graduação ESW - Fundamentos de Engenharia de Software
O modelo V de desenvolvimentoO modelo V de desenvolvimento
● É uma instância do modelo cascata genérico;
● Mostra que o plano, a especificação e o projeto podem ser 
feitos em paralelo ao desenvolvimento.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Estrutura de um plano de testesEstrutura de um plano de testes
● Processo de teste
● Fases do processo a ser executado
● Rastreabilidade de teste
● Cobertura dos requisitos
● Itens a serem testados
● Os produtos a serem testados
● Cronograma de testes
● Alocação de recursos
● Procedimento de registros de teste
● Controle do ciclo de vida do defeito
● Ambiente de teste
● Requisitos de hardware e software
Pós-Graduação ESW - Fundamentos de Engenharia de Software
V&V estática - InspeçãoV&V estática - Inspeção
● Inspeção de software é o processo de V&V estático, no qual 
o software é revisto para se encontrar erros,omissões e 
anomalias.
● Geralmente focam código, porém qualquer representação do 
software: requisitos, modelo de projeto, planos, etc.
● Segundo Fagan (1986), mais de 60% de erros em um 
software podem ser detectados por inspeção informal de 
programa.
● Mills, et al. (1987), sugerem que uma abordagem mais 
formal pode encontrar até 90% dos erros de um programa.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Processo de inspeçãoProcesso de inspeção
● Ainda, gerentes de projetos relutam em usar as inspeções 
por considerarem custoso e duvidam da eficiência;
● Organizar as inspeções leva tempo, porém não dúvida da 
sua eficiência.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Check-list análise estáticaCheck-list análise estática
● Falha de dados
● Todas as variáveis foram inicializadas?
● O limite dos arrays é igual a tamanho -1?
● …
● Defeitos de interface
● Os parâmetros estão na ordem correta?
● ... 
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Processo de inspeçãoProcesso de inspeção
● Nota: Tecnica_Inspecao.pdf
● Artigo: Artigo_padraoIEEE1028_revisoes_1988.pdf
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Analise estática automatizadaAnalise estática automatizada
● Inspeções são uma forma de análise estática
● O código é analisado sem ser executado.
● Analisadores estáticos são ferramentas de software 
que varrem o código fonte e detectam possíveis 
defeitos e anomalias.
● Ferramentas:
● Lint – analisador estático para C
● FindBugs – analisador estático para Java
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Teste de softwareTeste de software
● Teste é um processo realizado pelo testador de 
software que permeia outros processos da 
Engenharia de Software, e envolve ações que vão do 
levantamento de requisitos até a execução do teste 
propriamente dito. 
● O objetivo é encontrar defeitos nos produtos, para 
que estes possam ser corrigidos pela equipe de 
programadores, antes da entrega final.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Teste de softwareTeste de software
● Teste é um processo de execução de programas com 
a finalidade de encontrar erros;
● Um bom caso de teste é aquele que tem alta 
probabilidade de encontrar erros;
● Um teste bem sucedido é aquele que descobre um 
erro ainda não descoberto.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Metas do testeMetas do teste
● Demonstrar ao desenvolvedor e ao cliente que o 
software atende aos requisitos;
● Teste de validação
● Descobrir falhas ou defeitos no software que 
apresenta comportamento incorreto, não desejável 
ou em não conformidade com sua especificação.
● Teste de defeitos
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Modelo geral de testes de Modelo geral de testes de 
softwaresoftware
● Fases
● Processo geral
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Técnicas de TesteTécnicas de Teste
● Caixa branca
● Teste estrutural
● Caixa preta
● Teste funcional
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Fases de testeFases de teste
● Teste unitário
● Teste de integração
● Teste de sistema
● Teste de aceitação
● Outros
● Teste de operação
● Teste de regressão
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Fluxo de trabalho de testeFluxo de trabalho de teste
[RUP, 2008][RUP, 2008]
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Considerações finais sobre V&VConsiderações finais sobre V&V
● Bartié – origem dos defeitos
● 56% em requisitos; 27% A&D; e 7% Implementação
● Myers – regra 10
● A propagação do defeito aumenta em 10 vezes o custo da 
correção. 
Verificação e Validação
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Técnica para criação de casos de testeTécnica para criação de casos de teste
● Caso de uso
Pós-Graduação ESW - Fundamentos de Engenharia de Software
CenáriosCenários
● Identificar cenários a partir dos fluxos do caso de 
uso.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
CenáriosCenários
● Identificar casos de teste para cada cenário
● Testes positivos e negativos
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Ferramentas de V&VFerramentas de V&V
● IBM Rational Robot (teste funcional e de carga)
● BadBoy (teste de funcionalidade, web)
● Jmeter (teste de desempenho, Java)
● FindBugs (inspeção de código, Java)
● Lint (inspeção de código, C)
● Mantis (controle de defeitos)
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Evolução de Evolução de softwaresoftware
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Evolução de SoftwareEvolução de Software
● Depois de os sistemas terem sido implantados, eles 
devem inevitavelmente mudar para permanecerem 
úteis.
● Influências após colocado em uso:
● Os negócios mudam;
● Novos requisitos surgem e os existentes mudam;
● Novos erros são descobertos;
● As tecnologias mudam;
● etc.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Evolução de softwareEvolução de software
● Segundo Erlikh (2000) 90% 
dos custos de software estão 
na evolução.
● Após a implantação pode-se 
pensar na engenharia de 
software como um processo 
em espiral.
● Esse modelo é normalmente 
utilizado quando a equipe de 
desenvolvimento é a mesma 
que vai evoluir o software.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
A dinâmica de evolução de A dinâmica de evolução de 
softwaresoftware
● Leis de Lehman (5)
● Mudança contínua
● Complexidade crescente
● Evolução de programa de grande porte
● Estabilidade organizacional
● Conservação de familiaridade
● Crescimento contínuo
● Qualidade em declínio
● Sistema de feedback
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Manutenção de softwareManutenção de software
● A manutenção é um processo geral de mudanças de 
um sistema depois que ele é entregue.
● Esse termo é normalmente aplicado ao software sob 
encomenda no qual grupos separados são envolvidos 
antes e depois da entrega.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Tipos de manutençãoTipos de manutenção
● Manutenção corretiva
● Reparo de defeitos
● Manutenção adaptativa
● Mudança de ambiente, hardware, sistema operacional, etc.
● Manutenção evolutiva
● Mudanças organizacionais ou de negócio
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Distribuição de esforço de Distribuição de esforço de 
manutençãomanutenção
● Pesquisas feitos por
● Lientz e Swanson, 1980;
● Nosek e Palvia, 1990;
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Custos de desenvolvimento e Custos de desenvolvimento e 
manutençãomanutenção
● Pesquisas feitas por Guimarães (1983)
● O custo de manutenção depende do investimento em 
criar sistemas de fácil manutenção.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Fatores que elevam os custos de Fatores que elevam os custos de 
manutençãomanutenção
● Estabilidade da equipe
● Normalmente a equipe é desfeita após o término do 
desenvolvimento;
● A equipe de desenvolvimento tem que aprender.
● Responsabilidade contratual
● Normalmente é separado do contrato de desenvolvimento do 
de manutenção;
● Quem desenvolve não se preocupa em criar sistemas de fácil 
manutenção.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Fatores que elevam os custos de Fatores que elevam os custos de 
manutençãomanutenção
● Habilidade do pessoal
● Há um certo preconceito entre os engenheiros de software, 
pois normalmente são sistemas com tecnologias antigas e sem 
documentação.
● Idade e estrutura doprograma
● Com as mudanças as estruturas vão sendo desestruturadas e 
cada vez mais difícil de ser entendida.
● Documentação não atualizada.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
ReengenhariaReengenharia
● O processo de evolução envolve a compreensão do 
programa a ser mudado e, depois, a implementação 
das mudanças.
● Os sistemas legados, mais antigos, são difíceis de 
entender e mudar.
● A reengenharia está relacionada à reimplementação 
de sistemas legados para torná-los mais fáceis de 
manter.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
ReengenhariaReengenharia
● Pode envolver:
● Nova documentação;
● Organização e reestruturação do software;
● Conversão de linguagem;
● Modificação e atualização da estrutura e dos dados.
● A funcionalidade não é alterada e a arquitetura 
normalmente permanece a mesma.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Engenharia avante e Engenharia avante e 
reengenhariareengenharia
● Chikofsky e Cross, denominam o desenvolvimento 
convencional de Engenharia Direta para distingui-lo 
da Reengenharia.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Processo de reengenhariaProcesso de reengenharia
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Reúso de SoftwareReúso de Software
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Reúso Software - consideraçõesReúso Software - considerações
● O Reúso é inerente ao processo de solução de 
problemas utilizado pelos seres humanos.
● Na medida em que soluções são encontradas, estas 
são utilizadas em problemas similares.
● Nossa capacidade de abstração garante a adaptação 
necessária ao novo contexto.
● O problema, portanto, não é a falta de reutilização 
na Engenharia de Software, mas a falta de uma 
sistemática ampla e formal para realizá-la
Pós-Graduação ESW - Fundamentos de Engenharia de Software
● Reutilização de software é o processo de incorporar 
em um novo produto:
● um novo código
● especificações de requisitos e projeto
● planos de teste,
● qualquer produto gerado durante
● desenvolvimentos anteriores,
● conhecimento em geral
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Gerência de ReúsoGerência de Reúso
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Diagrama de Contexto - Diagrama de Contexto - 
DomínioDomínio
155 
Gang of Four (GoF)Gang of Four (GoF)
● E. Gamma and R. Helm and R. 
Johnson and J. Vlissides. Design 
Patterns - Elements of Reusable 
Object-Oriented Software. 
Addison-Wesley, 1995.
● Descreve 23 padrões soluções 
genéricas para os problemas mais 
comuns do desenvolvimento de 
software orientado a objetos 
obtidas através de experiências de 
sucesso na indústria de software.
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Por enquanto – Parte IPor enquanto – Parte I
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Referências BibliográficasReferências Bibliográficas
SOMMERVILLE, Ian. Engenharia de Software. 8ª edição, São Paulo, Addison-Wesley, 2007.
PRESSMAN, Roger S. Engenharia de Software. 6ª edição, São Paulo, McGraw-Hill, 2006.
KRUCHTEN, Phillippe. Uma introdução ao RUP: Rational Unified Process. Ciência Moderna. 2003.
CAI, Kai-Yuan; CARD, David. An analysis of research topics in software engineering. The Journal of 
Systems and Software, v.81, pp. 1051–1058. 2008.
RUP. Rational Unified Process. Disponível em: http://www.wthreex.com/rup/, Acessada em: 06/08/2008.
APF. Análise de Pontos de Função. Disponível em: http://www.inf.ufes.br/~falbo/download/aulas/es-
g/2005-1/APF.pdf/. Acessada em: 19/08/2009.
BFPUG- Brazilian Function Point Users Group. Disponível em: http://www.bfpug.com.br/. Acessada em: 
19/08/2009.
IEEE. IEEE Standard for Software Reviews and Audits. American National Standards Institute. USA. 
1989.
RAGHAVAN, Sridhar; ZELESNIK, Gregory; FORD, Gary. Lecture Notes on Requirements Elicitation. 
Software Engineering Institute. 1994.
Notas de Aulas – UFPE e UFPR
Pós-Graduação ESW - Fundamentos de Engenharia de Software
Luiz Camargo
UNISOCIES – Centro Universitário Tupy
UFPR – Universidade Federal Paraná
camargho@gmail.com
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46
	Slide 47
	Slide 48
	Slide 49
	Slide 50
	Slide 51
	Slide 52
	Slide 53
	Slide 54
	Slide 55
	Slide 56
	Slide 57
	Slide 58
	Slide 59
	Slide 60
	Slide 61
	Slide 62
	Slide 63
	Slide 64
	Slide 65
	Slide 66
	Slide 67
	Slide 68
	Slide 69
	Slide 70
	Slide 71
	Origins of Lean Software Development
	Slide 73
	Slide 74
	Slide 75
	Slide 76
	Slide 77
	Slide 78
	Slide 79
	Slide 80
	Slide 81
	Slide 82
	Slide 83
	Slide 84
	Slide 85
	Slide 86
	Slide 87
	Slide 88
	Slide 89
	Slide 90
	Slide 91
	Slide 92
	Slide 93
	Slide 94
	Slide 95
	Slide 96
	Slide 97
	Slide 98
	Slide 99
	Slide 100
	Slide 101
	Slide 102
	Slide 103
	Slide 104
	Slide 105
	Slide 106
	Slide 107
	Slide 108
	Slide 109
	Slide 110
	Slide 111
	Slide 112
	Slide 113
	Slide 114
	Slide 115
	Slide 116
	Slide 117
	Slide 118
	Slide 119
	Slide 120
	Slide 121
	Slide 122
	Slide 123
	Slide 124
	Slide 125
	Slide 126
	Slide 127
	Slide 128
	Slide 129
	Slide 130
	Slide 131
	Slide 132
	Slide 133
	Slide 134
	Slide 135
	Slide 136
	Slide 137
	Slide 138
	Slide 139
	Slide 140
	Slide 141
	Slide 142
	Slide 143
	Slide 144
	Slide 145
	Slide 146
	Slide 147
	Slide 148
	Slide 149
	Slide 150
	Slide 151
	Slide 152
	Slide 153
	Slide 154
	Gang of Four (GoF)
	Slide 156
	Slide 158
	Slide 159

Continue navegando