Sunteți pe pagina 1din 55

Engenharia de Software

PROF. ROBERTO

Introduo a Engenharia de Software


O que e por qu da Engenharia de Software?
Modelos de ciclo de vida

Introduo a Engenharia de Software


O que e por qu da Engenharia de Software?
Engenharias em geral: objetivos, abordagens e mtodos
Software como produto: caractersticas, fatos e diferenciais
Um histrico da Engenharia de Software
Fatores diretores de mudanas em ES
Princpios da Engenharia de Software

Introduo a Engenharia de Software


Modelos de ciclo de vida
Processo de desenvolvimento de software
Etapas do processo
Modelos cascata, incremental, com transformao e espiral
Tipos de projetos de software
Modelo de ciclo de vida de projetos OO

Introduo a Engenharia de Software


Software: o Produto
Diferente dos produtos mais comuns, o software um produto
malevel, ou seja, seu material componente (cdigo fonte)
facilmente manipulvel.

Introduo a Engenharia de Software


Software: o Produto
O principal fator de custo no desenvolvimento de um software o
fator humano (criatividade, capacidade de produo, etc.)
A maleabilidade traz uma aparente facilidade de aplicar alteraes
nos produtos de software

Introduo a Engenharia de Software


Software: o Produto
Esta facilidade aparente se obscurece pela necessidade de
manuteno da consistncia entre as partes do produto.

Introduo a Engenharia de Software


Mitos.. Gerncia x Eng. de Soft.

Ferramentas modernas
de software e hardware
so suficientes

Introduo a Engenharia de Software


Mitos.. Gerncia x Eng. de Soft.

Ferramentas modernas
de software e hardware
so suficientes

O uso eficiente de
ferramental
exige conhecimento

Introduo a Engenharia de Software


Mitos.. Gerncia x Eng. de Soft.

Manuais de Regras
e Procedimentos

Introduo a Engenharia de Software


Mitos.. Gerncia x Eng. de Soft.

Manuais de Regras
e Procedimentos

O Desatualizados,
obsoletos

Introduo a Engenharia de Software


Mitos.. Gerncia x Eng. de Soft.

Estamos atrasados?
Vamos alocar
mais gente ao projeto!

Introduo a Engenharia de Software


Mitos.. Gerncia x Eng. de Soft.

Estamos atrasados?
Vamos alocar
mais gente ao projeto!

O Custos de
treinamento,
gerncia e
entendimento do
processo de
trabalho

Introduo a Engenharia de Software


Mitos.. Programador x Eng. de Soft.
At que o programa
esteja rodando" no h
como medir sua qualidade

Introduo a Engenharia de Software


Mitos.. Programador x Eng. de Soft.
At que o programa
esteja rodando" no h
como medir sua qualidade

Revises anteriores
codificao

Introduo a Engenharia de Software


Mitos.. Programador x Eng. de Soft.
O nico produto de um
projeto de software o
conjunto de programas.

Introduo a Engenharia de Software


Mitos.. Programador x Eng. de Soft.
O nico produto de um
projeto de software o
conjunto de programas.

Especificao, projeto, plano


de trabalho.

Introduo a Engenharia de Software


Mitos.. Programador x Eng. de Soft.
Programa escrito e
testado! J
Acabei!

Introduo a Engenharia de Software


Mitos.. Programador x Eng. de Soft.
Programa escrito e
testado! J
Acabei!

Quanto mais cedo voc escrever o


cdigo, mais tempo ir demorar para
complet-lo. De 50 a 70% do custo de
produo de um software vai ser gasto
para operacionaliz-lo para o usurio.

Introduo a Engenharia de Software


Mitos.. Cliente x Eng. de Soft.

Uma lista de intenes


(boas) suficiente para
comear a produzir o
software.

Introduo a Engenharia de Software


Mitos.. Cliente x Eng. de Soft.

A Especificao do Software a fase mais


crtica do processo. Erros na fase inicial
tm um custo muito alto de correo.

Uma lista de intenes


(boas) suficiente para
comear a produzir o
software.

Introduo a Engenharia de Software


Mitos.. Cliente x Eng. de Soft.

Minhas necessidades vo
mudar? Mas mudanas
so fceis de introduzir
porque software
bastante flexvel.

Introduo a Engenharia de Software


Mitos.. Cliente x Eng. de Soft.

Custo de mudanas muito alto!

Minhas necessidades vo
mudar? Mas mudanas
so fceis de introduzir
porque software
bastante flexvel.

Introduo a Engenharia de Software


Fatos
Em geral, o desenvolvimento de um produto de software custa caro
(comparao com linhas de produo.)
Software desenvolvido, no produzido no sentido clssico: o custo
software na engenharia e no na reproduo.
O tempo estimado para desenvolvimento de um produto de
software geralmente superado.

Introduo a Engenharia de Software


Fatos
A produtividade da equipe de desenvolvimento costuma estar
quase aqum do desejado.
Frequentemente, os recursos (equipe) so insuficientes e incapazes
de realizar as atividades necessrias.
Algumas questes recebem considerao demasiada, enquanto
outras so negligenciadas.

Introduo a Engenharia de Software


Fatos
O grau de progresso no desenvolvimento de um produto de
software difcil de medir.
Produtos de software dificilmente atingem o padro que qualidade
esperado.
A qualidade do software frequentemente suspeita, pois temos
poucas medidas e critrios de qualidade dbios.

Introduo a Engenharia de Software


Fatos
Insatisfao do usurio frequente: pouco entendimento dos
requisitos e problemas de comunicao.
Os usurios se sentem frustrados com sistemas difceis de operar e
cujo desenvolvimento se prolonga por vrios anos.
Software precisa se adaptar a novas tecnologias, que ainda esto
mudando com muita frequncia.

Introduo a Engenharia de Software


Fatos
Software em operao difcil de manter e a manuteno pode se
tornar mais cara do que sua reconstruo.
No possvel garantir que um produto de software est
completamente livre de erros.
Software apresenta dificuldades para a realizao de testes quando
comparado a produtos concretos.

Introduo a Engenharia de Software


Fatos
H diversas estatsticas que provam a pouca confiabilidade de boa
parte dos sistemas.
A confiabilidade depende do uso de mtodos que possam garantir
uma boa qualidade do produto construdo.
"Um sistema no deve somente fazer o que esperado dele, mas
tambm no fazer o que no esperado.

Introduo a Engenharia de Software


Fatos

Introduo a Engenharia de Software

Sucesso dos
Projetos

Introduo a Engenharia de Software


Definio de Engenharia de Software
O estabelecimento e uso de um conjunto de princpios de engenharia
com o objetivo de se construir software confivel, eficiente e vivel
economicamente em mquinas reais. [Fritz Bauer, 1969]
Aplicao de uma abordagem sistemtica, disciplinada e
quantificativa para o desenvolvimento, operao e manuteno de
software, isto , a aplicao da engenharia ao software. [IEEE, 1993]

Introduo a Engenharia de Software


Engenharia em geral:
Busca a resoluo de problemas prticos atravs de solues que sejam
economicamente viveis
Engenharias em geral: objetivos, abordagens e mtodos.
Esta busca motivada pela limitao de recursos, como tempo, dinheiro e
pessoal capacitado para resolver os problemas.
A estratgia da engenharia aplicar o conhecimento cientfico sobre um
determinado domnio tecnolgico.
Esta estratgia exige o desenvolvimento contnuo de tecnologias e conhecimento
sobre as diversas reas.
Assim, a engenharia se especializa nos mais diversos ramos de conhecimento
(eltrica, civil, software, ...)

Introduo a Engenharia de Software


Etapas da Engenharia:
Anlise: quando um novo problema deve ser resolvido, este deve ser
dividido em partes menores e mais simples, at que estas partes possam
ser resolvidas.
Sntese: tendo dividido o problema em pequenas partes, devemos unir as
solues de cada parte em uma estrutura maior, que atenda a todo o
problema.
Correes: resoluo de problemas decorrentes de traduo durante a
sntese (verificao) ou de elicitao durante a anlise (validao).

Introduo a Engenharia de Software


A Evoluo dos Sistemas
No incio ...
A programao era considerada uma espcie de arte.
Os altos custos de hardware escondiam os custos de software.
Os sistemas eram simples e construdos por pequenas equipes.
Sistemas construdos para resolver problemas especficos.

Introduo a Engenharia de Software


"Crise de Software"
Teve incio em meados da dcada de 1960.
Os custos de hardware comearam a se reduzir.
Os computadores se tornaram cada vez mais velozes.
A capacidade de armazenamento dos computadores aumentou.
A demanda por software cresceu com os avanos do hardware.
As equipes de desenvolvimento no acompanharam a demanda por
produo.

Introduo a Engenharia de Software


Evoluo do Software (Cronologia)
Dcada de 1960
Sistemas em Batch
Distribuio limitada
Software customizado

Introduo a Engenharia de Software


Evoluo do Software (Cronologia)
Dcada de 1970
Sistemas multiusurio
Tempo real
Bancos de Dados
Software Produto

Introduo a Engenharia de Software


Evoluo do Software (Cronologia)
Dcada de 1980
Sistemas distribudos
Inteligncia embutida
Hardware barato
impacto no consumidor

Introduo a Engenharia de Software


Evoluo do Software (Cronologia)
Dcada de 1990
Sistema pessoais
Orientao a objetos
Sistemas especialistas
Redes neurais
Computao paralela

Introduo a Engenharia de Software


Evoluo do Software (Cronologia)
Dcada de 2000
Plataforma WEB
Integrao com pacotes
Componentes e reutilizao
Sistemas interorganizacionais (B2B)
Fbricas de software

Introduo a Engenharia de Software


Evoluo do Software (Complexidade)
Sistemas de software so progressivamente mais complexos
Foguetes Tit (EUA - circa 1960): 1.000 instrues.
Sistema de controle areo (EUA - circa 1970): 1 .000.000 instrues.
Sistema estratgico de defesa (EUA - circa 1990): 10.000.000
instrues.

Introduo a Engenharia de Software


Evoluo do Software (Complexidade)
Software cada vez ...
maior
com mais funcionalidades
mais complexo
envolvendo mais usurios
exigindo a participao de equipes em seu desenvolvimento

Introduo a Engenharia de Software


Engenharia de software (Origens)
A Engenharia de Software surgiu com o intuito de:
identificar e analisar as causas dos problemas envolvidos com o
desenvolvimento de software
propor solues economicamente viveis para a resoluo destes
problemas
organizar o conhecimento sobre tcnicas disponveis para o
desenvolvimento de software
O principal problema da Engenharia de Software: falta de conhecimento
cientfico para ser aplicado

Introduo a Engenharia de Software


Mudanas na Engenharia de Software
Foras que incentivaram as mudanas sofridas pela Engenharia de Software
(Wasserman, 1996; apud Pfleeger, 2001).
Orientao a Objetos
Problemas com o Ciclo em Cascata
Time do Market
Redes e Distribuio
Interface com o Usurio
Mudanas Econmicas
Computadores Desktop (e em seguida os dispositivos mveis: celulares, tablets..)

Introduo a Engenharia de Software


Princpios da Engenharia
Mtodos
Representao do software durante seu desenvolvimento
Notaes e linguagens (UML, Booch, anlise essencial, ...)
Ferramentas
Software que auxilia a construo de software, oferecendo suporte
automtico ou semi-automtico aos mtodos
CASE - Computer Aided Software Engineering
Ambientes de desenvolvimento de software

Introduo a Engenharia de Software


Princpios da Engenharia
Procedimentos
Sequncia de passos para construir um software, incluindo os
resultados gerados por estes passos e os controles aplicveis sobre
estes resultados.
Abstrao
Descrio dos problemas em um nvel de generalizao que esconde
os detalhes e permite o foco dos analistas nos principais mecanismos
que regem o sistema.

Introduo a Engenharia de Software


Princpios da Engenharia
Arquitetura de software
Mecanismos fundamentais que direcionam a construo do produto de
software e servem como base para seu posterior refinamento
Processo de desenvolvimento
"A qualidade de um produto est ligada a qualidade do processo com o
qual ele foi construdo"
Formalizao e disciplina nas atividades do processo de desenvolvimento,
visando qualidade no produto
Diferentes nveis de formalizao de acordo com o tipo de produto que se
deseja construir

Introduo a Engenharia de Software


Princpios da Engenharia
Reutilizao
Oportunidade decorrente da similaridade entre aplicaes para o
reuso de artefatos previamente construdos
Medio
Mecanismos para avaliao de qualidade do produto e do processo,
com o intuito de aprimoramento
"No podemos entender o que no conseguimos medir" [Lord Kevin]

Introduo a Engenharia de Software


Princpios da Engenharia
Ferramentas de desenvolvimento
Apoio automatizado ao processo de desenvolvimento
Integrao das diversas atividades e interoperabilidade
Separao de objetivos
O desenvolvimento de software envolve mltiplas habilidades e
diferentes objetivos nas diversas fases de desenvolvimento
Antecipao de mudanas
Os sistemas devem ser suscetveis a mudanas, pois elas vo ocorrer!

Introduo a Engenharia de Software


Construo de Software

Processo

Produto

Introduo a Engenharia de Software


Construo de Software

Introduo a Engenharia de Software


Processo de Software
Conjunto de atividades, mtodos, prticas e tecnologias utilizadas para
o desenvolvimento e manuteno de software e produtos
relacionados.

Introduo a Engenharia de Software


Processo de Software

Equipe
Ferramentas
Mtodos

Bibliografia
BOOCH, G.; JACOBSON, I.; RUMBAUGH, J. UML: guia do usurio. Rio de Janeiro: CAMPUS,
2002.
PAULA FILHO, W. P. Engenharia de Software: fundamentos, mtodos e padres. 2
Edio. Rio de Janeiro: LTC, 2003.
PRESSMAN, R. S. Engenharia de Software. So Paulo: Makron Books, 1995.
SILVA, D. M. Guia de consulta rpida: UML. So Paulo: NOVATEC, 2001.
SOMMERVILLE, I. Engenharia de Software. 6 Edio. Addison-Wesley, 2003.

S-ar putea să vă placă și