Transparência de Software

De Grupo de Engenharia de Requisitos PUC-Rio

Tabela de conteúdo

SIG de Transparência

Imagem:SIG-transparencia.jpg



Operacionalização dos atributos de Transparência

Usabilidade

Definição: capacidade de uso.


Uniformidade

Definição: capacidade de manter uma única forma.

Operacionalizações:

  • Padronizar a criação de nomes
  • Padronizar o estilo de programação
  • Padronizar a divisão das partes
  • Padronizar as formas de utilização
  • Padronizar a apresentação


Amigabilidade

Definição: capacidade de uso sem esforço.

Operacionalizações:

  • Usar ajuda sensível ao contexto (software)
  • Usar wizards (software)
  • Usar técnicas de IHC (software)


Simplicidade

Definição: capacidade de não apresentar dificuldades ou obstáculos

Operacionalizações:

  • Minimizar a passagem de parâmetros atômicos.
  • Padronizar documentação.
  • Minimizar o uso de variáveis.
  • Definir a função que será executada por cada módulo.
  • Cada modulo deve possuir uma unica função.
  • Possuir wizard de instalação
  • Destacar as funções mais utilizadas


Operabilidade

Definição:(de software) - Capacidade de estar operacional.

Operacionalizações:

  • Estar hábil para funcionar.
  • Permitir diversos níveis de acesso para ser controlado pelo usuário.
  • Executar as tarefas previstas nos cenários.
  • Ser auto-descritivo.
  • Ter capacidade de ser reconhecido como um componente único.


Intuitividade

Definição: capacidade de ser utilizado sem aprendizado prévio

Operacionalizações:

  • Usar construções canônicas das linguagens de representação
  • Usar padrões conhecidos
  • Facilitar o reconhecimento de padrões utilizados
  • Maximizar a estrutura de controle do tipo seqüência
  • Evidenciar estruturas de controle do tipo iteração e seleção
  • Minimizar tamanho de sentenças ou modulos
  • Utilizar o vocabulario minimo e do dominio
  • Minimizar o número de variáveis/constantes por sentença ou modulo


Adaptabilidade

Definição: capacidade de ser alterado de forma a atender novas necessidades ou mudança de contexto.

Operacionalizações:

  • Usar parâmetros
  • Dividir em módulos coesos
  • Ter código aberto
  • Aplicar estratégias de variabilidade


Desempenho

Definição: capacidade de operar adequadamente

Operacionalizações:

  • Definir requisitos de desempenho
  • Usar recursos adequadamente
  • Avaliar parâmetros definidos


Auditabilidade

Definição: capacidade de exame analítico.


Validade

Definição: capacidade de ser testado por experimento ou observação para identificar se o que está sendo feito é correto. Capacidade de ser avaliado por experimento ou observação para identificar se está de acordo com as expectativas dos usuários.

Operacionalizações:

  • Possuir mecanismos para validar o atendimento das condições iniciais e finais
  • Definir mecanismos de validação
  • Usar técnicas de simulação de uso do software


Controlabilidade

Definição: capacidade de ter domínio

Operacionalizações:

  • Definir os pontos de controle
  • Definir politicas de acompanhamento
  • Permitir execução com acompanhamento
  • Indicar desvios (realizado X planejado)
  • Manter o software associado com informações de versionamento/configuração


Verificabilidade

Definição: Capacidade de identificar se o que está sendo feito é o que deve ser feito.

Operacionalizações:

  • Usar as normas na produção de software
  • Anexar requisitos ao código
  • Usar ambiente que permita verificação


Rastreabilidade

Definição:capacidade de seguir o desenvolvimento ou a construção de uma informação, suas mudanças e justificativas.

Operacionalizações:

  • Manter o software associado com informações de versionamento/configuração
  • Identificar claramente o relacionamento entre as diferentes partes do software
  • Utilizar especificações de pre e pos condição
  • Possibilitar a navegação entre documentos de origem e documentos resultantes
  • Possibilitar a identificação de fontes de informação geradoras de documentos
  • Possibilitar a navegação entre versões de um mesmo documento


Explicação

Definição: capacidade de informar a razão de algo. Capacidade de informar a razão de determinada característica do código.

Operacionalizações:

  • Usar referências aos episódios e cenários correspondentes

nos trechos de códigos correspondentes (método/função/procedimento)

  • Usar referências as definições do léxico para nomes

de estruturas de dados (váriáveis, constantes) e funções/métodos/procedimento.

  • Usar a bula do software para explicação global


Acessibilidade

Definição: capacidade de obtenção.


Portabilidade

Definição: Capacidade de ser usado em diferentes ambientes

Operacionalizações:

  • Permitir execução em diferentes plataformas.
  • Utilizar formatos abertos
  • Permitir o acesso ao software a partir de diferentes plataformas.
  • Permitir a utilização do software a partir de diferentes plataformas.


Disponibilidade

Definição: capacidade de ser utilizado no momento em que for necessário.

Operacionalizações:

  • Ser possível fazer download
  • Utilizável no endereço conhecido
  • Utilizável 24X7


Publicidade

Definição: capacidade de se tornar público.

Operacionalizações:

  • Utilizar mecanismos de divulgação do software
  • Otimizar a descrição de palavras chaves visando maquinas de buscas
  • Disponibilizar em bibliotecas publicas conhecidas
  • Indexar o Software por palavra-chave seguindo um esquema de classificação previamente definido
  • Manter a configuração associada as hierarquias do domínio


Entendimento

Definição: capacidade de alcançar o significado e o sentido.


Dependência

Definição: capacidade de identificar a relação entre as partes de um todo.

Operacionalizações:

  • Identificar existência de informações sobre dependência
  • Identificar interfaces entre as partes
  • Identificar relações entre variáveis e partes


Compositividade

Definição: capacidade de construir ou formar a partir de diferentes partes.

Operacionalizações:

  • Identificar partes
  • Identificar interfaces entre as partes
  • Formar uma unidade a partir da reunião das partes


Detalhamento

Definição: capacidade de descrever em minúcias.

Operacionalizações:

  • Usar decomposição de dados(variáveis) / funções (comandos)
  • Usar nomes adequados
  • Explicar o software


Divisibilidade

Definição: capacidade de ser particionado.

Operacionalizações:

  • Identificar partes
  • Dividir o todo no maior número de partes coesas, preservando integridade das partes
  • Particionar dados(variáveis) com integridade


Concisão

Definição: capacidade de ser resumido.

Operacionalizações:

  • Criar partes apenas com o estritamente necessário
  • Criar apenas as partes estritamente necessárias
  • Abstrair detalhes
  • Programação econômica


Informativo

Definição: capacidade de prover informações com qualidade.


Clareza

Definição: capacidade de nitidez e compreensão

Operacionalizações:

  • Descrever modulos, funções, termos e variáveis utilizadas.
  • Identificar as políticas e regras de negocio utilizadas.
  • Oferecer fontes alternativas de informação.
  • Fornecer ajuda sobre a execução.
  • Descrever arquitetura

Consistência

Definição: capacidade de resultado aproximado de várias medições de um mesmo item? Capacidade de não violar restrições de integridade durante sua execução.

Operacionalizações:

  • Usar blocos para manipulação/tratamento de exceções, verificando

a consistência e lançando exceções caso a consistência seja comprometida.

  • Verificar a observação das restrições previamente definidas
  • Verificar se pós-condições do cenário anterior são equivalentes

as pré-condições do cenário atual, e se continuam válidas (se não houve mudanças entre a execução)

  • Verificar através de Teste de integração


Integridade

Definição: capacidade de ser correto e imparcial.

Operacionalizações:

  • Verificar o antendimento às pré-condições (previamente definidas)

antes da execução de um trecho de código (método/função/procedimento)

  • Verificar o antendimento às pós-condições (previamente definidas)

após a execução de um trecho de código (método/função/procedimento)

  • Verificar o funcionamento para entradas "inesperadas"

(teste do macaco)


Corretude

Definição: capacidade de ser isento de erros.

Operacionalizações:

  • Ter capacidade de cumprir com a sintaxe do ambiente onde esta sendo desenvolvido.
  • Verificar através de teste unitário.
  • Verificar se sempre que as pré-condições estejam estabelecidas, as pós-condições sejam atendidas.


Acurácia

Definição: capacidade de execução isenta de erros sistemáticos.

Operacionalizações:

  • Estabelecer intervalo aceitável de desvios
  • Testar através de simulaçao para um grande número de entradas possíveis


Atualização

Definição: capacidade de ser usado em diferentes ambientes

Operacionalizações:

  • Permitir execução em diferentes plataformas.
  • Utilizar formatos abertos
  • Permitir o acesso ao software a partir de diferentes plataformas.
  • Permitir a utilização do software a partir de diferentes plataformas.

Completeza

Definição: capacidade de não faltar nada do que pode ou deve ter

Operacionalizações:

  • Permitir analise das necessidades funcionais são atendidas
  • Permitir analise das qualidades demandadas são atendidas
  • Permitir analizar se o código é descrito por documentos auxiliares
  • Possibilitar que diferentes interessados possam ter suas demandas consideradas


Comparabilidade

Definição: Capacidade de ser comparado (Avaliação Restaurante A, B, C)

Operacionalizações:

  • Permitir acesso ao software e seus artefatos (ex: código fonte, requisitos, casos de teste)
  • Permitir armazenar resultados para comparação
  • Permitir avaliação através de métricas padrão
Ferramentas pessoais
Linhas de Pesquisa
reuniões do grupo
Languages