Gerência - Ciclo de Vida de Desenvolvimento

A importância do levantamento de requisitos no sucesso dos projetos de software

Esse artigo pretende descrever resumidamente a relação entre o bom levantamento de requisitos e o sucesso dos projetos de software.

por Márcio Andrade Silva



A tarefa de desenvolvimento de software engloba uma série de fases e atividades que independentemente da metodologia escolhida, ocorrem para a realização do seu objetivo maior: entregar software funcionando corretamente dentro do orçamento e prazos previstos para o seu desenvolvimento.

Para atingir os objetivos do projeto, todas as atividades de desenvolvimento tem que ser criteriosamente elaboradas e desenvolvidas, seja usando uma abordagem de desenvolvimento mais rica em documentação tais como o poderoso UP (Unified Process) ou as excelentes metodologias ágeis (XP, SCRUM, etc). Assim sendo, em qualquer uma delas encontraremos com maior ou menor rigor e formalização, atividades de análise de requisitos, design, definição de arquitetura, codificação e outras. Um trabalho consistente de análise dos requisitos, ou seja, identificar, quantificar, definir, priorizar e classificar os principais problemas que o futuro software deve resolver é a base de um projeto de software de sucesso.

Muita ênfase é dada pelos profissionais de T.I. nas atividades de projeto e codificação. Isso deve-se em boa parte a formação dada aos profissionais de T.I. pelas universidades, que focam em suas grades curriculares principalmente em disciplinas técnicas e cientificas. Tem muito a ver também com perfil pessoal e cultural dos profissionais que atuam na área em geral, formada eminentemente por técnicos, bastante interessados em bits e bytes e pouco afetos a assuntos administrativos. Isso tem mudado bastante recentemente, pois os profissionais de T.I. têm percebido a importância da relação entre negócio e T.I. Entretanto, a atividade de levantamento de requisitos é de fundamental importância para que se construa o software certo, ou seja, é necessário antes de mais nada que os envolvidos no projeto de software saibam exatamente o que é esperado do aplicativo a ser construído. É muito importante também que todos os envolvidos saibam igualmente o que o software não fará. Isso pode parecer óbvio, mas nem sempre fica claro para todos os envolvidos do projeto sobre qual é a fronteira da aplicação. A fronteira da aplicação pode ser entendida como uma linha imaginária que circula e define objetivamente, dentre os requisitos de software, quais serão automatizados e quais não serão.

É fundamental definir corretamente o que vem a ser um requisito: é uma especificação de uma característica ou propriedade que um sistema deve possuir ou fazer, assim como sua restrição de operação. Os requisitos podem ser definidos por diversas classificações tais como: requisitos de negócio, funcionais, não funcionais, etc. Larga documentação existem sobre o tema, tanto em livros como na Internet, portanto esse artigo não vai se prolongar sobre o assunto.

Toda metodologia de desenvolvimento de software (MDS) propõe uma série de fases e atividades dentro do seu ciclo de vida e o encadeamento entre elas. Independentemente do nome dado a cada fase é extremamente recomendável que o processo contemple ao menos dois grandes grupos de atividades referentes a requisitos, que poderíamos chamar aqui de:
  • Especificação de requisitos - São todas as atividades realizadas para identificar, analisar, especificar e definir as necessidades de negócio que um aplicativo deve prover para solução do problema levantado. Requisitos que não refletem as reais necessidades dos usuários, incompletos e/ou inconsistentes, mudanças em requisitos que já foram previamente acordados e a dificuldade para se chegar a um acordo entre profissionais de T.I. e usuários são os maiores problemas enfrentados no grupo de atividades de especificação de requisitos.

  • Gestão de requisitos - Preocupa-se com a documentação, versionamento, controle de mudanças e qualidade dos requisitos levantados na fase de especificação de requisitos. Todo requisito apresenta um ciclo de vida único que acompanha a dinâmica dos negócios associados. Assim sendo, não se pode esperar que um requisito seja imutável ao longo do tempo, uma vez que o negócio do qual o requisito se desprende é dinâmico.
O gerente de um projeto de desenvolvimento de software deve atentar para a importância do correto entendimento das necessidades do aplicativo e deve disponibilizar seu(s) melhor(es) analista(s) para realizar a atividade de levantamento de requisitos. Essa etapa bem realizada servirá como uma fundação firme para a realização das atividades seguintes do projeto. È de suma importância que o gerente do projeto envolva-se ou designe alguém capacitado para a realização da gestão de escopo do projeto, inclusive criando um método criterioso de controle de mudanças. Não se dever confundir criterioso com burocrático. Muitas empresas cientes do problemas ocasionados por falta da correta gestão de escopo, tentam "blindar" os requisitos do projeto, tornando qualquer alteração morosa e difícil, cercada de documentos e assinaturas que muitas vezes provocam o efeito contrário ao desejado. É importante que todos os envolvidos no projeto busquem harmonizar seus interesses em prol da consecução dos objetivos do projeto.

Concluindo, podemos afirmar que sem uma correta definição e gestão dos requisitos do aplicativo é praticamente certo que o projeto terá o seu sucesso comprometido, frustando as expectativas do cliente e comprometendo as metas e planos da empresa contratante.
Márcio Andrade Silva

Márcio Andrade Silva - Formado em análise de sistemas pela FAFI-BH.
Pós graduado em Engenharia de Software pela PUC Minas.
MBA em Gestão de Negócios pela UNA - BH