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 SilvaA 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:
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.
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.
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.
- Change Management ou a Gestão da MudançaMetodologias e Processos
- Integrando o Sub Version com o Visual StudioCiclo de Vida de Desenvolvimento
- Definição Ágil de User Stories – Toda história deve ter um início felizMetodologias e Processos
- Visual Studio Team System: mais qualidade aos times de desenvolvimento de softwareCiclo de Vida de Desenvolvimento
- EPM (Project Server) + ALM (Team System) = Maior controle em projetosMetodologias e Processos