22 fevereiro, 2015

Banco de Dados Distribuidos

Consiste num conjunto de bancos espalhados e um sistema distribuído para gerenciar esses bancos. Cada local pode realizar transações: locais, em que acessam dados de um único local e globais onde acessam dados em vários locais.

Condições mínimas para ser um banco de dados distribuído

  • Estar conectados em rede
  • Possuir uma inter-relação lógica dos bancos
  • Não é necessário que o software seja o mesmo em cada nó da rede

Transparência

  • Usuário: usuário não precisa saber detalhes de implementação
  • Distribuição ou rede: usuário não precisa saber configuração de rede
  • Local: Usuário não sabe onde o banco se encontra
  • Nomes: nome dos dados. usuário chama um dado pelo nome que ele conhece.
  • Replicação e Fragmentação: usuário não precisa saber como o dado está.
  • Projeto: Projeto do banco de dados é transparente ao usuário
  • Execução: Como deve ser feita a requisição e o processamento no banco, usuário não precisa saber;

Custo de instalação de um banco de dados distribuído

  1. Custo de instalação: tempo para ligar fisicamente um nó
  2. Custo de comunicação: custo em tempo e dinheiro para enviar uma mensagem entre os nós
  3. Confiabilidade: frequência com a qual uma ligação apresenta falhas
  4. Disponibilidade: o grau com que um dado pode ser acessado ainda que algumas apresentem falhas

Prós e Contras à distribuição de dados

Vantagens

  • Autonomia local, mesmo que a rede esteja indisponível, o sistema se mantem localmente
  • Confiabilidade e Disponibilidade: forte ponte do BDD.
  • Aceleração do processo de consulta: pode-se subdividir uma consulta que são executadas em paralelo
  • Crescimento incremental: cresce de acordo com a necessidade

Desvantagens

  • Aumento da sobrecarga de processamento: sistema deve encontrar o dados no nó correto
  • Maior chance de erros
  • Custo de desenvolvimento do software

Tipo de Sistemas de BDD

Características:
  • (Hetero)Homogeneidade: é a diferença de sistemas (ou SGBD) entre os bancos distribuídos. Um banco é homogêneo quando ele tem mesmo sistema em todos os nós.
  • Autonomia: quando cada local possui seu próprio banco de dados. O dados podem ser acessados em qualquer lugar, por isso, se um nó cair, o sistema continua funcionando obtendo o dado de outro nó.
  • Distribuição: é o quanto o banco é distribuído.

                          Autonomia    Distribuição   Heterogeneidade
Centralizado       total                 nenhuma          nenhuma
Puros                   nenhuma          alta                   nenhuma
Federado             media               alta                   alta 
Multibancos        alta                   alta                   alta

Dificuldades com bancos federados

  • Diferenças entre linguagens, restrições, interpretação quando um banco está muito distante, p.ex., Brasil x EUA.
  • Diferença entre nome de um dado, p.ex., mexerica, pocan, tangerina e bergamota. Os nomes referenciam ao mesmo produto, mas cada local tem um nome diferente.
  • Forma como realizar agregação de tabelas e resumos

Replicação 

  • Síncrona: o dado é replicado na mesma hora (traz overhead)
  • Assíncrona: o dado é replicado na hora que o SGBD achar melhor

Fragmentação

  • Horizontal: linhas de uma tabela
  • Vertical: colunas de uma tabela (exige o "id de tupla", maior sobrecarga)
  • Mista: SGBDs ainda não implementam 

Estrutura de um BDD

GT - é o mesmo componente do SGDB centralizado

Todo nó possui um Gerenciador de Transações (GT) que cooperam entre si para execução das transações. É responsável por manter o log, participa do controle de concorrência.

O coordenador de transações coordena as transações locais e globais. É responsavel por
  • iniciar uma transação; 
  • distribuir a transação nos nós apropriados;
  • coordernar a conclusão da transação.

Robustez

Um SGBD é robusto quando consegue detectar falhas, reconfigurar o sistema para continuar o funcionamento e recuperar a situação original.


Two-Phase Commit

Coordenador emite uma mensagem para o GT, dizendo que vai atualizar. O GT responde OK, o coordenador envia a mensagem para o GT com a forma para atualizar. Se o coordenador não responder um segundo OK ele aborta a transação.
São duas fases, uma o coordenador pergunta se pode atualizar e a outra confirma se foi atualizado.

Three-Phase Commit

Agora há um pré commit entre as duas fases do Two-Phase Commit. 





17 fevereiro, 2015

Gestão de Riscos

Gerência de Riscos


Classificação dos Riscos: Técnicos, Externos, Organizacionais e de Gestão de Projetos (cada um contém vários subtópicos).


Processo Gerenciamento de Riscos - Visão PMBOK

  • Planejamento da gestão de riscos
    • Decide como abordar, planejar e executar a gestão de riscos
    • Gera-se um plano de gestão de riscos
  • Identificação de riscos
    • Formas de identificar riscos: checklist, histórico, brainstorming, consultoria, etc.
  • Análise qualitativa de riscos: Avaliar dois fatores:
    • Probabilidade do risco ocorrer
    • Impacto (custo, escopo, tempo, qualidade)
  • Análise quantitativa de riscos
    • Determina a consequência de cada risco numericamente
    • Técnicas mais conhecidas são: Análise de Sensibilidade e Árvore de Simulação.
  • Planejamento de respostas a risco: Cinco respostas genéricas: 
    • Aceitar (duas formas: ativa e passiva)
    • Redução do risco (mitigação)
    • Ignorar
    • Transferência de Risco
  • Monitoramento e controle de riscos
    • O risco mudou de estado ou tendência? 
    • Plano de resposta ao risco

Riscos positivos:

  • Provocar: mexer na probabilidade do risco ocorrer
  • Compartilhar: Trabalhar com terceiros
  • Melhorar: Aumenta o tamanho da oportunidade
  • Aceitar: Espera o risco positivo acontecer

Visão MPS-BR

É consistente com PMBOK. Gerência de Risco - GRI


  • GRI-1: O escopo de gerencia de risco é determinado
  • GRI-2: As origens e categorias são determinados
  • GRI-3: As estratégias de gerência são definidas
  • GRI-4: Os riscos são identificados
  • GRI-5: Os riscos são priorizados, estimados e classificados
  • GRI-6: Planos para mitigação são desenvolvidos
  • GRI-7: Os riscos são analisados e prioridades determinadas
  • GRI-8: Os riscos são avaliados e monitorados para determinar mudanças
  • GRI-9: Ações apropriadas são executadas para corrigir ou evitar o impacto



Gerência de Requisitos

Trata-se de:
  • Mudanças nos requisitos
  • Relacionamento entre os requisitos
  • Dependência entre os documentos (ex. se alterar o escopo, vai alterar custo, prazo, etc)


Motivação


  • Erros em requisitos causam atrasos, software insatisfatório. 
  • Erros em requisitos são causados por: falta de compreensão, mudanças descontroladas.

A gerência de requisitos é responsável por minimizar esses erros. Pois garante, execução eficiente dos processos de ER e mudança controlada.



Fatores para mudanças de requisitos

  • Erros 
  • Evolução do conhecimento (os envolvidos passam a ter outras ideias com o passar do tempo)
  • Problemas técnicos (custo e prazo)
  • Problemas na implementação, vai demorar demais ou ser muito caro
  • Mudança na prioridade dos clientes
  • Mudanças de ambiente (tecnológico)
  • Mudanças organizacionais

Requisitos estáveis é o que não vai mudar para o cliente, voláteis são os que mudam classificados como mutáveis, emergentes, consequência e compatibilidade.

Gerenciamento de Mudança

São os procedimentos, processos e padrões usados para gerenciar as mudanças nos requisitos.

Problema identificado -> Análise do problema -> Análise da mudança e custo -> Implementação da Mudança -> Especificação Revisada


Rastreabilidade

Para percorrer do documento de requisitos até os arquivos fonte e vice-versa.






Processo de Engenharia de Requisitos

Processo de Engenharia de Requisitos


Como todo processo, possui uma entrada e uma saída. Como entrada, podemos receber, sistemas existentes, requisitos dos clientes, regulamentos, domínio, etc. Como saída, a própria especificação de requisitos de software.

Subprocessos

  • Estudo da viabilidade
    • Produz um relatório de viabilidade, se for viável, continua.
  • Elicitação e análise 
    • Leitura de documentos, entrevistas, organizar os requisitos
  • Detalhamento dos requisitos: São gerados os documentos:
    • Visão: Descrever as necessidades e características de alto nível do sistema
    • Espec. Requisitos: Detalha todos os requisitos do sistema
    • Modelo de Domínio: Voltado aos implementadores, diagramas UML
    • Casos de Uso: diagrama e textual
  • Validação
    • Verificar conflitos, é necessário implementar em termos de prazo, custo. Uma forma de validar é prototipar.

Dificuldades

  • Volatilidade dos requisitos
  • Clientes dispersos, numerosos
  • Clientes possuem objetivos conflitantes
  • Falta de tempo





16 fevereiro, 2015

Avaliação e Testes

Como é feita uma avaliação de usabilidade?
Através de testes de usabilidade, utilizando critérios de boa usabilidade para ver se atende os critérios.

Objetivos:
  • Avaliar a funcionalidade
  • Avaliar a interface
  • Identificar problemas específicos

Framework DECIDE para avaliar o usuário:
  • Determinar as metas do teste
  • Explorar as questões a serem respondidas
  • Escolher a melhor maneira para avaliar
  • Identificar problemas práticos
  • Decidir problemas ligados a ética
  • Avaliar, analisar e apresentar dados

Técnicas de avaliação

Revisão de software

Baseado em resultados existentes, o avaliador compara o produto com a documentação de outros resultados.

Card-sorting

Além de avaliar, também é uma maneira de especificar e projetar a interface. Colocar em cartões as informações que serão exibidas na tela e pedir para o usuário agrupar de acordo com a forma que ele acha mais adequado.

Heurísticas de Nielsen

  • Dialogo simples e natural (não carregar muito a interface)
  • Falar a linguagem do usuário
  • Minimizar a carga cognitiva
  • Ser consistente
  • Forneça feedback
  • Marcar claramente as saídas (undo e redo)
  • Flexibilidade e eficiência de uso
  • Mensagens de erros claras
  • Evitar e prevenir erros
  • Ajuda e documentação

Procedimentos de avaliação

  • Treinar as pessoas que vão fazer a avaliação;
  • Avaliação;
  • O resultado da avaliação é pontuado quanto ao grau de severidade;
  • Discutir os resultados (debriefing).

Erros típicos

  • Navegação
  • Desenho de interface / layout
  • Terminologia
  • Falta de feedback 
  • Consistência
  • Redundância
  • Controle (sistema dá ordens ao usuário)
  • Metáfora 

A avaliação é fundamental para a qualidade do produto. Deve ser feita várias vezes durante o processo.







Prototipação

Um dos aspectos mais importantes no design de interfaces.

Porque prototipar?

  • Avaliação;
  • Apresentação aos stakeholders;
  • Comunicação entre equipes;
  • Testar ideias;
  • Incentivo a reflexão;
  • Responder questões e escolher alternativas.


Fidelidade: é o nivel de detalhamento que possui um protótipo. Exemplos de baixa fidelidade: storyboard, wireframe.


Protótipos iniciais
  • Objetivo: testar globalmente a interação;
  • Fidelidade pode ser um pouco menor;
  • Deve incluir funções representativas;
Protótipos finais
  • Objetivo:  testar partes importantes ou ainda não resolvidas;

Dimensões do protótipo: classifica diferentes abordagens à prototipação, como:

  • Representação: como o desenho da interação é representado
  • Escopo: inclui todo o sistema ou só interface


Protótipo: Horizontal x Vertical


  • Horizontal: menor profundidade e maior largura, features do sistema. (mais usado em protótipos iniciais)
  • Vertical: Um menor numero de características em maior profundidade.
  • Global: Visualiza o sistema como um todo
  • Local: Somente uma parte do sistema

Riscos

  • Desenvolvedores não levam a sério o protótipo
  • Não deixar o usuário gerar expectativas falsas
  • Dificuldade no desenvolvimento de protótipos com pessoas que não estão acostumadas







Engenharia de Usabilidade

Demonstra o processo de engenharia necessário para se conseguir uma tela com boa usabilidade.

  • Planejamento - Desenvolvimento do Conceito
  • Pesquisa e Análise de necessidades
  • Conhecimentos dos usuários
  • Análise da concorrência
  • Análise de tarefas
  • Definição de requisitos e metas de usabilidade
  • Prototipação
  • Desenho interativo e refinamento
  • Avalição de usabilidade

Planejamento e análise de necessidades

Levantar os requisitos de interface do sistema, determinar o propósito, sequencia de tarefas, etc.

Concorrentes

Procurar nos concorrentes o que já foi implementado e como já foi. Não é preciso sair do zero.

Conhecer usuário

Quem é o usuario? Como usa o sistema? Quais a tarefas do dia-a-dia. Fazer analise dos perfis, o que usuario vai fazer o que?

Análise das Tarefas

O que o usuário gostaria de fazer, a ordem, a prioridade, os recursos que o usuário necessita para executar bem a tarefa.

Erros

Antecipar e minimizar a ocorrência de erros através da analise 

Metas

Definir metas, para melhorar a usabilidade. Por exemplo, um site de venda de livros, percebeu que havia muitas desistencias e definiu a meta de aumentar suas vendas, e para isso focou facilitar o aprendizado do sistema e aumentar a grau de satisfação do usuário.

Prototipação

Criar um pequeno modelo da interface desejada. Para conseguir informações importantes para o design de interface e de funcionalidades do sistema.

Desenho -> Prototipo -> Avaliação
                       <-  

Avaliação do Usuário

Observar o usuário utilizar o sistema, filmar, enviar interface para ser avaliada por terceiros, questionário, etc.



Engenharia de Usabilidade de Nielsen


  1. Conheça seu usuário
  2. Realize uma análise competitiva
  3. Defina metas de usabilidade
  4. Faça designs paralelos
  5. Adote o design participativo
  6. Faça o design coordenado da interface como um todo
  7. Aplique diretrizes e análise heuríticas
  8. Faça prototipos
  9. Realize testes empiricos
  10. Pratique design iterativo


Na UML, os diagramas de caso de uso e sequencia são o ponto comum entre os diagramas de desenvolvimento tradicional e usabilidade.






Princípios do design de interface


Principios auxiliam no projeto de interface, procuram atender a 3 pontos básicos: usabilidade, cognição e facilidade de comunicação.

4 Princípios gerais de um bom design


  • Estado e ação devem estar sempre visiveis
  • Casar modelo conceitual com imagem consistente do sistema
  • Incluir mapeamentos que revelam relações entre estágios
  • Fornecer a todo tempo feedback ao usuário (Ex: aguarde...)

8 regras de ouro no design de interfaces

  • Seja consistente: mesma cor e nome para mesmo botoes em telas diferentes.
  • Otimize as operações do usuário: forneça recursos como atalhos, macros, etc.
  • Oferecer feedback significativo: não mostrar mensagem de erro com código.
  • Tarefas com principio, meio e fim bem definidos
  • Oferecer prevenção e tratamento de erros
  • Perdoar erros: permitir desfazer (undo)
  • Reduzir a quantidade de informações que devem ser memorizadas
  • Reduzir a carga de memória de curto prazo


4 pontos críticos de falhas de design


  • Usuários podem formar metas inadequadas à sua intenção
  • Usuários podem não encontrar o objeto de interface correto
  • Usuário não consegue especificar como realizar tarefa
  • Usuário pode receber feedback confuso








Princípios da Interação Humano-Computador

Definições de Usabilidade

Capacidade que um sistema interativo oferece a seu usuário, em um determinado contexto de operação, para a realização de tarefas de maneira eficaz, eficiente e agradável. (ISO 9241)

 Facilidade com que um usuário pode aprender a operar, preparar entradas para e interpretar as saídas de um sistema ou componente. (IEEE)


Cognição: série de habilidades cerebrais necessárias para obtenção de conhecimento.
É importante estimular o usuário usar aspectos cognitivos para aprender a usar o software.


Modelos de abordagens entre ser-humano e software

Em todos os modelos de aceitação de software, criados por Donald Norman, Shackel, Nielsen, ISO 9241 possuem a Usabilidade como uma de suas caracteristicas.


Requisitos de uma boa usabilidade

Podem ser usados para avaliar um requisito ou interface.
  • Facilidade de aprendizado: quanto tempo e esforço para que consiga desempenhar tarefas;
  • Facilidade de Uso: Está relacionado com a cognição. Quanto de esforço o usuário tem para usar o software;
  • Produtividade: avalia se a produtividade do usuário aumentou usando o software;
  • Flexibilidade: Possibilidade do usuário customizar seu ambiente de trabalho;

É importante reconhecer as características do usuário ao desenvolver um software