Engenharia de Software
Introdução
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
O que é Software?
• Há 20 anos, pouquíssima gente sabia explicar o que era
software.
• Hoje, praticamente todo mundo acha que sabe ...
• Software não é só os programas!
• A documentação necessária para instalar, usar, e manter
os programas são uma parte integrante do software.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Algumas características
do Software
• O software é desenvolvido/projetado, ao invés de
manufaturado/fabricado.
• Software não se desgasta com o uso: não existem
peças de reposição.
• Software não pode ser visto ou tocado: para analisar o
progresso de um projeto de software é preciso recorrer à
sua documentação.
• Grandes sistemas de software são normalmente
desenvolvidos uma única vez. Assim, a experiência
adquirida com outros projetos tem um valor limitado.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Algumas características
do Software
• A maioria dos softwares é feita sob medida (por
encomenda), ao invés de ser montada a partir de
componentes.
– Produtos Genéricos: sistemas produzidos por uma organização
e vendidos a todos os clientes que quiserem comprá-los.
– Produtos Customizados: sistemas que são encomendados e
desenvolvidos para um determinado cliente.
– O maior gasto de software é em produtos genéricos, mas o
maior esforço de desenvolvimento está nos produtos
customizados.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Contexto
• A economia de todos os países do mundo
depende cada vez mais de software
• Existem cada vez mais sistemas controlados por
software.
• Os gastos com desenvolvimento de software
representam uma fração significativa do PIB de
muitos países.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Contexto:
primórdios
• O desenvolvimento de software era puramente
artesanal;
• As pessoas desenvolvendo sistemas erravam
constantemente nas suas estimativas de custo e
tempo;
• Os sistemas continham muitos erros;
• Consertar erros geralmente produzia mais erros;
• Tamanho dos sistemas crescendo
consistentemente.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Contexto:
Custo do Software
•
•
•
Custo do software geralmente domina o custo do
desenvolvimento. Os custos do software de um PC são
geralmente maiores do que do hardware
Software custa mais para manter do que para
desenvolver! Para sistemas com uma longa vida, os
custos de manutenção são várias vezes maior do que o
de desenvolvimento
Engenharia de Software trata do desenvolvimento de
software de forma eficaz
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Contexto:
Custo do Software
• A proporção dos custos com software e
hardware mudou bastante ao longo do tempo:
– Década de 60: 20% -- 80%
– Década de 70: 50% -- 50%
– Década de 90: 80% -- 20%
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Contexto:
exemplos interessantes
• Estudo feito em 1979 pelo governo dos Estados
Unidos em relação ao software produzido:
– 2% Funcionava;
– 3% Funcionaria com poucas correções;
– 45% Entregues mas nunca foram usados com
sucesso;
– 20% Usados, mas tremendamente modificados ou
abandonados;
– 30% Pagos, mas nunca foram terminados e/ou
entregues.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
A Crise de Software
• O que é esta crise?
• Métodos de desenvolvimento de software existentes não
são bons o bastante para o desenvolvimento de
software de grande porte.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
A Crise de Software:
principais problemas
• Os grandes softwares não funcionam adequadamente;
• Os projetos de software estão sempre atrasados;
• Os custos dos projetos de desenvolvimento de software
são sempre maiores do que o previsto.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
A Crise de Software:
principais problemas
• Os computadores estão cada vez mais rápidos,
sofisticados, e baratos;
• Os softwares estão cada vez maiores e mais
sofisticados, e a produtividade não acompanha a
demanda;
• Os custos com manutenção são muito altos: para
sistemas com uma longa vida, eles são várias vezes
maiores do que os custos de desenvolvimento.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
A Crise de Software:
outras dificuldades
• Dedica-se pouco tempo à coleta de dados (requisitos
dos clientes):
– Normalmente apenas um subconjunto das necessidades do
cliente são levadas em conta ...
– Os profissionais estão sempre com muita pressa para começar
a programar ...
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
A Crise de Software:
outras dificuldades
• A qualidade geralmente é suspeita ...
– Testes sistemáticos e tecnicamente completos raramente são
feitos;
– A flexibilidade da maioria dos softwares também é bastante
limitada;
– A concorrência com software barato, mas sem qualidade, feito
por pessoas sem qualificação adequada é grande.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
A Crise de Software:
outras dificuldades
• Não há muito interesse em se gastar tempo para se
entender mais a respeito de estimativas, produtividade,
precisão e eficácia de novos métodos e novas
ferramentas, etc.
• A resistência a mudanças é grande ...
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
A Crise de Software:
existe solução?
• O uso de melhores técnicas, métodos, e ferramentas.
• Mais treinamento e educação:
– atualmente se investe muito pouco!
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Definições de Engenharia de
Software
• É uma disciplina que se preocupa com os problemas
práticos inerentes ao desenvolvimento de sistemas.
– Não é simplesmente programação;
– Também não é só ciência da computação;
– Uso de teorias (resultados), métodos, e ferramentas na
resolução de problemas.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Definições de Engenharia de
Software
• É o estabelecimento e uso de sólidos princípios de
engenharia visando obter economicamente um software
que seja confiável e que funcione eficientemente em
máquinas reais [Bauer69]
• Engenharia de Software trata do desenvolvimento de
software de forma eficaz.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Definições de Engenharia de
Software
• É a aplicação de ciência e matemática visando tornar as
capacidades do equipamento úteis para o ser humano
através de programas, procedimentos e documentação;
• É a abordagem sistemática ao desenvolvimento,
operação, manutenção, e aposentadoria de Software.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Definições de Engenharia de
Software
• É a disciplina de engenharia que se preocupa com todos
os aspectos da produção de software;
• Os Engenheiros de Software devem adotar uma
abordagem de trabalho sistemática e organizada e
utilizar técnicas e ferramentas apropriadas, dependendo
do problema a ser resolvido, das restrições do projeto e
dos recursos disponíveis.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Características da
Engenharia de Software
• Engenharia de Software se refere a softwares
desenvolvidos por grupos ao invés de indivíduos;
• Engenharia de Software usa princípios de engenharia ao
invés de arte, e
• Engenharia de Software inclui tanto aspectos técnicos
quanto não técnicos.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Características da
Engenharia de Software
• O principal objetivo da Engenharia de Software é
produzir, a um custo baixo, software de qualidade.
– Custo é fácil de ser medido.
– Qualidade não é.
• O processo de planejamento é crucial na engenharia de
software. A implementação é só uma parte do processo.
• A Engenharia de Software engloba todo o ciclo de vida
do software (concepção, implementação, uso e
manutenção).
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Características da
Engenharia de Software
• Alguns desafios:
– Lidar com sistemas legados, heterogeneidade e
prazos apertados
– Sistemas legados:
• Sistemas antigos e valiosos que devem ser mantidos ou
melhorados
– Heterogeneidade
• Diversas tecnologias, hardware + firmware + software
– Prazos apertados
• Pressão para entregar o produto de forma cada vez mais
rápida
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
O que é Software de qualidade?
• É software que “funciona” (é confiável):
– ele não deve falhar mais do que o especificado na
documentação.
• É software que funciona de acordo com a sua
especificação:
– Mesmo software que aparentemente funciona pode não estar
satisfazendo a sua especificação.
• É software que é fácil de manter.
– Código bem escrito
– Documentação apropriada.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
O que é Software de qualidade?
• É software que funciona de maneira eficiente.
– Software mais eficiente não é necessariamente software que
roda mais rápido ou que gasta menos memória/disco.
– A complexidade do código e o custo também são fatores
importantes.
• É software que possui uma boa interface com o usuário:
– Muitos softwares não funcionam direito porque são difíceis de
usar.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Atributos dos produtos de Software
•
Manutenibilidade
–
•
Dependenbilidade
–
•
Software não deve causar prejuízo físico ou econômico no
caso de uma falha
Eficiência
–
•
Deve ser possível para o software evoluir de forma a atender
a requisitos que mudam
Software não deve desperdiçar recursos do sistema
Usabilidade
–
O software deve ter um interface de usuário adequada e ser
documentado
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Importância das características do
produto
•
•
A importância relativa destas características depende
do produto e do ambiente em que ele será usado
Em alguns casos, alguns dos atributos podem ser
mais importantes
–
•
Em sistemas de segurança-critícos de tempo-real, os
atributos chave podem ser dependenbilidade e eficiência
Os custos tendem a aumentar exponencialmente se
altos níveis de um atributo são necessários
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Custos da Eficiência
Cost
Ef ficiency
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Mitos do Software
•
•
•
•
Propagam desinformação e confusão.
No passado eram tomados como verdades absolutas.
Ainda há resquícios: é difícil mudar hábitos antigos.
Existem 3 tipos de mitos:
– Do cliente
– Administrativos, e
– Do profissional.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Mitos do Software:
mitos do cliente
• Uma declaração geral dos objetivos é suficiente para
começar a escrever os programas: podemos preencher
os detalhes mais tarde.
– Uma definição inicial ruim é a principal causa da maioria dos
fracassos no desenvolvimento de software.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Mitos do Software:
mitos do cliente
• As necessidades do projeto mudam continuamente mas
isto não é problema pois o software é flexível.
– Os requisitos do software podem mudar, mas o custo da
mudança varia bastante dependendo da fase em que ela ocorre:
• Definição . . . . . . . . . . . . . . . . . x
• Desenvolvimento . . . . . . . . . . 1.5x a 1.6x
• Manutenção . . . . . . . . . . . . . . 60x a 100x
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Mitos do Software:
mitos administrativos
• Temos um manual de padrões e procedimentos para a
construção de software: isto basta!
–
–
–
–
O manual é usado?
Os profissionais de software sabem que ele existe?
Ele reflete as técnicas mais modernas?
Ele é completo?
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Mitos do Software:
mitos administrativos
• Temos ferramentas de desenvolvimento de última
geração pois compramos os computadores mais novos!
– Em geral, ter ferramentas de auxílio ao desenvolvimento de
software (ex. CASE) é mais importante do que ter a última
geração em termos de hardware.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Mitos do Software:
mitos administrativos
• Estamos atrasados no prazo: podemos tirar o atraso
colocando mais programadores no projeto.
– Normalmente isto não funciona!
– As novas pessoas precisam se integrar ao projeto ...
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Mitos do Software:
mitos do profissional
• Assim que escrevermos o programa e ele funcionar o
nosso trabalho está terminado.
– Em geral, mais de 70% de todo o esforço gasto num programa
ou sistema ocorre depois que ele foi entregue ao cliente
(manutenção).
– Na maioria das vezes, quanto mais cedo se começa a escrever
o código mais tempo se gastará para terminá-lo.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Mitos do Software:
mitos do profissional
• Enquanto o programa não estiver funcionando não há
como avaliar a sua qualidade.
– Revisões técnicas podem ser feitas desde o começo de um
projeto e são uma das formas mais efetivas de garantia de
qualidade de software.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Mitos do Software:
mitos do profissional
• A única coisa a ser entregue em um projeto bem
sucedido é o programa funcionando.
– O programa funcionando é só uma parte.
– Uma boa documentação incluindo os requisitos, projeto das
estruturas de dados, especificação de testes, etc. é o alicerce
para um projeto bem sucedido e serve como guia de
manutenção.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Responsabilidade e ética
profissional
• A Engenharia de Software envolve responsabilidades
maiores do que a simples aplicação de habilidades
técnicas
• Engenheiros de Software devem se comportar de forma
honesta e eticamente responsável se quiserem se tornar
profissionais respeitados
• Comportamento ético é mais do que simplesmente
seguir a lei.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Aspectos da responsabilidade
profissional
• Confidencialidade
– Os
Engenheiros
de
Software
devem
respeitar
a
confidencialidade de seus empregadores e clientes, mesmo se
não existir um acordo formal de confidencialidade.
• Competência
– Os Engenheiros de Software devem ser sinceros quanto ao seu
nível de competência. Eles não devem aceitar tarefas que estão
sabidamente além das suas competências.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Aspectos da responsabilidade
profissional
• Propriedade intelectual
– Engenheiros de Software devem conhecer as leis de patentes e
copyright. Eles devem ser cuidadosos para garantir que a
propriedade intelectual de empregadores e clientes será
respeitada.
• Uso indevido do computador
– Engenheiros de Software não devem usar suas habilidades
técnicas para usar indevidamente computadores de outras
pessoas. O uso indevido do computador vai desde coisas
relativamente simples (jogar no computador da empresa, por
exemplo) até situações extremamente sérias (disseminação de
vírus).
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Dilemas éticos
• Incompatibilidade entre seus princípios e as políticas da
gerência.
• O empregador age de forma não ética e libera um
sistema crítico sem terminar os testes do sistema.
• Participação no desenvolvimento de armas militares ou
sistemas nucleares.
Faculdade 7 de Setembro – Sistemas de Informação
Engenharia de Software – Prof. Ciro Coelho
Download

Engenharia de Software - Introdu%e7%e3o-1 - fa7