Importância do Software

  • As 3 primeiras décadas da era do computador:
    • Principal desafio: Hardware
    • Desenvolver equipamentos de baixo custo e alto desempenho.


  • Compõem o cenário atual:
    • Cinco décadas de evolução dos computadores
    • Hardware de grande desempenho
    • Hardware de menor custo
    • Hardware com grandes e rápidas modificações


Últimas décadas

  • Desafio:
    • Melhorar a qualidade
    • Reduzir os custos das soluções baseadas em software.


Para se fazer isso, exige-se:

  • Técnicas
  • Teorias
  • Estudos
  • Metodologias


Panorama Atual

  • A necessidade de aplicar novas técnicas e métodos são necessárias.



Eras do Software

1a. era

  • 1940 a 1959
  • O profissional de TI era considerado um Deus
  • Hardware:
    • Os computadores eram lentos, enormes, ocupavam salas inteiras
    • Tinham metros e metros de fios
    • Eram equipadas com válvulas eletrônicas e gastavam muita energia
    • Sua operação era muito cara e esquentavam muito => causa de mal funcionamento
    • Velocidade de processamento: ordem de milissegundos
    • Capacidade de memória: 2 a 4 kbytes
  • Software:
    • Usavam linguagem de máquina para executar operações e resolviam um problema de cada vez
    • Entrada de dados: Cartões ou fita de papel perfurados
    • Saída de dados: Impressoras ou Terminais monocromáticos
    • Sistema operacional: Inexistentes na fase inicial. Os programadores eram operadores e controlavam o computador por meio de chaves, fios e luzes de aviso
  • As aplicações eram pensadas após o hardware .., funcionar
  • Desenvolvimento destas aplicações: sem gerenciamento
  • Orientação: Batch (em lote) (uma tarefa após a outra)



2a. era

  • 1960 a 1975
  • Hardware:
    • Substituição das válvulas/fios por transistores/circuitos impressos
    • Tornou os computadores mais rápidos, menores e com custos mais baixos
    • Velocidade de processamento: Ordem de centenas de milissegundos
    • Memória: Dezenas de MBytes
    • Surgiram os primeiros armazenadores externos de informações: fitas magnéticas e discos
    • Ainda esquentavam e vibravam muito.
  • Software:
    • Linguagem: Mudança de máquina binária para simbólica: Assembler, FORTRAN e COBOL
    • Programadores: Passaram a escrever as instruções por meio de palavras
    • Entrada de dados: Cartões ou fita de papel perfurado
    • Saída de dados: Impressoras
    • Programa: escrito em cartão/fita e carregados por um operador, juntamente com seu compilador
    • O operador em geral utilizava uma linguagem de controle chamada JCL (Job Control Language)
    • Multi (programação/usuário)
    • Início das Software-Houses
    • Sistemas processando em tempo real
    • Primeira geração de Banco de Dados: System R, SQL/DS, DB2, ...
    • Software voltado a ampla distribuição no mundo
    • Manutenção dispendiosa e cara.


(2)


3a. era

  • 1976 a 1985
  • Hardware:
    • Computadores passaram a ter circuitos integrados e transistores miniaturizados
    • Aumentaram em velocidade e eficiência reduzindo os custos
    • Teclados e monitores: substituíram os cartões e papel perfurados
    • Velocidade de processamento: Ordem de microssegundos
    • Capacidade de memória: Mbytes
    • Redes locais e globais
    • Poderosas estações de trabalho
    • PCs: Proliferação pelo mundo inteiro
  • Software:
    • Sistemas distribuídos: maior complexidade e equiptos diversificados
    • Demanda: Acesso instantâneo e global
    • Tornaram-se acessíveis para um grande número de pessoas
    • Novas aplicações: Desenvolvidos no mundo inteiro
    • Linguagens: C, Pascal, Basic, ...


  • Tecnologia marcante: Redes Locais - Maykell Pereira Carvalho


4a. era

  • 1986 a 1999
  • Hardware:
    • Microprocessador com milhões de CIs em um único "chip" de silicone
    • Maior grau de miniaturização, confiabilidade e velocidade
    • Velocidade de processamento: Centenas de nanossegundos
    • Capacidades: Gbytes
    • Computação paralela -Rafaella Silva Brito
  • Software:
    • Início da era Internet
    • Interfaces gráficas: Evolução rápida => GUI (Graphical User Interface)
    • Baseada em símbolos visuais, como ícones, menus e janelas com maior interação com o usuário
    • Linguagens: Delphi, Clipper, Java
    • Modelagem de sistemas: Orientação a objetos
    • Sistemas especialistas e IA -Pablo Soares Pessoa e Pedro Paulo de Souza Alves
    • Redes neurais -Teodoro Ribeiro Terra
    • Linguagens de programação abertas
    • Sistemas para internet
    • Usuário Final: Podia desenvolver suas próprias aplicações



  • Tecnologia marcante:


5a. era

  • 2000 até ...
  • Hardware:
    • Altíssima velocidade de processamento
    • Grande capacidade de armazenamento de dados dos discos rígidos (TBytes, Peta, Exa, Zetta, YottaBytes)
    • Alto grau de interatividade: Reconhecimento de voz - Whyster Donizete da Silva
    • Processamento baseado em supercondutores
    • CloudComputing - Winter Carlos Silva Onofre
    • Computação Quântica - Breno Assis Martins
    • ComputaçãoHolográfica - Fernando Liniquer de Souza
  • Software:
    • Inteligência artificial
    • Realidade Virtual e Realidade Aumentada - Jessica Cristina de Paula
    • Linguagens: C++, JavaScript, Python, PERL
    • Desenvolvimento Ágil
    • Novos SOs: Android, Ginga - Lucas Coelho Burgos e Lucas Narciso Borges
    • Internet do Futuro
    • Virtualization - Lucas Prado Domingos
    • ...
  • Tecnologias marcantes:


10 áreas da Engenharia de Software


  1. Requisitos de software
    1. Aquisição, análise, especificação e gestão de requisitos de software
  2. Design de software
    1. Transformação de requisitos (de software), tipicamente estabelecidos em termos relevantes ao domínio do problema, em uma descrição explicando como solucionar os aspectos do problema relacionados com o software
  3. Construção do software
    1. Construção de programas funcionais e coerentes através da codificação, autovalidação e teste unitário
  4. Processo de Engenharia de Software
    1. Define, implementa, mede, gerencia, modifica e aperfeiçoa o processo de desenvolvimento de software
  5. Ferramentas e Métodos
    1. Ferramentas de Software automatizam o processo de Engenharia de Software
  6. Qualidade de Software
    1. Conjunto de atividades relacionadas com garantia de qualidade de software, entre estas as atividades de verificação e validação
  7. Gerência de configuração de Software
    1. Identifica a configuração do sistema (características documentadas do hardware e software que o compõem) em pontos discretos no tempo, de modo a controlar sistematicamente suas mudanças e manter sua integridade e rastreabilidade durante o ciclo de vida do sistema
  8. Gerência de Engenharia de Software
    1. Gerencia projetos de desenvolvimento de software
  9. Teste de software
    1. Verificação dinâmica do comportamento do programa através do uso de um conjunto finito de testes
  10. Manutenção do software
    1. Atividades de suporte que incluem modificações com o bojetivo de corrigir falhas, melhorar o desempenho ou adaptar o software a um ambiente modificado.
  • As 10 área de Engenharia de Software conforme o SWEBook. Jorge H. C. Fernandes