Desenvolvimento de software de qualidade. Fundamentos essenciais.


By: Eduardo Almeida- 20/10/2011
Em: Server side, Ambientes & Linguagens - Comentários: 0 - Leituras: 317

Diferentemente do que muitos pensam, para se obter um software de qualidade, ser bom programador e dominar uma linguagem de programação não é o suficiente. Para criar softwares de qualidade é necessário muito mais do que um bom programador e uma boa linguagem de programação.

Inicialmente, todo sistema tem um propósito e uma necessidade de criação. Nenhum desenvolvedor ou empresa irá criar um software que não será usado por ninguém. Dessa forma um software sempre deverá ser criado para atender às necessidades de alguém. E essas necessidades podem e devem ser "traduzidas" em requisitos.

A análise e especificação de requisitos de um software consiste nas atividades de determinar os objetivos de um sistema de software e as restrições associadas a ele.

Esta análise também deve estabelecer o relacionamento entre estes objetivos e restrições e a especificação precisa do software

A maior parte dos problemas no desenvolvimento de software são originados nas etapas iniciais do desenvolvimento justamente na etapa de levantamento e definição dos requisitos do sistema onde as principais atividades são:

  • elicitação,
  • análise, 
  • especificação, 
  • gerenciamento
  • validação de requisitos.


Havendo falhas na realização em uma dessas atividades, haverá inconsistência nos documentos de requisitos e o que acarretará um software de baixa qualidade com um custo elevado.

Então o que é um requisito de software ?

Os requisitos expressam as características e restrições do produto de software do ponto de vista de satisfação das necessidades do usuário, e, em geral independem da tecnologia empregada na construção da solução sendo a parte mais crítica e propensa a erros no desenvolvimento de software.

Requisitos são objetivos ou restrições estabelecidas por clientes e usuários do sistema que definem as diversas propriedades do sistema. Os requisitos de software são, obviamente, aqueles dentre os requisitos de sistema que dizem respeito a propriedades do software.

Um conjunto de requisitos pode ser definido como uma condição ou capacidade necessárias que o software deve possuir:

  1. para que o usuário possa resolver um problema ou atingir um objetivo

    ou
     
  2. para atender as necessidades ou restrições da organização ou dos outros componentes do sistema.


Na maioria dos casos, os requisitos de software são separados em requisitos funcionais e não-funcionais.

Os requisitos funcionais são a descrição das diversas funções que clientes e usuários querem ou precisam que o software faça. Eles definem a funcionalidade desejada do software.

O termo função é usado no sentido genérico de operação que pode ser realizada pelo sistema, seja através comandos dos usuários ou seja pela ocorrência de eventos internos ou externos ao sistema.

São exemplos de requisitos funcionais:

  • "o software deve possibilitar o cálculo dos gastos diários, semanais, mensais e anuais com pessoal".
  • "o software deve emitir relatórios de compras a cada quinze dias"
  • "os usuários devem poder obter o número de aprovações, reprovações e trancamentos em todas as disciplinas por um determinado período de tempo.

A especificação de um requisito funcional deve determinar o que se espera que o software faça, sem a preocupação de como ele faz.

É importante diferenciar a atividade de especificar requisitos da atividade de especificação que ocorre durante o design do software.

No design do software deve-se tomar a decisão de quais a funções o sistema efetivamente terá para satisfazer àquilo que os usuários querem.

Requisitos não-funcionais são as qualidades globais de um software, como:

  • manutenibilidade,
  • usabilidade,
  • desempenho, 
  • custos 
  • várias outras. 

Normalmente estes requisitos são descritos de maneira informal, de maneira controversa (por exemplo, o gerente que segurança mas os usuários querem facilidade de uso) e são difíceis de validar.

São exemplos de requisitos não-funcionais:

  • "a base de dados deve ser protegida para acesso apenas de usuários autorizados".'
  • "o tempo de resposta do sistema não deve ultrapassar 30 segundo".
  • "o software deve ser operacionalizado no sistema Linux"
  • "o tempo de desenvolvimento não deve ultrapassar seis meses".


A necessidade de se estabelecer os requisitos de maneira de forma precisa é crítica na medida que o tamanho e a complexidade do software aumentam. Os requisitos exercem influência uns sobre os outros.

Por exemplo, o requisito portabilidade, que muitas vezes faz o desenvovedor achar que deve usar Java para desenvolver, acaba influenciando diretamente no requisito "ser rápido". Softwares em java geralmente são "pesados".

Uma boa especificação de requisitos deve ser:

  • Clara e não-ambígua
  • Completa
  • Correta
  • Compreensível
  • Consistente
  • Concisa
  • Confiável

De acordo com Farley, um documento de especificação de requisitos deve possui as seguintes seções:

  • Visão geral do produto e Sumário
  • Ambientes de desenvolvimento, operação e manutenção
  • Interfaces Externas e Fluxo de Dados
  • Requisitos Funcionais
  • Requisitos de Desempenho
  • Tratamento de Exceções
  • Prioridades de Implementação
  • Antecipação de mudanças e extensões
  • Dicas e diretrizes de Design
  • Critérios de aceitação
  • Índice Remissivo
  • Glossário

Construir um sistema de software com base em requisitos inconsistentes e mal discriminados é como construir um edifício sem vigas.

Referências :

http://www.dimap.ufrn.br/~jair/ES/es99c3.html - Jair C Leite, 1999


Por favor, confirme ser uma pessoa respondendo abaixo:

Comentários

não há comentários, seja o primeiro a comentar

buscar na WEB2:

pesquisar

receber nossa newsletter:

participar da newsletter

Desde de 1998 ...
a WEB2 vêm desenvolvendo sites, softwares, implementando ambientes servidores, prestando consultoria na área de segurança para diversas empresas como bancos, imobiliárias, agências, cartórios, escritórios de advocacia e até empresas multi-nacionais. Trabalhamos para criar experiências intuitivas para os usuários, desenhar interfaces ricas e elegantes, desenvolver aplicativos úteis, consolidar sites e produtos que ajudamos a criar, seja desenvolvendo, analisando ou melhorando sua performance. Resumindo, construímos "business" para internet.


Copyright © 2012 WEB2 Soluções LTDA. CNPJ: 14.832.733/0001-05. Microsoft Partner

PostgreSQL Perl