• Nenhum resultado encontrado

2.3 Aspectos da Qualidade de Software

2.3.1 Processo de Desenvolvimento de Software

Segundo Humphrey (apud FREITAS, 2006), “um processo de desenvolvimento de software é um conjunto de ferramentas, métodos e práticas usado para construir um produto de

software”. Um processo efetivo de desenvolvimento de software compreende as ações para transformar as necessidades dos usuários em uma solução de software, as técnicas e métodos utilizados, e as habilidades, treinamento e motivação das pessoas envolvidas.

A produção de um software envolve aspectos teóricos e práticos, embasamento prévio de engenharia de software e a utilização de um processo de desenvolvimento e de um bom suporte ferramental, assim como de tecnologias aceitas pelo mercado. Para apoiar o processo é importante se guiar através de modelos e normas de qualidade capazes de proverem uma avaliação sobre o resultado dos processos utilizados.

Um processo pode ser aderente a modelos ou normas (CMMI, ISO, MPS-BR, outros) ou simplesmente ser dependente das pessoas. A definição e escrita de um processo de desenvolvimento de software ainda que tenha como base um modelo, têm suas atividades realizadas por pessoas. Os processos dependem das pessoas que o definem e as que o utilizam.

Na literatura são citados vários modelos e normas (CMMI, ISO, MPS-BR, outros) que indicam “o que” é importante para um processo de desenvolvimento. O objetivo dos modelos é guiar os profissionais para obter um melhor desempenho das atividades. A qualidade de software envolve tanto o produto como o processo.

Um processo de desenvolvimento de software define quem faz o que, quando e como, para atingir certo alvo, e envolve tarefas, entradas e saídas, artefatos e responsáveis para as etapas do ciclo de vida do software, bem como gerenciamento do mesmo. O ideal não é focar apenas no produto, visto que não é uma questão de fazer software melhor, e sim fazer melhor o software.

Após anos de pesquisa, o Software Engineering Institute (SEI), consolidou uma série de práticas de processos de software no Capability Maturity Model (CMM), que depois foi evoluído para o Capability Maturity Model Integration (CMMI, 2007) que, como o nome diz, integra e agrupa várias áreas, uma delas a SW-CMM (Software-CMM).

Os modelos de maturidade surgiram para avaliar a qualidade dos processos de software aplicados em uma organização (empresa ou instituição). O CMMI é o modelo mais utilizado para definição de um processo de desenvolvimento de software. O CMMI é um instrumento de auxílio às organizações no estabelecimento de um processo de software em níveis, permitindo uma evolução gradual do nível de maturidade de desenvolvimento de software, e que orienta que as empresas saiam de um estado inicial (ad hoc) para um estado organizado e formalizado.

Assim como o CMMI, outros modelos e normas também são focados em qualidade de software, tais como os padrões ISO/IEC 15504, ISO 9001 e o MPS-BR. No Brasil, empresas estão recorrendo ao MPS-BR que é um modelo de qualidade direcionado para as pequenas e médias empresas de desenvolvimento de software, cuja vantagem é o baixo custo da certificação comparado ao CMMI.

Os benefícios da utilização de um processo são diversos, dentre os quais podemos citar: definição de uma linguagem comum, provê uma visão compartilhada, permite a participação dos envolvidos na escrita do processo através de sugestões, facilita a priorização das ações, auxilia na tomada de decisão, possibilita uma comparação com outras organizações, contribui para a qualidade do produto, diminui o retrabalho, aumenta a produtividade e melhora as estimativas (VASCONCELOS et al., 2006).

Com a utilização, manutenção e monitoramento de um processo as melhorias podem ser mais duradouras ao longo do tempo. É percebida uma facilidade no uso de novas tecnologias e ferramentas, o potencial das pessoas é desenvolvido, elas se tornam mais eficientes e, mesmo que as pessoas deixem a empresa, os processos permanecem. Um processo definido é previsível, facilitando a permuta de pessoas entre projetos, e permite o registro dos acontecimentos, das lições aprendidas, desde estimativas, riscos, acompanhamento do projeto, replanejamento, documentação técnica, revisão de código, testes e implantação.

Além do título de uma certificação e reconhecimento internacional, as empresas adotam modelos para garantir que o conhecimento é registrado e fica como ativo da empresa, e principalmente para garantir o controle e execução das atividades, bem como resultados esperados em cada fase do projeto e realização de testes para garantir a qualidade do produto.

DeMarco e Lister (1999) afirmam que a melhoria dos processos formais move a responsabilidade do indivíduo para a organização, e que as pessoas podem e devem promover suas habilidades, e a organização deve institucionalizá-las. Eles indicam que o conhecimento organizacional não é o mesmo que o acúmulo de experiências, mas sim a experiência que se transforma em conhecimento quando a organização modifica seus processos de acordo com os resultados da sua experiência. A autotransformação está associada ao risco de manter as pessoas, diminuindo a rotatividade de funcionários. O sucesso da mudança da cultura organizacional se dá quando são identificas as pessoas que acreditam, mas questionam as mudanças. Quando se tenta institucionalizar a mudança o primeiro impacto é o caos, motivo pelo qual a resposta à mudança é emocional.

Toda empresa desenvolvedora de software vive o dilema: qualidade versus tempo. Na avaliação das vantagens e desvantagens de se adotar um processo formal de desenvolvimento de software o tempo despendido na elaboração dos documentos é muito inferior ao tempo gasto na manutenção de sistemas sem documentação. O desenvolvimento de um sistema de software é um projeto, independente da sua natureza e, portanto, necessita de um processo de como planejar e controlar os recursos envolvidos, desde a alocação de pessoas à entrega do produto final. O intuito é atingir os objetivos do projeto. Os projetos podem variar de tamanho, duração e complexidade, mas o processo de software é o que suporta o gerenciamento que precisa identificar e direcionar os prazos, riscos, e fatores que estão indiretamente influenciando no produto.

As vantagens de utilização de um processo de desenvolvimento podem ser representadas, principalmente, pela melhoria da organização interna, e as desvantagens exemplificadas pelo tempo despendido na manutenção de sistemas. O esforço para a implantação de um processo de desenvolvimento de software deve ser encarado como investimento.