UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO ENGENHARIA DE SOFTWARE...

Post on 17-Apr-2015

103 views 1 download

Transcript of UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO ENGENHARIA DE SOFTWARE...

UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULSISTEMAS DE INFORMAÇÃO ENGENHARIA DE SOFTWARE

Introdução à Engenharia de Software

Prof.ª Adriana dos Santos Caparróz Carvalho

Motivação Quando um Software é bem sucedido?

Possui as necessidades das pessoas que o usam Executa perfeitamente em um longo período de tempo Fácil de modificar e utilizar

PODE E MUDA COISAS PARA MELHOR

Quando um Software falha? Usuários estão insatisfeitos Erros ocorrem Difícil de modificar e utilizar

COISAS RUIM PODEM E ACONTECEM

Software O que é?

É o produto que os profissionais de software constroem e, depois, mantêm ao longo do tempo. Abrange programas que executam em computadores de qualquer tamanho e arquitetura.

Uma força propulsora! Um fator de diferenciação!

Desafio Aprimorar a qualidade do software que produzimos

Por que é importante? Porque afeta praticamente todos os aspectos de nossas vidas (lazer,

cultura, trabalho...)

Discussão: Como prover melhorias? Quem será agente das melhorias: o programador, as ferramentas, o

gerente?

A importância do Software Fato

Durante as 3 décadas da era dos computadores, o principal desafio era desenvolver um hardware de baixo custo e alto desempenho.

Compõem o cenário atual: Hardware de grande desempenho; Hardware de menor custo; Hardware com grandes e rápidas modificações...

Proposição Hoje o desafio é melhorar a qualidade (e reduzir os custos)

das soluções baseadas em software.

Eras do Software 1ª Era: 1950-1960

Software: uma reflexão posterior Desenvolvimento de software sem administração Orientação batch (lote) Hardware orientado a uma (ou poucas) aplicações Software destinado a uma aplicação bem específica

Eras do Software 2ª Era: 1960-1970

Multiprogramação Sistemas multi-usuários Sistemas de tempo real Software voltado à ampla distribuição Horizonte incerto: milhares de linhas de

programas/instruções teriam de ser corrigidas (ou alteradas)

Eras do Software 3ª Era: 1970-1985

Sistemas distribuídos: aumento da complexidade e uso de muitos computadores

Redes locais e globais Demanda por acesso instantâneo Poderosas estações de trabalho PC como catalisador de crescimento de muitas

empresas

Eras do Software 3ª Era: 1985 ...

Tecnologias orientadas a objetos: na análise, no projeto, na criação de banco de dados

Sistemas especialistas e inteligência artificial Linguagens de programação aberta Sistemas para internet Usuários desenvolvedores Software sofisticados e com múltiplas funções

O papel evolutivo do software Anteriormente

Desafio principal era desenvolver Hardware Reduzir o custo de processamento e armazenamento de dados Programação: arte Poucos métodos formais Esquema baseado em tentativa e erro Mundo indisciplinado

Hoje: Software é o item de maior custo Impacto na sociedade e cultura é profundo!!!!!! O software atingiu as grandes massas; tomada de decisões nos

negócios, base para a pesquisa científica, solução de problemas de engenharia e telecomunicações.

Reduzir o custo e melhorar a qualidade dos Softwares (potencial da computação)

O papel evolutivo do software

Mudança O programador solitário de antigamente foi substituído

por uma equipe de especialistas em software, cada um se concentrando numa parte da tecnologia necessária para produzir uma aplicação complexa.

As questões continuam as mesmas: Por que tanta demora para entregar? Por que os prazos se atrasam? Por que os custos são altos? Por que não achar todos os erros antes de entregar? Por que gastamos tanto tempo e esforço mantendo

programas existentes?

Crise do software

Refere-se a um conjunto de problemas encontrados no desenvolvimento de software: (problemas não se limitam a softwares que não funcionam

adequadamente)

1- As estimativas de prazo e de custo freqüentemente são imprecisas “Não dedicamos tempo para coletar dados sobre o processo de

desenvolvimento de software” “Estimativas são feitas a olho, com resultados ruins” “Os prazos arrastam-se por meses” “Causa insatisfação para o cliente e falta de confiança” “Sem nenhuma indicação sólida de produtividade, não podemos

avaliar com precisão a eficácia de novas ferramentas, métodos ou padrões”

Crise do software

2- A produtividade das pessoas da área de software não tem acompanhado a demanda por seus serviços “Os projetos de desenvolvimento de software normalmente são efetuados

apenas com um vago indício das exigências do cliente” “A comunicação entre o cliente e o desenvolvedor de software é muito

fraca”

3- A qualidade de software às vezes é menos que adequada Não usa de técnicas de teste sistemáticas e completas Só recentemente começam a surgir conceitos quantitativos sólidos de

garantia de qualidade de software

Crise do software

4- O software existente é muito difícil de manter A tarefa de manutenção devora o orçamento destinado ao software A facilidade de manutenção não foi enfatizada como um critério

importante

Crise do software

Crise do software

Crise do software

Crise do software

Crise do software

Crise do software

Causas dos problemas

1- PRÓPRIO CARÁTER DO SOFTWARE O software é um elemento de sistema lógico e não físico. Conseqüentemente o sucesso é medido pela qualidade. É preciso ter claro suas prioridades, seus objetivos, suas delimitações.

2- FALHAS DAS PESSOAS RESPONSÁVEIS PELO DESENVOLVIMENTO DE SOFTWARE Gerentes sem nenhum background em software Os profissionais da área de software têm recebido pouco treinamento

formal em novas técnicas para o desenvolvimento de software Resistência a mudanças.

Causas dos problemas

1- PRÓPRIO CARÁTER DO SOFTWARE O software é um elemento de sistema lógico e não físico. Conseqüentemente o sucesso é medido pela qualidade. É preciso ter claro suas prioridades, seus objetivos, suas delimitações.

2- FALHAS DAS PESSOAS RESPONSÁVEIS PELO DESENVOLVIMENTO DE SOFTWARE Gerentes sem nenhum background em software Os profissionais da área de software têm recebido pouco treinamento

formal em novas técnicas para o desenvolvimento de software Resistência a mudanças.

3- MITOS DO SOFTWARE Propagaram desinformação e confusão

Mitos do Software Mitos administrativos

Mito Já temos um manual repleto de padrões e procedimentos para a

construção de software. Isso oferecerá ao meu pessoal tudo o que eles precisam saber.

Realidade Será que o manual é usado? Os profissionais sabem que ele existe? Ele reflete a prática moderna de desenvolvimento de software? Ele é completo?

Mitos do Software Mitos administrativos

Mito Se nós estamos atrasados nos prazos, podemos adicionar mais

programadores e tirar o atraso Realidade O desenvolvimento de software não é um processo mecânico igual à

manufatura. Acrescentar pessoas em um projeto torna-o ainda mais atrasado. Pessoas podem ser acrescentadas, mas somente de uma forma

planejada e bem coordenada.

Mitos do Software Mitos administrativos

Mito Meu pessoal tem ferramentas de desenvolvimento de software de última

geração; afinal compramos para eles os mais novos computadores. Realidade É preciso muito mais do que os mais recentes computadores para se

fazer um desenvolvimento de software de alta qualidade. Ferramentas de engenharia e software auxiliada por computador CASE

(Computer-Aided Software Engineering) são mais importantes do que o hardware

Mitos do Software Mitos dos clientes

Em muitos casos, o cliente acredita em muitos mitos sobre o software, porque os gerentes e profissionais não corrigem a desinformação

Mitos levam a falsas expectativas e insatisfação

Mito Uma declaração geral dos objetivos é suficiente para se começar a

escrever programas - podemos preencher os detalhes mais tarde. Realidade Uma definição inicial ruim é a principal causa de fracassos dos esforços

de desenvolvimento de software. É fundamental uma descrição formal e detalhada do domínio da

informação, função, desempenho, interfaces, restrições de projeto e critérios de validação.

Mitos do Software Mitos dos profissionais

Durante os primórdios da computação, a programação era vista como uma forma de arte

“Velhas maneiras e atitudes dificilmente morrem”

Mito Assim que escrevermos o programa e o colocarmos em funcionamento

nosso trabalho estará completo. Realidade Os dados da indústria indicam que entre 50 e 70% de todo esforço gasto

num programa serão despendidos depois que ele for entregue pela primeira vez ao cliente

Mitos do Software Mitos dos profissionais

Mito Enquanto não tiver o programa "funcionando", eu não terei realmente

nenhuma maneira de avaliar sua qualidade. Realidade Mecanismo (Revisão Técnica Formal) de garantia de qualidade de

software é aplicado desde o começo do projeto Revisões de software são um “filtro de qualidade” - descobre

erros/defeitos

Mitos do Software Mitos dos profissionais

Mito A única coisa a ser entregue em um projeto bem-sucedido é o programa

funcionando. Realidade Um programa funcionando é somente uma parte de uma Configuração

de Software que inclui todos os itens de informação produzidos durante a construção e manutenção do software.

A DOCUMENTAÇÃO é o alicerce

O que é Software?

Instruções (programas de computador) que, quando executadas produzem a função e o desempenho desejados;

Estruturas de dados que permitem a manipulação das informações

Documentos que descrevem a operação e uso dos programas

Produto: disponibiliza o potencial de computação presente no hardware do computador;

Veículo para entrega do produto: Age como base para o controle do computador; Para a comunicação da informação; Para a criação e o controle e outros programas O software entrega o mais importante produto de nossa época: a

informação.

Características do Software

Desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico (industrial)

O sucesso é medido pela qualidade e não quantidade

Custos são concentrados no trabalho de engenharia

Características do Software

A maioria os softwares é feita sob medida e não montada a partir de componentes existentes Bem diferente do Hardware

A situação está mudando: Orientação a objetos Reusabilidade – diminui custos e melhora projetos

Características do Software Não se “desgasta”, mas se deteriora

Não é sensível aos problemas ambientais que fazem com que o hardware se desgaste.

Toda falha indica erro de projeto ou implementação A manutenção de um software é mais complicada que a do hardware

Curva de falhas para o hardware (Figura 1.1 – PRESSMAN, 2006, p. 4)

tempo

“desgaste”“mortalidade

infantilӒndice

de falhas

Defeitos de projeto e manufatura

ProblemasAmbientais

(poeira, vibração, abuso, temperaturas, ...)

Características do Software

Curva de falhas para o software (Figura 1.2 – PRESSMAN, 2006, p. 5)

mudanças

índice de falhas

curva real

curva idealizada

tempo

Aplicações do Software

SOFTWARE DE SISTEMA Coleção de programas escritos para apoiar outros programas.

Forte interação com o hardware Sistema operacional, compiladores, drivers, etc...

SOFTWARE DE TEMPO REAL Software que monitora, analisa e controla eventos do mundo real Sistema de controle de tráfego aéreo, relógio digital, ...

SOFTWARE BUSINESS Sistemas de operações comerciais e tomadas de decisões

administrativas Folha de pagamentos, contas a pagar e a receber ...

SOFTWARE CIENTÍFICO E DE ENGENHARIA Caracterizado por algoritmos de processamento numérico Astronomia, vulcanologia, análise de fadiga da mecânica de

automóveis, biologia molecular, projeto CAD, ...

Aplicações do Software

SOFTWARE EMBUTIDO Usado para controlar produtos e sistemas para os mercados

industriais e de consumo – produtos inteligentes Controle de microondas, de combustível, sistemas de freio

SOFTWARE DE COMPUTADOR PESSOAL Envolve processamento de textos, planilhas eletrônicas,

computação gráfica, diversões, etc.

SOFTWARE Baseado na Web Páginas Web (websites) recuperados por um browser (tecnologia web ASP, HTML, CGI, JAVA, XML, etc...)

Aplicações do Software

SOFTWARE DE INTELIGÊNCIA ARTIFICIAL Faz uso de algoritmos não numéricos para resolver problemas

que não sejam favoráveis à computação ou à análise direta Sistemas especialistas, reconhecimento de padrões, redes

neurais, jogos, ...