Upload
fernanda-ramos
View
863
Download
1
Embed Size (px)
Citation preview
� 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?