Gerenciando POSTGRESQL com o BASE (Libreoffice)

Susviela Blog´s

Veja como é simples realizar conexões ao gerenciado de banco de dados Postgresql com o Base do LibreOffice (tudo software livre).

Com uma interface visual similar a do MSAccess o BASE facilita muito o gerenciamento de banco de dados (tabelas, consultas, formulários e relatórios).

Para esse exmplo estou usando o Postgresql 9.2  e o LibreOffice 4.1.

Passo  1: (escolha Conectar a um banco de dados existente  e depois postgreSQL)

Abra o BASE Abra o BASE

Passo 2: Digite (dbname=seubanco hostaddr=IPseuServidor port=5432)

Digite as informações de conexão Digite as informações de conexão

Passo 3: Digite o nome do usuário do Banco de Dados no PostgreSQL e marque “Senha obrigatória”

Digitando nome do usuário POSTGRESQL Digitando nome do usuário POSTGRESQL

Passo 4: Clique em Testar a conexão, você deve receber uma mensagem “A conexão foi estabelecida com exito”, caso contrário revise suas configurações no passo 2.

Testando a Conexão Testando a Conexão

Passo 5: No Base (LibreOffice) já conectado você tem acesso aos recursos do programa e pode…

Ver o post original 20 mais palavras

Usar Phonegap no AndroidStudio

Susviela Blog´s

Estudando a viabilidade de usar “PhoneGap” HTML5, JS, CSS para gerar apps Android.

Objetivo: Usar Phonegap no AndroidStudio

1) Download JDK – Compilador Java

http://www.oracle.com/technetwork/pt/java/javase/downloads/index.html

2) Preparar o ambiente windows

2.1 – Criar as variáveis de ambiente:

 JAVA_HOME —> C:Program FilesJavajdk1.7.0_25 (onde foi instalado o JDK por exemplo)

 CLASSPATH —> .%JAVA_HOME%;

 Explicando: O ponto (.) no inicio da linha indica que quando a variável %CLASSPATH% for chamada além de procurar no %JAVA_HOME% procura a aplicação também no diretório. O ponto e vírgula (;) serve para separar locais diferentes.

Agora vamos configurar o PATH essa variável de ambiente já existe, vamos ADICIONAR o conteúdo: ;%JAVA_HOME%bin

Fonte da pesquisa: http://devsubdev.wordpress.com/2010/06/04/dica-configurando-as-variaveis-de-ambiente-do-jdk-no-windows/ ( acessado em 02/09/2013 )

Verifique com os seguintes comandos no prompt se está tudo funcionando.

 java -version

javac -version

2) Vou considerar que você já tem o Android Studio instalado / atualizado e funcionando, caso contrário só baixar…

Ver o post original 249 mais palavras

Preparando o ambiente Netbeans para desenvolver App Android

Susviela Blog´s

Estudando a viabilidade de usar “PhoneGap” HTML5, JS, CSS para gerar apps Android.

Objetivo: Preparar ambiente Netbeans para criar aplicações Android.

Baixar JDK – Java

Criar as variáveis de ambiente para JDK ( JAVA_HOME = C:Program FilesJavajdk1.7.0_25 )

Baixar/instalar – Netbeans ( https://netbeans.org/downloads/ ) 

Baixar/Instalar – PhoneGap ( http://phonegap.com/install/ )

Baixar/instalar Android-SDK ( http://developer.android.com/intl/es/sdk/index.html ) Escolher a opção USE AN EXISTING IDE

Observação: mude o caminho de instalação para C:android-sdk (tem histórico de problemas no caminho padrão)

O SDK é uma base para desenvolvimento e ao iniciar o programa após a instalação precisamos escolher qual a versão Android vamos desenvolver, marcando a caixa de seleção.

Eu vou marcar

[ x ] Android 4.3

[ x ] Android 2.3.3

Depois clique em [Instal xx pakages]

Marque em aceitar licenças e o download começa….. aguarde (dependendo do número de pacotes selecionados pode demorar bastante).

Aproveite esse tempo do download para adicionar a…

Ver o post original 162 mais palavras

Olá mundo ! com PhoneGap

Susviela Blog´s

Estudando a viabilidade de usar “PhoneGap” HTML5, JS, CSS para gerar apps Android.

Se você não leu o texto anterior, faça isso agora: http://susviela.wordpress.com/2013/09/10/instalando-o-phonegap/

Bom..

A proposta de hoje é desenvolver um aplicativo, o tradicional “Ola Mundo..!”, e disponibilizar para download no BUILD para instalar no seu Android.

1) Abra o prompt de comando e digite:

C:UsersSeuNome> phonegap create appola

após alguns segundos vai aparecer

[phonegap] created project at C:UsersSeuNomeappola

 Agora se você for pelo Explorador do Windows na pasta appola já existe uma estrutura de projeto criada, na pasta que realmente importa para nós nesse momento a www existe um arquivo chamado index.html (use o seu editor favorito para editar o conteúdo desse arquivo), veja que não tem nada de especial nele, só html5, JS e CSS;

Mude as linhas:

<title>Olá mundo!</title>

<h1>Meu primeiro APP Android</h1>

Salve as alterações;

Vamos voltar para o prompt de comando e digitar:

C:UsersSeuNome>…

Ver o post original 151 mais palavras

Código para efetuar o efeito Fade no mouse-over

$(document).ready(function(){
$(‘div’).mouseenter(function() {
$(‘div’).fadeTo(‘fast’, 0.5);
});
$(‘div’).mouseleave(function() {
$(‘div’).fadeTo(‘fast’, 1);
});
});

Ambiente e tecnologia vão mudar a aparência dos humanos em 100 mil anos

1001310_10151808035269705_2103132792_n

Se os seres humanos são tão diferentes do que eram nos primórdios da sua existência, já imaginou como serão daqui a 100 mil anos? Movidos pela curiosidade, um artista e um geneticistajuntaram-se para fazer uma previsão da nossa futura aparência, sobretudo depois de anos usando tecnologias como o Google Glass.

Nickolay Lamm inspirou-se em estudos do especialista em genética Alan Kwan, da Universidade de Washington, para criar as imagens, que são baseadas em previsões científicas de como serão o planeta, o clima e a tecnologia no futuro.

De acordo com as ilustrações, o tamanho da testa dos humanos, que já tem vindo aumentando ao longo dos séculos, vai ficar maior. No geral, a nossa cabeça será maior, tendo em conta que o nosso cérebro também irá crescer e desenvolver-se.

Se tudo correr como é previsto e o homem conseguir colonizar outros planetas mais próximos do sol, a nossa pele ficará mais bronzeada.

Já a falta de gravidade vai engrossar as nossas pálpebras e o arco superciliar, situado por cima dos olhos, será mais proeminente. OS olhos, como se nota, irão ficar maiores. Aliás, ”absurdamente maiores”, de acordo com os especialistas. Vamos ainda poder ver em ambientes cada vez mais escuros.

Por fim, às mudanças impostas pelo ambiente e pelo tempo, vão juntar-se as transformações causadas pela adaptação a tecnologias como o Google Glass, que serão cada vez mais discretas.

Confira a sequência abaixo:

Hoje: Fotos de um homem e mulher de aparência normal

Hoje: Fotos de um homem e mulher de aparência normal

Em 20.000 anos: cabeça maior, com uma testa que é sutilmente muito grande. Lentes de Comunicações é representada pelo anel amarelo em torno dos olhos. Lens será o Google Glass do futuro.

Em 20.000 anos: cabeça maior, com uma testa que é sutilmente muito grande. Lentes de Comunicações é representada pelo anel amarelo em torno dos olhos. Lens será o Google Glass do futuro.

Em 60.000 anos: cabeça ainda maior. Olhos grandes, pele pigmentada. Dispositivos de condução por ossos em miniatura implantados acima da orelha agora trabalhando com as lentes de comunicação.

Em 60.000 anos: cabeça ainda maior. Olhos grandes, pele pigmentada. Dispositivos de condução por ossos em miniatura implantados acima da orelha agora trabalhando com as lentes de comunicação.

Em 100 mil anos: Irritantemente grandes olhos. Verde "brilho dos olhos" do tapetum lucidum, como gatos. Arco superciliar mais evidente. Dispositivos de condução por ossos  implantados acima da orelha e trabalho com as lentes de comunicação como na imagem acima.
Em 100 mil anos: Irritantemente grandes olhos. Verde “brilho dos olhos” do tapetum lucidum, como gatos. Arco superciliar mais evidente. Dispositivos de condução por ossos implantados acima da orelha e trabalho com as lentes de comunicação como na imagem acima.

Chrome Web Store – Gerador e Validador de CPF e CNPJ

Gerador e Validador de CPF e CNPJ
O Gerador/Validador de CPF e CNPJ foi desenvolvido com o propósito de auxiliar Programadores, Analista de Teste, Analistas de Sistemas e Estudantes a testarem seus softwares. 

Vantagens da extensão: 
Disponível off-line;
Não é um executável (roda direto no browser);
Maior agilidade ao criar Massa de Teste.

Funcionalidades: 
Gerador CPF/CNPJ (apenas números);
Gerador CPF/CNPJ (com mascará);
Validador CPF/CNPJ.

A má utilização desse conteúdo é de total responsabilidade do usuário. 

Sem vínculos com a Receita Federal.

by ACSC Informática

Baixe neste link: https://chrome.google.com/webstore/category/apps

Dicas para certificação CBTS

Caros candidatos à Certificação Brasileira de Teste de Software, o ”resumão” abaixo foi elaborado pelo Jonathan Rodrigo, ele o utilizou como referência complementar na prova do ano passado.

Aproveite para ver também: Simulado – Certificacao CBTS

Erro: Falha humana, normalmente é classificada como erro uma linha de código.

FURPS: É um modelo metodológico (do RUP)

Estágios, fases ou níveis de testes: Unitário / Integração/Sistema / Aceite.

Principal objetivo do teste: Encontrar o maior número de defeitos.

Custo do Software: O custo do software é o valor do desenvolvimento+o valor da manutenção.

Automação: Na certificação quando se falar de automação, estarão se referenciando á todo o processo de teste, deste seu planejamento, elaboração dos casos de testes e sua entrega.

Risco: Não existe risco 0% e nem 100%, para ser realmente um risco ele estará entre 10% á 90%.

Risco: Possibilidade de falha x prejuízo causado pela falha.

“Uma das maneiras de reduzir os riscos do software é testá-lo adequadamente”

Fluxo de gerenciamento de riscos
Fluxo de gerenciamento de riscos

Modelo V: É o modelo que mostra a integração das atividades de desenvolvimento e teste de software, seu principal objetivo é mostrar o paralelismo entre as atividades.

Regra 10 de Myers: Prega que quando mais cedo o defeito/erro ou falha for encontrado mais barato será o seu ajuste.

Rex Black

Bohem

Estratégia de teste: Para elaborar uma estratégia é necessário saber O Que iremos testar, Como estes teste irão ser realizados e Quando, em qual momento será executado os testes.

Definições:

  • O Que: Neste momento levantamos as características da qualidade que iremos dar atenção nos testes.
  • COMO: Quais técnicas de teste iremos utilizar para atender os testes referentes às características levantas.
  • QUANDO: Em qual Estagio/Fase ou Nível iremos realizar os teste.

Ambiente de teste: O livro define ambiente de teste todas as pessoas envolvidas, os hardwares e softwares que farão parte do projeto.

Plano de Teste: É onde todas as definições do projeto de teste devem constar, por exemplo: A definição do ambiente de teste.

Os apontamentos dos riscos mais críticos, pois cada projeto tem suas particularidades e é no plano de teste onde definimos as regras (escopo) do projeto.

Preparação dos Volumes: Esta atividade é realizada na elaboração dos casos de teste.

Definição de Risco: Risco é a probabilidade de algo acontecer ou não trazendo benéficos ou malefícios ao projeto. (Chance de falhar x prejuízo causado).

Analise de risco: Na analise de risco é levado em conta a Probabilidade e a Criticidade, EX:

  • Se Probabilidade baixa e Criticidade alta = Risco Médio.
  • Se Probabilidade média e Criticidade baixa = Risco Baixo.

Testware: São todos os documentos que são gerados no projeto, obs.* todos estes documentos devem ser armazenados na ferramenta de GC

Mitigação: É a forma de controlamos um risco que ainda NÃO aconteceu, para que ele não venha se tornar uma realidade.

Contingência: Quando o Risco ACONTECEU, então Iniciamos o plano de contingência “Outra estratégia” resumindo o plano B.

Formas de Estabelecer um risco (QAI).

  • Intuição ou discernimento: Onde um técnico experiente usa sua intuição aliada com sua experiência e aponta um risco que se ocorrer ira custar muito caro seu concerto.
  • Consenso: A equipe entra em consenso referente á probabilidade de um risco acontecer.
  • Formula de Risco: O risco é calculado através de uma formula onde existem dados financeiros que permitem medir o custo da perda pela ocorrência do risco.
  • Estimativas de perdas anuais: É a combinação do consenso com a fórmula de risco.

Artefato de saída do Planejamento: O artefato de saída do planejamento é o PLANO de TESTE.

Quando é necessário criar mais de um plano de teste para um mesmo projeto?

Segue abaixo a exemplificação:

plano de teste
Só para lembrar “tudo que acontecer na definição estará dentro do PLANO DE TESTE”.

Teste de Aceite

  • Responsável: Usuário
  • Objetivo: garantir que o que foi solicitado foi criado e se este funcionado corretamente.

Estar APTO ou FIT: Este termo é o mais utilizado para dizer que o software está pronto ou dentro das conformidades de aceite.

Para a fase do Aceite é necessário criar um plano de Aceite.

Gerenciamento de defeitos: Esta atividade é realizada no momento da execução dos testes, onde observamos quantos Bug´s estão sendo abertos/ Fechados.

Gestão de defeitos: É a melhoria continua, realizando prevenção dos defeitos, ele se inicia desde o inicio do projeto.

Baseline: Fotografia do momento atual do projeto.

Diferença de Baseline e GC:

Baseline é o projeto geral e GC é de doc á doc.

Releases: São oriundos das baselines, são utilizadas para entregas para o teste ou produção.

Alguns detalhes importantes na hora de reportar os Defeitos:

  • -Resumir: Reportar claramente, mas de forma resumida.
  • – Precisão: É um defeito ou poderia ser um erro do usuário EX: Erro de entendimento. Portanto, descrever realmente o que foi executado para que a falha fosse detectada.
  • -Neutralizar: Reportar apenas os fatos, sem humor, sem emoções.
  • -Isolar:
  • – Generalizar: Procurar entender o problema de forma genérica.
  • – Reproduzir: Reproduzir um defeito ao menos duas vezes antes de reportá-lo
  • -impacto: Qual o impacto deste defeito para o cliente?
  • -Evidencie: Evidencie a existência do defeito encontrado

Relatórios IEEE

  • Log de teste
  • Relatório de incidentes
  • Relatório sumário

APT: para se ter o APT (Analise de ponto de teste) é necessário ter o APF(Analise de ponto de função). O APF mede somente o teste Unitário e de Integração.

O APT observa TAMANHO e ESFORÇO.

Se tiver muitas funcionalidades é pior para controlar.

Se tiver poucas ferramentas de gerenciamento é pior para controlar.

O que o APT analisa para seu calculo?

O APT analisa o Tamanho do sistema, avalia a estratégia e o nível de produtividade da equipe.

PTDF – Ponto de teste Dinâmico de uma funcionalidade

PF-Tamanho da função em ponto de função

Se a equipe é MAIS qualificada, MENOR será o QET

QET – Qualificação da equipe de teste

AT – Ambiente de Teste

HTP – Horas de teste primárias.

O QET varia de 0,7 á 2.0

Formula:

QET + AT = HTP

Referência: Base de conhecimento em teste de Software

Veja também: Simulado – Certificacao CBTS

ACSC Informática

Extensões no Google Chrome para desenvolvedores web

Abaixo segue várias dicas sobre como utilizar um navegador como recurso de desenvolvimento web.

 

Blank Canvas Gmail Signatures: Serve para colocar assinaturas com HTML no GMAIL;

Chrome Web Developer Tools: Retira elementos e marcações da página;

Chromium Delicious plugin: Salva páginas diretamente para o Delicious;

Feedly: Ótimo leitor de Feeds;

Gmail – folders4gmail: Cria diretórios (pastas) no GMAIL;

Minimize Chrome to tray: Cria um ícone na sua área de notificação quando você miniminiza o Chrome.

Pixlr Grabber: Editor de imagens on-line. Semelhante ao Aviary Screen Capture

Session Buddy: Salva sessões para você ler posteriormente.

Em minha humilde opinião as extensões do FIREFOX ainda são superiores à do CHROME. Porém deve-se descontar o pouco tempo em que o navegador do Google foi lançado. Para trabalho prefiro o FIREFOX, mas para uma navegação ordinária o CHROME é mais rápido.

Speed Tracer

Veja as estatísticas do site

Speed Tracer é uma ferramenta que ajuda na identificação e correção de problemas de performance em aplicações de um website. Ela visualiza métricas direto do seu navegador e efetua uma análise sobre como sua aplicação corre através dele.

Eye Dropper

Ótimo para fazer uma paleta de cores

A extensão dupla Eye Dropper e Color Picker permite você escolher qualquer cor da página ou de uma avançada paleta que já vem no aplicativo.

Firebug Lite

Veja como o HTML e CSS se comportam em tempo real

Firebug Lite é uma ferramenta para desenvolvedores web que permite edição, debug, monitoramento de CSS, HTML e JavaScript em tempo real em qualquer página web.

Atualmente, (29/05/10) O Firebug Lite não está implementado no Chrome tão bem como está no Firefox.

Chrome SEO

Otimização de Buscas

A extensão Google Chrome SEO provê fácil acesso para a otimização de buscas o que pode ajudar você com Analíse Competitiva, Pesquisas de Palavra Chave, Checagens, Checagens de PageRank e outras tarefas de SEO diárias.

Pendule

Tenha controle sobre a demonstração da página

Pendule mostra estilos em cascata renderizados na página atual em uma nova aba.

Aviary Screen Capture

Editar Imagens OnLine

Faça uma cópia de qualquer página web e edite-a diretamente em seu navegador com as aplicações do Aviary.com.

Resolution Test

Modifique a resolução da página

Resolution Test muda o tamanho da janela do navegador para que o desenvolvedor receba uma prévia do seu website em diferentes resoluções de tela. Ele inclui uma lista das resoluções mais comuns bem como uma opção para configurar a entrada de acordo com a sua preferência.

PlainClothes

CSS, o mais básico possível

Essa extensão coloca ou retira estilos. Imagine só: texto é preto, fundos são brancos, links não lidos são azuis, visitados são roxos, todos os links são sublinhados. Ou qualquer outra cor que você quiser.

Snippy

Compartilhe pedaços da página

Snippy permite você retirar pedaços de páginas web, e salvá-los no Google Docs, para usá-los no futuro.

FlashBlock

Bloqueia o Flash indesejado

Flashblock permite bloquear todo o conteúdo em Flash. No lugar das animações ele deixa atalhos na página para que você faça o download se desejar baixar o conteúdo em flash.

IE Tab

Veja como a página fica no IE sem ter que abrí-lo em separado

Utiliza o Internet Explorer para mostrar páginas web em uma aba do Chrome. Alguns sites podem somente ser mostrados usando IE, e com esta extensão você poderá ver todos os sites sem fechar o Chrome.

Validity

Validação de páginas

Validity pode ser utilizado para validar rapidamente seus documentos HTML direto da barra de endereços.

BuiltWith Technology Profiler

Veja todas as aplicações que rodam na página

BuiltWith Technology Profiler é uma ferramenta para criar um perfil da página web. Ao verificar uma página, BuiltWith retorna todas as aplicações que ele pode entrar nela.

MeasureIt!

Serve para medir trechos e elementos da sua página

Clique na régua e selecione o trecho da página com a largura e a altura que você deseja.

LastPass

Administrador de Senhas

LastPass é um gestor de senhas grátis e online. Acaba com os formulários e faz seu navegador mais fácil e mais seguro.

Tags: complementos • Desenvolvimento Web • extensões • flash • google • html • navegador • SEO • validação

Leia Também

Novidades do Firefox 4

Os seis melhores complementos do Firefox para desenvolvimento web

Comparação de frequência de visitantes de um site de acordo com o browser

Firefox – Mais extensões Surpreendentes

Ietab, SyntaxHighlighter e SmartPageRank

Introdução à Engenharia de Requisitos

Introdução à Engenharia de Requisitos

Desenvolver software é uma atividade complexa por natureza. Uma das razões para esta afirmação é que não existe uma única solução para cada cenário de desenvolvimento. Além disso, lidamos o tempo todo com pessoas, o que torna o sucesso do projeto bastante relacionado à competência da equipe e à forma como trabalham, e, para dificultar ainda mais, muitas vezes não fazemos uso de um processo bem definido para apoiar as atividades do projeto.

Entende-se por processo, neste contexto, como sendo um conjunto de atividades bem definidas com os respectivos responsáveis por execução, ferramentas de apoio e artefatos produzidos. Ou seja, define-se como a equipe deverá trabalhar para alcançar o objetivo: desenvolver software com qualidade dentro de prazos, custos e requisitos definidos.

A boa notícia é que muitas empresas estão se movimentando no sentido de definirem detalhadamente seus processos para apoiarem suas atividades de desenvolvimento. Uma recente matéria publicada na revista Exame relata o crescimento do número de empresas que atingiram níveis de maturidade considerando modelos como MPS.BR e CMMI. Este resultado é um forte indicador de que as empresas nacionais estão se preocupando com a qualidade dos serviços que oferecem, conseguindo, dessa forma, uma inserção maior no mercado internacional de desenvolvimento de software.

Neste artigo, faremos uma introdução à Engenharia de Requisitos, atividade base para as demais tarefas associadas ao desenvolvimento de software.

Engenharia de Software e Requisitos

Vimos na introdução que se busca cada vez mais o apoio dos fundamentos da engenharia de software no desenvolvimento de sistemas. Entendemos engenharia de software como sendo, de acordo com o IEEE, a aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, operação e manutenção de software. Sistemática por que parte do princípio de que existe um processo de desenvolvimento definindo as atividades que deverão ser executadas. Disciplinada por que parte do princípio de que os processos definidos serão seguidos. Quantificável por que se deve definir um conjunto de medidas a serem extraídas do processo durante o desenvolvimento de forma que as tomadas de decisão relacionadas ao desenvolvimento do software (por exemplo, melhoria de processo) sejam embasadas em dados reais, e não em “achismos”. Alguns de seus principais objetivos são:

  • Qualidade de software;
  • Produtividade no desenvolvimento, operação e manutenção de software;
  • Permitir que profissionais tenham controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados.

Entretanto, o cenário de desenvolvimento de software atual e o cenário idealizado junto à engenharia de software ainda estão distantes. Vários fatores contribuem para isso, podemos citar dois:

  • não uso dos fundamentos da engenharia de software para apoiar as atividades do desenvolvimento;
  • mau uso dos fundamentos da engenharia de software para apoiar as atividades do desenvolvimento.

Isso tem diversas conseqüências. Gostaríamos de destacar neste artigo o crescente custo com manutenção dos sistemas. Consideramos como manutenção neste artigo como sendo qualquer retrabalho (em nível de requisitos, projeto, codificação, teste) causado por uma definição do domínio do problema mal elaborada nas fases iniciais do desenvolvimento.

  • 16,2% dos projetos são finalizados com sucesso, ou seja, cobre todas as funcionalidades em tempo e dentro do custo previsto;
  • 52.7% dos projetos são considerados problemáticos, ou seja, não cobre todas as funcionalidades exigidas, custo aumentado e está atrasado.
  • 31,1% dos projetos fracassam, ou seja, o projeto é cancelado durante o desenvolvimento.


O Standish Group ainda fez uma análise sobre os fatores críticos para sucesso dos projetos de software. O resultado dos dez mais lembrados pode ser visto na Tabela 2. Podemos perceber que três dos principais fatores estão relacionados às atividades de requisitos: (1) Requisitos Incompletos; (2) Falta de Envolvimento do Usuário; (6) Mudança de Requisitos e Especificações.

Fatores Críticos

 %

1. Requisitos Incompletos

13.1%

2. Falta de Envolvimento do Usuário

12.4%

3. Falta de Recursos

10,6%

4. Expectativas Irreais

9,9%

5. Falta de Apoio Executivo

9,3%

6. Mudança de Requisitos e Especificações

8,7%

7. Falta de Planejamento

8,1%

8. Sistema não mais necessário

7,5%


Neste ponto, sabemos que um trabalho mais criterioso na área de requisitos é fundamental para o sucesso de projetos de software. A partir da próxima seção conheceremos a definição de requisitos e algumas de suas definições relacionadas antes de discutirmos mais profundamente a engenharia de requisitos.

Requisitos

Existem diferentes definições encontradas na literatura técnica para requisitos:

  • Um requisito é uma característica do sistema ou a descrição de algo que o sistema é capaz de realizar para atingir os seus objetivos;
  • As descrições das funções e restrições são os requisitos do sistema;
  • Um requisito é uma propriedade que o software deve exibir para resolver algum problema no mundo real;
  • Uma condição ou uma capacidade que deve ser alcançada ou estar presente em um sistema para satisfazer um contrato, padrão, especificação ou outro documento formalmente imposto…

Percebe-se que as citações encontradas definem o mesmo conceito sob diferentes perspectivas. Podemos entender requisitos como sendo o conjunto de necessidades explicitadas pelo cliente que deverão ser atendidas para solucionar um determinado problema do negócio no qual o cliente faz parte. É importante estar atento para esta definição: embora o requisito seja definido pelo cliente, nem sempre o que o cliente quer é o que o negócio precisa. Cabe à equipe de consultores identificar a real necessidade do negócio.

Neste contexto, requisitos são importantes para:

  • Estabelecer uma base de concordância entre o cliente e o fornecedor sobre o que o software fará;
  • Fornecer uma referência para a validação do produto final;
  • Reduzir o custo de desenvolvimento (como vimos anteriormente, requisitos mal definidos causam retrabalho).

Entendida a definição de requisitos, é preciso conhecer seus tipos.

Requisitos funcionais

São requisitos diretamente ligados a funcionalidade do software, descrevem as funções que o software deve executar. Alguns exemplos são:

  • O software deve permitir o cadastro de clientes;
  • O software deve permitir a geração de relatórios sobre o desempenho de vendas no semestre;
  • O software deve permitir o pagamento das compras através de cartão de crédito.

Requisitos não funcionais

São requisitos que expressam condições que o software deve atender ou qualidades específicas que o software deve ter. Em vez de informar o que o sistema fará, os requisitos não-funcionais colocam restrições no sistema. Alguns exemplos são:

  • O software deve ser compatível com os browsers IE (versão 5.0 ou superior) e Firefox (1.0 ou superior);
  • O software deve garantir que o tempo de retorno das consultas não seja maior do que 5 segundos.

Requisitos de domínio

São requisitos derivados do domínio da aplicação e descrevem características do sistema e qualidades que refletem o domínio. Podem ser requisitos funcionais novos, restrições sobre requisitos existentes ou computações específicas. Dois exemplos de requisitos do domínio são:

  • O calculo da média final de cada aluno é dado pela fórmula: (Nota1 * 2 + Nota2 * 3)/5;
  • Um aluno pode se matricular em uma disciplina desde que ele tenha sido aprovado nas disciplinas consideradas pré-requisitos.

A partir da próxima seção apresentaremos os conceitos envolvidos na engenharia de requisitos.

Engenharia de Requisitos

Existem diferentes definições encontradas na literatura técnica para engenharia de requisitos:

  • Termo usado para descrever as atividades relacionadas à investigação e definição de escopo de um sistema de software;
  • Processo sistemático de desenvolvimento de requisitos através de um processo cooperativo de análise onde os resultados das observações são codificados em uma variedade de formatos e a acurácia das observações é constantemente verificada;
  • Processo de descobrir, analisar, documentar e verificar as funções e restrições do sistema.

Embora coerentes, estas definições podem ser melhoradas. Perceba que elas referem-se apenas às atividades relacionadas à produção de requisitos. Entretanto, nada é dito a respeito da gerência destas atividades, também conhecida como gerência de requisitos. Com isto em mente, podemos evoluir a definição de engenharia de requisitos para: termo usado para descrever as atividades relacionadas à produção (levantamento, registro, validação e verificação) e gerência (controle de mudanças, gerência de configuração, rastreabilidade, gerência de qualidade dos requisitos) de requisitos.


Desta forma, os dois conceitos base (produção e gerência) devem ser considerados em conjunto ao se definir estratégias de trabalho com requisitos nas organizações.

Neste ponto podemos citar alguns dos principais objetivos da engenharia de requisitos:

  • estabelecer uma visão comum entre o cliente e a equipe de projeto em relação aos requisitos que serão atendidos pelo projeto de software;
  • registrar e acompanhar requisitos ao longo de todo o processo de desenvolvimento;
  • documentar e controlar os requisitos alocados para estabelecer uma baseline para uso gerencial e da engenharia de software;
  • manter planos, artefatos e atividades de software consistentes com os requisitos alocados.

Para apoiar o alcance destes objetivos, é importante que se tenha um processo de engenharia de requisitos bem definido. Um processo de engenharia de requisitos é um conjunto estruturado de atividades a serem seguidas para criar, validar e manter um documento de requisitos. Poucas organizações têm um processo de ER explicitamente definido e padronizado. Entretanto, sugere-se que cada organização deva desenvolver um processo adequado à sua realidade. A Figura 5apresenta um modelo genérico de atividades que pode descrever a maioria dos processos de engenharia de requisitos.

Apesar do aparente fluxo entre as atividades, não existe uma fronteira explícita elas. Na prática existe muita sobreposição e interação entre uma atividade e outra.

Como entradas para o processo são consideradas:

  • Descrições do que os stakeholders necessitam para suportar suas atividades;
  • Informações a respeito do sistema que será substituído ou de qualquer sistema com o qual o sistema sendo definido terá que interagir;
  • Padrões vigentes na organização a respeito de práticas de desenvolvimento de sistemas, gerência de qualidade, etc.;
  • Regulamentos externos, tais como leis, regulamentos de segurança ou saúde;
  • Informações gerais sobre o domínio de aplicação.

A partir de agora conheceremos cada um dos conceitos que, em conjunto, definem a engenharia de requisitos.

Produção de Requisitos

A cada fase do ciclo de vida do software produzimos um documento contendo uma representação distinta do software a ser construído. Cada um desses documentos representa o software em um determinado nível de abstração. A tendência é diminuirmos o nível de abstração através da inclusão de mais e mais detalhes, até que, sua última representação seja o código fonte na linguagem escolhida.

Um dos artefatos produzidos no início do processo de desenvolvimento de software é a sua especificação de requisitos. Ele é base para as demais atividades de desenvolvimento e sua qualidade é fundamental para o sucesso do projeto. Uma especificação de requisitos bem elaborada é pré-requisito para um software de qualidade, embora não seja garantia disso. Desta forma, durante a produção de requisitos devemos possuir, além das atividades essenciais de levantamento e especificação, atividades relacionadas à garantia da qualidade. Conheceremos nesta seção as quatro atividades base relacionadas com a produção de requisitos.

 

Levantamento

Esta atividade relaciona-se à obtenção dos requisitos do software. Para isto, analistas e engenheiros de software trabalham com clientes e usuários finais para descobrir o problema a ser resolvido, os serviços do sistema, o desempenho necessário, restrições de hardware e outras informações.

Existem algumas técnicas que apóiam as atividades de levantamento de requisitos. Uma breve descrição de algumas delas é:

  • Entrevista: esta técnica resume-se em “conversas” realizadas com o usuário (entrevistado) para levantar os requisitos do sistema a ser desenvolvido. Podemos decompor esta técnica nas seguintes atividades:
  •        Ler material de suporte;
  •        Estabelecer os objetivos da entrevista;
  •        Decidir quem entrevistar;
  •        Preparar o entrevistado;
  •        Decidir os tipos de questões e a sua estrutura.

Uma entrevista pode ser estruturada de três diferentes formas:

  •        Estrutura em pirâmide: iniciamos as entrevistas com perguntas mais especificas sobre o sistema e fechamos com perguntas mais genéricas. Geralmente utilizadas com usuários mais relutantes;
  •        Estrutura em funil: iniciamos as entrevistas com perguntas mais genéricas sobre o sistema e fechamos com perguntas mais especificas. Geralmente utilizadas com usuários que tem uma relação mais afetiva com o assunto;
  •        Estrutura em diamante: esta estrutura combina as duas estruturas anteriores e é utilizadas para manter a usuário entrevistado interessado no assunto e para isto se utiliza de perguntas variadas.
  • Prototipação: é uma versão inicial de um sistema para experimentação. Permite aos utilizadores identificar os pontos fortes e fracos do sistema por ser algo concreto que pode ser criticado. Temos dois tipos de protótipos:

o       Protótipos “Throw-away”: ajudam o levantamento e desenvolvimento dos requisitos e suportam os requisitos mais difíceis de perceber;

o       Protótipos Evolutivos: ajudam o desenvolvimento rápido de uma versão inicial do sistema e suportam os requisitos bem definidos e conhecidos.

Algumas das desvantagens da prototipação são os custos de aprendizagem e os custos de desenvolvimento.

  • JAD (Joint Application Development): é uma técnica que permite a interação entre pessoas que necessitam tomar decisões que afetem múltiplas áreas de uma organização. Esta técnica envolve atividades de preparação para as reuniões, sessões de workshop com os participantes, agenda para as reuniões, participantes assumindo papeis de facilitador / condutor e documentador além de facilidades visuais, como a utilização de flipchart, quadro negro.

Esta técnica deve ser utilizada nos casos onde existe a necessidade de consenso entre diversos usuários, pois possibilita a todos os envolvidos ter uma visão global do sistema, ajudando a consolidar interesses de diversos usuários quanto ao sistema a ser desenvolvido.

O objetivo desta técnica é aumentar o comprometimento e participação do usuário e obter subsídios para elaborar o documento de Especificação de Requisitos para o sistema com consenso de todos de forma a ser uma validação formal dos requisitos do sistema.

A atividade de levantamento de requisitos não é trivial. Existe um conjunto grande e variado de fatores que a tornam complexa, por exemplo:

  • Falta de conhecimento do usuário das suas reais necessidades
  •        Usuário com vaga noção do que precisa e do que um produto de software pode oferecer.
  • Falta de conhecimento do desenvolvedor do domínio do problema
  •        Desenvolvedor sem conhecimento adequado do domínio, o que leva a decisões erradas.
  • Domínio do processo de levantamento de requisitos pelos desenvolvedores
  •      Desenvolvedor não ouve o que os usuários têm a dizer e força suas próprias visões e interpretações.
  • Comunicação inadequada entre os desenvolvedores e usuários
  •        Usuários incapazes de expressar suas necessidades apropriadamente;
  •        Significados diferentes a termos comuns.
  • Dificuldade do usuário tomar decisões
  •      Falta de entendimento sobre as conseqüências das decisões ou as alternativas possíveis.
  • Problemas de comportamento
  •        O levantamento de requisitos é um processo social;
  •        Conflitos e ambigüidades nos papéis que os usuários e desenvolvedores desempenham.
  • Questões técnicas
  •         Complexidade crescente dos sistemas atuais.

 

Registro

Uma vez identificados e negociados, os requisitos devem ser documentados para que possam servir de base para o restante do processo de desenvolvimento.

Entre os muitos problemas que enfrentamos na documentação de requisitos, certamente, administrar o grande volume de informações gerado pelo processo de requisitos é um dos principais.

Os requisitos são documentados em um nível apropriado de detalhe. Em geral é produzido um documento de especificação de requisitos, de forma que todos os stakeholders possam entendê-lo.

O registro dos requisitos num documento próprio facilita o controle de alterações de todos os envolvidos na manutenção dos requisitos, bem como a geração de versões do documento e a facilidade de acesso por todos os envolvidos.

Verificação

Esta atividade examina a especificação do software, de forma a assegurar que todos os requisitos foram definidos sem ambigüidades, inconsistências ou omissões, detectando e corrigindo possíveis problemas ainda durante a fase de definição dos requisitos.

Neste contexto, sabe-se que o custo da correção de defeitos aumenta na medida em que o processo de desenvolvimento progride. Revisões de artefatos de software têm se mostrado uma abordagem eficiente e de baixo custo para encontrar defeitos logo após terem sido introduzidos, reduzindo o retrabalho e melhorando a qualidade dos produtos. Não é em vão que modelos de maturidade de processo de software, como o CMMI e o MPS BR exigem a condução de revisões.

Um tipo particular de revisão de software são as inspeções. Inspeções possuem um processo de detecção de defeitos rigoroso e bem definido. Os benefícios de se aplicar inspeções são maiores para artefatos desenvolvidos no início do processo, como o documento de requisitos. Conheceremos um pouco mais sobre inspeção de software em um segundo artigo a ser publicado na segunda edição da Engenharia de Software Magazine.

 

Validação

A validação representa a atividade em que obtemos o aceite do cliente sob determinado artefato. No cenário de engenharia de requisitos, esta atividade significa aprovar junto ao cliente os requisitos que foram especificados. Embora aparentemente simples, esta atividade pode ser bastante dificultada pelo cliente ou mesmo por um processo de validação inadequado utilizado pela empresa.

Gerência de Requisitos

Requisitos são por natureza voláteis. Diversos fatores contribuem para sua instabilidade ao longo do tempo. Mudanças externas no ambiente (mudanças de legislação, mudanças no mercado, mudança no posicionamento estratégico da empresa), erros incorridos no processo de requisitos, entre outros. Todos esses fatores fazem com que seja necessário alterar os requisitos. Tais alterações precisam ser conduzidas de forma ordenada para que não se perca controle sobre o prazo e o custo do desenvolvimento.

Denominamos a atividade de administrar os requisitos ao longo do tempo de gerenciamento de requisitos. Os benefícios desta atividade são percebidos no médio prazo, sendo que são necessários investimentos no curto prazo. Assim, a atividade é, muitas vezes, tida como um fardo desnecessário à condução do processo. Contudo, sua não implementação faz com que as economias de curto prazo sejam logo suplantadas pelas despesas no longo prazo, verificadas com superação de custo e prazo nos projetos conduzidos.

Veremos a partir de agora algumas das atividades que devem ser consideradas durante a gerência dos requisitos.

 

Controle de Mudanças

Conforme foi citado anteriormente, os requisitos são voláteis e, portanto sofrem mudanças ao logo do tempo, para conduzir estas mudanças recomenda-se preparo e planejamento. Uma das maneiras bastante utilizadas para organizar estas mudanças é a “baseline” de requisitos que nos permite diferenciar o que era o requisito original, o que foi introduzido e o que foi descartado. Além disto, é interessante estabelecer um único canal para controle de mudanças, bem como utilizar um sistema para este controle.

  Apresentamos a seguir uma sugestão de passos que devem ser seguidos para um processo de controle de mudança:

  • Checar validade da solicitação de mudança;
  • Identificar os requisitos diretamente afetados com a mudança;
  • Identificar dependências entre requisitos para buscar os requisitos afetados indiretamente;
  • Assegurar com solicitante a mudança a ser realizada;
  • Estimar custos da mudança;
  • Obter acordo com usuário sobre o custo da mudança.

Após a realização desta análise, podemos aceitar ou rejeitar a mudança, conforme os impactos e custos que ela pode ter no sistema.

 

Gerência de Configuração

Durante o ciclo de vida do desenvolvimento, o software passa por uma série de modificações, desde a especificação dos requisitos até a implantação do sistema. A gerência de configuração de software existe no intuito de definir critérios que permitam realizar tais modificações mantendo-se a consistência e a integridade do software com as especificações, minimizando problemas decorrentes ao processo de desenvolvimento, através de um controle sistemático sobre as modificações.

A criação de um plano de gerência de configuração consiste em estabelecer normas, ferramentas e templates que permitam gerenciar de maneira satisfatória os itens de configuração de um sistema, que são definidos por Pressman como: “cada um dos elementos de informação que são criados durante o desenvolvimento de um produto de software, ou que para este desenvolvimento sejam necessários, que são identificados de maneira única e cuja evolução é passível de rastreamento”.

Em cada fase do processo de desenvolvimento, um conjunto bem definido de itens de configuração deve ser estabelecido. A este conjunto é dado o nome de baselines. Estas baselines servem como marco no processo de desenvolvimento, pois ao final de cada fase é estabelecida uma nova baseline e, portanto, todos os itens de configuração estão sob total controle de seus desenvolvedores. Desta forma, nesta baseline é guardada “uma foto” dos artefatos criados até aquele momento:

  • tornando mais fácil realizar modificações nos artefatos de maneira controlada;
  • possibilitando ter um controle sistemático sobre todos os itens de configuração abordados em cada fase do ciclo de vida do software, e;
  • tornando possível que sejam realizadas, mais facilmente, avaliações sobre seu grau de evolução.

 

Rastreabilidade

No centro da atividade de gerenciamento de requisitos está a rastreabilidade. Esta é definida como a habilidade de se acompanhar a vida de um requisito em ambas as direções (por exemplo: partindo de requisitos e chegando a projeto ou, partindo de projeto e chegando a requisitos) do processo de software e durante todo o seu ciclo de vida.

A dificuldade envolvida com a rastreabilidade está no grande volume de informações gerado. As informações do processo de requisitos devem ser catalogadas e associadas aos outros elementos de forma que possam ser referenciadas através dos diversos itens de informação registrados. É um trabalho extenso que, sem o auxílio de ferramentas adequadas, muito provavelmente não poderá ser feito

Para implementar a rastreabilidade, usualmente é confeccionado em conjunto com a especificação de requisitos um artefato chamado matriz de rastreabilidade, que tem como objetivo mapear os rastros dos requisitos descritos na especificação.

Os rastros dos requisitos podem ser de dois tipos:

  • Pré-rastreabilidade: os rastros (artefatos: plano de negocio, atas de reunião com o usuário) que fundamentaram a criação do requisito.
  • Pós-rastreabilidade: os rastros (artefatos: código, documentos) que se formaram a partir do requisito criado.

Gerência de Qualidade de Requisitos

Segundo o padrão IEEE 830, devemos considerar alguns critérios de qualidade ao trabalharmos com requisitos:

  • Correção: um documento de requisitos é considerado correto se todos os requisitos representam algo que deve estar presente no sistema que está sendo desenvolvido, ou seja, os requisitos reais do usuário devem coincidir com os requisitos identificados. Esta não é uma tarefa trivial e parte de seu sucesso está associada a uma boa atividade de validação dos requisitos.
  • Não ambigüidade: um conjunto de requisitos é não ambíguo quando somente pode ser interpretado por todos os envolvidos em um projeto de uma única maneira.
  • Completude: um conjunto de requisitos é dito completo quando descreve todas as demandas de interesse dos usuários. Estas demandas incluem requisitos funcionais, de desempenho, restrições, atributos e interfaces externas.
  • Consistência: um conjunto de requisitos é dito consistente se nenhum subconjunto destes requisitos entra em conflito com os demais requisitos do sistema.
  • Verificabilidade: um requisito é verificável se existe uma forma efetiva, em termos de tempo e custo, para que pessoas ou ferramentas indiquem se um sistema cumpre o requisito (IEEE). Em quase todas as situações, é difícil provar de forma conclusiva que um requisito é cumprido por um software. Entretanto, escrever bem o requisito pode ajudar a aumentar a confiança na avaliação.
  • Modificabilidade: um conjunto de requisitos é modificável quando seu estilo e estrutura é tal que as alterações podem ser realizadas de forma simples e consistente com os demais requisitos.

A gerência, neste cenário, é responsável por manter uma infra-estrutura necessária para atividades de verificação que tornem possível investigarmos a qualidade dos requisitos que estamos definindo.

Artigo da Revista Engenharia de Software.