Objetivo da aula


  • Entender a aplicação da Engenharia de Software focando nas seguintes questões:
    • Existem softwares para atender um amplo conjunto de problemas
    • Um software considerado bom atende a uma série de requisitos.
  • Avaliar as áreas existentes


Motivação


  • Em virtude da importância e participação do software no mundo moderno, é condição essencial que seja um bom software
    • Para isso deve possuir:



  • Disponibilidade:

Estar pronto para prestar serviço correto sempre que se necessite do software

  • Ex: Sistema de Atendimento 190 numa situação de emergência.



  • Confiabilidade:

Habilidade de prestar continuamente serviço correto

  • Ex: Sistema de contagem de dinheiro num caixa eletrônico.



  • Segurança:

Habilidade de evitar consequências catastróficas relativas aos usuários e ao ambiente

  • Ex: Software de movimentação de um traje biônico que ajuda um deficiente físico.



  • Proteção:

Habilidade de evitar tentativas de agressão bem sucedidas

  • Ex: Um banco de dados de uma empresa não pode permitir em hipótese alguma alteração de dado manualmente.



  • Privacidade:

Habilidade de proteger dados e código contra acesso indevido

  • Ex: O software possui a capacidade de encapsular os dados, garantindo que apenas quem é autorizado possa acessar aqueles dados.



  • Integridade:

Ausência de alterações não permitidas (corrupção de elementos)

  • Ex: O disco do Banco Financeiro onde sua informação de saldo está guardada, crashou? Ainda assim seu dado tem que estar correto.



  • Robustez:

Habilidade de detectar falhas de modo que os danos (as consequências de erros ou falhas) possam ser mantidas em um patamar aceitável

  • Ex.: Se um servidor sair do ar ainda assim a operação do sistema não pode ser afetada.



  • Recuperabilidade:

Habilidade em ser rapidamente reposto em operação fidedigna após a ocorrência de uma falha

  • Ex: Site pode ser restaurado imediatamente após uma alteração feita por um hacker da página inicial de um site.



  • Manutenibilidade:

Habilidade de ser modificado (evoluído) ou corrigido sem que novos problemas sejam inseridos

  • Ex: Baixa uma nova versão do aplicativo e ele roda direitinho da mesma forma que antes.



  • Depurabilidade:

Habilidade de apoio à diagnose e à eliminação de possíveis falhas a partir de relatos gerados.

  • Ex: Um sistema com milhões de linhas de programação deve ter formas de visualizar e filtrar os pontos mais críticos.

A realidade


  • Equipamentos sem software
    • Muito primários?


  • Equipamentos e dispositivos com software embutido (embedded systems)
    • Como funciona isso? Que tipo de software:



  • Soluções desenvolvidas (taylor-made)
    • É melhor que software de prateleira?


  • Soluções por desenvolver
    • Com tanto software no mundo ainda existe alguma coisa inédita para desenvolver?



  • A maioria dos produtos elétricos ou eletrônicos inclui um sistema de computação (hardware + software)


  • Os negócios que envolvem manufatura e distribuição (logística) são praticamente 100% automatizados
    • Sem um sistema, a empresa consegue atender suas demandas?


  • Sistema financeiro é totalmente dependente da tecnologia
    • Porque gera insatisfação poucos segundos de atraso numa transação bancária?


  • Área de saúde deveria ter 100% de integração (Paciente, Hospital, Médico, Plano de Saúde, Laboratórios, etc)
    • Ver países com excelência no sistema de saúde.


10 Áreas da Engenharia de Software

  • Conforme o SWEBOK. Jorge H. C. Fernandes. 2004



  • 01. Requisitos de software
      • Aquisição
      • Análise
      • Especificação
      • Gestão de requisitos de software



  • 02. Design de software
      • Transformação de requisitos (de software), coletados no domínio do problema, em uma descrição explicando como solucionar os aspectos do problema relacionados com software
      • Modelagem
      • Diagramação
      • Projeto
      • Protótipo



  • 03. Construção de Software
      • Construção de programas funcionais e coerentes através da codificação
      • Programação
      • Auto-validação
      • Teste unitário



  • 04. Teste de Software
      • Verificação dinâmica do comportamento do programa através do uso de um conjunto finito de casos de teste
      • Aplicação de técnicas para avaliar se o programa é eficiente



  • 05. Manutenção de Software
      • Atividades de suporte a um sistema, que pode ocorrer antes e após a entrega do software
      • Após a entrega do software são feitas modificações com o objetivo de corrigir falhas, melhorar seu desempenho ou adapta-lo a um ambiente modificado.



  • 06. Gerência de Configuração de Software
      • Características documentadas do hardware e software que fazem parte do sistema
      • Controlam sistematicamente suas mudanças e manter sua integridade e rastreabilidade durante o ciclo de vida do sistema



  • 07. Gerência de Engenharia de Software
      • Gerencia projetos de desenvolvimento de software



  • 08. Processo de Engenharia de Software
      • Define
      • Implementa
      • Mede
      • Gerencia
      • Modifica
      • Aperfeiçoa o processo de desenvolvimento de software



  • 09. Ferramentas e Métodos
      • Ferramentas que automatizam os processos
      • Métodos que procuram levar mais qualidade ao software



  • 10. Qualidade de Software
      • Conjunto de atividades que tentam garantir de qualidade de software
      • Verificação dos requsitos
      • Validação.


Questões


  • Kelly


  • 01. Em qual das condições para ser considerado um bm software se enquadra a seguinte situação?
  1. O Facebook teve seus dados invadidos, copiados e enviados para vários destinos.
  2. Muito calor, os discos ficaram sobreaquecidos mas ainda assim o sistema continuou funcionando normalmente.
  3. Software que faz a programação de velocidade da escada rolante acelerou subitamente.
  4. Desenvolvedor mudou de empresa e quem assumiu não conseguiu entender a documentação para dar sequência ao trabalho.
  5. Incëndio na matriz que mantém os servidores provocaram parada generalizada nos sistema de usuários no mundo todo.
  6. Funcionário alterou seu salário e no final do mês recebeu além do que deveria.
  7. Saldo ficou gravado de forma incorreta porque a energia apagou na hora da atualização.
  8. Atendente foi registrar paciente mas sistema não funcionou porque link estava fora do ar.
  9. Sistema que controle 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?



  • 03. Qual a diferença entre software livre e softare open-source?