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 e dispositivos com software embutido (embedded systems)
- Como funciona isso? Que tipo de software:
- Software de prateleira (commodities)
- Significa que atendem a todas as necessidades dos usuários?
- 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?
- Solução open-source?
- É de graça mas funciona?
- A maioria dos produtos elétricos ou eletrônicos inclui um sistema de computação (hardware + software)
- MP3, ferro elétrico, relógio, geladeira, furadeira, controle remoto, etc
- 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?
- O Facebook teve seus dados invadidos, copiados e enviados para vários destinos.
- Muito calor, os discos ficaram sobreaquecidos mas ainda assim o sistema continuou funcionando normalmente.
- Software que faz a programação de velocidade da escada rolante acelerou subitamente.
- Desenvolvedor mudou de empresa e quem assumiu não conseguiu entender a documentação para dar sequência ao trabalho.
- Incëndio na matriz que mantém os servidores provocaram parada generalizada nos sistema de usuários no mundo todo.
- Funcionário alterou seu salário e no final do mês recebeu além do que deveria.
- Saldo ficou gravado de forma incorreta porque a energia apagou na hora da atualização.
- Atendente foi registrar paciente mas sistema não funcionou porque link estava fora do ar.
- 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?
