Revista InfoBrasil Especial - Junho/Agosto 2009 Qualidade para Desenvolvedores e Prestadores de Serviço no Software Público Brasileiro ARTIGOS CIENTÍFICOS Clenio F. Salviano, Alessandra Zoucas e Christiane Zim Zapelini, CTI. O Modelo de Qualidade do Software Público Brasileiro tem como objetivo gerar conhecimento, utilizando as melhores práticas nos seguintes vetores de ação: arcabouço estrutural do ecossistema do software público brasileiro, interoperabilidade dos produtos de software produzidos, qualidade dos produtos de software, qualidade do processo de desenvolvimento de software, qualidade da prestação de serviços, testes de qualidade e disseminação e sustentação do ecossistema. Um dos propósitos dos vetores de qualidade (5CQualiBR) é melhorar a qualidade na produção de soluções, contribuindo para a melhoria das empresas (especialmente pequenas e médias) e da indústria de software brasileira, promovendo uma dinâmica de construção de Conhecimentos associados à Tecnologia da Informação e Comunicação (TIC), tendo como premissas a Cooperação e o Compartilhamento de informações e idéias utilizando a Comunidade como meio para o desenvolvimento do projeto. A sustentação dessa dinâmica é a Confiança entre os participantes e a confiança nos resultados dessa interação coletiva. Entre os vários atores que fazem o SPB, estão os desenvolvedores de software, os prestadores de serviço, os demandantes de soluções e os usuários das soluções. Dois dos vetores de qualidade são apresentados neste artigo: Qualidade para Desenvolvedores e Qualidade para Prestadores de Serviço. Como podemos contribuir para que a qualidade venha a emergir nas ações e soluções do SPB de tal forma que o SPB cause o impacto necessário na indústria de software brasileira, considerando a oferta e a demanda de soluções intensivas em software? Estes dois vetores propõem um caminho, juntamente e em harmonia com os outros vetores. Este caminho passa pela identificação e compartilhamento de melhores práticas. 24 O objetivo dos dois vetores tratados neste artigo é identificar e consolidar, com a comunidade, melhores práticas para desenvolvimento de uma solução e melhores práticas para prestadores de serviço no SPB e representá-las como um ou mais modelos de capacidade de processo. Alguns conceitos importantes Alguns conceitos mais importantes serão apresentados brevemente a seguir. A expressão melhores práticas é derivada do inglês "best practices" e denomina práticas identificadas como as melhores para orientar a realização de ações que são úteis para a maioria dos casos e existe um consenso sobre sua efetividade. Existem três categorias básicas de melhores práticas geralmente aceitas, especializadas e avançadas. Geralmente aceitas são aquelas práticas tradicionalmente estabelecidas e recomendadas por muitas organizações. Especializadas são aquelas práticas utilizadas apenas para determinados tipos de software. Avançadas são práticas inovadoras testadas e utilizadas somente por algumas organizações e conceitos ainda sendo desenvolvidos e testados em organizações de pesquisa. Dado a natureza inovadora do SPB, serão identificadas melhores práticas das três categorias. Modelos de Capacidade de Processo são repositórios de melhores práticas a serem utilizadas como referência para a melhoria ou avaliação de processos. Processos são o que as pessoas fazem para atingir um determinado objetivo. Por exemplo, o que as pessoas de uma certa comunidade fizeram para compartilhar e discutir objetivos comuns e com isto orientar a evolução de uma determinada solução é o processo. Para guiar as pessoas de modo a realizar melhor um determinado processo intensivo em software, a área de Melhoria de Processo de Software (MPS) sugere a utilização de modelos de melhores práticas como referência para o estabelecimento do processo a ser utilizado. A importância do processo para a qualidade tem sido evidenciada pela comunidade de software. Alfonso Fuggetta, por exemplo, ao concluir uma breve visão geral da história e resultados da pesquisa em processo de software reconheceu que “a utilização de processos para tratar a inerente complexidade de software ganhou força a partir dos anos 1980” e enfatizou que “a visão do desenvolvimento de software como um processo tem ajudado significativamente a identificação das diferentes dimensões do desenvolvimento de software e os problemas que devem ser tratados para estabelecer práticas efetivas.” Ainda segundo Fuggetta, “nós temos de prestar atenção na complexa interpelação de numerosos fatores organizacionais, culturais, tecnológicos e econômicos [do desenvolvimento de software].” O que já foi feito Cada vez que uma mudança significativa ocorre no contexto da produção de software, devemos reavaliar as melhores práticas correntes. Quais delas continuam válidas, e mais importante, quais delas continuam sendo significativas e quais são os ajustes necessários, se necessários. E mais importante ainda é a identificação de novas melhores práticas, que estão emergindo das atuações com sucesso dos diversos atores deste novo contexto. O SPB está induzindo uma mudança significativa no contexto da produção de software. Produção em um sentido mais amplo, incluindo não apenas o desenvolvimento de software, mas também a utilização, geração de conhecimento, distribuição de riquezas e demanda por soluções intensivas em software. Alguns cuidados devem ser tomados neste caminho. Entre eles, utilizar métodos apropriados e já experimentados com sucesso para guiar o caminhar e sempre identificar fontes apropriadas de melhores práticas. Desta forma duas ações estão sendo desenvolvidas atualmente como primeira etapa para este caminhar. Uma ação é a consolidação de um método. Com base na experiência e metodologia do CTI, foi consolidado um método para identificação de um conjunto de melhores práticas e para representação deste conjunto como um modelo de capacidade de processo. A proposta deste método e orientações para sua utilização no SPB estão descritas em um relatório técnico do projeto SPB e em um artigo técnico aceito para publicação e apresentação na conferência européia de melhoria e inovação de processo de software e sistemas a ser realizada no segundo semestre deste ano. Outra ação é a identificação de fontes para a busca de melhores práticas. A principal fonte é composta pelas experiências da comunidade do SPB. Como a interdisciplinaridade é a tônica do projeto SPB, podemos identificar como complemento as experiências e modelos de melhores práticas das comunidades de software livre, das metodologias ágeis, de pensamento sistêmico, de sistemas emergentes, de trabalhadores do conhecimento, da engenharia de software, da engenharia de sistemas, dos prestadores de serviço e outros. Como fontes mais específicas podemos citar as experiências do Centro de Excelência do Software Livre da USP, as propostas de Peter Drucker para os processos do trabalhador do conhecimento, as propostas de Peter Senge - as organizações que aprendem (Learning Organization), as propostas da Wikinomics, os modelos de capacidade de processo do CMMI para desenvolvimento e para serviços (CMMI-DEV e CMMI-SVC), os modelos da ISO/IEC 15504, e a iniciativa de Melhoria de Processo de Software Brasileiro (MPS.BR), os modelos de capacidade de processo para contratantes e fornecedores de serviços (eSCM-SP e eSCM-CL), o modelo COMPETISOFT para pequenas empresas da comunidade ibero-americana. É importante ressaltar que o objetivo não é adaptar os modelos de capacidade de processo de desenvolvimento e de serviços já existentes para o SPB, mas sim desenvolver com a comunidade e a partir de experiências da comunidade (de baixo para cima, da prática para a sistematização) um ou mais modelos para a realidade do SPB, utilizando, quando apropriado, também práticas destes outros modelos e de outras comunidades, com a tecnologia e experiência do CTI e de outros em desenvolvimento de modelos para outros domínios, e respaldado pelo sucesso da utilização destes modelos para a melhoria e avaliação dos processos. Um pouco de história Entendemos que as ações realizadas para a construção, evolução, disseminação e sustentabilidade do modelo CMM e dos modelos sucessores do CMM oferecem um caminho interessante para o SPB. As experiências e metodologias do CTI, parceiros e outros grupos na identificação e consolidação de melhores práticas de diferentes contextos em modelos de capacidade de processo, nos orientam a identificar as melhores práticas como um dos meios para o SPB. Um pouco de história é sempre importante. Por volta de 1980, a comunidade de software estava envolvida com a chamada crise de software. Outra forma de caracterizar a crise de software é pela necessidade continua de buscar condições para emergir a qualidade na produção de software. Conforme mencionado por outros autores, “enquanto Fred Brooks nos avisava que não haveria uma única solução 'bala de prata' (silver bullet) para as dificuldades essenciais do desenvolvimento de software, Watts Humphrey e outros no Software Engineering Institute (SEI) estavam ocupados colocando idéias que viriam a ser o modelo CMM.” A partir de uma análise das poucas organizações de software que funcionavam bem, segundo o paradigma de produção de software da época, um conjunto de melhores práticas emergiu e foi organizado no modelo CMM em níveis crescentes de maturidade. A Norma ISO/IEC 15504 consolidou, a partir de um consenso da comunidade da área, os principais conceitos para modelos de capacidade de processo. Em outra experiência realizada no final dos anos 90, para o contexto de produção de software em empresas da Internet, emergiram melhores práticas que foram organizadas em níveis crescentes de cooperação. Para o SPB, já percebemos que esta sequência em níveis crescentes de cooperação, acrescida das dimensões de compartilhamento, conhecimento, comunidade e confiança (os “5 Cs”) e integrada com o conceito de maturidade organizará de forma mais eficiente as melhores práticas do SPB. ARTIGOS CIENTÍFICOS SPB muda o contexto 25