Os requisitos não vieram de hoje, a sua necessidade já foi confirmada há muito tempo, mas ainda é comum ver empresas que falam aos quatro ventos que trabalham com requisitos e, na verdade, não sabem diferenciar um requisito de uma Constraint.
Hoje vou falar mais de requisitos, dizendo o que são e o que não são requisitos, bem como qual a relação deles com as Constraints. Pretendo falar um pouco mais dos tipos de requisitos e quanto tempo devemos gastar com eles.
Um requisito tem que atender a duas premissas básicas, se você não atender a essas duas premissas, logo você não tem um requisito. Vamos então:
Se não satisfaz esses itens acima, não é um requisito. Infelizmente muitos analistas nem sabem o que é isso. Muitos vieram do velho modelo em que o analista de Sistemas era o "cara" e hoje em dia não é mais, alguns consideram que ele perdeu seu papel.
Levantar requisitos não significa ouvir o usuário, não é simples assim. Na verdade você tem que descobrir o que o usuário deseja de verdade, e isso não é fácil. Existem algumas técnicas para você fazer isso, pretendo falar disso em outros artigos.
Muitas vezes o cliente não tem tempo para fornecer as informações necessárias ao analista de Requisitos, isso acontece mais ainda quando a sua empresa é de TI e o seu cliente não é de TI, em empresas onde existe um equipe de TI interna é mais fácil obter informações dos usuário.
Não é fácil levantar requisitos e um requisito mal levantando gera muita dor de cabeça e custos adicionais no futuro. Neste caso, se você trabalha em um equipe de TI interna, isso gera mais stress, agora se você está em uma empresa de TI e o seu cliente não é de TI, e você está em escopo fechado, em termos de custo não é um problema para sua empresa, mas para o cliente sim, isso ocorrendo com muita freqüência pode levar ao fracasso do projeto.
E não adianta ficar só reclamando do cliente, ele pode não colaborar 100% e ajudar na elicitação, logo seus requisitos seriam bem vagos, mas seu software terá que ser especifico e detalhado, logo é bom gastar o tempo suficiente nesta tarefa mesmo que isso signifique educar o cliente.
O Caramba!!! É comum ver por aí o pensamento de que só quem é desenvolvedor tem que ser técnico, como se o o gerente e analistas não precisassem ser técnicos. O Gerente tem que ser técnico em gestão, assim como o analista de Requisitos tem que ser técnico em Requisitos.
Ser técnico, nestes dois casos, significa conhecer práticas, técnicas, métodos, padrões, etc... Isso tudo não vem só com a prática, você precisa de estudo. Só estudando é possível obter essas coisas. Mas só com a prática que você aprende a usá-las da forma correta.
Você
não usa requisitos para definir a solução, ou seja, vai ser em Java,
vou usar MVC básico e tudo vai rodar no JBoss 5. Se existem essas
questões que falei agora, elas são tratadas como restrições e não
requisitos, logo elas devem ser mapeadas como Constraints. Para
poder lidar bem com essas questões junto com os requisitos, falando de
gestão de requisitos, é necessária uma boa ferramenta de requisitos.
Métodos de desenvolvimento de software como RUP e OpenUP são focados em requisitos através de Casos de uso. Utilizam casos de uso porque casos de uso são bons para representar a perspectiva do usuário e favorecem um contexto muito bom. O TOGAF, que é um método de Arquitetura Corporativa, também é focado em requisitos, tanto para o TOGAF como para o RUP/OpenUP a Arquitetura é construída a partir do Requisitos.
Arquitetura de Software que é construída sem requisitos não é arquitetura. Em projetos pequenos essa abordagem errante pode funcionar em alguns casos. Mas casos de projetos mais complexos podem gerar muitos problemas e, até mesmo, o fracasso do projeto.
Telas são importantes, bem como boas amigas aliadas as técnicas de prototipação para ajudar a validar e considerar informações com o usuário, mas telas e botões são solução, e não são requisitos.
Requisitos nunca são perfeitos, e não existe um tempo certo pré-determinado para ser gasto com isso. Se você trabalha de forma iterativa incremental. essa questão não é um problema, mas em um projeto de escopo fechado, com tempo e recursos fechados, isso pode ser um problema.
Existem os dois tipos clássicos de requisitos que são os Funcionais e os Não-Funcionais. Os requisitos Funcionais são específicos dos produtos, ou seja, se referem ao que o sistema deve fazer, em termos de funcionalidades, para o negócio do seu cliente. Já os requisitos Não-Funcionais são as qualidades que o seu produto deve ter, ou seja, quanto tempo é aceitável para dar retorno ao usuário em uma consulta, qual a disponibilidade mínima do sistema, entre outras questões.
Outro tipo de requisito é o requisito Candidato, este tipo pode ser utilizado no processo de elicitação de requisitos, você pode tratar primeiramente todos os seus requisitos como candidatos e tempos da validação e aceite do cliente ele vira um requisito de fato.
Requisitos de Usabilidade, quase ninguém usa ou sabe o que são. Assim como a preocupação com usabilidade é quase nula nos sistemas que existem por aí. Existem vários outros tipos, inclusive existem diversos padrões de requisitos como por exemplo: Estrutura de Dados, Aprovação, Avaliabilidade, Relatórios, etc... Se você quiser saber mais sobre esses padrões, pode conferir este livro: Software Requirement Patterns.
Análise, Desenvolvimento e Gestão de Requisitos são necessidades nas empresas que querem ter sucesso. Isso é válido independentemente da tecnologia e da metodologia de sua empresa. Requisitos não significam burocracia ou página de MS Word sem valor, mas sim o que o sistema deve fazer e o que o cliente precisa.
Para isso é necessário analistas de requisitos com capacitação para o mesmo. Essa capacitação não vem só com a prática. Precisamos aliar os estudos à prática. Levantar requisitos não é fácil e não se aprende a fazer isso apenas ouvindo o usuário, é preciso se perguntar os porquês das coisas.
Abraços e até a próxima.
2001 - iMasters FFPA Informática Ltda - Todos os direitos reservados.