Componentes do Software


  • Componentes do Software
    • Um sistema informatizado é formado por dois tipos de componentes:
      • Executáveis em máquina e
      • Não executáveis em máquina
    • Os componentes do software devem mapear as exigências do cliente em código executável.


  • Conceitos:
    • Hardware: Estrutura computacional composta por circuitos eletrônicos (processador, memória, portas de entrada/saída, etc.) e periféricos eletro-óptico-mecânicos (teclados, mouses, discos rígidos, unidades de entrada e saída como USB, HDMI, etc.).
      • Questão: É importante que o GI tenha conhecimentos sobre capacidade, processamento e escalabilidade de hardware?
    • Software: Produto que profissonais de software desenvolvem, para o qual dão suporte no longo prazo. Abrange programas executáveis em um computador de qualquer porte ou arquitetura, conteúdos (apresentados à medida que os programas são executados), informações descritivas tanto na forma impressa (hard copy) ou na forma virtual, abrangendo praticamente qualquer mídia eletrônica.
      • Questão: O GI deve conhecer os aspectos de PaaS, SaaS, NaaS, etc?
    • Firmware: Conjunto de instruções operacionais que são programadas diretamente no hardware de equipamentos eletrônicos.
      • Questão: Noções de firmware são fundamentais para o GI?


Categorias


  • Software de Sistema:
    • Desenvolvidos para atender a outros programas
      • Compiladores, IDEs, utilitários, drivers, bibliotecas, componentes de SO
        • GIT?


  • Software de Aplicação:
    • Programas que solucionam uma necessidade específica de negócios
      • Financeiro, planilha, contabilidade, Folha de pagamento, etc
        • Evolução para ERP?


  • Software de engenharia/científico:
    • Ampla variedade de programas de "cálculo em massa"
      • Astronomia, biologia molecular, análise genética, meteorologia, etc
        • Performance?


  • Software embarcado:
    • Residente num sistema ou produto e utilizado para implementar e controlar características ou funções para o usuário e para o próprio sistema.
      • Painel de micro-ondas, computador de bordo de automóveis, firmware de equipamentos telecom, etc
        • IoT?


  • Software para linha de produtos:
    • Projetado para prover capacidade específica de utilização por muitos clientes diferentes
      • Controle de inventário, bancos, saúde, público, Tele-atendimento, etc
        • Acesso simultâneo?


  • Aplicações Web/Mobile:
    • Categoria de software voltada às redes, navegadores e software residente em dispositivos móveis
      • Apps, Aplicações em HTML, CSS, PHP, etc
        • Nativo, responsivo??


  • Software de Inteligência Artificial:
    • Faz uso de algoritmos não-numéricos para solucionar problemas complexos que não são passíveis de computação ou de análise direta
      • Robótica, Sistemas especialistas, reconhecimento de padrões, Machine Learning, redes neurais, prova de teoremas e jogos
        • Complexo?
  • Software ...


Principais Problemas


  • Estimativas de prazo (meses, anos) e custo imprecisas
    • BP?
  • Produtividade abaixo da praticada pelo mercado
    • BP?
  • Software de baixa qualidade (erros e não conformidades com requisitos que tiram a confiança do cliente sobre o produto)
    • Satisfação do usuário?
  • Não se dedica tempo para coletar dados sobre o software e seu processo de desenvolvimento. Com poucos dados históricos como guia, as estimativas têm sido “a olho”, com resultados previsivelmente ruins.
    • Figura
  • Sem nenhum indicador sólido de produtividade, não poderemos avaliar com precisão a eficácia de novas ferramentas, métodos, padrões ou processos.
    • Inovação?
  • A insatisfação do cliente com o sistema “concluído” ocorre muito freqüentemente.
    • Perda do cliente, seja interno ou externo
  • Os projetos de desenvolvimento de software normalmente são levados a efeito apenas com um vago indício das exigências do cliente.
    • Constrangimento na entrega
  • A comunicação entre o cliente e o desenvolvedor de software freqüentemente é muito fraca.
    • Metodologia?
  • A qualidade do software freqüentemente é suspeita. Somente agora estão começando a ser seguidos conceitos quantitativos sólidos de confiabilidade e de garantia de qualidade de software.
    • Clientes cada vez mais exigentes
  • Só recentemente começamos a entender a importância dos testes de software sistemáticos e tecnicamente completos.
    • Gestor de Qualidade?
  • O software existente pode ser muito difícil de manter. A tarefa de manutenção de software devora a maioria de todos os recursos financeiros destinados a ele. A capacidade de manutenção de software não foi enfatizada como um critério importante para a aceitação do software.
    • Altos custos pós-entrega


Causas

  • Gerentes sem vivência em:
    • Projetos e seus marcos de evolução
    • Métodos efetivos de controle
    • Tecnologias que se modificam rapidamente
    • Os programadores ou engenheiros de software têm pouca instrução formal, holística e estudam pouco as técnicas de desenvolvimento e as áreas de negócio.
    • Cada pessoa aborda a tarefa de “escrever programas” com a experiência advinda de esforços passados. Algumas pessoas desenvolvem uma abordagem ordeira e eficiente, mesmo por tentativa e erro, mas muitas criam maus hábitos, que resultam em qualidade e manutenibilidade deficientes.
    • Resistência às inevitáveis mudanças
    • É irônico que enquanto o hardware experimenta enormes mudanças, as pessoas da área de software responsáveis pelo aproveitamento desse potencial, muitas vezes se oponham à mudança quando ela é discutida e resistam a ela quando ela é introduzida.


Evolução do Software


  • Denise


Crise do Software


Colaboração na Wiki


  • Edição a vontade de complementações ao conteúdo da Aula 02
    • Atenção para a formatação do texto
  • Valendo pontos:
    • Evolução do Software: Aluno selecionado:
    • Crise do Software: Aluno selecionado:


Questões


  • 01. Para qual das situações abaixo, podemos pressupor que temos um bom software? Por quê?
    • A. O Facebook teve seus dados invadidos, copiados e enviados para vários destinos.
    • B. Muito calor, os discos ficaram sobreaquecidos mas ainda assim o sistema continuou funcionando normalmente.
    • C. Software que faz a programação de velocidade da escada rolante acelerou subitamente.
    • D. Desenvolvedor mudou de empresa e quem assumiu não conseguiu entender a documentação para dar sequência ao trabalho.
    • E. Incêndio na matriz que mantém os servidores provocou parada generalizada nos sistema de usuários no mundo todo.
    • F. Funcionário alterou seu salário e no final do mês recebeu além do que deveria.
    • G. Saldo ficou gravado de forma incorreta porque a energia apagou na hora da atualização.
    • H. Atendente foi registrar paciente mas sistema não funcionou porque link estava fora do ar.
    • I. Sistema que controla o enchimento das garrafas de refrigerante colocou quantidade de líquido abaixo do exigido.
  • 02. Qual o meio-termo entre Software de Prateleira e Software-Taylor-made?
    • R:
  • 03. Qual a diferença entre software livre e software open-source?
    • R: