Original Article: A Review of Pattern Languages of Program Design
Author: cs.uni.edu

Uma análise do Padrão de Idiomas do Design do Programa

editado por James O. Coplien e Douglas C. Schmidt
Addison Wesley, 1995, 562 paginas


Reviewed by:
Eugene Wallingford
Department of Computer Science
University of Northern Iowa
Cedar Falls, Iowa 50614-0507
[email protected]


Nos últimos cinco anos, uma vibrante comunidade de pesquisadores e profissionais cresceu em torno da idéia de padrões. Originalmente explorada pelo arquiteto Christopher Alexander, padrões e linguagens de padrões capturam sabedoria comum sobre o bom design e apresentam-na em uma forma literária que permite a outros reutilizar essa experiência. Cada padrão aborda um problema de design específico em um contexto particular, discute as forças que tornam difícil encontrar uma solução boa e apresenta uma solução que tem sido bem sucedida na mediação dessas forças. Nada sobre padrões é inerentemente orientado a objetos, mas a grande maioria do trabalho na comunidade de padrões envolve análise e design OO.

Com este livro, os editores Jim Coplien e Doug Schmidt apresentam o mundo em geral para a comunidade de padrões diversos. Os capítulos de Padrão de Idiomas do Design do Programa são baseados em trabalhos apresentados na Primeira Conferência Anual de Idiomas Padrão de Programas, realizada em agosto de 1994. Este foi um novo tipo de conferência, onde as pessoas não apresentaram pesquisas novas, mas "antigos", que encontraram repetidamente úteis em suas próprias práticas de software. Uma característica central da PLoP foi o uso da oficina do escritor em lugar de apresentações de papel tradicionais. Nas oficinas, os escritores ouviram um pequeno grupo de revisores discutir seus papéis, as idéias nele contidas e a eficácia da sua forma. Como resultado, Coplien e Schmidt afirmam: "Os capítulos deste livro são certamente os trabalhos mais intensamente editados em literatura de software contemporânea". Esta não é uma reivindicação vazia; cada capítulo do livro é informativo, bem escrito e agradável de ler.

As Seções 1, 5 e 7 apresentam padrões que são, em sua maioria, gerais para a noção de desenvolvimento de software orientado a objetos. Na primeira seção, quatro capítulos abordam o uso de padrões no desenvolvimento de estruturas e componentes reutilizáveis. Esses capítulos também demonstram a grande amplitude da literatura padrão. O capítulo 2, de Riehle e Zullighoven, descreve um padrão de linguagem para a concepção de quadros na perspectiva de ferramentas e materiais. Eles extrapolam de uma metáfora interessante para um conjunto de padrões de design que apresentam uma visão do projeto da maioria das estruturas de aplicativos. Por outro lado, o Capítulo 1, de Adams, apresenta um único padrão < functionality Ala Carte < em apenas duas páginas. Este padrão aborda a questão espinhosa de como estender as capacidades de uma estrutura sem levar a compensações indesejáveis no desempenho.

Os capítulos da Seção 5 observam a questão da classificação padrão. Dois desses capítulos se concentram em diferentes dimensões pelas quais os padrões podem ser organizados, de modo que padrões adequados possam ser identificados pelos designers de software precisamente no momento certo. O capítulo que eu achei mais interessante, no entanto, foi o catálogo de padrões de Robert Martin que ele encontrou em um grande corpo de código existente. Os padrões de Martin são aspectos práticos dos tipos de decisões tomadas pelos desenvolvedores em todos os grandes projetos de software. Finalmente, a Seção 7 envolve padrões no projeto de objetos individuais. que promovem a reutilização. Dois desses capítulos estão entre os melhores do livro. A descrição de Viljamaa do Padrão Self Especificado pelo Cliente no Capítulo 26 explica claramente uma solução para o problema de delegar responsabilidade em contextos onde o papel que um objeto reproduz pode mudar dinamicamente. No Capítulo 27, Auer fornece uma linguagem padrão para projetar objetos usando auto-encapsulamento. Esta técnica resulta em objetos que são reutilizáveis ​​ao máximo no contexto de futuras subclasses. Este capítulo é tão bom e aborda um problema tão importante, que deve ser necessário ler para todos os programadores orientados a objetos.

As Seções 2, 6 e 8 tratam dos padrões de computação distribuída. A riqueza deste domínio levou a uma grande quantidade de trabalho na comunidade de padrões em questões de sincronização, concorrência, integração de aplicativos e gerenciamento de eventos. Os capítulos dessas seções apresentam padrões que são de interesse até mesmo para os designers que não trabalham neste domínio, do qual este revisor é um. O seu valor decorre do valor da forma do padrão, o que incentiva a discussão de problemas e soluções a um nível que torna as decisões de design interessantes explícitas e palpáveis. Muitas dessas decisões aparecem, embora sob formas ligeiramente diferentes, em outros tipos de sistemas, e, portanto, os padrões fornecem uma forma de inspiração que de outra forma não poderia estar disponível. Entre os capítulos mais geralmente acessíveis nessas seções estão a discussão de Meszaros sobre o padrão do Protocolo Half-Object Plus para a decomposição de um único objeto em vários hosts de forma transparente para usuários e o padrão Reactor de Schmidt para reconhecer e despachar vários manipuladores de eventos em um sistema dirigido por eventos.

A Seção 3 é a única seção que é específica para um domínio particular, o dos negócios. Como uma pessoa com experiência na construção de modelos de processos e conhecimentos comerciais, achei que esta seção delgada de três capítulos fosse de tremendo interesse. Estes capítulos demonstram novamente a grande amplitude da literatura padrão. Capítulo 11, por Wake, descreve um único padrão para os objetos do número de conta. Sua breve discussão sobre os problemas subjacentes à especificação, criação e uso desses objetos é lúcida e cheia de pontos importantes. No Capítulo 10, Cunningham aborda um tema de simplicidade aparente < validação de dados em sistemas de entrada < e apresenta uma linguagem perspicaz de onze padrões que captura conhecimentos fundamentais para manter a integridade da informação em um sistema de software diversificado.

A Seção 4 amplia o tema do design do programa no título do livro em seu sentido mais amplo, o processo e a organização no desenvolvimento de software. Cada um dos quatro capítulos desta seção será de grande interesse para qualquer pessoa envolvida no processo de construção de grandes sistemas de software. O Capítulo 13 da Coplien descreve um idioma de quarenta e dois padrões para o desenvolvimento generativo de uma organização de software de qualidade baseada em um extenso estudo de projetos de software bem-sucedidos. Esses padrões abrangem toda a gama de atividades do tamanho da organização para compensar o sucesso. O capítulo 14, de Foote e Opdyke, apresenta padrões que abordam questões de evolução nos sistemas de objetos e como os designers podem facilitar o fluxo natural, desde o protótipo até a expansão da responsabilidade até a consolidação de objetos maduros em um sistema entregue. Whitenack descreve os primórdios de uma linguagem de padrões para a análise de requisitos no Capítulo 15. Finalmente, no Capítulo 16, Kerth relata uma linguagem de padrão que visa "purificar" a fase de análise do desenvolvimento de software. Sua afirmação é que, antes da criação de tais linguagens de padrões, o * processo * de análise e design foi tão difícil de descrever que as considerações de design (como categorias de objetos) se misturaram na análise.

Em relação ao livro como um todo, há uma sensação comum para todas as oito seções que são incomuns na maioria das coleções de documentos da conferência. O tema do padrão ainda está fresco na comunidade, e os autores dos trinta capítulos escreveram padrões de uma forma que proporciona uma fraca unidade ao livro. Infelizmente, essa unidade também se manifesta sob a forma de redundância considerável em introduções de capítulo e bibliografias. As descrições narrativas dos padrões de Alexander e a inspiração para a comunidade de software realmente dão um bom sentimento de acolhimento para os procedimentos, mas as entradas bibliográficas repetidas fazem as seguintes citações em todos os documentos uma tarefa difícil. Um efeito colateral é que os documentos podem ser lidos relativamente independentes uns dos outros, embora eu sugira uma leitura substancial do livro para receber o impacto total de quais padrões têm para oferecer.

A novidade do campo também significa que muitos autores descrevem padrões que são muito semelhantes aos outros descritos em outro lugar no texto. Uma tarefa que permanece para a comunidade de padrões é a integração de linguagens de padrões diferentes, mas similares, em conjuntos coerentes. Mas esta tarefa não será fácil, como Kerth discute no Capítulo 16. Finalmente, o livro demonstra um bom equilíbrio de padrões que não são centrados no idioma, mas que geralmente são relatados no contexto de um único idioma (geralmente Smalltalk ou C ++ ).

A Coplien e a Schmidt reuniram uma pesquisa altamente legível e informativa sobre o trabalho que está sendo realizado nos padrões de design de software. Eles reconhecem em seu prefácio que a ampla gama de problemas e soluções apresentadas neste primeiro volume é exigente do leitor e, como resultado, nem todos os capítulos serão de igual interesse para todos os leitores. Concordo com esta avaliação, mas também concordo com o encorajamento para participar de todas as oito seções. Depois de escanear pelo livro pela primeira vez, minha mente estava correndo com idéias que foram plantadas ou despertadas por vários documentos no livro. Essas idéias exigiram minha segunda leitura, durante a qual pude coletar o significado de alguns dos capítulos em um nível muito mais profundo. E, se você tiver apenas tempo limitado, encorajo você a ler a Seção 4 sobre processo e organização. Ele exemplifica a abordagem do padrão, capta o espírito de examinar o processo por trás do artefato e é apropriado para os leitores de todos os antecedentes. Depois de lê-lo, você quase certamente vai querer voltar para mais.



Escrito em: dezembro de 1995.