Engenharia de
Software
Juliana Paschoal Bueno
e-mail: [email protected]
site: https://sites.google.com/site/engsoft2012/
INTRODUÇÃO À
ENGENHARIA DE
SOFTWARE
Tópicos
• História
• Indústria de Software atual
• Software
• Curvas de Software e Hardware
• Tipos de Softwares • Mitos de Softwares • Crise do Software
Definição de Engenharia de
Software
• Segundo Pressman:Engenharia de Software é um
processo, um conjunto de métodos e
ferramentas para desenvolvimento
de software de qualidade.
História
• No início da era do computador o principal problema era construir um hardware com baixo custo de processamento e armazenamento. • Com o avanço do hardware o desafio atual
tornou-se desenvolver sistemas de software com qualidade e baixo custo.
• O software é o mecanismo que permite
utilizarmos todo o potencial de hardware de um computador.
História
• A evolução do software
História
• No início da computação toda atenção era investida no desenvolvimento de hardware. • Software era uma preocupação secundária e
poucos utilizavam algum tipo de metodologia no seu desenvolvimento.
• Com o passar do tempo notou-se que essa falta de disciplina no desenvolvimento de software gerava altos custos.
História
• Dúvidas que começaram a surgir:
• Por que demora tanto tempo para que os programas sejam concluídos?
• Por que os custos são tão elevados? • Por que não descobrimos todos os erros
Definição de Software
Software é um conjunto de
instruções que, quando executadas
produzem uma função e um
desempenho.
Indústria de Software Atual
• Softwares criados no passado passaram pormuitas manutenções e hoje em dia estão chegando em um nível de saturação.
• Estes softwares foram tão mal documentados e projetados que atualmente ninguém tem
conhecimento suficiente do funcionamento interno.
Indústria de Software Atual
• Antigamente os softwares eram feitos paraserem colocados em um ou dois clientes.
• Atualmente o software é desenvolvido para ser vendido para o mundo todo.
• O software antigo, todo remendado, não tem como competir com os novos.
• A concorrência atual é muito grande e ganha quem oferecer mais recursos, com mais
qualidade.
Software
• O que é software?
• Instruções de computador que produzem uma função desejada;
• Estruturas de dados que manipulam informações;
• Documentos que descrevem o uso do sistema.
Software
• Hardware é um elemento físico. • Software é um elemento lógico.
• Softwares e Hardwares devem ser resultado de um bom projeto.
Curva de falhas para o Software
Software
• Código executável é o resultado das exigências de um cliente:
Software
• Quando um bom desenvolvedor produz um bom programa bem documentado, com possibilidade de sofrer manutenção, a linguagem de máquina consegue fazer bom uso dos recursos
computacionais.
• Linguagens de programação modernas apóiam práticas de projetos modernas: C++, Java, C#.
Tipos de Softwares
• Software Básico ou de Sistema sistemas operacionais, compiladores, drivers.
• Software Científico e de Engenharia astronomia, vulcanologia, biologia.
Tipos de Softwares
• Software Embutido controle do teclado de microondas, controle de combustível, controle do sistema de freios de um carro.
• Software de Computador Pessoal processador de textos, planilhas, diversão.
Tipos de Softwares
• Software de Inteligência Artificial
reconhecimento de padrões de voz e imagem, jogos.
• Software de Aplicação coleta de dados espaciais, folhas de pagamento e estoque.
Tipos de Softwares
• Aplicações Web Sites de compras, relacionamentos, notícias.
Mitos do Software
• Mitos Administrativos• Mitos do Cliente
• Mitos do Profissional
Mitos Administrativos
• São os mitos em que os gerentes de equipes de softwares acreditam.
MITO 1: Já existe um manual de padrões e procedimentos para a construção do software. Isso não oferece a equipe tudo que ela precisa?
Realidade: O manual existe, mas ele é usado? Os desenvolvedores tem conhecimento da sua
Mitos Administrativos
• São os mitos em que os gerentes de equipes de softwares acreditam.
MITO 2: O pessoal tem ferramentas de
desenvolvimento de software de última geração, pois estão com computadores novos.
Realidade: Não é só um computador de última geração que proporciona um software de qualidade. As ferramentas de engenharia de software são mais importantes que o hardware, mas muitos desenvolvedores não as usa ainda.
Mitos Administrativos
• São os mitos em que os gerentes de equipes de softwares acreditam.
MITO 3: Se o trabalho está atrasado, basta colocar mais programadores para acabar com este atraso.
Realidade: As novas pessoas vão precisar de um tempo para “aprender” sobre o software e são os membros antigos da equipe que vão gastar esse tempo ensinando.
Mitos do Cliente
• O cliente acredita em mitos sobre o software devido a falta de informações, já que gerentes não corrigem essa desinformação.
MITO 1: Uma declaração geral dos objetivos basta para desenvolver o software imediatamente, os detalhes podem ser esclarecidos depois.
Realidade: Definição inicial ruim é a principal causa de fracassos e retrabalhos. A descrição inicial deve ser bem detalhada, contendo funcionalidades, desempenho, interfaces, etc.
Mitos do Cliente
• O cliente acredita em mitos sobre o software devido a falta de informações, já que gerentes não corrigem essa desinformação.
MITO 2: Os requisitos mudam continuamente, mas isso não é problema, já que o software é flexível.
Realidade: O impacto de uma mudança varia de acordo com a fase que ela é introduzida. Na fase de definição os pedidos podem ser acomodados
Mitos do Profissional
• São as velhas maneiras e atitudes de
programadores antigos que continuam vivas. MITO 1: Assim que implementamos e colocamos em funcionamento nosso trabalho está encerrado e completo.
Realidade: Dados indicam que 50 a 70% de todo esforço gasto em um software serão despendidos depois que ele for entregue pela primeira vez ao cliente.
Mitos do Profissional
• São as velhas maneiras e atitudes de
programadores antigos que continuam vivas. MITO 2: Sem o programa funcionando não tem como avaliar sua qualidade.
Realidade: O mecanismo de qualidade mais efetivo (a revisão técnica formal) pode ser aplicada desde o começo do desenvolvimento.
Mitos do Profissional
• São as velhas maneiras e atitudes de
programadores antigos que continuam vivas. MITO 3: Para um projeto ser bem sucedido temos que entregar apenas o programa funcionando.
Realidade: O software é somente uma parte do projeto, também precisamos entregar a
documentação.
Crise do Software
• A maneira de se desenvolver software vem mudando há mais de 30 anos.
• Essa maneira de desenvolvimento de software apresenta problemas.
• Existem formas de melhorar esses problemas, mas nada mostrado até hoje resolve totalmente os problemas.
Crise do Software
• Problemas no desenvolvimento de softwares. • Não é somente o software que não funciona
corretamente.
• A crise abrange: o desenvolvimento do
software, a manutenção do número de softwares e como acompanhar a demanda por mais
softwares.
Crise do Software
• Problemas do Software:• É difícil estimar prazo e custo para um software.
• Falta de mão-de-obra qualificada e baixa produtividade das pessoas da área.
• Qualidade do software é baixa. • Altos índices de erros.
Crise do Software
• Porque estes problemas acontecem?
• Não é dedicado tempo para coleta de dados sobre o processo de desenvolvimento.
• As estimativas são feitas a olho. • A comunicação entre o cliente e o
desenvolvedor é muito fraca, resultado: insatisfação do cliente com o resultado final.
Crise do Software
• Porque estes problemas acontecem?
• Testes são muito importantes para assegurar a qualidade do software.
• A capacidade de manutenção do software tem que ser prevista em projeto.
• A manutenção pode aumentar muito o custo do software se não for planejada.
Crise do Software
• O que pode ser feito para solucionar esses
problemas?
Crise do Software
• O que pode ser feito para solucionar esses
problemas?
• O gerente de software deve estudar o processo de desenvolvimento.
• Entender quais são os marcos do projeto. • Aplicar métodos de controle.
• O gerente deve se comunicar com todos os envolvidos no processo de desenvolvimento.
Crise do Software
• O que pode ser feito para solucionar esses
problemas?
• Os engenheiros de software devem receber treinamento formal em novas técnicas para projeto e desenvolvimento de software. • As pessoas da área de software precisam
deixar de serem resistentes a mudanças.
Bibliografia
• “Engenharia de Software” Autor: Roger S. Pressman
Editora: Pearson – Makron Books • “Engenharia de Software” Autor: Ian Sommerville
Editora: Pearson – Addison Wesley
• “Engenharia de Software – Os Paradigmas
Bibliografia
• “Introdução ao RUP: Rational Unified Process” Autor: Phillippe Kruchten