Pesquisa:
Ensino:
Diversos:
|
Manutenção de Software |
O Cabo Bojador da Engenharia de Software
Figura 1. O Cabo BojadorQuando os portugueses, impulcionados pelo Infante D. Henrique, partiram à descoberta das costas da África e do caminho pelas Indias, ficaram impossibilitados durante muitos anos de navegar além do Cabo Bojador (Figura 1). Várias expedições foram montadas que todas foram postas em xeque por este cabo. Acreditava-se que o Cabo Bojador guardava o fim do mundo e que quanto mais se navegava ao sul, mais as águas iriam ficar quentes a ponto de queimar as embarcações, monstros estariam aguardando os aventureiros, Deus não quiria que os homens navegassem além deste ponto. Foram necessárias 15 expedições e a corragem de Gil Eanes para, em 1434, passar o Cabo Bojador e descobrir que o mar além deste cabo era o mesmo que aquem. O maior desafio do Cabo Bojador tinha sido o medo que os navegadores portugueses tinham dele. A evolução de sofware sofre de um mal parecido ao do Cabo Bojador onde a percepção que se tem dela é um fator importante na incapacidade de tratar ela corretamente. Se os navegadores portugueses tinham medo do Cabo Bojador, os engenheiros de software desprezam a evolução de software, deixado-a nas mãos de profissionais menos experientes, algumas vezes tratando-a como uma punição ou pelo menos como uma atividade de pouca visibilidade e escaças possibilidades de progressão professional. Em consequência, projetos de evolução de software são, muitas vezes, mal planejados, sendo mal executados, não acompanhados e não controlados. Como resultado, tem se projetos difíceis e arriscados que prejudicam a qualidade dos sistemas, que, por sua vez, dificultam as próximas evoluções. As equipes são pouco motivadas e cada projeto gera um desgate inútil. O primeiro passo para melhorar a evolução de software é convencer-se da sua importância e de que, na verdade, é uma atividade benéfica que aponta para um sucesso dos sistemas de software. O objetivo deste capítulo é precisamente enfatisar esse ponto e vencer os aprioris negativos que a evolução de software sofre. Um exemplo que illustra a importância da manutenção de software pode ser encontrado na importância que tem a linguagem Cobol, depois de meio-século de existência. Um Problema CulturalExiste em torno da evolução de software idéias falsas que são ao mesmo tempo as raizes e os frutos da pouco consideração que se tem por ela. Por exemplo, estudos mostraram que a manutenção de software é considerada uma atividade que oferece menos oportunidade de promoção profissional e como pessoalmente menos satisfatória. Talvez pode se rastrear as origens desse problema na origem da engenharia de software: o processo em cascata. Não precisa ser assím. Acho que a manutenção de software não é intrinsicamente mais chata que o desenvolvimento e que o problema é primeiramente cultural. Por exemplo, é uma idéia falsa, communamente aceita, que manutenção de software equivale a correção de erros. Foco Excessivo no Desenvolvimento de Software
Figura 2. Parte da manutenção no custo total de um software. Fonte: Pigoski, 1997.Estudos realizados ao longo dos anos sempre apontam para um custo crescente da evolução de software no ciclo de vida dos sistemas. A Figura 2 resume os resultados de estudos que comprovaram que a parte da evolução de software no custo total (durante toda sua vida) de um sistema vai sempre crescendo, tendo provavelmente passado agora da casa dos 90%. Ou seja, o custo de desenvolvimento de um novo sistema passou a ser insignificante perante o custo total que este sistema irá requerer durante sua vida. A explicação é extremamente simples, sistemas que foram desenvolvidos nos anos 70 ou 80 continuam ativos, sendo mantidos. Por tanto, para esses sistemas, o custo do primeiro desenvolvimento, fixo, representa uma parte cada vez menor do custo total que não para de crescer a medida que o sistema continua ativo, sendo usado e modificado. Cada vez que se desenvolve um novo sistema, acrescenta-se mais um elemento ao enorme leque de sistemas sendo mantidos. Em engenharia de software, muitos esforços são dedicados à melhoria dos métodos de desenvolvimento. Sempre se busca melhores técnicas de estimativa de projeto, planejamento dos projetos de desenvolvimento, melhor controle e acompanhamento da qualidade do desenvolvimento. Um objetivo implícito desta busca parece ser que com um melhor desenvolvimento, muitos dos problemas da evolução de software serião resolvidos: Com um bom desenvolvimento teriamos menos manutenção Esta suposição é triplamente equivocada: Primeiro porque ela é baseada na falsa idéia de que a manutenção de software é um problema; segundo porque não pode mudar nada no enorme leque de sistemas já existentes; e terceiro porque quaisquer que sejam os progressos no desenvolvimento de software, a manutenção sempre será atrasada em relação a estes. Em conclusçãoA manutenção de software é uma atividade extremamente importante na prática das organizações de software correpsondendo a 90% ou mais de toda atividade de programação de sistemas. Apesar desta importância na realidade, é uma atividade ainda mal vista pelos profissionais, pouco ensinada, pouco estudada e geralmente não entendida. A realidade é de uma atividade que oferece menos perspectivas de evolução profissional ou vista até como uma punição. Em engenharia de software, a maioria dos esforços se concentra em tentar melhorar as condições de desenvolvimento de software com, possivelmente, dois objetivos: tentar diminuir as necessidades de manutenção (presumadamente corretiva) e focar numa atividade que tem mais visibilidade. Essa estratégia é equivocada por vários motivos:
Esse texto tem como principal objetivo explicitar esses fatos e convencer o leitor da necessidade de mudar, primeiramente, a mentalidade dos profissionais de Tecnologia de Informação e dos usuários de software para começar a procurar soluções, muitas vezes existentes, às dificuldades encontradas. |
|
Home Page |
Ultima atualização/Last updated: 12/08/2008 |