You are on page 1of 49

Engenharia de Software

Airton Bordin Junior


Quem Sou Eu?

Airton Bordin Junior


Contato
airtonbjunior@gmail.com
airtonbjunior.com.br
facebook.com/airtonbjunior

2
Objetivos da Disciplina

Gerais
Propiciar ao aluno contato com metodologias e tcnicas
de interesse na rea de computao.
Especficos
Apresentar metodologias para especificao e
gerenciamento de projetos bem como os principais
conceitos para estudos de viabilidade de desenvolvimento
de sistemas computacionais.

3
Estratgia de Trabalho
Apresentao do contedo
Aulas expositivas de aspectos tericos;
Aplicaes a problemas de interesse, com exerccios
(classe e extra-classe);
Utilizao do laboratrio de informtica.
Avaliao
100 pontos, compostos por
60% prova;
40% trabalho.
3h/aula semana
Segunda e Quinta-feira, 19h.

4
Bibliografia
Bsica
PRESSMAN, R. S. Engenharia de Software. So Paulo. Makron Books, 2006
SOMMERVILLE, Ian. Engenharia de Software - Ed. Prentice Hall, 2007
NOGUEIRA, Marcelo - Engenharia de Software: um Framework 2009 -
Cincia Moderna

Complementar
CARVALHO, A. R. Introduo engenharia de software. Campinas. Unicamp,
2001
MAGELA, Rogrio - Engenharia de Software Aplicada - 2006 - Alta Books
PAULA FILHO, Wilson de Pdua - Engenharia de Software - 2009 LTC
PEDRYCZ, Witold; PETERS, James - Engenharia de Software - 2001 Futura
PFLEEGER, Shari Lawrence - Engenharia de Software - 2004 - Prentice Hall Brasil
ULRICH, W. M. A crise do software no ano 2000. So Paulo. Makron Books, 1998

5
Contedo Programtico
Mdulo1 Mdulo 5
Software e Engenharia de Software
Prototipao de Software
Software: caractersticas, componentes e aplicaes; A crise do
software: problemas e causas; Mitos do software Prototipao como alavancagem para desenvolvimento
Paradigmas da engenharia de software: ciclo de vida clssico, sistemas com regras de negcio
prototipao, o modelo espiral, tcnicas de quarta gerao indefinidas/desconhecidas pelo prprio usurio
Uma abordagem sucinta da Reengenharia de Software Tcnicas de prototipao rpida
Adoo de uma Metodologia de Desenvolvimento de sistemas, como Mdulo 6
o nico instrumento de formalizao do desenvolvimento.
Uso de Ferramentas CASE (Front-end-Case, Back-end-Case e I-Case) Projeto de arquitetura e estruturao de sistemas
Uma viso genrica da Eng. de Software Mdulo 7
Mdulo 2 Testes de Software
Anlise de Requisitos de Software Aplicativo, identificao de Mdulo 8
necessidades, estudo de Viabilidade, anlise Econmica, atividades
de anlise Gerenciamento de pessoal
Requisitos Funcionais, Requisitos Tecnolgicos., Arquitetura Mdulo 9
Medio do Sistema a ser construdo (APF)
Gerenciamento de qualidade
Mdulo 3
Mdulo 10
Modelos de Sistema
Especificao Funcional do Sistema (DFD 0, 1 e 2), dicionarizao de
Mudanas de Software, Manuteno, Evoluo de
componentes Arquitetura
A Modelagem de Dados (Entidades, Relacionamentos, Atributos). Mdulo 11
A transio para aplicabilidade a UML. Reengenharia, Engenharia Reversa, Modularizao
Modelagem baseada em O.O. - UML (Diagramas de Caso de Uso, de
Interao, de Atividades, Eventos e Sinais, Mquina de Estados, Mdulo 12
Grficos de Estados
Pensando no futuro, escopo da mudana, evoluo da
Mdulo 4 Arquitetura e Software
Aplicabilidade do mdulo 3

6
1. Mdulo I Introduo

7
Introduo
Software e a Engenharia de Software
Software

Engenharia

8
Introduo
Software e a Engenharia de Software
Software
Programas de computador e documentao associada. Produtos de
software podem ser desenvolvidos para um cliente especfico ou para
o mercado em geral (Sommerville);
Produto que profissionais de software desenvolvem e ao qual do
suporte no longo prazo (Pressman)
Engenharia

9
Em 1970, menos de 1% dos profissionais

Introduo conseguiam definir software

Software e a Engenharia de Software


Software
Programas de computador e documentao associada. Produtos de
software podem ser desenvolvidos para um cliente especfico ou para
Engloba
o mercado em geral (Sommerville); Instrues que produzem
Produto que profissionais de software desenvolvemalgum resultado
e ao qualplanejado;
do
Estrutura de dados que
suporte no longo prazo (Pressman) permitem que os programas
manipulem adequadamente a
Engenharia informao;
Documentao que escreve
o uso dos programas.

10
Introduo
Software e a Engenharia de Software
Software
Programas de computador e documentao associada. Produtos de
software podem ser desenvolvidos para um cliente especfico ou para
o mercado em geral (Sommerville);
Produto que profissionais de software desenvolvem e ao qual do
suporte no longo prazo (Pressman)
Engenharia
Mais do que uma simples disciplina ou ramo do conhecimento,
engineering um verbo (engenhar), uma palavra de ao, uma
maneira de abordar um problema (Scott Whitmir)

11
Introduo
Software um elemento lgico e no fsico;
Tem caractersticas que so consideravelmente diferentes
do hardware:
Software desenvolvido E projetado por engenharia, no
manufaturado no sentido clssico;
O software no se desgasta;
A maioria dos softwares so feitos sob medida ao invs de
criados somente a partir de componentes existentes.
Custo hardware x software
1970 8:2
1991 2:8
Atualmente 1:9

12
Introduo
Falhas no hardware

Mortalidade
Desgaste
infantil

ndice de falhas

Tempo

13
Introduo
Falhas no software
Mudanas

Curva real

ndice de falhas

Curva idealizada

Tempo

14
Introduo
Evoluo do software
Primeiros anos (1950 1960)
Orientao Batch;
Distribuio limitada;
Software customizado;
Programao artesanal;
Sem administrao especfica;
Sem documentao.
Segunda era (1960 1970)
Multiusurio interativo;
Tempo real;
Banco de dados;
Produto de software;
Software house.

15
Introduo
Evoluo do software
Terceira era (1970 1980)
Sistemas distribudos;
Hardware de baixo custo;
Microprocessadores;
Impacto de consumo;
Inteligncia embutida.
Quarta era (1980 2000)
Sistemas de Desktop poderosos;
Tecnologias Orientadas Objetos;
Sistemas Especialistas;
Ferramentas CASE;
Reutilizao;
Redes Neurais Artificiais.

16
Introduo
Termo Engenharia de Software
Criado em 1969, em uma conferncia da OTAN, para a
discusso de problemas relacionados com o desenvolvimento
de software.
Quais problemas?

17
Introduo
Termo Engenharia de Software
Criado em 1969, em uma conferncia da OTAN, para a
discusso de problemas relacionados com o desenvolvimento
de software.
Quais problemas?
Estimativas de prazos e custos imprecisas;
Produtividade das pessoas da rea de software no acompanha a demanda;
Prazos ultrapassados;
Custos acima do previsto;
Facilidade de manuteno no era enfatizada;
1/3 dos projetos eram cancelados nessa poca;
2/3 dos projetos extrapolavam o oramento;
...

18
Introduo
Projetos de Software
Sucesso Modificado Fracasso
2009 32 44 24

2006 35 46 19

2004 29 53 18

2002 34 51 15

2000 28 49 23

1998 26 46 28

1996 27 33 40

1994 16 53 31

19
Introduo

MARINER I
22 de julho de 1962;
US$630 milhes (atualizado);
Explodiu 5 minutos aps a
decolagem.

MOTIVO

20
Introduo

MARINER I
22 de julho de 1962;
US$630 milhes (atualizado);
Explodiu 5 minutos aps a
decolagem.

MOTIVO
Um hfen omitido em um cdigo
matemtico.

21
Introduo

ARIANE 501
4 de junho de 1996;
US$370 milhes;
Explodiu 39 segundos aps a
decolagem.

MOTIVO

22
Introduo

ARIANE 501
4 de junho de 1996;
US$370 milhes;
Explodiu 39 segundos aps a
decolagem.

MOTIVO
Erro no tipo de varivel (16 bits)
insuficiente para o dado a ser
manipulado.

23
Introduo
Engenharia de Software
Disciplina de engenharia cujo foco est em TODOS os
aspectos da produo de software, desde os estgios iniciais da
especificao do sistema at sua manuteno, quando o sistema
j est sendo usado
Disciplina de engenharia: obter resultados de qualidade requeridos
dentro do cronograma e oramento;
Estabelecimento e o emprego de slidos princpios de
engenharia de modo a obter software de maneira econmica,
que seja confivel e funcione de forma eficiente em
mquinas reais.

24
Introduo

Ferramentas

Mtodos

Modelo de processo

Foco na qualidade

25
Introduo

26
Mitos do Software
MITO: J temos um livro que est cheio de padres e
procedimentos para desenvolver software e que supre meu
pessoal com tudo que eles precisam saber
Realidade: Pode at existir tal livro, mas o mesmo usado? A equipe
sabe que ele existe? Reflete prticas modernas? flexvel? Foca na
qualidade?
MITO: Se o cronograma atrasar, poderemos acrescentar mais
programadores e ficarmos em dia
Acrescentar pessoas num projeto de software atrasado o tornar
mais atrasado ainda (Brooks)
MITO: Se eu decidir terceirizar o projeto de software, posso
simplesmente relaxar e deixar essa empresa realiz-lo
Se a organizao no souber gerenciar e controlar os prprios
projetos de software, ter problemas com a terceirizao

27
Mitos do Software
MITO: Uma definio geral dos objetivos suficiente
para comear a escrever os programas podemos
preencher os detalhes posteriormente
Definio de objetivos ambgua a receita para um desastre
MITO: Uma vez feito o programa e colocado em uso,
nosso trabalho est terminado
Levantamentos indicam que entre 60 e 80% de todo esforo
ser despendido aps a primeira entrega para o cliente
MITO: At que o programa entre em funcionamento, no
h maneira de avaliar sua qualidade
A garantia da qualidade pode ser aplicada desde a concepo
de um projeto

28
Mitos do Software
MITO: Os requisitos de software mudam continuamente,
mas as mudanas podem ser facilmente assimiladas pois o
software flexvel
Impacto da mudana varia consideravelmente dependendo do
momento em que foi introduzida

29
Ciclo de Vida
Plano de projeto, metodologia de desenvolvimento do
software;
Uma sequncia de fases e suas interaes ao longo do
projeto;
O modo como as coisas so feitas;
Benefcios
Definio das atividades que sero executadas;
Definio de responsabilidades;
Viso geral do processo;
Visualizao das prximas etapas, bem como as anteriores;
Possibilidade de incluso de marcos de verificao;
Entre outros.

30
Ciclo de Vida Clssico
Cascata, waterfall; Requisitos
Dcada de 1970;
Mtodo de desenvolvimento linear e Anlise
sequencial;
Paradigma mais antigo da Engenharia de Projeto
software;
Representava um grande avano para os
Codificao
processos de desenvolvimento de
software;
Teste
Baseada no contexto de
desenvolvimento de software da poca
Mainframes, terminais, etc. Manuteno

31
Ciclo de Vida Clssico
Vantagens Requisitos

Anlise

Projeto

Codificao

Teste

Manuteno

32
Ciclo de Vida Clssico
Vantagens Requisitos
Documentao geralmente completa
em cada atividade;
Anlise
Muito prximo de outras disciplinas de
engenharia;
Projeto
Aderncia com modelos tradicionais de
processo;
Grande foco no planejamento do Codificao
projeto.
Teste

Manuteno

33
Ciclo de Vida Clssico
Desvantagens Requisitos

Anlise

Projeto

Codificao

Teste

Manuteno

34
Ciclo de Vida Clssico
Desvantagens Requisitos
No permite flexibilidade e reviso
entre fases;
Anlise
Uma vez que uma fase esteja em um
estado de Pronto passa para a
prxima etapa; Projeto
Ideia do software que ser
desenvolvido deve estar bem definida Codificao
logo nas primeiras etapas;
Dificuldade de evoluo do escopo Teste
durante o desenvolvimento.

Manuteno

35
Ciclo de Vida Clssico
Quando usar? Requisitos

Anlise

Projeto

Codificao

Teste

Manuteno

36
Ciclo de Vida Clssico
Quando usar? Requisitos

Anlise
Sistemas crticos;
Quando a probabilidade de mudanas
Projeto
nos requisitos muito baixa;
Quando h uma compreenso
significativa dos requisitos e negcio; Codificao

Na prtica, usado pouco atualmente.


Teste

Manuteno

37
Ciclo de Vida Clssico
H algumas evolues no modelo

Requisitos Manuteno

Anlise Teste

Projeto Codificao

38
Prototipao
Viso evolutiva do desenvolvimento de software;
Produo de verses iniciais Prottipos;
Possibilidade de realizar verificaes e experimentaes
do sistema antes de ser efetivamente construdo;
Pode ser combinado com outros modelos de ciclo de
vida;
Prottipo
Funciona;
No tem tempo de vida definido;
Pode servir mltiplos propsitos;
Deve ser construdo rapidamente e com baixo custo;
Design centrado no usurio.

39
Prototipao
Incio
Comunicao

Implementa
Fim o/Entrega Plano Rpido
/Feedback

Prototipao

Construo Modelagem
Prottipo Rpida

40
Prototipao
Vantagens

41
Prototipao
Vantagens
Cliente consegue visualizar o software;
Melhora a percepo de todos em relao ao software;
Desenvolvedor constri algo rpido e barato que auxilia no
entendimento de todos sobre a demanda;
Discusses sobre o escopo do projeto so feitas a partir do
prottipo e o consequente melhor entendimento do
problema;
Facilita a linguagem comum entre os tcnicos e os clientes;
Entre outras.

42
Prototipao
Desvantagens

43
Prototipao
Desvantagens
Cliente confunde o prottipo com o sistema em
funcionamento, no levando em considerao a qualidade
global da soluo;
Desenvolvedor usa linguagens de programao/sistemas
operacionais imprprios por conta da necessidade de colocar
o prottipo em funcionamento;
Pode ser necessrio muitos ajustes no prottipo final para
aumento da qualidade;
Desenvolvedor pode esquecer estruturas inapropriadas,
comentrios, debugs no prottipo;
Entre outras.

44
Modelo Espiral
Proposto em 1988 por Boehm;
Integrao dos pontos fortes dos diversos modelos
existentes poca;
Inclui Anlise de Risco;

45
Mtodos geis
Desenvolvidas com o objetivo de vencer as fraquezas
percebidas e reais da Engenharia de Software;
Opo s abordagens tradicionais;
Consideram o momento atual de desenvolvimento de
software
Muito diferente da poca da criao das abordagens tradicionais;
Software e TI so estratgicos.
Evolues constantes, atualizaes;
Equipes pequenas;
Entregas frequentes;
Datas curtas;
Desenvolvimento rpido;

46
Mtodos geis
Manifesto gil
2001 Kent Beck e mais 16 desenvolvedores

Indivduos e Interaes mais que Processos e Ferramentas


Software funcionando mais que Documentao abrangente
Colaborao com cliente mais que negociao de contratos
Resposta a mudanas mais que seguir um plano

47
Mtodos geis
Manifesto gil 12 princpios
1. Nossa maior prioridade satisfazer o cliente, atravs da entrega adiantada e contnua de
software de valor;
2. Aceitar mudanas de requisitos, mesmo no fim do desenvolvimento. Processos geis se
adequam a mudanas, para que o cliente possa tirar vantagens competitivas;
3. Entregar software funcionando com frequncia, na escala de semanas at meses, com
preferncia aos perodos mais curtos;
4. Pessoas relacionadas negcios e desenvolvedores devem trabalhar em conjunto e
diariamente, durante todo o curso do projeto;
5. Construir projetos ao redor de indivduos motivados. Dando a eles o ambiente e suporte
necessrio, e confiar que faro seu trabalho;
6. O Mtodo mais eficiente e eficaz de transmitir informaes para, e por dentro de um time de
desenvolvimento, atravs de uma conversa cara a cara;
7. Software funcional a medida primria de progresso;
8. Processos geis promovem um ambiente sustentvel. Os patrocinadores, desenvolvedores e
usurios, devem ser capazes de manter indefinidamente, passos constantes;
9. Contnua ateno excelncia tcnica e bom design, aumenta a agilidade;
10. Simplicidade: a arte de maximizar a quantidade de trabalho que no precisou ser feito;
11. As melhores arquiteturas, requisitos e designs emergem de times auto organizveis;
12. Em intervalos regulares, o time reflete em como ficar mais efetivo, ento, se ajustam e
otimizam seu comportamento de acordo.

48
Referncias
Engenharia de Software R. S. Pressman
Engenharia de Software Ian Sommerville
Apostila de Engenharia de Software Walteno Martins
Parreira Junior
Processos de Software Eduardo Figueiredo
Engenharia de Software Jair C Leite
Modelo de Prototipao - Letcia Mara Peres
Ciclo de Vida de Desenvolvimento de Sistemas Viso
Conceitual dos Modelos Clssico, Espiral e Prototipao
Rafael Ferreira Alves e Rosngela Maria Vanalle
Mtodos geis de Desenvolvimento de Software Givanildo
Rocha de Souza
Computer History - http://www.computerhistory.org

49

You might also like