Page 1

Padrões na Prática: Aplicação de Padrões de Software em Empresas – Análise Quantitativa e Qualitativa Fabrício Gomes de Freitas, Tarciane de Castro Andrade, Jerffeson Teixeira de Souza Universidade Estadual do Ceará (UECE) – Grupo de Padrões de Software da UECE (GPS.UECE) fabriciogf@uece.br, tarcianeandrade@gmail.com, prof.jerff@gmail.com Resumo Padrões de software documentam soluções para problemas recorrentes em diversas áreas da Computação. Na área de desenvolvimento de software, os padrões de software constituem uma forma atraente para o compartilhamento de informações, dada a característica de reuso presente em tal área. Este artigo apresenta uma análise quantitativa e qualitativa da aplicação de padrões de software na área de desenvolvimento de software a partir de artigos publicados nas conferências SugarLoafPLoP. A análise é realizada em três casos: participação de funcionários de empresas de software na documentação de padrões, citações em trabalhos de empresas que utilizam padrões e relatos de empresas sobre a utilização de padrões. Através disso, pretende-se apresentar o cenário atual do uso de padrões de software.

1 Introdução Na Ciência da Computação, padrões são aplicados em diversas áreas, por exemplo: banco de dados, sistemas operacionais, redes, entre outros. Na área de desenvolvimento de software, em especial, os padrões encontram um ambiente propício de aplicação. Isto ocorre em grande parte pois a disciplina de Engenharia de Software está exatamente interessada em aplicação de técnicas que permitam o desenvolvimento eficiente de software. Este trabalho descreve o estado atual da aplicação de padrões de software em empresas de desenvolvimento. O trabalho inicia com a seção 2 que apresenta a área de Padrões de Software, indicando seus principais conceitos e objetivos. Em seguida, a seção 3 aponta as vantagens decorrentes da aplicação de padrões em empresas de desenvolvimento. A aplicação dos padrões é analisada na seção 4 sob três aspectos: participação de funcionários na documentação de padrões, exemplos de empresas que utilizam padrões e relatos de empresas sobre a utilização de padrões de software. Na seção 5 encontram-se as considerações finais do trabalho.

2 Padrões de software

Um padrão de software é basicamente definido como uma boa solução aplicável a um problema em um determinado contexto [1]. O conceito por trás dessa ideia reside na definição de Alexander [2] que usou a terminologia no contexto da arquitetura. Na definição original de padrões, existe ainda a característica de o problema a ser resolvido ser recorrente no contexto definido. Um padrão por si só apenas representa a maneira como um problema pode ser bem resolvido. Para que essa solução possa ser reusada pela comunidade é necessário que exista um processo de documentação daquela solução. Esta documentação deve apresentar as informações relevantes capazes de permitir o reuso da solução apresentada. As seções a seguir são consideradas básicas para a documentação de um padrão de software [3]:  Nome, que naturalmente informa o nome do padrão documentado (geração de um vocabulário comum);  Contexto, esta seção descreve a situação na qual o problema emerge;  Problema, seção que especifica o problema recorrente a ser resolvido pela solução descrita no padrão;  Forças, esta seção cita os diversos aspectos, possivelmente conflitantes, do contexto;  Solução, que apresenta a maneira de resolver o problema no contexto descrito;  Usos conhecidos, seção que indica exemplos de usos do padrão documentado. Padrões de software foram documentados em diversos campos ao longo das últimas décadas. Na área de desenvolvimento de software, existem tipos de padrões de software direcionados para algumas das fases do desenvolvimento, como por exemplo: Padrões de Análise, Padrões de Projeto, Padrões de Processo, Padrões Organizacionais e Padrões de Programação. A diferença entre estes tipos de padrões é apenas o domínio para o qual cada tipo é designado. Existem diversas formas para a documentação de padrões, que definem os chamados “formatos de


documentação”. Em geral, a diferença entre os formatos reside apenas na existência de seções adicionais, que são específicas para o campo de aplicação de um tipo de padrão. A partir do formato puramente textual, isto é, sem estrutura, dos primeiros padrões documentados por Alexander em 1977 e 1979 [4], outros formatos foram definidos pela comunidade para encaixar as diferentes informações necessárias para o entendimento adequado dos padrões nas várias áreas de aplicação. Os formatos de documentação mais difundidos na área de padrões de software vão desde o ordinário Formato Canônico com a documentação das seções básicas conhecidas até formatos específicos, como Formato GoF [5], Formato POSA [6], Formato J2EE [7] e Formato Anti-padrões [8]. A apresentação de padrões de software documentados é realizada em um tipo de conferência especial conhecido como PLoP. Os eventos PLoP, sigla para Patterns Languages of Programming, objetivam a melhoria dos padrões submetidos tanto no sentido do conteúdo quanto em relação à forma como as informações dos padrões são apresentadas. O motivo de tal abordagem está no fato de o objetivo primordial da documentação de padrões ser o reuso dos mesmos. Por isso é feito um esforço para que os padrões atinjam um nível adequado de apresentação. Eventos do tipo PLoP ocorrem em várias regiões ao redor do mundo. Além da versão original que detém o nome PLoP e ocorre nos Estados Unidos, existem também outras edições desde o MensorePLoP no Japão até o SugarLoafPLoP no Brasil, entre outras.

3 Aspectos positivos da utilização de padrões de software em empresas Em uma empresa de desenvolvimento de software, o domínio coberto por padrões de software compreende várias fases do processo de desenvolvimento [9]. Nesse sentido, existem padrões para as fases de análise, de projeto, entre outras. Esta presença massiva de padrões é explicada pela grande variedade de atividades e situações possíveis durante o desenvolvimento de um software. Além da implicação direta da própria resolução dos problemas recorrentes que aconteçam durante o desenvolvimento, o uso de padrões de software acarreta vários outros benefícios. Algumas das vantagens da aplicação são [1][3][10][11]:  Maior produtividade, no sentido da disponibilidade de soluções prontas para a resolução dos problemas;  Melhoria da comunicação, pela criação de um vocabulário comum entre os desenvolvedores da empresa e comunidade externa;  Facilitar o entendimento e evolução do código, devido ao acesso ao padrão em si que define e explica a solução e as conseqüências decorrentes;

Diminuição do tempo de desenvolvimento, ao permitir a reutilização de soluções durante o desenvolvimento.

4 Análise da aplicação de padrões A utilização de padrões de software por uma empresa de desenvolvimento pode ser indicada de diversas formas. Neste trabalho, as seguintes três maneiras foram consideradas: i) Participação de funcionários da empresa na documentação de padrões, o que indicaria que os padrões devem ser utilizados na referida empresa; ii) Citação direta de empresas que utilizam padrões de software, denominada de usos conhecidos; iii) Relatos da própria comunidade industrial sobre a aplicação de padrões de software. Os padrões considerados neste trabalhos são aqueles que foram discutidos em conferências da série SugarLoafPLoP.

4.1 Participação de empresas na documentação de padrões No SugarLoafPLoP, assim como em qualquer conferência do tipo PLoP, existe uma sessão denominada Writers’ Workshop (WW) que é reservada para a discussão de trabalhos que documentam padrões de software. Nesta seção, os padrões documentam soluções para os mais diversos tipos de problemas em contextos da área da Computação e não somente em problemas diretamente relacionados ao desenvolvimento de sistemas. Apesar de os trabalhos das sessões WW parecerem mais caracterizados como simplesmente teóricos, nesta sessão é possível perceber a inserção de padrões diretamente no ambiente das empresas de desenvolvimento. Tal percepção se dá pela observação da instituição dos autores dos trabalhos. Nota-se que não há somente padrões documentados por pesquisadores da academia, mas também padrões documentados por funcionários de empresas e também trabalhos que possuem os dois tipos de autores (pesquisadores acadêmicos e pessoas ligadas à indústria de software). Um levantamento realizado com todos os padrões já discutidos em sessões Writers’ Workshop das conferências da série SugarLoafPLoP informa dados relacionados à instituição dos autores. No estudo, foram consideradas as oito edições já realizadas da série SugarLoafPLoP, totalizando 81 trabalhos em sessões Writers’ Workshop. Desse total, a quantidade de trabalhos que possuem como autores tanto membros da academia quanto membros de empresas é 11 - aproximadamente


13,60%. Outro dado relevante indica que 6 trabalhos, aproximadamente 7,40%, foram escritos apenas por autores identificados como pertencente ao setor industrial. A análise dos valores estatísticos revela que a quantidade percentual de padrões que tiveram a participação direta de pessoas ligadas à indústria na documentação é de aproximadamente 21,0%, com 17 de 81 trabalhos. Este valor é expressivo sob o aspecto de que o mesmo significa que, em média, um a cada cinco trabalhos apresentados na sessão WW da conferência teve participação de pessoal do ramo das empresas. Apesar de relativamente baixo, valores nessa faixa indicam boa integração de empresas. O levantamento efetuado permite ainda traçar quais são os tipos de padrões que estão sendo mais documentados por funcionários de empresas. Este valor indica as áreas durante o desenvolvimento que devem estar sendo resolvidas em empresas pelo uso de padrões de software. A figura 1 a seguir apresenta o resultado em valores percentuais aproximados desta análise no contexto das edições do SugarLoafPLoP, considerando apenas os padrões que contém pelo menos um de seus autores provenientes de empresa [12][13][14][15][16][17][18] [19][20][21][22] [23][24]:

Figura 1. Classificação por tipo entre os padrões com algum autor de empresa Os dados da figura 1 indicam que os padrões de projetos são os que mais possuem autores pertencentes ao campo industrial. Este resultado sugere que é este tipo de padrão tem apresentando maior relevância no ambiente das empresas de desenvolvimento e confirma a importância dos padrões de projeto durante o desenvolvimento. De fato, uma das referências mais difundidas no campo de padrões é um livro sobre padrões de projeto publicado em 1995 [5]. Isso influencia no resultado apresentado. O fato das outras categorias de padrões além de padrões de projeto apresentarem menores índices sugere que há espaço para a documentação de padrões desses

outros tipos (análise, processo, entre outros) na área. Isso pode ser resultado de dois eventos: os outros tipos de padrões ainda não estão muito difundidos nas empresas, e as empresas, através de seus funcionários, ainda não deram foco à documentação de boas soluções em outras fases do desenvolvimento além da fase de projeto. É importante destacar que os padrões que não são tratados nesta subseção, isto é, padrões que não foram documentados por integrantes de empresas possuem também importância prática na área. Isto decorre do fato de que a documentação de padrões, mesmo que apenas por pesquisadores da universidade, permite que empresas utilizem as informações contidas nesses padrões para resolverem problemas durante o processo de desenvolvimento.

4.2 Exemplos de empresas aplicando padrões: Usos conhecidos Uma forma de observar a utilização de padrões consiste na análise de uma das seções comumente documentada nos mesmos denominada ‘Usos Conhecidos’. Esta seção tem como objetivo mostrar que o padrão descrito no trabalho é de fato utilizado na prática por empresas. Dessa forma, esta seção de certo modo serve para validar um padrão. Com efeito, existe o conceito do “teste de paternidade”. Este teste afirma que uma solução deve ser usada no mínimo em três projetos independentes para que a mesma possa ser considerada uma solução padrão. Entre os 81 padrões de sessões WW ao longo das oito edições do SugarLoafPLoP foram identificados 15 trabalhos com usos conhecidos relacionados a esta pesquisa. A razão para este valor relativamente baixo é que, nos últimos anos, tem-se percebido que os padrões de software vêm sendo aplicados nos mais diversos campos da Computação. Para este trabalho, contudo, apenas os padrões relacionados com a atividade de desenvolvimento de software são considerados. Além disso, alguns trabalhos de padrões não documentam a seção de usos conhecidos por falta de conhecimento de empresas que utilizem a solução documentada. A tabela 1 a seguir traz a quantidade de padrões identificados com exemplos de empresas separados por ano de realização da conferência. Ressalte-se que a identificação considerou apenas os trabalhos nos quais existe indicação do uso dos padrões documentados por empresas de desenvolvimento. Ou seja, mesmo que alguns padrões sejam aplicados em ambiente acadêmico, eles não foram considerados neste estudo. Tabela 1. Presença de usos conhecidos em trabalhos de padrões


Ano

Quantidade de artigos com usos conhecidos de empresas

Ano

Quantidade de trabalhos em PA

2001 2002 2003 2004 2005 2007 2008

2 3 4 1 1 3 1

2001 2002 2003 2004 2005 2007 2008

0 6 4 3 7 6 5

Total (todas as edições)

15

Total (todas as edições)

31

A tabela 1 mostra que em todas as edições da conferência foram considerados padrões usados por empresas. Apesar da variação na quantidade, isso indica que os padrões de software constituem uma ferramenta presente no ambiente de desenvolvimento de software.

A principal propriedade que pode ser destacada através desse tipo de participação trata do papel que as empresas efetuam. Nas apresentações realizadas nas sessões PA as empresas passam a ser um agente ativo no processo de disseminação de informações sobre o uso de padrões.

4.3 Empresas apresentam o uso de padrões: Pattern Applications (PA)

5 Conclusão

Nos eventos do estilo PLoP, uma sessão é especialmente direcionada para a demonstração de usos de padrões na prática. Esta seção, denominada Software Pattern Applications (SPA) ou simplesmente ‘Pattern Applications (PA), é caracterizada pela exposição de casos e ferramentas relacionadas ao uso de padrões de software. Essa sessão diferencia-se da sessão Writers’ Workshop pois na sessão Pattern Application os trabalhos são de fato apresentados, e não discutidos com outros pesquisadores e especialistas da área de desenvolvimento. Em sessões PA, destaca-se a documentação de experiências de sucesso relacionadas com a utilização de padrões de software. Os trabalhos dessa categoria são apresentados indicando em detalhes como a aplicação dos padrões aconteceu e os resultados conseguidos. Essa abordagem tem o objetivo de enfatizar a utilização de padrões de softwares na prática. A importância desse processo está em definir um meio para difundir o fato que os padrões de software realmente são utilizados e que, a partir dos casos de sucesso, seu uso deve ser encorajado. Entre as oito conferências da série SugarLoafPLoP já realizadas, a única na qual a sessão PA não ocorreu foi a primeira edição, em 2001. Nas demais edições (de 2002 até 2008, com exceção de 2006) a quantidade total de trabalhos apresentados nas sessões PA soma 31. A tabela 2 apresenta a distribuição desses trabalhos ao longo das edições: Tabela 2. Relatos de experiências do uso de padrões

A utilização de padrões de software em empresas representa um avanço de qualidade no processo de desenvolvimento. De fato, inúmeros são os benefícios trazidos para o processo de desenvolvimento pela utilização de padrões, além da própria resolução de problemas recorrentes durante o desenvolvimento. Este trabalho apresenta o estado atual da aplicação de padrões software em empresas. O levantamento realizado tomou como base os trabalhos das oito conferências SugarLoafPLoP já realizadas. Através deste levantamento, foi definido que padrões de software do tipo projeto são os mais documentados por empresas. Por um lado, isso representa que a fase de projeto apresenta potencial para a documentação de padrões. Alem disso, o fato de os outros tipos de padrões, como análise, processo, programação, entre outros, ainda não serem relativamente muito documentados indica um campo de atuação conveniente, dada a relevância das outras fases de desenvolvimento. Outro fato decorrente da análise do presente estudo trata da pequena quantidade de padrões que tem sido documentada e validada com exemplos de empresas, o que indica mais uma possibilidade de trabalho de integração e cooperação entre empresas e academia. Como trabalhos futuros, há o estudo mais amplo da aplicação de padrões de software por empresas. Infelizmente, não existe ainda um repositório nacional ou global de padrões. Tal repositório representaria grande avanço na área, dado o reuso de padrões.

Referências


[1] J. Coplien, “A Development Process Generative Pattern Language”, Pattern Languages of Programs, Monticello, EUA, 1994. [2] Alexander, C., Ishikawa, S., Silverstein, M., Jacobson, M., Fiksdahl-King, I. and Angel, S., A Pattern Language: Towns, Buildings, Construction, Oxford University Press, New York, NY, 1977. [3] J.T. Souza e T.C Andrade, “Introdução aos Padrões de Software”, Anais da I Escola Regional de Computação Ceará– Maranhão–Piauí da SBC, 2007. [4] Alexander, C., The Timeless Way of Building, Oxford University Press, New York, 1979. [5] Gamma, E., Helm, R., Johnson, R. and Vlissides, J., Design Patterns - Elements of Reusable Object-Oriented Software, Addison-Wesley, 1995. [6] F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad and M. Stal, “Pattern-Oriented Software Architecture Volume 1: A System of Patterns”, Wiley, 1996. [7] Alur, D., Crupi, J. and Malks, D., Core J2EE Patterns: Best Practices and Design Strategies, Prentice Hall, 2003. [8] Brown, W., Malveau, R., McCormick, H. and Mowbray T., AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis, Wiley, 1998. [9] M. Kircher, M. Volter, “Introduction: Software Patterns”, IEEE Software, Volume: 24, Issue: 4, 2007, pp. 28-30. [10] Schmidt, D., Stal, M., Rohnert, H. and Buschmann, F., Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects, Wiley, 2000. [11] Andrade, R., Marinho, F., Santos, M. e Nogueira, R. (2003) “Uma Proposta de um Repositório de Padrões Integrado ao RUP”, Session Pattern Application (SPA), SugarLoafPLoP 2003, The Third Latin American Conference on Pattern Languages of Programming, Porto de Galinhas, PE. [12] M., Savitha "A Pattern to Reckon with - the AbstractOptimizer", SugarLoafPLoP 2002, Segunda Conferência Latino-Americana em Linguagens de Padrões para Programação, Itaipava, RJ, 2002. [13] C., Pires, J., Machado, "DORS: Database Query Optimizer with Rule Based Search Engine", SugarLoafPLoP 2002, Segunda Conferência Latino-Americana em Linguagens de Padrões para Programação, Itaipava, RJ, 2002. [14] V., Vidal e F., Marinho "O Uso de Padrões na Integração de Visões Modeladas com UML", SugarLoafPLoP 2002, Segunda Conferência Latino-Americana em Linguagens de Padrões para Programação, Itaipava, RJ, 2002.

[15] C., Pires, “Multi Locale Entity: Um padrão de projeto para persistência de entidades com internacionalização”, SugarLoafPLoP 2003, Terceira Conferência Latino-Americana

em Linguagens de Padrões para Programação, Porto de Galinhas, PE, 2003. [16] R., Hanmer, “Operations and Maintenance 2”, SugarLoafPLoP 2003, Terceira Conferência Latino-Americana em Linguagens de Padrões para Programação, Porto de Galinhas, PE, 2003. [17] G.T., Souza, C.G.S., Pires, M.O.O., Barros, “Padrões MVC para Sistemas de Informação”, SugarLoafPLoP 2003, Terceira Conferência Latino-Americana em Linguagens de Padrões para Programação, Porto de Galinhas, PE, 2003. [18] G.T., Souza, C.G.S., Pires, “PATI-MVC: Uma Família de Padrões para Sistemas de Informação baseada no padrão MVC”, SugarLoafPLoP 2004, Quarta Conferência Latino-Americana em Linguagens de Padrões para Programação, Porto das Dunas, CE, 2004. [19] V., Garcia, D., Lucrédio, A., Prado, E., Piveta, L., Zancanella, A. Alvaro e E., Almeida, "Manipulating Crosscutting Concerns", SugarLoafPLoP 2004, Quarta Conferência Latino-Americana em Linguagens de Padrões para Programação, Porto das Dunas, CE, 2004. [20] A., Belchior, G., Souza, C.G.S., Pires, “Padrões de Requisitos para Especificação de Casos de Uso em Sistemas de Informação”, SugarLoafPLoP 2005, Quinta Conferência LatinoAmericana em Linguagens de Padrões para Programação, Campos do Jordão, SP, 2005. [21] M., Santos, U., Kulesza e C., Lucena, “BulkLoader Pattern”, SugarLoafPLoP 2007, Sexta Conferência LatinoAmericana em Linguagens de Padrões para Programação, Porto de Galinhas, PE, 2007. [22] T., Barros, M., Silva e E., Espínola, “State MVC: Estendendo o padrão MVC para uso no desenvolvimento de aplicações para dispositivos móveis”, SugarLoafPLoP 2007, Sexta Conferência Latino-Americana em Linguagens de Padrões para Programação, Porto de Galinhas, PE, 2007. [23] L., Cordeiro, C., Becker e R., Barreto, "Applying Scrum and Organizational Patterns to Multi Site Software Development", SugarLoafPLoP 2007, Sexta Conferência Latino-Americana em Linguagens de Padrões para Programação, Porto de Galinhas, PE. [24] M., Souza e J., Souza, “Padrão AutenticaConexão”, SugarLoafPLoP 2007, Sexta Conferência Latino-Americana em Linguagens de Padrões para Programação, Porto de Galinhas, PE, 2007.

Padrões na Prática Aplicação de Padrões de Software em Empresas - Analise Quantitativa e Qualitativa  

Este artigo traz um estudo estatístico sobre a aplicação de padrões de software em empresas de desenvolvimento.