Você está na página 1de 53

SOFTWARE E ENGENHARIA DE

SOFTWARE
Alexandre Cidral, Dr
OBJ ETI VO
Caracterizar a necessidade da Engenharia de
Software enquanto uma rea do conhecimento
que problematiza e prope solues para as
questes de gesto e de tecnologia envolvidas nos
processos e produtos de software
AGENDA
Software
Processo de software
Gerenciamento de projetos de software
Mitos do software
Crise do software
Engenharia de software
SI STEMAS DE I NFORMAO E SOFTWARE
Sistemas de I nformao
Componentes
Software
Hardware
Dados
Pessoas
Procedimentos
Objetivos
Coletar, armazenar, processar e distribuir informaes com
vistas a contribuir na soluo de problemas organizacionais
SOFTWARE
Um componente de um sistema de informao
Um sistema baseado em computador que nasce
de alguma necessidade e que constitudo por
Cdigo executvel pelo computador
Documentao
para o usurio
para o profissional de software
Arquivos e dados de configurao
Stio na WEB para suporte e atualizaes
PRODUTOS DE SOFTWARE
So sistemas de software comercializados e que
abrangem dois grandes grupos
Produtos genricos ou pacotes de software
Sistemas stand-alonecomercializados para qualquer cliente
que deseje adquir-lo
Produtos sob encomenda ou personalizados
Sistemas encomendados e comercializados para um cliente
em especial
QUALI DADE DO PRODUTO - I SO/I EC 9126
SERVI OS DE SOFTWARE
Na maioria das vezes a relao contratual entre a
empresa de software e seu cliente por meio de
um contrato de licena de uso
Adicionalmente as empresas de software podem
oferecer servios adicionais a seus clientes:
Suporte e manuteno
Customizao
Consultoria e treinamento
ESPECI FI CI DADE DOS SI STEMAS DE
SOFTWARE
O software desenvolvido ou passa por um
processo de engenharia; no fabricado no
sentido clssico
Software no se desgasta
Apesar do esforo de desenvolvimento baseado
em componentes, parte do software
desenvolvida sob encomenda
TI POS COMUNS DE SOFTWARE
Software de sistemas ou Bsico
compiladores, editores simples, drivers, componentes
do SO.
Software de aplicao
Sistemas de atendem necessidades especficas de
negcio
Cientfico e de Engenharia
intenso processamento de nmeros e clculos.
TI POS COMUNS DE SOFTWARE
Embutido ou Embarcado
celulares, micro-ondas, injeo eletrnica.
Para linhas de produto
processador de texto, planilha, jogos,apresentaes
etc.
Aplicaes WEB
E-commerce, B2B, e-business
Inteligncia Artificial
sistemas especialistas, redes neurais e aprendizado.
NOVOS DESAFI OS
Computao ubqua
Sistemas mveis que permitam comunicao por meio
das grandes redes onipresentes
NetSourcing
Aplicaes WEB capazes de usar o potencial de
processamento e armazenamento disponvel na
nuvem WEB
Software Aberto
Desenvolver cdigo aberto e auto-descritvel
permitindo a todos saberem quais as modificaes
feitas e como se manifestam
SI STEMAS LEGADOS
Desenvolvidos dcadas atrs
Sofrem contnua modificao para atender
mudanas
Das necessidades de negcio
Das plataformas de computao
Liu et al (1998)
Longevidade
Criticalidadepara o negcio
QUALI DADE DO SOFTWARE LEGADO
Caracterizados por m qualidade
Projetos no extensveis
Cdigo complicado
Documentao pobre ou inexistente
Casos de testes e resultados nunca arquivados
Histrico de mudanas mal gerido
Muitas organizaes adotam a regra
Enquanto funciona no mexa!!
EVOLUO DO SOFTWARE
Ao longo do tempo o software precisa ser
Adaptado para atender novas necessidades de
negcio ou tecnolgica
Aperfeioado para implementar novos requisitos de
negcio
Extendidopara torn-lo interopervel com outros
sistemas
Rearquitetadopara integra-loa um ambiente de rede
TEORI A UNI FI CADA PARA EVOLUO DO
SOFTWARE (LEHMAN ET AL, 1997)
Lei da modificao contnua
Sistemas devem ser continuamente adaptados sob o
risco de se tornarem gradativamente menos
satisfatrios
Lei da complexidade crescente
A medida que um sistema evolui sua complexidade
aumenta a menos que se faa um esforo para mant-
la ou reduz-la
TEORI A UNI FI CADA PARA EVOLUO DO
SOFTWARE
Lei da auto-regulao
O processo de evoluo de sistemas auto-regulatrio
com medidas de distribuio do produto e do processo
perto do normal
Lei da conservao da estabilidade
organizacional
A velocidade mdia da atividade global em um
sistema evolutivo invariante ao longo do tempo de
vida do produto
TEORI A UNI FI CADA PARA EVOLUO DO
SOFTWARE
Lei da conservao da familiaridade
A medida que um sistema evolui todos os que esto a
ele associados devem manter o domnio de seu
contedo e comportamento para conseguir evoluo
satisfatria
Lei do crescimento contnuo
O contedo funcional dos sistemas deve ser
continuamente aumentado para manter a satisfao
do usurio ao longo do tempo de vida
TEORI A UNI FI CADA PARA EVOLUO DO
SOFTWARE
Lei da qualidade declinante
A qualidade de sistemas parecer estar declinando a
menos que eles sejam rigorosamente mantidos e
adaptados s modificaes no ambiente operacional
Lei de realimentao do sistema
Os processos de evoluo dos sistemas constituem
sistemas de realimentao em multinveis, em
multiciclos, por multiagentes e precisam ser tratados
como tal para conseguir aperfeioamento significativo
PROCESSO DE SOFTWARE
Conjunto de atividade e resultados associados
que geram um produto de software
Especificao de software
Desenvolvimento de software
Validao do software
Evoluo do software
MODELOS DE PROCESSO DE SOFTWARE
Descrio simplificada de um processo de
software que apresentada a partir de uma
perspectiva especfica
Abrange
Etapas e Atividades
Artefatos ou subprodutos
Papis profissionais envolvidos
PROJ ETOS DE SOFTWARE
As atividades a serem desenvolvidas pelas
empresas e profissionais de software tendem a
ser caracterizadas como projetos
Partem de uma necessidade ou problema
Tem por misso entregar um produto ou servio
Tem incio e fim definidos
Empregam recursos espefcos por tempo determinado
Tem cronograma e oramento
GERENCI AMENTO DE PROJ ETOS DE
SOFTWARE
Projetos de software exigem gerenciamento com
vistas a aumentar a probabilidade de sucesso
levando em conta
Prazo
Custo
Escopo
Requisitos
Gerenciamento de projetos pode empregar
melhores prticas como as preconizadas pelo
PMI /PMBOK
PRI NCI PAI S PROBLEMAS GERENCI AMENTO
Estimativas de prazo (meses, anos) e custo
I mprecisas
Produtividade abaixo da praticada pelo
mercado
Software de baixa qualidade (erros e no
conformidades com requisitos que tiram a
confiana do cliente sobre o produto)
MAI S PROBLEMAS
No dedicamos tempo para coletar dados
sobre o software e seu processo de
desenvolvimento. Com poucos dados
histricos como guia, as estimativas tm sido a
olho, com resultados previsivelmente ruins.
Sem nenhum indicador slido de
produtividade, no poderemos avaliar com
preciso a eficcia de novas ferramentas,
mtodos, padres ou processos.
MAI S AI NDA
A insatisfao do cliente com o sistema
concludo ocorre muito freqentemente.
Os projetos de desenvolvimento de software
normalmente so levados a efeito apenas com um
vago indcio das exigncias do cliente.
A comunicao entre o cliente e o
desenvolvedor de software freqentemente
muito fraca.
AI NDA NO ACABOU
A qualidade do software freqentemente
suspeita. Somente agora esto comeando a ser
seguidos conceitos quantitativos slidos de
confiabilidade e de garantia de qualidade de
software.
S recentemente comeamos a entender a
importncia dos testes de software
sistemticos e tecnicamente completos.
MAI S UM
O software existente pode ser muito difcil de
manter. A tarefa de manuteno de software
devora a maioria de todos os dlares destinados a
software. A capacidade de manuteno de
software no foi enfatizada como um critrio
importante para a aceitao do software.
CAUSAS
Gerentes sem vivncia em:
Projetos e seus marcos de evoluo
Mtodos efetivos de controle
Tecnologias que se modificam rapidamente
MAI S CAUSAS
Os programadores ou engenheiros de software
tm pouca instruo formal, holstica e
estudam pouco as tcnicas de desenvolvimento e
as reas de negcio.
Cada pessoa aborda a tarefa de escrever
programas com a experincia advinda de
esforos passados. Algumas pessoas
desenvolvem uma abordagem ordeira e eficiente,
mesmo por tentativa e erro, mas muitas criam
maus hbitos, que resultam em qualidade e
manutenibilidadedeficientes.
OUTRAS CAUSAS
Resistncia s inevitveis mudanas
irnico que enquanto o hardware experimenta
enormes mudanas, as pessoas da rea de
software responsveis pelo aproveitamento desse
potencial, muitas vezes se oponham mudana
quando ela discutida e resistam a ela quando
ela introduzida
MI TOLOGI A DO SOFTWARE
Mitos da gerncia
Advm de gerentes sobre presso de oramento e
tempo
Mitos do cliente
Advm de falsas expectativas e insatisfao com o
desenvolvedor
Mitos do profissional de desenvolvimento
Advmde se considerar o software como uma forma
de arte. Ser que o software uma arte ou uma
engenharia?
MI TOS DA GERNCI A
Gerentes so responsveis sobre projetos de
software
Esto sob presso constante para cumprir prazos,
obedecer oramentos e melhorar qualidade
Gerentes podem se agarrar a mitos para diminuir
a presso ou justificar aes ou a falta delas
MI TO DO MANUAL DE DESENVOLVI MENTO OU
PORQUE EST ESCRI TO VAI SER SEGUI DO
Mito:
J temos um manual repleto de padres e
procedimentos para a construo de software. I sso
no oferecer ao meu pessoal tudo o que eles
precisam saber?
Realidade:
O manual de padres pode muito bem existir,
mas ser que ele usado?
Os profissionais de software tm conhecimento de sua
existncia?
Ele reflete a moderna prtica de desenvolvimento de
software? completo?
Em muitos casos, a resposta a todas estas perguntas
no.
MI TO DA HORDA DE MONGI S
Mito:
Se ns estamos atrasados nos prazos, podemos
adicionar mais programadores e tirar o atraso.
Realidade:
O desenvolvimento de software no um
processo mecnico igual manufatura.
Acrescentar pessoas em um projeto de software
atrasado torna-o ainda mais atrasado.
Gasta-se tempo formando os recm-chegados, o que
reduz o tempo de desenvolvimento produtivo.
Pessoas podem ser acrescentadas, mas somente de
uma forma planejada e bem coordenada.
MI TO DO MAI S FCI L COMPRAR DO QUE
FAZER EM CASA
Mito
Se eu decidir terceirizar um projeto de software vou
poder relaxar e deixar que a empresa contratada o
elabore
Realidade
Se uma organizao no sabe como gerir e controlar
projetos de software internamente, certamente ter
problemas com a terceirizao
MI TO DO TEMOS O COMPUTADOR DE LTI MA
GERAO, DO QUE MAI S VOC PRECI SA?
Mito:
Meu pessoal tem ferramentas de desenvolvimento
de software de ltima gerao; afinal de contas lhes
compramos os mais novos computadores
Realidade:
preciso muito mais do que o ltimo modelo de
computador para se fazer um desenvolvimento de
software de alta qualidade.
As ferramentas de engenharia de software auxiliadas
por computador (CASE) so mais importantes do que
o hardware para se conseguir boa qualidade e
produtividade; contudo, a maioria dos
desenvolvedores de software no as usa plenamente.
MI TOS DO CLI ENTE
O cliente a organizao ou pessoa que contrata
um produto de software ou os servios de uma
empresa de software
Clientes acreditam nos mitos, pois
desenvolvedores e empresas de software fazem
pouco para corrigir a desinformao
Mitos levam a falsas expectativas por parte dos
cliente e, consequentemente, insatisfao
MI TO DO VAMOS LOGO POR A MO NA
MASSA
Mito
Uma declarao geral dos objetivos suficiente
para se comear a escrever programas podemos
preencher os detalhes mais tarde.
Realidade
Uma definio inicial ruim a principal causa
de fracasso dos esforos de desenvolvimento de
software. Uma descrio formal e detalhada do
domnio da informao, funo, desempenho,
interfaces, restries de projeto e critrios de
validao fundamenta
Essas caractersticas podem ser determinadas
somente depois de cuidadosa comunicao entre o
cliente e o desenvolvedor.
MI TO DO J QUE ESTAMOS AQUI , QUE
TAL...
Mito: Os requisitos de projeto modificam-se
continuamente, mas as mudanas podem ser
facilmente acomodadas, porque o software
flexvel (Cuidado como o J que...) .
Realidade: verdade que os requisitos de
software se modificam, mas o impacto da
mudana varia de acordo com o tempo em que ela
introduzida
MI TOS DO PROFI SSI ONAL DE SOFTWARE
Desenvolvimento de software uma atividade
intensiva em conhecimento e por conseguinte
altamente dependente das pessoas que
participam do processo
I sso faz com que valores e crenas dos
profissionais interfiram fortemente no processo
H certos valores e crenas de senso comum que
dificultam a melhoria da qualidade e
produtividade
MI TO DO QUANTO MAI S CEDO
PROGRAMARMOS, MAI S CEDO TERMI NAMOS
Mito
Assim que escrevemos o programa e o
colocarmos em funcionamento, nosso trabalho estar
completo
Realidade
Algum disse certa vez que quanto mais cedo se
comea a escrever o cdigo, mais tempo demora para
que se consiga termin-lo
Os dados da indstria indicam que entre 50 e 70% de
todo o esforo gasto num programa sero despendidos
depois que ele for entregue pela primeira vez ao
cliente
MI TO DO S PODEMOS CONTROLAR A
QUALI DADE AO FI NAL DO PROCESSO
Mito
Enquanto no tiver o programa funcionando,
eu no terei realmente nenhuma maneira de avaliar
sua qualidade
Realidade
Um dos mecanismos mais efetivos de garantia de
qualidade de software pode ser aplicado desde o
comeo de um projeto a reviso tcnica formal
As revises de software so um filtro da qualidade
que tm sido consideradas mais eficientes do que a
realizao de testes para a descoberta de defeitos.
MI TO DO CDI GO EXECUTVEL COMO
NI CO PRODUTO FI NAL
Mito
A nica coisa a ser entregue em um projeto
bem-sucedido o programa funcionando
Realidade
Um programa funcionando somente uma parte
de uma configurao de software que inclui vrios
outros elementos.
A documentao forma os alicerces para um
desenvolvimento bem-sucedido e fornece um guia
para a tarefa de manuteno do software
MI TO DO EXCESSO DE DOCUMENTAO
Mito
A engenharia de software vai nos fazer criar uma
documentao volumosa e desnecessria que
certamente nos atrasar
Realidade
A engenharia de software no se relaciona a criao
de documentos
Engenharia de software refere-se a criao de
qualidade
Melhor qualidade leva reduo de retrabalho
Menos retrabalho leva a melhor produtividade
CRI SE DO SOFTWARE
O termo crise do software vem sendo usado na
indstria de software desde 1968, quando houve
a primeira admisso aberta da existncia de uma
crise latente na rea (DI J KSTRA, 1972).
Naquele ano, ocorreu a Conferncia da OTAN
sobre Engenharia de Software (NATO Software
EngineeringConference) em Garmisch,
Alemanha, que considerado atualmente o
momento histrico do nascimento da disciplina de
Engenharia de Software (BRYANT, 2000;
EI SCHEN, 2002).
ENGENHARI A DE SOFTWARE
uma disciplina de engenharia que se ocupa dos
aspectos de gesto e tecnolgicos dos processos e
produtos de software no que diz respeito
Especificao de software
Desenvolvimento de software
Validao do software
Evoluo do software
DI SCI PLI NA DE ENGENHARI A
Engenheiros
Fazem produtos funcionar
Aplicam teorias, mtodos, tcnicas e ferramentas
adequadas a cada situao
Buscam solues para problemas
Reconhecem que precisam atuar dentro de restries
tcnicas e organizacionais e seguindo certos padres e
normas tcnicas
Adotam abordagem sistemtica e organizada de
trabalho
ENGENHARI A DE SOFTWARE E...
Mtodos
Uma abordagem estruturada de um processo de
software que tem por objetivo contribuir com a
qualidade de processos e produtos de software
Abrange etapas, atividades e produtos a serem
realizadas ao longo do processo e permite a definio
de papis e atribuio de responsabilidades
Descrio de modelos de sistemas
Regras
Recomendaes
Diretrizes de processo
ENGENHARI A DE SOFTWARE E...
Tcnicas
Especificam como as atividades previstas no mtodo
sero realizadas
Ferramentas
So instrumentos empregados na aplicao de uma
tcnica
Computer AidedSoftware Engineering(CASE)
DESAFI OS DA ENGENHARI A DE SOFTWARE
Desafio dos sistemas legados
Manter e atualizar softwares legados evitando custos
excessivos
Desafio da heterogeneidade
Desenvolver tcnicas que permitam a produo de
software confivel e flexvel
Desafio do fornecimento
Responder as demandas emergentes
Desafio da melhoria contnua da qualidade
Evoluir o software levando em conta princpios da
gesto da qualidade
CONSI DERAES FI NAI S
Nos ltimos 40 anos o Software tornou-se
elemento essencial em grande parte das
atividades humanas
Disto decorre a contnua necessidade de melhoria
dos processos e produtos de software
A Engenharia de Software uma das reas do
conhecimento que se prope a buscar solues
que proporcionem tal melhoria contnua
REFERNCI AS
PRESSMAN, Roger S. Engenharia de software.
6. ed. So Paulo: MsGraw-Hill, 2006. captulo 1
(I NDEX 30084)
SOMMERVI LLE, I an. Engenharia de software.
So Paulo: Addison-Wesley, 2003. captulo 1
(I NDEX 30083)

Você também pode gostar