Introducao eng software [modo de compatibilidade]

55

Transcript of Introducao eng software [modo de compatibilidade]

Page 1: Introducao eng software [modo de compatibilidade]
Page 2: Introducao eng software [modo de compatibilidade]

� Para reconhecer e entender a importância da engenharia de

software, é preciso primeiro saber qual é a importância dos

próprios softwares.próprios softwares.

� Para isso, é necessário entender o que é um software.

Page 3: Introducao eng software [modo de compatibilidade]

◦ Software: conjunto de programas,

documentação e procedimentos operacionais

com os quais pode-se fazer com que os

computadores e outros dispositivos eletrônicoscomputadores e outros dispositivos eletrônicos

sejam úteis aos homens. Sendo que os

programas são conjuntos de instruções

arranjadas de forma que possam ser

entendidas e executadas por um computador.

Page 4: Introducao eng software [modo de compatibilidade]

Tipos de aplicações de softwares:

� Software Básico� Software Aplicativo

� Software Científico e de EngenhariaSoftware Embutido� Software Embutido

� Software de Computador Pessoal� Software de Inteligência Artificial

� Software Baseado na Web

Page 5: Introducao eng software [modo de compatibilidade]

1.1.1 Software Básico

� TambémTambémTambémTambém conhecidosconhecidosconhecidosconhecidos comocomocomocomo “software de “software de “software de “software de

sistemasistemasistemasistema”, se ”, se ”, se ”, se caracterizamcaracterizamcaracterizamcaracterizam porporporpor umaumaumauma forte forte forte forte

interaçãointeraçãointeraçãointeração com o hardware do com o hardware do com o hardware do com o hardware do computadorcomputadorcomputadorcomputadorinteraçãointeraçãointeraçãointeração com o hardware do com o hardware do com o hardware do com o hardware do computadorcomputadorcomputadorcomputador

� ExecutamExecutamExecutamExecutam as as as as funçõesfunçõesfunçõesfunções de de de de controlecontrolecontrolecontrole quequequequepermitempermitempermitempermitem quequequeque o software o software o software o software aplicativoaplicativoaplicativoaplicativo tenhatenhatenhatenhainterface com interface com interface com interface com outrosoutrosoutrosoutros elementoselementoselementoselementos do do do do sistemasistemasistemasistema

� ExemplosExemplosExemplosExemplos: : : : sistemassistemassistemassistemas operacionaisoperacionaisoperacionaisoperacionais, , , , compiladorescompiladorescompiladorescompiladores, drivers, etc…, drivers, etc…, drivers, etc…, drivers, etc…

Page 6: Introducao eng software [modo de compatibilidade]

1.1.2 Software AplicativoPodemPodemPodemPodem terterterter diversasdiversasdiversasdiversas funçõesfunçõesfunçõesfunções eeee serserserser divididosdivididosdivididosdivididos emememem categoriascategoriascategoriascategorias::::

Software de Tempo RealSoftware de Tempo RealSoftware de Tempo RealSoftware de Tempo Real

◦ FunçõesFunçõesFunçõesFunções de de de de monitoramentomonitoramentomonitoramentomonitoramento, , , , análiseanáliseanáliseanálise e e e e

controlecontrolecontrolecontrole de de de de eventoseventoseventoseventos

◦ A A A A respostarespostarespostaresposta do do do do sistemasistemasistemasistema devedevedevedeve obedecerobedecerobedecerobedecer a a a a A A A A respostarespostarespostaresposta do do do do sistemasistemasistemasistema devedevedevedeve obedecerobedecerobedecerobedecer a a a a

severasseverasseverasseveras restriçõesrestriçõesrestriçõesrestrições de tempo (p. ex., entre 1 de tempo (p. ex., entre 1 de tempo (p. ex., entre 1 de tempo (p. ex., entre 1

milissegundomilissegundomilissegundomilissegundo e 1 e 1 e 1 e 1 minutominutominutominuto))))

◦ ExemplosExemplosExemplosExemplos: : : : controlecontrolecontrolecontrole de de de de tráfegotráfegotráfegotráfego aéreoaéreoaéreoaéreo, , , ,

relógiorelógiorelógiorelógio digitaldigitaldigitaldigital

Page 7: Introducao eng software [modo de compatibilidade]

1.1.2 Software AplicativoSoftware Software Software Software ComercialComercialComercialComercial

◦UmaUmaUmaUma das das das das maioresmaioresmaioresmaiores áreasáreasáreasáreas de de de de aplicaçãoaplicaçãoaplicaçãoaplicação de de de de

softwaresoftwaresoftwaresoftware

◦ FacilitamFacilitamFacilitamFacilitam operaçõesoperaçõesoperaçõesoperações comerciaiscomerciaiscomerciaiscomerciais e e e e

tomadastomadastomadastomadas de de de de decisõesdecisõesdecisõesdecisões administrativasadministrativasadministrativasadministrativastomadastomadastomadastomadas de de de de decisõesdecisõesdecisõesdecisões administrativasadministrativasadministrativasadministrativas

◦ ExemplosExemplosExemplosExemplos: : : : folhafolhafolhafolha de de de de pagamentospagamentospagamentospagamentos, , , , contascontascontascontas a a a a

pagarpagarpagarpagar e a e a e a e a receberreceberreceberreceber, , , , controlecontrolecontrolecontrole de de de de estoqueestoqueestoqueestoque, , , ,

etc…etc…etc…etc…

Page 8: Introducao eng software [modo de compatibilidade]

� Software Científico e de Engenharia

Caracteriza-se pelo processamento de

dados numéricos.

◦ Exemplos: astronomia, vulcanologia, análise da

fadiga de materiais, biologia molecular, etc…

◦ Outros exemplos: auxílio de desenvolvimento de

projetos, como os programas CAD (Computer-

Aided Design)

Page 9: Introducao eng software [modo de compatibilidade]

� Software Embutido

◦ Controle de produtos e sistemas para os

mercados industriais e de consumo.

◦ Exemplos: controle do teclado de fornos

de microondas, funções digitais de

automóveis (como controle de

combustível, mostradores no painel e

sistemas de freio), etc…

Page 10: Introducao eng software [modo de compatibilidade]

� Software de Computador Pessoal

◦ Esta categoria envolve diversos tipos de

softwares utilizados para diferentes fins.

◦ Exemplos: processadores de textos, planilhas ◦ Exemplos: processadores de textos, planilhas

eletrônicas, jogos, gerenciamento de dados,

etc…

Page 11: Introducao eng software [modo de compatibilidade]

� Software de Inteligência Artificial

◦ Sistemas que utilizam abordagens e

metodologias da inteligência artificial

◦ Principais aplicações: problemas difíceis de ◦ Principais aplicações: problemas difíceis de

serem modelados computacionalmente por

modelos tradicionais

Page 12: Introducao eng software [modo de compatibilidade]

� Software de Inteligência Artificial

Principais técnicas: sistemas baseados em

conhecimento, sistemas especialistas, redes

neurais, algoritmos genéticos, etc…

◦ Exemplos: jogos, prova de teoremas, entendimento

de língua natural (tradução automática, sumarizaçãode língua natural (tradução automática, sumarização

automática), robótica, aprendizado de máquina, etc

Page 13: Introducao eng software [modo de compatibilidade]

� Software Baseado na Web

◦ Sistemas feitos para serem utilizados na internet

por meio de um browser.

◦ Tecnologias: HTML, ASP, CGI, PHP, Java, XML,

etc…

◦ Exemplos: Páginas pessoais, portais, consulta a ◦ Exemplos: Páginas pessoais, portais, consulta a

bases de dados, etc…

Page 14: Introducao eng software [modo de compatibilidade]

�Para entender como surgiu a

área de Engenharia de área de Engenharia de

Software, é preciso analisar a

história da evolução do

software ao longo dos anos.

Page 15: Introducao eng software [modo de compatibilidade]

�Geralmente divide-se a evolução dos softwares em 4 eras:

1950 1960 1970 1980 1990 2000

1a. Era

2a. Era

3a. Era

4a. Era

Page 16: Introducao eng software [modo de compatibilidade]

1a. Era�Software customizado e

produzido somente sob

encomenda.

�Distribuição limitada.

�Durante esses anos, a maior parte

do software era desenvolvida e

usada pela própria pessoa ou

organização.

Page 17: Introducao eng software [modo de compatibilidade]

1a. EraO desenvolvedor era um funcionário da

empresa contratado para desenvolver o

sistema e ficar disponível para corrigir erros

que pudessem surgir. Como apenas uma

pessoa era responsável pelo

desenvolvimento e manutenção do sistema,

não havia a necessidade de documentação

ou estruturação, já que apenas o

desenvolvedor deveria ser capaz de

entender o software que desenvolveu.

Page 18: Introducao eng software [modo de compatibilidade]

2a. Era� Começaram a surgir sistemas multiusuários, sistemas de

tempo real, banco de dados

� Começaram a surgir também software como produto, ou

seja, softwares produzidos para serem vendidos para

diferentes organizações.

� Foi nessa época que começaram a surgir as empresas � Foi nessa época que começaram a surgir as empresas

desenvolvedoras de software.

Page 19: Introducao eng software [modo de compatibilidade]

2a. Era

� Softwares desenvolvidos para mainframes e

minicomputadores eram distribuídos para

centenas e, às vezes, até milhares de usuários.

� Começaram a ser criadas bibliotecas de códigos,

inclusive eram comprados produtos no exterior inclusive eram comprados produtos no exterior

para acrescentar mais instruções às bibliotecas.

Page 20: Introducao eng software [modo de compatibilidade]

� No entanto, quando aumentou o uso e distribuição

dos softwares, começaram a aumentar também os

problemas.

� Às vezes os programas tinham de ser corrigidos

devido à descoberta de falhas, ou alterados conforme

as exigências do usuário ou adaptados a novos as exigências do usuário ou adaptados a novos

hardware, atividades atualmente chamadas de

“manutenção de software”.

Page 21: Introducao eng software [modo de compatibilidade]

A chamada “crise de software”

surgiu porque a natureza

personalizada dos programas e a

falta de documentação em alguns

casos praticamente impossibilitava

a sua manutenção.

Page 22: Introducao eng software [modo de compatibilidade]

3a. Era

�Surgem os sistemas distribuídos, ou

sistemas em rede.

�Surgem eletrodomésticos e máquinas �Surgem eletrodomésticos e máquinas

eletrônicas com software embutido.

�O hardware nessa época já tem um

custo mais baixo.

Page 23: Introducao eng software [modo de compatibilidade]

3a. Era

�Foi nessa era que surgiram os

microprocessadores pessoais, que

passaram a ser amplamente

consumidos pelo público geral,

estimulando o crescimento de muitas

empresas de software e o

surgimento de novas empresas.

Page 24: Introducao eng software [modo de compatibilidade]

3a. Era

�O número de cópias vendidas de um

software chegava a centenas de

milhares.

�Nessa era, o hardware passa a ser

considerado um produto primário

básico, sendo que o software é

responsável pela diferenciação.

Page 25: Introducao eng software [modo de compatibilidade]

3a. Era

�Enquanto a taxa de crescimento

das vendas de hardware se

estabilizaram na década de 80, as estabilizaram na década de 80, as

vendas de software continuaram

a crescer.

Page 26: Introducao eng software [modo de compatibilidade]

4a. Era

� Podemos dizer que a quarta era se estende até os

dias atuais.

� Esta era caracteriza-se pelas tecnologias orientadas

a objeto, sistemas de inteligência artificial

(sistemas especialistas, redes neurais), computação

paralela e multi-processada, linguagens de paralela e multi-processada, linguagens de

programação de quarta geração.

Page 27: Introducao eng software [modo de compatibilidade]

Importância do Software Importância do Software

� As diferentes eras da evolução do

software mostram que ele se

tornou mais importante à medida

que o hardware tornou-se um que o hardware tornou-se um

“problema resolvido”.

Page 28: Introducao eng software [modo de compatibilidade]

Importância do Software Importância do Software

� Quando o computador começou a ser usado,

aproximadamente na década de 50 e nas três

décadas seguintes, o principal desafio era

desenvolver hardware para reduzir custos de

processamento e armazenagem de dados, bem processamento e armazenagem de dados, bem

como reduzir o seu tempo de processamento.

Page 29: Introducao eng software [modo de compatibilidade]

� Naquela época, o software era apenas um conjunto

de instruções que dizia ao computador como

efetuar os cálculos o mais rápido possível.

� Aproximadamente no fim da década de 80 esse

cenário começou a mudar.

� Os computadores já eram rápidos o suficiente e os � Os computadores já eram rápidos o suficiente e os

pesquisadores perceberam que o hardware estava

sendo mal aproveitado, que ele podia ser utilizado

para resolver outros tipos de problemas.

Page 30: Introducao eng software [modo de compatibilidade]

Então, a chave para o bom aproveitamento de

um computador passou a ser o software.

Claro que a preocupação com a evolução do

hardware continua. Não se passa seis meses

sem o lançamento de um processador mais

veloz que os anteriores.

No entanto, é crucial que os software

acompanhem essa evolução, fazendo bom uso

do hardware.

Page 31: Introducao eng software [modo de compatibilidade]

� Durante as primeiras eras do software, o

desenvolvimento de software era feito de

forma totalmente desorganizada.

� Não era feito nenhum projeto,

planejamento, ou análise de requisitos e

o software não era documentado.

Page 32: Introducao eng software [modo de compatibilidade]

� O software era simplesmente produzido

conforme o conhecimento e experiência

pessoal do programador.

� Com o tempo, o desenvolvimento

desorganizado levou a diversos

problemas.

Page 33: Introducao eng software [modo de compatibilidade]

� O principal problema é quando surgiam

erros ou quando era necessária ou desejada

alguma mudança no software.

� Como o código não era documentado e não

obedecia a nenhuma estrutura formal,

apenas o desenvolvedor conseguia

entender e modificá-lo.

Page 34: Introducao eng software [modo de compatibilidade]

� Em alguns casos, quando a mudança

era realizada muito tempo após o

desenvolvimento do software, mesmo

o próprio desenvolvedor tinha

dificuldades para entender o código dificuldades para entender o código

que ele mesmo desenvolveu.

� Assim, as mudanças eram altamente

custosas.

Page 35: Introducao eng software [modo de compatibilidade]

Ao conjunto de problemas

encontrados no desenvolvimento de

software deu-se inicialmente o nome

de “crise de software”, sendo de “crise de software”, sendo

posteriormente chamado de

“aflição crônica”.

Page 36: Introducao eng software [modo de compatibilidade]

Veremos ainda diversos tipos de

problemas causados pela falta de

planejamento e programação

estruturada, como por exemplo:

a insatisfação do cliente;� a insatisfação do cliente;

� a dificuldade de cumprir prazos;

� erro na previsão dos custos, entre

outros.

Page 37: Introducao eng software [modo de compatibilidade]

� Devido a esses problemas, verificou-

se que era preciso tomar vários

cuidados antes e durante o

desenvolvimento de software, para

evitar que esses problemas

ocorressem.

Page 38: Introducao eng software [modo de compatibilidade]

“Assim, a Eng. de Software

surgiu para propor estratégias

que evitassem que esses que evitassem que esses

problemas acontecessem.”

Page 39: Introducao eng software [modo de compatibilidade]

� Primeira definição (Fritz Bauer,1969):

“O estabelecimento e uso de sólidos

princípios de engenharia para que se possaprincípios de engenharia para que se possa

obter economicamente um software que

seja confiável e que funcione eficientemente

em máquinas reais”.

Page 40: Introducao eng software [modo de compatibilidade]

Foco nos objetivos:• Economia• Confiabilidade• Confiabilidade• Eficiência

Page 41: Introducao eng software [modo de compatibilidade]

� Segundo Arndt Von Staa (1987):

“O desenvolvimento e a aplicação de ciência,

matemática, técnicas, métodos e ferramentas

para o desenvolvimento e a manutenção

econômica de software de qualidade, econômica de software de qualidade,

controlável, operando de modo econômico em

máquinas e ambientes reais”.

Page 42: Introducao eng software [modo de compatibilidade]

Foco nos objetivos:• Economia • Eficiência• Eficiência• Qualidade “preditível” e Manutenção

Page 43: Introducao eng software [modo de compatibilidade]

�Segundo Anneliese Mayrhayser (1990):

“Uma disciplina da Ciência da

Computação que oferece

métodos, técnicas e ferramentas métodos, técnicas e ferramentas

para desenvolver e manter

softwares com alta qualidade

para resolução de problemas”.

Page 44: Introducao eng software [modo de compatibilidade]

Foco nos objetivos:• Software de qualidade • Resolução de problemas

Foco nas metodologias: Foco nas metodologias: • Métodos• Técnicas • Ferramentas

Page 45: Introducao eng software [modo de compatibilidade]

Métodos, Ferramentas e Procedimentos definidos na disciplina de Engenharia de

Software:

Permitem que o gerente controle todo o processo de todo o processo de desenvolvimento do software

Page 46: Introducao eng software [modo de compatibilidade]

Métodos, Ferramentas e Procedimentos definidos na disciplina de Engenharia de

Software:Oferecem ao profissional desenvolvedor uma base para a construção de software de alta construção de software de alta qualidade.Levam à produção de um software que atenda aos requisitos e expectativas do cliente

Page 47: Introducao eng software [modo de compatibilidade]

MÉTODOSMÉTODOS� Definem diversos tipos de tarefas a serem realizadas antes, durante e após o desenvolvimento de um software.

� Incluem a especificação de notações a serem utilizadas, critérios para medir a qualidade do software e medidas de levantamento de software e medidas de levantamento de requisitos

Page 48: Introducao eng software [modo de compatibilidade]

Principais Tarefas:

◦ Planejamento e estimativa de projeto;

◦ Análise de Requisitos;

◦ Projeto da Estrutura de Dados;

◦ Algoritmo de Processamento;◦ Algoritmo de Processamento;

◦ Codificação;

◦ Teste;

◦ Manutenção.

Page 49: Introducao eng software [modo de compatibilidade]

FERRAMENTASFERRAMENTAS

Podem auxiliar o desenvolvimento de software em diversos níveis:

◦Apenas ambientes para codificação;◦Apenas ambientes para codificação;

◦Apoio semi-automático;

◦Apoio automatizado.

Page 50: Introducao eng software [modo de compatibilidade]

� Ferramentas CASE (Computer-Aided Software

Engineering)

◦ Ambientes de apoio ao desenvolvimento

de software.

◦ Podem incluir diferentes ferramentas◦ Podem incluir diferentes ferramentas

integradas, de forma que a informação

gerada por uma das ferramentas do

ambiente possa ser utilizada por outra

ferramenta do mesmo ambiente.

Page 51: Introducao eng software [modo de compatibilidade]

� Ferramentas CASE (Computer-Aided Software

Engineering)

◦ Exemplo 1: um ambiente contendo

compilador, banco de dados e ferramentas

de auxílio ao teste de softwarede auxílio ao teste de software

◦ Exemplo 2: ambiente para a coordenação

de desenvolvimento de software em equipe

◦ Exemplo 3: ambiente que gera o código com

base na modelagem.

Page 52: Introducao eng software [modo de compatibilidade]

PROCEDIMENTOSPROCEDIMENTOS

� Indicam como executar, na

prática, as tarefas definidas pelos

métodos.métodos.

Page 53: Introducao eng software [modo de compatibilidade]

PROCEDIMENTOSPROCEDIMENTOS

Podem indicar:

◦ a seqüência na qual os métodos

serão aplicados;

◦os produtos a serem entregues

(documentos, relatórios, etc);(documentos, relatórios, etc);

◦ controles de qualidade;

◦ coordenação de mudanças;

◦etc.

Page 54: Introducao eng software [modo de compatibilidade]

1. Qual é a diferença entre software básico e software

aplicativo?

2. Quais são as 7 principais categorias de software

aplicativo? Dê um exemplo de software de cada

categoria.

3. Quais são as características da 1a. era do software?

4. Quais são as características da 2a. era do software?

5. Quais são as características da 3a. era do software?

6. Quais são as características da 4a. era do software?

Page 55: Introducao eng software [modo de compatibilidade]

7.Em qual era começaram a surgir problemas com os software?

8. O que significa dizer que atualmente “software é mais importante que hardware”?

9. Como é que a crise de software levou ao surgimento da engenharia de software? Comente.

10. Defina engenharia de software com suas próprias palavras.próprias palavras.

11.Quais são os principais objetivos da engenharia de software?

12.Quais são os 3 elementos da engenharia de software?