Engenharia de Software - PowerPoint PPT Presentation

1 / 91
About This Presentation
Title:

Engenharia de Software

Description:

Engenharia de Software Prof. In s Ap. Gasparotto Boaventura 1. Semestre/2001 T picos 1- Introdu o Engenharia de Software 2 - Fundamentos Organizacionais de ... – PowerPoint PPT presentation

Number of Views:401
Avg rating:3.0/5.0
Slides: 92
Provided by: sistemasR
Category:

less

Transcript and Presenter's Notes

Title: Engenharia de Software


1
Engenharia de Software
  • Prof. Inês Ap. Gasparotto Boaventura
  • 1. Semestre/2001

2
Tópicos
  • 1- Introdução à Engenharia de Software
  • 2 - Fundamentos Organizacionais de Sistemas de
    Informação
  • 3- Gerência de projeto de software
  • 4- Gerenciamento para a qualidade de software
  • 5- Acompanhamento do processo de desenvolvimento
    de software.

3
Software
  • 1- Instruções
  • quando executadas produzem a função e o
    desempenho desejados
  • 2 - Estruturas de Dados
  • possibilitam que os programas manipulem
    adequadamente a informação
  • 3 - Documentos
  • descrevem a operação e o uso dos programas

4
Características do Software
  • 1. desenvolvido ou projetado por engenharia, não
    manufaturado no sentido clássico
  • 2. não se desgasta mas se deteriora
  • 3. a maioria é feita sob medida em vez de ser
    montada a partir de componentes existentes

5
Aplicações do Software
6
Evolução do Software
  • (1950 - 1965)
  • O hardware sofreu contínuas mudanças
  • O software era uma arte "secundária" para a 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

7
Evolução do Software
  • (1965 - 1975)
  • Multiprogramação e sistemas multiusuários
  • Técnicas interativas
  • Sistemas de tempo real
  • 1a geração de SGBDs
  • Produto de software - software houses
  • Bibliotecas de Software
  • Cresce no de sistemas baseado em computador
  • Manutenção quase impossível
  • ..... CRISE DE SOFTWARE

8
Evolução do Software
  • (1975 - hoje)
  • Sistemas distribuídos
  • Redes locais e globais
  • Uso generalizado de microprocessadores - produtos
    inteligentes
  • Hardware de baixo custo
  • Impacto de consumo
  • ..... CRISE DE SOFTWARE (aflição crônica???)

9
Evolução do Software
  • (Quarta era do software atualidade)
  • 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
  • ..... CRISE DE SOFTWARE (aflição crônica???)

10
Crise de Software
  • Refere-se a um conjunto de problemas encontrados
    no desenvolvimento de software
  • (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
  • 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

11
Crise de 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

12
Crise de Software
  • (3) A qualidade de software às vezes é menos que
    adequada
  • Só recentemente começam a surgir conceitos
    quantitativos sólidos de garantia de qualidade de
    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

13
Crise de Software
  • estimativas de prazo e de custo ?
  • produtividade das pessoas ?
  • qualidade de software ?
  • software difícil de manter ?

14
Causas dos problemas associados à Crise de
Software
  • 1. próprio caráter do Software
  • O software é um elemento de sistema lógico e não
    físico (produto intangível)
  • 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!!!

15
Causas dos problemas associados à Crise de
Software
  • 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.

16
Causas dos problemas associados à Crise de
Software
  • 3. mitos do Software
  • propagaram desinformação e confusão
  • administrativos
  • cliente
  • profissional

17
Mitos do Software (administrativos)
  • Já temos um manual repleto de padrões e
    procedimentos para a construção de software. Isso
    não 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?
18
Mitos do Software (administrativos)
  • Meu pessoal tem ferramentas de desenvolvimento de
    software de última geração afinal lhes compramos
    os mais novos computadores.

Realidade É preciso muito mais do que os mais
recentes computadores para se fazer um
desenvolvimento de software de alta qualidade.
19
Mitos do Software (administrativos)
  • 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.
20
Mitos do Software (cliente)
  • 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.
21
Mitos do Software (cliente)
  • Os requisitos de projeto modificam-se
    continuamente, mas as mudanças podem ser
    facilmente acomodadas, porque o software é
    flexível.

Realidade Uma mudança, quando solicitada
tardiamente num projeto, pode ser maior do que
mais do que uma ordem de magnitude mais
dispendiosa do que a mesma mudança solicitada nas
fases iniciais.
22
Mitos do Software (profissional)
  • 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.
23
Mitos do Software (profissional)
  • Enquanto não tiver o programa "funcionando", eu
    não terei realmente nenhuma maneira de avaliar
    sua qualidade.

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.
24
Engenharia de Software
  • Preocupação Sistematizar o processo de
  • criação e manutenção de software.

25
Engenharia de Software Definições
  • Boehm Engenharia de software envolve a
    aplicação prática de conhecimento científico para
    o projeto e construção de programas de computador
    e a documentação associada necessária para
    desenvolvê-los, operá-los e mantê-los.

26
Engenharia de Software Definições
  • IEEE Standard Glossary of Software Engineering
    terminology Engenharia de software é uma
    abordagem sistemática para o desenvolvimento,
    operação, manutenção de software
  • Software programas de computador,
    procedimentos, regras, documentação
    possivelmente associada, e dados sobre sua
    operação.

27
Engenharia de Software Definições
  • Fairley Engenharia de software é a disciplina
    tecnologica e gerencial preocupada com a produção
    sistemática e manutenção de produtos de software
    que são desenvolvidos e modificados no prazo
    estabelecido e dentro das estimativas de custo.

28
Engenharia de Software
  • abrange um conjunto de três elementos
    fundamentais
  • Métodos, Ferramentas e Procedimentos
  • Principais metas melhorar a qualidade de
    produtos de software, aumentar a produtividade do
    pessoal técnico e aumentar a satisfação do
    cliente.

29
Engenharia de Software
  • métodos proporcionam os detalhes de
    como fazer para construir o software

30
Engenharia de Software
  • Planejamento e estimativa de projeto
  • Análise de requisitos de software e de sistemas
  • Projeto da estrutura de dados
  • Algoritmo de processamento
  • Codificação
  • Teste
  • Manutenção

31
Engenharia de Software
  • ferramentas dão suporte automatizado
  • aos métodos.
  • existem atualmente ferramentas para sustentar
    cada um dos métodos
  • quando as ferramentas são integradas é
    estabelecido um sistema de suporte ao
    desenvolvimento de software chamado CASE -
    Computer Aided Software Engineering

32
Engenharia de Software
  • procedimentos constituem o elo entre
    os métodos e ferramentas
  • seqüência em que os métodos serão aplicados
  • produtos que se exige que sejam entregues
  • controles que ajudam assegurar a qualidade e
    coordenar as alterações
  • marcos de referência que possibilitam
    administrar o progresso do software.

33
Engenharia de Software
  • conjunto de etapas que envolve
  • métodos
  • ferramentas
  • procedimentos
  • Essas etapas são conhecidas como componentes de
    CICLO DE VIDA DE SOFTWARE
  • ou Processo de Software

34
Engenharia de Software
  • Alguns ciclos de vida mais conhecidos são
  • Ciclo de Vida Clássico
  • Prototipação
  • Modelo Espiral
  • Técnicas de 4a Geração

35
para escolha de um Ciclo de Vida de Software
  • natureza do projeto e da aplicação
  • métodos e ferramentas a serem usados
  • controles e produtos que precisam ser entregues

36
Ciclo de Vida Clássico (Cascata)
  • modelo mais antigo e o mais amplamente usado da
    engenharia de software
  • modelado em função do ciclo da engenharia
    convencional
  • requer uma abordagem sistemática, seqüencial ao
    desenvolvimento de software

37
(No Transcript)
38
(No Transcript)
39
(No Transcript)
40
(No Transcript)
41
(No Transcript)
42
(No Transcript)
43
(No Transcript)
44
Problemas com o Ciclo de Vida Clássico
  • projetos reais raramente seguem o fluxo
    seqüencial que o modelo propõe
  • logo no início é difícil estabelecer
    explicitamente todos os requisitos. No começo dos
    projetos sempre existe uma incerteza natural
  • o cliente deve ter paciência. Uma versão
    executável do software só fica disponível numa
    etapa avançada do desenvolvimento

45
Clássico (comentários)
  • Embora o Ciclo de Vida Clássico tenha
    fragilidades, ele é significativamente melhor do
    que uma abordagem casual ao desenvolvimento de
    software

46
Prototipação
  • processo que possibilita que o desenvolvedor crie
    um modelo do software que deve ser construído.
  • idealmente, o modelo (protótipo) serve como um
    mecanismo para identificar os requisitos de
    software.
  • apropriado para quando o cliente definiu um
    conjunto de objetivos gerais para o software, mas
    não identificou requisitos de entrada,
    processamento e saída com detalhes.

47
(No Transcript)
48
(No Transcript)
49
(No Transcript)
50
(No Transcript)
51
(No Transcript)
52
Problemas com a Prototipação
  • cliente não sabe que o software que ele vê não
    considerou, durante o desenvolvimento, a
    qualidade global e a manutenibilidade a longo
    prazo. Não aceita bem a idéia que a versão final
    do software vai ser construída e "força" a
    utilização do protótipo como produto final.

53
Problemas com a Prototipação
  • desenvolvedor freqüentemente faz uma
    implementação comprometida (utilizando o que está
    disponível) com o objetivo de produzir
    rapidamente um protótipo. Depois de um tempo ele
    familiariza com essas escolhas, e esquece que
    elas não são apropriadas para o produto final.

54
Prototipação (comentários)
  • Ainda que possam ocorrer problemas, a
    prototipação é um ciclo de vida eficiente ?
  • A chave é definir-se as regras do jogo logo no
    começo ?
  • O cliente e o desenvolvedor devem ambos concordar
    que o protótipo seja construído para servir como
    um mecanismo a fim de definir os requisitos ?

55
Ciclo de Vida em Espiral
  • engloba as melhores características do ciclo de
    vida Clássico e da Prototipação, adicionando um
    novo elemento a Análise de Risco
  • segue a abordagem de passos sistemáticos do
    Ciclo de Vida Clássico incorporando-os numa
    estrutura iterativa que reflete mais
    realisticamente o mundo real
  • usa a Prototipação, em qualquer etapa da
    evolução do produto, como mecanismo de redução de
    riscos

56
(No Transcript)
57
(No Transcript)
58
Espiral (comentários)
  • é, atualmente, a abordagem mais realística para o
    desenvolvimento de software em grande escala.
  • usa uma abordagem que capacita o desenvolvedor e
    o cliente a entender e reagir aos riscos em cada
    etapa evolutiva.
  • pode ser difícil convencer os clientes que uma
    abordagem "evolutiva" é controlável
  • exige considerável experiência na determinação de
    riscos e depende dessa experiência para ter
    sucesso

59
Espiral (comentários)
  • o modelo é relativamente novo e não tem sido
    amplamente usado
  • Demorará muitos anos até que a eficácia desse
    modelo possa ser determinada com certeza absoluta.

60
Técnicas de 4a Geração
  • Concentra-se na capacidade de se especificar o
    software a uma máquina em um nível que esteja
    próximo à linguagem natural.
  • Engloba um conjunto de ferramentas de software
    que possibilitam que
  • o sistema seja especificado em uma linguagem de
    alto nível e
  • o código fonte seja gerado automaticamente a
    partir dessas especificações

61
(No Transcript)
62
Ferramentas do ambiente de desenvolvimento de
software de 4GL
  • O ambiente de desenvolvimento de software que
    sustenta o ciclo de vida de 4a geração inclui as
    ferramentas
  • linguagens não procedimentais para consulta de
    banco de dados
  • geração de relatórios
  • manipulação de dados
  • interação e definição de telas
  • geração de códigos
  • capacidade gráfica de alto nível
  • capacidade de planilhas eletrônicas

63
(No Transcript)
64
(No Transcript)
65
(No Transcript)
66
(No Transcript)
67
Técnicas de 4a Geração (comentários)
  • PROPONENTES redução dramática no tempo de
    desenvolvimento do software (aumento de
    produtividade)
  • OPONENTES as 4GL atuais não são mais fáceis de
    usar do que as linguagens de programação
  • o código fonte produzido é ineficiente
  • a manutenibilidade de sistemas usando técnicas
    4G ainda é questionável

68
Engenharia de Software uma visão genérica
  • O processo de desenvolvimento de software contém
    3 fases genéricas, independentes do modelo de
    engenharia de software escolhido
  • 1. DEFINIÇÃO,
  • 2. DESENVOLVIMENTO e
  • 3. MANUTENÇÃO.

69
Engenharia de Software uma visão genérica
70
Engenharia de Software uma visão genérica
  • DEFINIÇÃO o que será desenvolvido.
  • Análise do Sistema define o papel de cada
    elemento num sistema baseado em computador,
    atribuindo em última análise, o papel que o
    software desempenhará.
  • Planejamento do Projeto de Software assim que o
    escopo do software é estabelecido, os riscos são
    analisados, os recursos são alocados, os custos
    são estimados e, tarefas e programação de
    trabalho definidas.

71
Engenharia de Software uma visão genérica
  • Análise de Requisitos o escopo definido para o
    software proporciona uma direção, mas uma
    definição detalhada do domínio da informação e da
    função do software é necessária antes que o
    trabalho inicie.

72
Engenharia de Software uma visão genérica
  • DESENVOLVIMENTO como o software vai ser
    desenvolvido.
  • Projeto de Software traduz os requisitos do
    software num conjunto de representações (algumas
    gráficas, outras tabulares ou baseadas em
    linguagem) que descrevem a estrutura de dados, a
    arquitetura do software, os procedimentos
    algorítmicos e as características de interface.

73
Engenharia de Software uma visão genérica
  • Codificação as representações do projeto devem
    ser convertidas numa linguagem artificial (a
    linguagem pode ser uma linguagem de programação
    convencional ou uma linguagem não procedimental)
    que resulte em instruções que possam ser
    executadas pelo computador.
  • Realização de Testes do Software logo que o
    software é implementado numa forma executável por
    máquina, ele deve ser testado para que se possa
    descobrir defeitos de função, lógica e
    implementação.

74
Engenharia de Software uma visão genérica
  • MANUTENÇÃO concentra-se nas mudanças que
    ocorrerão depois que o software for liberado para
    uso operacional
  • Correção
  • Adaptação
  • Melhoramento Funcional

75
Engenharia de Software uma visão genérica
  • Correção mesmo com as melhores atividades de
    garantia de qualidade de software, é provável que
    o cliente descubra defeitos no software. A
    manutenção corretiva muda o software para
    corrigir defeitos.
  • Adaptação com o passar do tempo, o ambiente
    original (por exemplo a CPU, o sistema
    operacional e periféricos) para o qual o software
    foi desenvolvido provavelmente mudará. A
    manutenção adaptativa muda o software para
    acomodar mudanças em seu ambiente.

76
Engenharia de Software uma visão genérica
  • Melhoramento Funcional a medida que o software é
    usado, o cliente/usuário reconhecerá funções
    adicionais que oferecerão benefícios.
  • A manutenção perfectiva estende o software para
    além de suas exigências funcionais originais.

77
Engenharia de Software uma visão genérica
  • Atividades de Proteção as fases e etapas
    correlatas descritas são complementadas por uma
    série de atividades de proteção.
  • Revisões efetuadas para garantir que a qualidade
    seja mantida à medida que cada etapa é concluída.
  • Documentação é desenvolvida e controlada para
    garantir que informações completas sobre o
    software estejam disponíveis para uso posterior.
  • Controle das Mudanças é instituído de forma que
    as mudanças possam ser aprovadas e acompanhadas.

78
Engenharia de Software uma aborgagem
gerencial
  • A Engenharia de Software também se preocupa com
    questões gerenciais, que encontra-se do lado
    oposto ao domínio da programação
  • Gerenciamento necessário para coordenar as
    atividades técnicas em projetos de produtos de
    software.

79
Engenharia de Software uma aborgagem
gerencial
  • Em geral, um produto de software inclui
  • -gt Código fonte, e documentação relacionada
  • documento de requisitos
  • especificação do projeto
  • planos de teste
  • princípios de operação
  • procedimentos para garantia da qualidade

80
Engenharia de Software uma aborgagem
gerencial
  • Em geral, um produto de software inclui
  • -gt Cogido fonte, e documentação relacionada
  • relatórios de problemas com o software
  • procedimentos de manutenção
  • manuais do usuário
  • instruções para instalação
  • auxílio para treinamento

81
Engenharia de Software uma aborgagem
gerencial
  • Qualidade de software preocupação principal
    dos
  • gerentes de software.
  • -gt Principal atributo de qualidade utilidade
  • -gt outros atributos de qualidade
  • - transportabilidade
  • - eficiência
  • - clareza
  • - confiabilidade

82
Engenharia de Software uma aborgagem
gerencial
  • Fatore de Qualidade e Produtividade
  • Fatores que influenciam a qualidade
  • Habilidade Individual
  • Comunicação da equipe
  • Complexidade do produto
  • Notações apropriadas
  • Abordagens sistemáticas
  • controle de mudanças

83
Engenharia de Software uma aborgagem
gerencial
  • Fatore de Qualidade e Produtividade
  • Fatores que influenciam a qualidade
  • Adequação de treinamento
  • Habilidades de gerenciamento
  • Metas apropriadas
  • Entendimento do problema
  • Estabilidade dos requisitos
  • Habilidades necessárias

84
Engenharia de Software uma aborgagem
gerencial
  • Questões gerenciais
  • Os gerentes de software
  • controlam os recursos e o ambiente no qual as
    atividades técnicas ocorrem.
  • responsáveis pela entrega do produto no prazo e
    dentro das estimativas de custo.
  • devem garantir que o produto tenha os atributos
    funcionais e de qualidade desejados pelo cliente.
  • Treinam empregados.
  • desenvolvem planos e estratégias de marketing.

85
Engenharia de Software uma aborgagem
gerencial
  • Preocupações de gerenciamento de projeto
  • métodos para organizar e monitorar um projeto.
  • técnicas de estimativa de custo.
  • política de alocação de recursos.
  • controle orçamentário.
  • avaliação do progresso.
  • realocação de recursos.
  • ajustes no cronograma.

86
Engenharia de Software uma aborgagem
gerencial
  • Preocupações de gerenciamento de projeto
  • estabelecer procedimentos para garantia de
    qualidade.
  • manter o controle de várias versões do produto.
  • facilitar a comunicação entre os membros do
    projeto.
  • comunicação com o cliente.
  • estabelecer contratos com o cliente.
  • garantir que os termos legais e contratuais do
    projeto sejam cumpridos.

87
Engenharia de Software uma aborgagem
gerencial
  • Problemas na área de gerenciamento
  • falta de planejamento para projetos de software.
  • falta de técnicas e procedimentos para selecionar
    gerentes de projeto.
  • falta de habilidade em estimar os recursos
    necessários para o projeto.
  • falta de um processo de desenvolvimento bem
    estabelecido.
  • falta de estratégias para o gerente acompanhar o
    progresso do projeto.
  • falta de padrões e técnicas para medir
    produtividade.

88
Engenharia de Software uma aborgagem
gerencial
  • Fatores que melhoram o gerenciamento
  • treinar gerentes, e desenvolvedores de software.
  • estabelecer o uso de padrões, procedimentos e
    documentação.
  • analisar dados de projetos passados para avaliar
    métodos efetivos.
  • definir objetivos em termos de qualidade
    desejada.
  • definir qualidade em termos de produtos a ser
    entregues.
  • Selecionar gerentes de projetos com habilidades
    para gerenciamento.
  • Desenvolver uma maneira de avaliar os
    desenvolvedores de software.

89
Conclusão
  • ENGENHARIA DE SOFTWARE
  • pode ser vista como uma abordagem de
    desenvolvimento de software elaborada com
    disciplina e métodos bem definidos.

.....a construção por múltiplas pessoas de um
software de múltiplas versões Parnas 1987
90
Pontos a ponderar
  • O software é o fator de diferenciação de muitos
    produtos e sistemas baseados em computador.
    Apresente exemplos de dois ou três produtos e de
    pelo menos um sistema em que o software, não o
    hardware, é o elemento que faz a diferença.
  • Nas décadas de 1950 e 1960, a programação de
    computador era uma forma de arte aprendida num
    ambiente semelhante ao de aprendizes. Como os
    primórdios afetaram as práticas de
    desenvolvimento de software atuais?
  • Apresente cinco exemplos de desenvolvimento de
    software que seriam adequados à prototipação.
    Cite duas ou três aplicações que seriam mais
    difíceis de ser representadas em protótipos.

,
91
Pontos a ponderar
  • Os mitos de software citados em aula são somente
    alguns entre muitos outros. Liste mitos
    adicionais para cada uma das categorias
    apresentadas.
  • Existe algum caso em que as fases genéricas do
    processo de engenharia de software não se
    aplicam? Se assim for, descreva-o.

,
Write a Comment
User Comments (0)
About PowerShow.com