Introducao eng software [modo de compatibilidade]

Post on 24-Jun-2015

862 views 1 download

Transcript of 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.

◦ 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.

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

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…

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

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…

� 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)

� 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…

� 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…

� 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

� 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

� 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…

�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.

�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

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.

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.

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.

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.

� 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”.

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.

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.

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.

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.

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.

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.

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”.

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.

� 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.

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.

� 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.

� O software era simplesmente produzido

conforme o conhecimento e experiência

pessoal do programador.

� Com o tempo, o desenvolvimento

desorganizado levou a diversos

problemas.

� 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.

� 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.

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”.

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.

� 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.

“Assim, a Eng. de Software

surgiu para propor estratégias

que evitassem que esses que evitassem que esses

problemas acontecessem.”

� 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”.

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

� 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”.

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

�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”.

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

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

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

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

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

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.

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.

� 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.

� 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.

PROCEDIMENTOSPROCEDIMENTOS

� Indicam como executar, na

prática, as tarefas definidas pelos

métodos.métodos.

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.

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?

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?