Engenharia de Software
Aula 01
Prof. César França
PARFOR / UFRPE
Roteiro
• O que é?
• Pra que serve?
• Sobre o curso…
PARFOR / UFRPE
PARFOR / UFRPE
Terreno
Localização
Fluxo de
Pessoas
Tipo de
Pessoas
Tempo de
Construção
Clima
Quantidade de
Recursos
Qualidade do
Material
Arquitetura
Planta-baixa
Tendência de
Mercado
PARFOR / UFRPE
Engenharia…
Engineering is the discipline, art and profession of acquiring and applying technical, scientific, and
mathematical knowledge to design and implement materials, structures, machines, devices,
systems, and processes that safely realize a desired objective or invention.
[AECPD - American Engineers' Council for Professional Development]
PARFOR / UFRPE
Engenharia de Software:
• SOFTWARE (+) ENGINEERING
Software engineering is the application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software, and the study of these approaches; that
is, the application of engineering to software [SWEBOK]
PARFOR / UFRPE
PARFOR / UFRPE
[Softex, 2009]
PARFOR / UFRPE
PARFOR / UFRPE
Discussão
”Você colocaria grande parte do seu dinheiro em um investimento que tivesse
70% de chances de dar prejuízo?”
PARFOR / UFRPE
PARFOR / UFRPE
PARFOR / UFRPE
PARFOR / UFRPE
[Standish group, CHAOS Report, 1994}
PARFOR / UFRPE
[Standish group, CHAOS Report, 2004}
PARFOR / UFRPE
[Standish group, CHAOS Report, 2009}
Um caso comum…
PARFOR / UFRPE
Hardware
Software Peopleware
PARFOR / UFRPE
Discussão
Por que a Engenharia de Sw é tão importante?
PARFOR / UFRPE
Objetivos de Engenharia de Software
• Obter software de qualidade
• Com produtividade no seu desenvolvimento, operação e manutenção
• Empregando profissionais que desenvolvam o software dentro de
custos, prazos e níveis de qualidade controlados
• E, além disso, que obtenham o melhor custo-benefício possível
PARFOR / UFRPE
A Equação da Engenharia
Potencial Produtivo = Qualidade x Escopo
Custo x Tempo
PARFOR / UFRPE
Revolução industrial
• Conjunto de mudanças tecnológicas
• Impacto no processo produtivo em nível econômico e
social.
• A máquina substitui o trabalho humano
• Karl Marx
Força de Trabalho x Propriedade x Capital
• Henry Ford
Produção em grande quantidade com baixo custo de
Fabricação
• Frederic k Taylor
Planejamento, Acompanhamento, Controle
PARFOR / UFRPE
Fordismo + Taylorismo
Assembly lines
PARFOR / UFRPE
Fordismo + Taylorismo
Assembly lines
É possível fazer
software assim?
PARFOR / UFRPE
Um processo de fabricação deve ser:
confiável | replicável | escalável
?
PARFOR / UFRPE
Desenvolver x Fabricar ?
PARFOR / UFRPE
Processos de Engenharia de Sw
Tradicional Métodos Ágeis
PARFOR / UFRPE
Equipes Virtuais/Distribuídas
PARFOR / UFRPE
Equipes Virtuais/Distribuídas
PARFOR / UFRPE
PARFOR / UFRPE
Engenharia de Software
Processos
Métodos
Técnicas Ferramentas
Padrões
Normas
Software
Sopa de letrinhas
CMMi
RUP
XP
MPS.br
MR MPS MA MPS
SCAMPI ISO
UML
OO
DDS
OpenUP
SCRUM FDD
TDD
PMI
PMMM
OPM3
PMCD
CVS
SVN
SOA
SAASITIL
CobIT
SLA
MDAMVCBD
ERPCRM
BI
SCM
XML
PMBOK
SLM
CDU
SQL
STING Software Engineering Glossary
http://www.apl.jhu.edu/Notes/Hausler/web/glossary.html
ACM
CRUD
API
CAD
CASE
COCOMO
APF
CM
PARFOR / UFRPE
PARFOR / UFRPE
Livros de Referencia
PARFOR / UFRPE
Modelos de Ciclo de Vida
PARFOR / UFRPE
Desenvolvimento Tradicional
(Clássico / Cascata / Waterfall)
• Sistemático
• Sequencial
PARFOR / UFRPE
Levantamento de Requisitos
• Análise de requisitos engloba todas as tarefas que lidam com investigação, definição e escopo de novos sistemas ou
alterações. Análise de requisitos é uma parte importante do processo de projeto de sistemas, na qual o engenheiro de
requisitos e o analista de negócio, juntamente com engenheiro de sistema ou desenvolvedor de software, identificam as
necessidades ou requisitos de um cliente. Uma vez que os requisitos do sistema tenha sido identificados, os projetistas de
sistemas estarão preparados para projetar a solução.
• Entrevistas com Stakeholder
• Workshops
• Lista de requisitos: estilo contrato formal
• Objetivos Mensuráveis
• Protótipos
PARFOR / UFRPE
Análise de Requisitos
• Análise de Requisitos é o estudo das características que o sistema deverá ter para atender às
necessidades e expectativas do cliente.
• É o Entendimento do Problema
• Cada funcionalidade demandada pelo cliente deve ser analisada para verificar os possíveis
impactos no desenvolvimento das demais funcionalidades do sistema, e verificado em conjunto
com a equipe de desenvolvimento se as necessidades tecnológicas para a sua implementação
estão disponíveis
PARFOR / UFRPE
Projeto
• É a parte da engenharia de software que se encarrega de transformar os resultados da Análise de
Requerimentos em um documento ou conjunto de documentos capazes de serem interpretados
diretamente pelo programador.
• Arquitetura de Software
• Design Patterns (Padrões de Projeto)
• Refatoração
PARFOR / UFRPE
Implementação
• Corresponde à codificação, ou tradução dos requisitos para uma linguagem
legível pelas máquinas.
• Se o projeto for executado detalhadamente, a codificação pode ser feita
mecanicamente, e até mesmo automatizada.
PARFOR / UFRPE
Testes
• O objetivo, por paradoxal que pareça, é encontrar defeitos nos produtos, para que estes possam
ser corrigidos pela equipe de programadores, antes da entrega final.
Processo Simplificado
• Descobrir a existência do bug
• Isolar o código que causa o bug
• Identificar a causa do bug
• Determinar uma correção para o bug
• Aplicar a correção e testar a correção
PARFOR / UFRPE
Implantação
• Passagem do software para a produção.
• Liberação
• Instalação
• Ativação/Desativação
• Risco: Integração com Sistemas Legados!!!
PARFOR / UFRPE
Desenvolvimento Clássico
(Tradicional / Cascata / Waterfall)
PARFOR / UFRPE
Custo da Mudança
Tempo
Custo
PARFOR / UFRPE
Principal Ponto Negativo
Projetos reais raramente seguem esta ordem!
PARFOR / UFRPE
PARFOR / UFRPE
Pontos Positivos
• Desenvolvimento evolutivo
• Projeto componentizado
PARFOR / UFRPE
Pontos Negativos
• Custo da mudança
• Refactoring
PARFOR / UFRPE
Modelo Espiral
ProjetoPlanejamento
Implementação
Implantação
PARFOR / UFRPE
Pontos Positivos
• Desenvolvimento Evolutivo
• Mudança planejada
• Redução de Riscos
PARFOR / UFRPE
Pontos Negativos
• Difícil adoção de clientes
• Avaliação de Riscos delicada
• Imprevisão de riscos grandes: mudança cara!
PARFOR / UFRPE
Custo da Mudança
Tempo
Custo
PARFOR / UFRPE
Comparativo
• Requer menor esforço de
desenvolvimento e testes
• Requer menor esforço de requisitos
• Programadores mais produtivos
• Produtos com maior qualidade
• Estimativas mais eficazes
Mitchel, S. 2009 PARFOR / UFRPE
Ogunnaike e Ray
Process Dynamics, Modeling and Control
PARFOR / UFRPE
R.U.P.
Processo Tradicional
PARFOR / UFRPE
Ciclo da Qualidade
Deming
PARFOR / UFRPE
Ciclo de Vida
Planejamento
Modelagem do
Negócio
Requisitos
Análise e
Design
Implementação
Teste
LiberaçãoAvaliação
Planejamento Inicial
Gerenciamento
do Projeto
Gerenciamento
do Ambiente
Gerenciamento
da Configuração
Implantação
Tudo acontece ao mesmo tempo!
PARFOR / UFRPE
Linha de Produção
Pipeline
PARFOR / UFRPE
Analista Projetista Programador Testador
Gerente
Leis do RUP
Planeje
Documente
Gerencie
Reutilize
Verifique
Controle
PARFOR / UFRPE
Gráfico das Baleias
PARFOR / UFRPE
Gráfico das Baleias
Distribução do
Esforço!
PARFOR / UFRPE
Gráfico das Baleias
Disciplinas
de Suporte
PARFOR / UFRPE
Disciplina
Uma disciplina é um conjunto de atividades relacionadas a uma 'área de interesse'
importante durante todo o projeto.
PARFOR / UFRPE
Fase
As fases indicam a ênfase que é dada no projeto em um dado instante.
Concepção
(Iniciação)
Elaboração Construção Transição
PARFOR / UFRPE
Fases
PARFOR / UFRPE
Ciclos
PARFOR / UFRPE
Iteração
As fases são compostas de iterações.
As iterações são janelas de tempo; as iterações possuem prazo definido enquanto
as fases são objetivas.
Concepção
(Iniciação)
Elaboração Construção Transição
It 01 ...It 02 It 03 It 04 It 05
PARFOR / UFRPE
Marco
• Objetivos finais de cada fase
Concepção
(Iniciação)
Elaboração Construção Transição
Documento
de Visão
Documento
de Arquitetura
Sistema
Inicial
Funcionando
Software em
Produção
PARFOR / UFRPE
Fase
PARFOR / UFRPE
Conceitos-Chave
O que fazer?  Artefatos
Como fazer?  Tarefas
Atividades
Procedimentos
Modelos
Ferramentas
Quem Faz?  Papéis
Como organizar essas coisas?
PARFOR / UFRPE
Conceitos-Chave
• Tarefa
Algo que se faz no projeto e produz um resultado significativo no contexto do projeto.
Ex. Codificação
PARFOR / UFRPE
Conceitos-Chave
• Atividade
Conjunto de Tarefas com algum objetivo comum
Ex. Planejamento {planejamento de riscos, recursos humanos, etc}
PARFOR / UFRPE
Conceitos-Chave
• Procedimento
Encadeamento de Atividades
Ex. Levantamento de Requisitos
PARFOR / UFRPE
Conceitos-Chave
• Artefato
Um artefato é um produto de trabalho do processo, que pode ser insumo ou produto de tarefas.
Ex. Código Fonte
Codificação Código
Fonte
PARFOR / UFRPE
PARFOR / UFRPE
Conceitos-Chave
• Ferramenta
São as ferramentas que suportam o desenvolvimento do software.
Ex. IDE
Codificação Código
Fonte
IDE
PARFOR / UFRPE
Conceitos-Chave
• Papel
Representa uma responsabilidade que deve ser assumida por alguma pessoa. Cada papel é responsável por um conjunto
de atividades e artefatos.
Codificador Codificação Código
Fonte
IDE
PARFOR / UFRPE
Conceitos-Chave
• Templates (Modelos)
• Guias
PARFOR / UFRPE
Características Gerais
• Processo dirigido por funcionalidades (Casos de Uso)
• Processo centrado na arquitetura
• Processo Iterativo Incremental
RUP Detalhado
www.wthreex.com/rup
(Português)
PARFOR / UFRPE
Gráfico das Baleias
PARFOR / UFRPE
Métodos Ágeis
PARFOR / UFRPE
Princípio de Paretto aplicado à Software:
20% das funcionalidades são responsáveis por 80% da satisfação do cliente!
PARFOR / UFRPE
Quebra de Paradigma
Tradicional Ágil
Escopo Prazo
Custo
Qualidade
Qualidade Prazo
Custo
Escopo
Tempo x Custo = Escopo x Qualidade
PARFOR / UFRPE
Métodos Ágeis
• Originalmente chamados de métodos leves
• OOPSLA´01: Métodos Ágeis
• Scrum (1986)
• Crystal Clear
• Programação extrema - XP (1996)
• Adaptive Software Development
• Feature Driven Development
• Dynamic Systems Development Method (1995)
• Pragmatic Programming
• Test Driven Development
• OpenUP (2005)
• entre outros...
PARFOR / UFRPE
Tipos de Processos
ContínuoAdaptativo
Métodos Ágeis Métodos TradicionaisEsculhambação
PARFOR / UFRPE
Tipos de Processos
Tradicional
• Grandes projetos
• Grandes equipes
• Rígido
• Planejado em longo prazo
• Orientado a contratos
• Alta Documentação
Métodos Ágeis
• Pequenos projetos
• Pequenas equipes
• Maleável
• Planejado em curto prazo
• Orientado ao produto
• Baixa Documentação
PARFOR / UFRPE
Comparativo
Ambiente ideal para o desenvolvimento ágil:
• Baixa criticidade
• Desenvolvedores senior
• Mudanças freqüente de requerimentos
• Pequeno número de desenvolvedores
• Cultura que tem sucesso no caos.
Ambiente ideal para o desenvolvimento
tradicional:
• Alta criticidade
• Desenvolvedores Junior
• Baixa mudança nos requerimentos
• Grande número de desenvolvedores
• Cultura que procura a ordem.
PARFOR / UFRPE
SCRUM
PARFOR / UFRPE
Desenvolvimento Open Source
PARFOR / UFRPE
Outros “Paradigmas”
• Open Source Software
PARFOR / UFRPE
Comunidades Open Source
Comunidades Comerciais
Comunidades Padronizadas
Comunidades Organizadas
Comunidades Ad Hoc
PARFOR / UFRPE
Comunidades Open Source
PARFOR / UFRPE
Engenharia de Software
Aula 01
Prof. César França
PARFOR / UFRPE

[PARFOR 2017.1] ESW - Aula 01