Os atrasos em projetos de software e os vendedores de solução
Na imensa "selva" que se tornou a área de Tecnologia da Informação com o predomínio das novas tecnologias induzindo as empresas a um consumismo imediatista "das novidades", a capacidade de pensar do analista de sistemas parece estar sendo colocada em segundo plano. A tendência de tornar as coisas mais fáceis, mais práticas, mais produtivas e mais amigáveis acaba pressionando um processo nem sempre consistente de transformação do modelo convencional de análise para um modelo de desenvolvimento baseado em ferramentas automatizadas.
A indústria da informação, baseada no conhecido argumento do “atraso nos prazos do projeto”, fatura bilhões de dólares por ano, produzindo equipamentos e softwares, levando às empresas a um permanente estado de adaptação de seus processos de desenvolvimento; enquanto que as empresas, empurradas para a necessidade de uma constante adaptação e atualização às novas plataformas e aos novos padrões de mercado, não conseguem atingir um estágio ideal de amadurecimento em seus processos de construção de software.
Longe de resolver os problemas propostos, tais soluções contribuem para o surgimento de novos problemas, com a introdução da “novidade”; até que o novo processo se torne suficientemente maduro, surgem novas falhas no desenvolvimento dos sistemas, e, paradoxalmente: “novos atrasos em projetos”. Ao colocar em primeiro plano interesses comerciais, fornecedores de hardware e software contribuem para uma excessiva volatilidade das soluções de tecnologia, muitas vezes inconsistentes entre si.
O risco, para empresas e profissionais de sistemas, é que os softwares de hoje estarão obsoletos amanhã, e esse movimento vai se tornar cada vez mais rápido e a idade de obsolescência dos profissionais vai reduzir cada vez mais, aumentando a dependência das empresas por novas tecnologias, aumentando a dependência dos profissionais de novas certificações em ferramentas e softwares especializados e perpetuando o mercado dos vendedores de solução.
Existem empresas que alardeando uma metodologia específica para identificar os objetivos do projeto, os problemas a serem solucionados e o melhor método de tratá-los, garantem a entrega de projetos de seus clientes no prazo determinado, com qualidade acima do esperado e implantação em tempo recorde, atribuindo essa verdadeira façanha à sua excepcional capacidade de planejamento baseado em Métricas. Acho um pouco de exagero. Se esse fosse o segredo, todas as empresas já teriam adotado esse método infalível de planejamento e os atrasos em projetos já teriam desaparecido a muito do cenário de TI.
A minha opinião é que a atual tendência de tornar as ferramentas de apoio ao desenvolvimento em softwares altamente sofisticados, a pretexto de alcançar maior produtividade, pouco a pouco vai eliminando a participação intelectual do analista de sistemas no projeto, desviando seu aprendizado para a complexidade do próprio software no qual tem que se especializar, em detrimento dos conhecimentos básicos e essenciais da arte de desenvolver e implantar um sistema com qualidade.
Como então garantir que os projetos terminem no prazo estabelecido? É preciso refletir com realismo e objetividade. Em primeiro lugar, o que é um atraso? Quando chegamos para uma reunião às 15h25, quando estava marcada para às 15h, isso certamente é um atraso. Uma reunião é um evento simples com local, data e horário pré estabelecidos. Podemos dizer o mesmo para um projeto de software? Certamente não.
Os projetos de software, de um modo geral, são complexos e envolvem atividades de análise, inúmeras reuniões e situações subjetivas nas quais novas nuances vão sendo descobertas e novos requerimentos vão se somando aos originais, via de regra descritos de uma forma resumida e simplista, ocasionando erros importantes de avaliação com impacto direto na determinação do prazo de término. Outras vezes, os prazos de projeto são determinados em função de uma necessidade de colocar um produto no mercado antes da concorrência, situação que não permite levar em consideração aspectos básicos de um planejamento realístico, aplicar uma metodologia adequada e trabalhar dentro dos padrões de qualidade desejados.
Quando não se consegue atingir o prazo desejado, e mesmo que sejam apontadas as causas, a equipe de desenvolvimento é sempre penalizada pelo “atraso” em um projeto de software.
Para garantir a Qualidade do Software, proponho uma reflexão sobre 5 aspectos fundamentais em um projeto de software: Planejamento Realístico, Comunicação Eficaz, Especificação de Requisitos, Análise Essencial e Modelagem de Dados, Gerenciamento Eficaz.
Antes de mais nada, é necessária uma correta Especificação de Requisitos que possibilite avaliar com relativo grau de previsibilidade a complexidade do futuro sistema, condição necessária para um planejamento realístico; o que significa algum estudo prévio a respeito do escopo do projeto e seu relacionamento com os demais sistemas da organização. Para cumprir sua finalidade, a Especificação dos Requisitos do Software deve descrever de forma objetiva e clara quais os requisitos da aplicação e como o sistema deverá implementar esses requisitos e descrever, também claramente, como essa implementação poderá ser verificada pelo usuário da aplicação. Isto, óbvio, antes de iniciar a construção.
Mais cedo ou mais tarde, todo analista se depara com alguma resistência ao apresentar ou tentar implementar um novo projeto. Condicionar as atividades a uma metodologia que garanta resultados de qualidade com certeza apresentará uma resistência maior ainda, pois metodologia, via de regra, é confundida com burocracia. O cliente quer tudo urgente, “pra” ontem, colocando em risco a qualidade desejada. É preciso quebrar essa barreira e buscar a conscientização das pessoas. Não se pode menosprezar a importância da Resistência Cultural ao se implantar um novo projeto e isso também se resume em habilidades a serem desenvolvidas na comunicação interpessoal.
A execução bem sucedida de um projeto é, antes de tudo, uma questão de eficácia na comunicação. É fundamental uma perfeita comunicação entre usuários, projetistas e executores para que tudo ocorra dentro do mais alto nível de compreensão e clareza em todas as atividades do projeto. Falhas de comunicação trazem conseqüências desagradáveis ao final do projeto, ou mesmo durante, e podem até determinar o seu fracasso. Na verdade, a clareza e a eficiência na comunicação representa um dos pilares de um projeto bem sucedido e essa sempre foi uma das principais preocupações de toda metodologia.
Um outro grande problema com o qual os administradores de sistemas se defrontam de tempos em tempos é o de mudança de plataforma, causada pelos constantes avanços da tecnologia. Tais mudanças, além de causar expressivo impacto cultural, podem custar excessivas horas de manutenção nos sistemas para se adequarem às exigências do novo hardware ou do novo software. Não raramente, os sistemas “dependentes” da tecnologia antiga precisam ser refeitos.
A Análise Essencial de Sistemas, enfatizando a distinção de Projeto lógico de Projeto físico, é uma técnica que orienta a análise de sistemas para a essência do negócio ao qual se destina, independente das soluções de informática que serão utilizadas em sua construção. Quando aliada a uma correta Modelagem de Dados, resulta em um processo consistente de desenvolvimento que favorece bons resultados.
A Modelagem, por sua vez, é um processo complexo, que consiste em observar um ambiente, sistema ou objeto e abstrair deste os aspectos relevantes ao problema estudado. Um banco de dados projetado de forma adequada permite representar satisfatoriamente um modelo de negócio do mundo real. O domínio dessa técnica é fundamental para a qualidade de um projeto de sistemas.
Resta então realizar um bom gerenciamento do projeto utilizando as técnicas e feramentas disponíveis na organização, avaliando modelos de gerenciamento praticados e reconhecidos no mercado. O Modelo CMM teve sua origem em um estudo sobre atrasos em projetos de desenvolvimento de software solicitado pelo Departamento de Defesa do governo dos EEUU à SEI – Software Engineering Institute – Carnegie Mellon University . Nesse estudo chegou-se a conclusão que:
“... Os maiores problemas com o desenvolvimento de software não eram técnicos, mas gerenciais”
“... As causas não estavam na tecnologia utilizada, mas na incapacidade de gerenciar satisfatoriamente o processo de desenvolvimento “
“... Faltava um padrão de qualidade claramente definido ao processo de desenvolvimento de software e que fosse efetivamente utilizado”
Vale considerar, com um certo critério, o Modelo CMM e suas principais características e vantagens, sem exageros e sempre considerando que um modelo é apenas um modelo, não a solução. É fundamental interpretá-lo e adequá-lo ao porte e às reais necessiades da organização. O Modelo CMM pressupõe a organização das empresas em níveis de maturidade, onde cada nível representa o estágio atual de capacitação da organização em produzir software com qualidade.
A adoção do CMM se baseia em um processo gradual de aumento da maturidade da capacidade de desenvolvimento de software de uma organização. A maturidade desse processo pode ser traduzida como a probabilidade de entregar sistemas de software dentro do prazo, utilizando os recursos planejados e atendendo aos requerimentos para o qual foi projetado dentro dos padrões de qualidade desejados.
A metodologia, quando bem elaborada, enfatizada e seguida, é de grande relevância na minimização dos vícios verificados no processo de desenvolvimento de software, mas sozinha não faz milagres. É necessário uma gestão eficiente no gerenciamento do projeto e esta tem sido a grande lacuna encontrada nas metodologias tradicionais mais focadas nos aspectos técnicos; planejamento e controles. É necessário enfatizar a importância de um sistema de qualidade atrelado à Metodologia de Desenvolvimento de Sistemas que priorize a qualidade dos processos de construção de software, principalmente no que se refere às Especificações de Requisitos do Software.
A Metodologia de Sistemas deve ser dinâmica e aberta para acompanhar o ritmo voraz do desenvolvimento da tecnologia, buscando sempre novas e melhores soluções, sem se deixar envolver pelo marketing das empresas fornecedoras de solução que não hesitarão em “empurrar” um produto que não precisamos.
Na medida em que conseguir contribuir com as equipes de projetos em sua necessidade cada vez mais premente de encurtar os prazos dos projetos; atender os requisitos das áreas de negócio que visam em primeiro plano contemplar o time to market; e colaborar para que as pessoas possam realizar um trabalho produtivo e eficaz sem abrir mão da qualidade. O sucesso dos projetos será inevitável.