Engenharia de Software I - Aula 1 - Slides
-
Upload
rommeloliveira -
Category
Documents
-
view
6 -
download
4
description
Transcript of Engenharia de Software I - Aula 1 - Slides
Prof. Ms. Ronaldo Martins da Costa
� Compreender a importância da disciplina no
desenvolvimento de software; As
características específicas de cada tipo de
ciclo de vida e sua importância nociclo de vida e sua importância no
desenvolvimento de software.
� Introduzir as metodologias e técnicas para
desenvolvimento de software.
� Selecionar as ferramentas adequadas para
cada etapa de desenvolvimento de software.
� Aulas expositivas e dialogadas com auxilio de
recursos audiovisuais.
� Resolução de listas de exercícios.
Aulas práticas no Laboratório de Informática.� Aulas práticas no Laboratório de Informática.
� Freqüência Mínima ���� 75% = 12 semanas
� Média Final-Aprovação Direta(MF) ���� 7.0
� Aprovação com Exame(MFExame) ����5.0
� Condição para fazer o exame ���� 5.0 ≥ MF < 7.0� Condição para fazer o exame ���� 5.0 ≥ MF < 7.0
� Aprovação no exame ���� 5.0
+
+
+=∑∑
== 1.0*3.0*.
6.0*2
21 11
n
Listas
n
TrabPP
MF
n
i
n
i
+=2
ExameMFMFExame
� Software:
� Instruções (programas de computador) que,
quando executadas, produzem a função e o
desempenho desejado;desempenho desejado;
� Estruturas de dados que possibilitam que os
programas manipulem adequadamente a
informação;
� Documentos que descrevem a operação e o uso
dos programas.
Avanços da microeletrônica
Maior poder de computação a custo baixo
Maior qualidade de armazenamento e processamento
Osoftware é o mecanismo
que possibilita aproveitar e dar
vazão a esse potencial
� O Software é desenvolvido ou projetado por
engenharia, não manufaturado no sentido
clássico.
� Custos são concentrados no trabalho de
engenharia.
� Projetos não podem ser geridos como
projetos de manufatura.
� Software não desgasta!
� Software não é sensível aos problemas
ambientais que fazem com que o hardware se
desgaste.desgaste.
� Toda falha indica erro de projeto ou
implementação: manutenção do SW é mais
complicada que a do HW.
� O hardware sofreu contínuas mudanças.
� O software era uma arte "secundária" para a qual havia poucos métodos sistemáticos.qual havia poucos métodos sistemáticos.
� O hardware era de propósito geral.
� O software era específico para cada aplicação.
� Não havia documentação.
� Multiprogramação e sistemas multiusuários.
� Sistemas de tempo real.
1a geração de SGBD’s.� 1a geração de SGBD’s.
� Produto de software - software houses.
� Bibliotecas de Software.
� Cresce no de sistemas baseado em computador.
� Manutenção quase impossível...... CRISE DE..... CRISE DE SOFTWARE SOFTWARE
� Sistemas distribuídos.
� Redes locais e globais.
� Uso generalizado de microprocessadores -� Uso generalizado de microprocessadores -
produtos inteligentes.
� Hardware de baixo custo.
(Quarta era do software: atualidadeatualidade)
� Tecnologias orientadas o objetos.
� Sistemas especialistas e software de
inteligência artificial usados na prática.
� Software de rede neural artificial.
� Computação Paralela.
� Internet.
Hoje o software é um negócio competitivo.
Os principais direcionadores que propiciarão uma intensa
competição na área de software são: custo, adequação decompetição na área de software são: custo, adequação de
prazo e qualidade.
Intensifica-se, portanto, uma rápida movimentação dos
desenvolvedores para adotar práticas modernas de Engenharia
de Software.
11-- InstruçõesInstruções
Quando executadas produzem a função e o desempenho desejados.
22 -- EstruturasEstruturas dede DadosDados
Possibilitam que os programas manipulem adequadamente a
informação.
33 -- DocumentosDocumentos
Descrevem a operação e o uso dos programas.
� Desenvolvido ou projetado por engenharia,
não manufaturado no sentido clássico.não manufaturado no sentido clássico.
� Não se desgasta mas se deteriora.
� A maioria é feita sob medida em vez de ser
montada a partir de componentes existentes.
“desgaste”“desgaste”“mortalidadeinfantil”
“mortalidadeinfantil”
índice de
índice de
“desgaste”“mortalidadeinfantil”
índice de
tempotempo
infantil”infantil”de falhas
de falhas
tempo
infantil”de falhas
Software não se “desgasta”, mas se deteriora!
� Durante sua vida, o software enfrentará mudanças(manutenção). Quando estas são feitas, é provável quenovos defeitos sejam introduzidos, fazendo com que anovos defeitos sejam introduzidos, fazendo com que acurva do índice de falhas apresente picos, como mostra afigura abaixo. Antes que a curva possa retornar ao índicede falhas estável original, outra mudança é solicitada,fazendo com que a curva apresente um novo pico.Levemente, o nível de índice de falhas mínimo começa ase elevar – software está se deteriorando devido àsmudanças.
índice de mudançamudança
curva realcurva realíndice de
falhasmudançamudança
curva idealizada
tempo
� São criados por meio de uma série de
conversões que mapeiam as exigências do
cliente para código executável em máquina.
Modelo de
Exigências
do Cliente
ProjetoCodificação em
Linguagem
� Um modelo (ou protótipo) das exigências é
convertido num projeto. O projeto de software é
convertido numa forma de linguagem que
especifica a estrutura de dados do software, osespecifica a estrutura de dados do software, os
atributos procedimentais e os requisitos
relacionados. A forma de linguagem é processada
por um tradutor que a converte em instruções
executáveis em máquina
Modelo de
Exigências
do Cliente
ProjetoCodificação em
Linguagem
� Componentes de software são construídos
usando uma linguagem de programação que
tem um vocabulário limitado, uma gramática
explicitamente definida e regras de sintaxeexplicitamente definida e regras de sintaxe
bem formadas.
� Essas atribuições são essenciais para a
tradução por máquina.
� Componentes devem possuir reusabilidade
(Software de alta Qualidade).
� Um componente reusável engloba tanto
dados como processamento num único
pacote (às vezes chamado classe ou objeto),
possibilitando que o engenheiro de softwarepossibilitando que o engenheiro de software
crie novas aplicações a partir de partes
reusáveis.
� As interfaces interativas hoje em dia,
freqüentemente são construídas utilizando-
se componentes reusáveis que possibilitam a
criação de janelas gráficas, menus pull-downcriação de janelas gráficas, menus pull-down
e uma ampla variedade de mecanismos de
interação.
� As estruturas de dados e detalhes de
processamento exigidos para se construir a
interface com os usuários estão contidas
numa biblioteca (classes) de componentesnuma biblioteca (classes) de componentes
reusáveis para construção de interfaces.
� Qualquer situação em que um conjunto
previamente especificado de passos
procedimentais (algoritmo) tiver sido
definido (notáveis exceções a essa regra são odefinido (notáveis exceções a essa regra são o
software de sistema especialista e o software
de rede neural).
� Software básico:
Coleção de programas escritos para dar apoio a outros programas(compiladores, editores, utilitários de gerenciamento de arquivos,drivers).
Apresenta forte interação com o hardware de computador.
Intenso uso por múltiplos usuários.
Operações concorrentes que exigem escalonamento (componentesdo SO).
Compartilhamento de recursos.
�Software de tempo-real:
Um software que monitora/analisa/controla eventos do mundo
real).
A resposta em tempo real tipicamente varia de 1 milisegundo a 1
minuto).
Um sistema de tempo real deve responder dentro de restrições de
tempo estritas.
�Software Comercial:
O processamento de informações comerciais é a maior área
particular de aplicação de software.
Folha de pagamento.
Contas a pagar e a receber.
Controle de estoque.
�Software Científico e de Engenharia:
O software científico e de engenharia tem sido caracterizados
por algoritmos de processamento de números.
Astronomia.
Vulcanologia.
Mecânica de automóveis.
Biologia molecular.
�Software embutido (embedded software):
Produtos inteligentes têm-se tornado comuns em quase todo o
mercado industrial e de consumo.mercado industrial e de consumo.
� Reside na memória só de leitura (read-only) e é usado para controlar
produtos e sistemas para os mercados industriais e de consumo.
�Controle de teclado para fornos de microondas.
�Automóveis: Controle de combustível, mostradores no painel,
sistemas de freio, etc.
�Software de Computador Pessoal:
� Processamento de Textos.
� Planilhas Eletrônicas.Planilhas Eletrônicas.
� Diversões.
� Aplicações Financeiras.
�Software de Inteligência Artificial (Artificial Intelligency):
Faz uso de algoritmos não-numéricos para resolver problemascomplexos que não sejam favoráveis à computação ou à análise direta.
Sistemas Especialistas.
Sistemas Tutores Inteligentes (Intelligent Tutorial System)
Reconhecimento de padrões: voz e imagem.
Redes Neurais Artificiais: simula a estrutura dos processoscerebrais (a função do neurônio biológico).
Refere-se a um conjunto de problemas encontrados no
desenvolvimento de software:
As estimativas de prazo e de custo freqüentemente são As estimativas de prazo e de custo freqüentemente são imprecisasimprecisasAs estimativas de prazo e de custo freqüentemente são As estimativas de prazo e de custo freqüentemente são imprecisasimprecisas
“Não dedicamos tempo para coletar dados sobre o processo de
desenvolvimento de software.”
“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.”
A produtividade das pessoas da área de software A produtividade das pessoas da área de software não tem acompanhado a demanda por seus não tem acompanhado a demanda por seus serviços.serviços.serviços.serviços.
“Os projetos de desenvolvimento de software normalmente são efetuados apenas com um vago indício das exigências do cliente.”
A qualidade de software às vezes é menos que adequadaA qualidade de software às vezes é menos que adequada
Só recentemente começam a surgir conceitos quantitativos sólidos de garantia de qualidade de software.software.
O software existente é muito difícil de manterO 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.
�estimativas de prazo e de custo
�produtividade das pessoas
�qualidade de software
�software difícil de manter
11.. OO PróprioPróprio carátercaráter dodo SoftwareSoftware
O software é um elemento de sistema lógico e não físico.
Conseqüentemente, o sucesso é medido pela qualidade de uma única entidade e não pela qualidade de muitas entidades manufaturadas
O software não se desgasta, mas se deteriora!!!O software não se desgasta, mas se deteriora!!!
2. Falhas das pessoas responsáveis pelo 2. Falhas das pessoas responsáveis pelo
desenvolvimento do software.desenvolvimento do software.
Gerentes sem nenhum background em softwareGerentes 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
“O estabelecimento e uso de sólidos princípios de
engenharia para que se possa obter
economicamente um software que seja confiável eeconomicamente um software que seja confiável e
que funcione eficientemente em máquinas reais”
1ª definição - Fritz Bauer, 1969
(1) aplicação de uma abordagem sistemática, disciplinada e
quantificável ao desenvolvimento, operação e
manutenção de software, ou seja, a aplicação da
engenharia ao softwareengenharia ao software
(2) o estudo de abordagens do tipo declarado em (1)
[IEEE]
� Ainda que muitas definições abrangentes tenham
sido propostas, todas elas reforçam a exigência da
disciplina de engenharia no desenvolvimento de
software.software.
� Para se atingir um perfil de qualidade eu necessito
usar da Engenharia de Software.
� A engenharia de software é um rebento da
engenharia de sistemas e de hardware.
� Possibilitar a construção de software de alta
qualidade.
Métodos
Engenharia
de
Software
Ferramentas
Procedimentos
Métodos:
Proporcionam os detalhes de “como fazer” para construir o
software. Envolvem:
Planejamento e estimativa de projeto
Análise de requisitos de software e de sistemas
Projeto de estrutura de dados
Arquitetura de programa e algorítmo de processamento
Codificação, teste e manutenção
Ferramentas:
Proporcionam apoio automatizado ou semi-automatizado aos
métodos.
Quando as ferramentas são integradas de forma que a
informação criada por uma ferramenta possa ser usada por
outra, é estabelecido um sistema de suporte ao
desenvolvimento de software chamado engenharia de
software auxiliada por computador (CASE – Computer-Aided
Software Engineering)
Procedimentos:
Elo de ligação que mantém juntos os métodos e as ferramentas
e possibilita o desenvolvimento racional e oportuno do software
de computador. Definem a sequencia de aplicação dosde computador. Definem a sequencia de aplicação dos
métodos, os controles que ajudam a assegurar a qualidade e
coordenar as mudanças.
� A Engenharia de Software compreende um
conjunto de etapas que envolve métodos,
ferramentas e os procedimentos discutidosferramentas e os procedimentos discutidos
anteriormente.
� Essas etapas são citadas como paradigmas da
Engenharia de Software.
Métodos Ciclo deMétodos
+
Ferramentas
+
Procedimentos
Ciclo de
vida