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 disquete, CD ou DVD, dispositivos USB, etc.).
    • 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.
    • Firmware: Conjunto de instruções operacionais que são programadas diretamente no hardware de equipamentos eletrônicos.


Categorias


  • Software de Sistema:
    • Desenvolvidos para atender a outros programas
      • Compiladores, IDEs, utilitários, drivers, bibliotecas, componentes de SO
  • Software de Aplicação:
    • Programas independentes que solucionam uma necessidade específica de negócios
      • Financeiro, planilha, contabilidade, Folha de pagamento, etc
  • Software de engenharia/científico:
    • Ampla variedade de programas de "cálculo em massa"
      • Astronomia, biologia molecular, análise genética, meteorologia, etc
  • 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
  • Software para linha de produtos:
    • Projetado para prover capacidade específica de utilização por muitos clientes diferentes
      • Controle de inventário, ERP, Tele-atendimento, etc
  • 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
  • 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


Principais Problemas


  • Estimativas de prazo (meses, anos) e custo imprecisas
  • Produtividade abaixo da praticada pelo mercado
  • Software de baixa qualidade (erros e não conformidades com requisitos que tiram a confiança do cliente sobre o produto)
  • 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.
  • 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.
  • A insatisfação do cliente com o sistema “concluído” ocorre muito freqüentemente.
  • Os projetos de desenvolvimento de software normalmente são levados a efeito apenas com um vago indício das exigências do cliente.
  • A comunicação entre o cliente e o desenvolvedor de software freqüentemente é muito fraca.
  • 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.
  • Só recentemente começamos a entender a importância dos testes de software sistemáticos e tecnicamente completos.
  • 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.


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


Um dos aspectos de todo software é que sempre haverá algo para melhorar ou modificar, isso se da pela evolução de alguns pontos, envelhecimento do software, uma nova demanda por parte do meio externo, observação de uma falha técnica, etc. E para fazer essa evolução de forma eficiente existem alguns pontos que precisam de atenção, como uma estruturação, documentação adequada e além disso uma revisão da estrutura em geral.

A título de curiosidade, existem as 8 leis de Lehman que são consideradas o manifesto do século XX, já que essas leis se aplicam a todo e qualquer software e que são essenciais ao falarmos de evolução de software. Resumidamente, são elas:

I - Mudança contínua

II - Complexidade crescente

III - Auto-regulação

IV - Conservação da estabilidade organizacional (taxa constante de trabalho)

V - Conservação da Familiaridade

VI - Crescimento contínuo

VII - Qualidade decrescente

VIII - Sistema de retorno


Raquel Silva Alves Bustamante

Crise do Software


  • Pesquisa 1: Aluno??

Material de apoio


  • Original :))
    • PRESSMAN, Roger S. MAXIM, Bruce R. Engenharia de Software. Uma abordagem profissional. 8a. edição. 2016.
    • REZENDE, Denis A. Engenharia de Software e Sistemas de Informação. BrasofBrasport. 3a. edição. 2005.
  • Cópias :((
    • www.inf.pucrs.br/~michael/aulas/espe_gest_ti/IntroEngSW.pdf
    • file:///home/lclaudio/Downloads/Engenharia%20de%20Software.pdf
    • 177.8.219.7:8081/sites/professor/pastas/andrea/.../aula1.ppt


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