• Nenhum resultado encontrado

CAPÍTULO 3 – Reutilização de Processos de Software

4.3 Uma Adaptação de Conceitos de Reutilização de Software e de Processos de

4.3.2 Características de Processo

Nesta visão é descrita a maneira como características de processo são utilizadas nesta abordagem, conforme ilustrado na Figura 4.3.

Figura 4.3 – Características de Processo

Uma característica de processo nesta abordagem é uma adaptação do conceito de característica (feature) utilizado no contexto de linhas de produtos tradicional para o

qualidade ou caracterização com a qual o processo precisa ser compatível. As características restringem a utilização de componentes, estabelecendo conjuntos de componentes que podem ou não ser usados. Assim, as características podem ser consideradas um conjunto de regras aplicadas a componentes de processo que guiam a definição de processos com base nas necessidades do processo (mapeadas como características de processo). É importante mencionar que a semântica de uma característica é definida por seu usuário. Assim, as características de processo são utilizadas principalmente como um mecanismo de seleção de componentes de processo de alto nível. Logo, a granularidade de uma característica irá depender de seu uso pretendido e o engenheiro de processos deverá determinar o nível mais adequado. Vale destacar que as características de processo são usadas, também, de maneira semelhante, para classificar linhas de processo, de modo a facilitar a seleção de uma dentre várias linhas de processo quando estas existirem.

As características de processo possuem um tipo, que é utilizado para agrupar características semelhantes. Podem ser citados como exemplos de tipos de características: aderência a modelos de maturidade, métodos e técnicas, disciplina, etc. Além disso, podem ser criados tipos mais específicos, dependendo do escopo das linhas de processo. Por exemplo, em um contexto em que se deseje definir processos de testes, poderiam existir tipos de características de processo tais como: ferramenta de testes, técnica de teste, equipe executora dos testes, escopo dos testes, etc.

Podem também ser definidas relações entre características. O modelo proposto nesta tese prevê dois tipos de relações: relação de dependência e de conflito. Essas relações são um mecanismo auxiliar adicional para permitir a modelagem de restrições sobre a seleção de componentes.

Quando uma característica C1 depende de outra característica C2 isso significa que sempre que C1 for selecionada, C2 também precisa ser. No entanto, se C2 é selecionada, não necessariamente C1 precisa ser. Ou seja, a relação de dependência não é simétrica (recíproca). Contudo, se C1 depende de C2 que depende de outra característica C3, então C1 também depende de C3. Assim, a relação de dependência é também transitiva.

Por outro lado, se uma característica C4 conflita com outra característica C5, isso significa que sempre que C4 for selecionada, C5 não pode ser. O contrário também é verdade, ou seja, se C4 conflita com C5, então C5 conflita com C4. Ou seja, a relação de conflito é simétrica. Entretanto, se C4 conflita com C5, que conflita com outra

característica C6, nada se pode dizer sobre a relação entre C4 e C6, que podem ou não ser conflitantes entre si. Logo, a relação de conflito não é transitiva.

Para exemplificar essa situação, considere um caso em que se deseje definir um processo de planejamento de projetos aderente ao nível F do MPS.BR que considere, pelo menos, diferentes formas de realização das estimativas dos projetos, tais como: utilizando pontos de função, pontos de caso de uso ou apenas dados históricos da organização. Assim, deveria haver pelo menos um componente abstrato CA1:"Realizar Estimativas do Projeto" e componentes concretos correspondentes. Dado o contexto, poderiam ser modeladas como características: C1:"Aderência ao MPS.BR Nível F", C2:"Planejamento de Projetos", C3:"Estimativa com Pontos de Função", C4:"Estimativa com Pontos de Caso de Uso" e C5:"Estimativa baseada em Dados Históricos". Como para ser aderente ao MPS.BR nível F é necessário realizar, dentre outros, o planejamento do projeto, então C1 depende de C2. Como o planejamento de projetos é independente de modelos de maturidade, C2 não depende de C1. Uma vez que estimar um projeto faz parte de seu planejamento, o componente CA1 seria associado a C2. Além disso, considerando que no exemplo o projeto utiliza uma única técnica de estimativas, as características C3, C4 e C5 são mutuamente exclusivas, e portanto, todas conflitam entre si. Além disso, C3, C4 e C5 se relacionam a variantes concretas específicas de CA1, ou seja, CC1:"Realizar Estimativas com Pontos de Função", CC2:"Realizar Estimativas com Pontos de Caso de Uso" e CC3:"Realizar Estimativas com Dados Históricos", respectivamente. Ao se definir um processo neste contexto, ao selecionar a característica C1 (aderência ao nível F do MPS.BR), C2 já seria incluída (pois é dependência de C1) o que levaria à obrigatoriedade da seleção do componente CA1:"Realizar Estimativas do Projeto". Assim, restaria selecionar uma de suas variantes. Para isso, poderia ser selecionada uma das características relacionadas ao método de estimativa (C3, C4 ou C5). Assumindo que C3 seja selecionada, a seleção de CC1 passa a ser a única opção, uma vez que C3 conflita com C4 e C5, o que impede a seleção de CC2 e CC3. Vale destacar que o exemplo considera características com relação de um para um com componentes de processo como simplificação. As características de processo são usadas em todo o seu potencial, no entanto, quando uma característica é mapeada para vários componentes.

É importante ressaltar que o conceito de característica de processo tem sido utilizado com semântica diferente em outras abordagens. ALEIXO et al. (2010b;

relacionado a um processo, ou seja, atividades, artefatos, ferramentas, etc. De forma semelhante, TEIXEIRA (2011) considera que características podem estar relacionadas a papéis, produtos de trabalho, conceitos, práticas, tarefas, atividades ou disciplinas. Ou seja, selecionar uma característica pode implicar na inclusão ou não de um produto de trabalho no processo, por exemplo. Assim, essas abordagens consideram características de granularidade bastante fina, em oposição à abordagem descrita nesta tese, em que as características são mecanismos de seleção de mais alto nível. Considera-se que as duas visões sobre as características de processo são complementares e poderiam, inclusive, ser combinadas em alguns contextos.

Neste trabalho, entretanto, optou-se pelas características de alto nível. O objetivo foi representar maior quantidade de conhecimento sobre definição de processos, aproximando as características do nível de necessidades de um processo e modelando os detalhes sobre produtos de trabalho, papéis, etc. em componentes de processo. Desta forma, é possível que o mapeamento de características de processo (definição para reutilização) seja mais custoso e um pouco menos flexível nesta abordagem. No entanto, é também possível que a sua utilização na definição de processos (para reutilização) permita que usuários menos experientes definam processos mais adequados a suas necessidades. Isso pode ocorrer uma vez que essas necessidades foram mapeadas para os processos por meio de características de processo por engenheiros de processos mais experientes.