Um padrão de processo descreve uma abordagem ou série de ações bem sucedidas para o desenvolvimento de software (AMBLER, 1998). Permite o armazenamento e organização sistemáticos de conhecimento sobre soluções, além de fornecer os meios para reutilização de conhecimento de especialistas. Existem também os antipadrões que representam as abordagens que não deram certo, explicitando uma situação que não deve ser repetida (AMBLER, 1998).
Segundo AMBLER (1998) existem três tipos básicos de padrões de processos: (i) Padrões de tarefa: mostram os passos detalhados para executar uma tarefa específica; (ii) Padrões de estágio: mostram os passos que normalmente são executados de forma iterativa, focando em um único estágio do desenvolvimento. (iii) Padrões de fase: este tipo mostra as interações entre os estágios nas fases do projeto de software.
Da mesma forma que nas técnicas descritas anteriormente, vários trabalhos na literatura apresentam abordagens que utilizam padrões de processo, ainda que a forma como são definidos e suas aplicações variem bastante.
GASKA e GAUSE (1998) apresentam uma abordagem para definição de padrões de processo para requisitos, considerando o conhecimento existente em outras áreas de conhecimento fora da engenharia de software, como arquitetura, desenvolvimento de produtos e manufatura, entre outros. Os padrões de processo são formados por: nome do padrão, autor do padrão, foco da definição do problema, motivação, indicação se é dependente de domínio, descrição do processo, notação do segmento do processo, entradas, saídas, restrições, mecanismos, ferramentas de apoio conhecidas, usuários conhecidos e padrões relacionados.
VASCONCELOS e WERNER (1998) apresentam uma abordagem baseada em padrões de processo para reutilizar o conhecimento de processos, através da definição de padrões de atividade e de processo, que podem ser consultados e usados para adaptar os modelos de processo padrão, segundo características específicas, por exemplo, de um
projeto. Foram definidos padrões de processo e padrões de atividades, cada um deles com quatro seções: Identificação (que pode ter nome, sinônimo, descrição e propósito); Contexto (que pode ter domínio de aplicação, características da organização a que se aplica, requisitos para usar, além de casos conhecidos de uso); Solução (que pode ter passos e diagramas de atividades) e Padrões Relacionados.
Como citado na seção anterior, na abordagem ProMisE (BALDASSARRE et al., 2002), padrões de processo auxiliam na seleção da variante a ser usada em um determinado contexto na adaptação de uma família de processos. Os padrões nessa abordagem são compostos por: Nome, Problema, Modelo de Processo (processo-raiz), Modelo de Decisão (como especializar o processo raiz – são definidos fatores de diversidade, ligados a ações de especialização), Soluções (os processos especializados), Relacionamentos (outros padrões que especializam o padrão) e experiências (o que foi relatado do uso do padrão).
HUANG e ZHANG (2003) apresentam a abordagem “Padrões de Processos Hierárquicos”, um framework que inclui três tipos de padrões: (i) de ciclo de vida (incremental, cascata, etc.); (ii) de atividades (o que deve ser feito, entradas e saídas, etc.); (iii) de fluxo de trabalho (descrevem uma execução de um conjunto de atividades).
Para auxiliar na utilização de padrões de processo e facilitar a localização de padrões definidos por outras organizações ou para outros contextos, mesmo que o relacionamento não esteja explicitamente descrito no padrão, WASHIZAKI (2005) propõe uma técnica para análise de relações entre padrões. A técnica aplicada usa técnicas de processamento de texto existentes para extrair padrões de documentos e calcular a "força" entre as relações dos padrões. Como resultado de avaliações experimentais, o autor mostra que o sistema implementando a técnica proposta extraiu relações apropriadas dos diferentes catálogos de padrões de processo existentes sem que as informações de relacionamento estivessem descritas na documentação original dos padrões.
TRAN et al. (2006) descrevem um metamodelo baseado na UML e no SPEM para integrar conceitos de processo (modelos de processo) com conceitos de padrões de processo. Nessa abordagem, um padrão de processos captura um modelo de processos que pode ser reutilizado para resolver um problema recorrente no desenvolvimento de processos em um dado contexto. Um problema expressa a intenção do padrão e pode ser associado a uma tarefa de desenvolvimento. É possível que existam vários padrões de
um padrão de processos. Um contexto caracteriza condições nas quais um padrão de processo pode ser aplicado, resultados que podem ser obtidos a partir da aplicação do padrão e situações recomendadas para reutilizar o padrão. São definidas, também, quatro relações possíveis entre padrões de processo: sequência (ordem entre padrões), uso, refinamento e alternativa.
LARRUCEA e BOZHEVA (2007) apresentam um framework para descrever processos baseados em padrões de processo, considerando metodologias ágeis. Os padrões são definidos de acordo com a terminologia ágil. Existem padrões de práticas (ações que devem ser executadas), de conceitos (definições) e de princípios (guias orientados a pessoas). Um padrão é basicamente formado por um problema, uma solução e consequências. Nesse mesmo contexto, MENG et al. (2007) propõem uma PPL (Process Pattern Language) para métodos ágeis. Essa PPL consiste de um grupo de padrões de processo e os relacionamentos entre esses padrões. Os autores esperam que processos apropriados sejam estabelecidos a partir da combinação de partes de solução de processos selecionadas dos padrões de processos considerando seus relacionamentos. Na abordagem descrita, um padrão de processo é composto por: nome do padrão, contexto, problema, solução (incluindo atividade, papéis, artefatos e regras), consequência (o que se espera com a aplicação do padrão) e padrões relacionados. Dois tipos de relacionamentos entre padrões são descritos: estende e usa.
Segundo HANH NHI et al. (2007), a comunidade de processos considera apenas tarefas de desenvolvimento reutilizáveis como padrões de processo e ignora padrões de processo capturando conhecimento de processo mais abstrato. Assim, para os autores, um padrão de processo captura um modelo de processo (ou um fragmento do modelo) representando uma solução que pode ser aplicada a um dado contexto para resolver um problema recorrente na modelagem de processo. Esses problemas podem ser desde a definição do contexto de um elemento de processo (por exemplo, tarefa, produto, papel) até a descrição de organizações de processo gerais, ou seja, relações entre elementos de processo. Assim, as soluções fornecidas por padrões de processo poderiam ser representadas em diferentes níveis de abstração. Autores classificam padrões em três categorias: padrões de processo abstratos, padrões de processo gerais e padrões de processo concretos. Na abordagem descrita, um padrão é composto por um problema, uma solução e um contexto e funciona como template. Além disso, através de relacionamento de binding, é possível indicar que o conteúdo de um padrão será
copiado para um elemento de processo, substituindo sua estrutura. Outro relacionamento permite modificar as relações existentes entre os elementos de processo. ASADI e RAMSIN (2009) e posteriormente ASADI et al. (2010) abordam o tema da SME - Situational Method Engineering (trata da construção e adaptação de uma metodologia de acordo com as características de uma situação de projeto específica). Os autores propõem um modelo de processo genérico baseado em padrões para SME, que é carregado com vários padrões de processo extraídos de abordagens de SME existentes. A proposta é composta de três fases: iniciação de método (definição dos fundamentos da metodologia, incluindo requisitos, infraestrutura, etc.); construção do método (define-se o fluxo de trabalho do método); e implantação do método, onde este é colocado em produção. Fornecem, também, padrões de processo para o desenvolvimento baseado em modelos, padrões esses que foram derivados de um estudo de seis metodologias principais de MDA e que são a base para uma proposta de um processo de software genérico para MDA (MDASP). Os autores argumentam que esses processos podem promover o SME através da disponibilização de classes de componentes de processos comuns que podem ser usados para montar, adaptar e estender as metodologias baseadas em MDA.
De maneira geral, os padrões de processo fornecem conhecimento extra para auxiliar na definição e execução dos processos. No entanto, muitas vezes o conceito se confunde com o conceito de componente, framework, template ou família de processos, principalmente em situações em que os padrões envolvem agrupamentos de atividades ou tarefas. Assim, um padrão de processo pode variar desde uma simples informação adicional sobre como usar um dado componente, até uma estrutura de componentes relacionados para formar uma estrutura maior de processo, inclusive guiando sua adaptação.