• Nenhum resultado encontrado

Independente da estratégia escolhida por uma organização de TI para definição e adaptação de seus processos de software, é importante compreender a complexidade associada a essas atividades. Isso porque, normalmente, um processo de software possui dezenas, às vezes centenas de elementos interconectados por relacionamentos e qualquer inconsistência na definição desse processo poderá ter impacto negativo sobre a sua execução em um projeto de software.

Assim, a consistência de um processo de software é definida como a exigência de que suas atividades, tarefas, produtos de trabalho, ferramentas, papéis e relações não contenham qualquer contradição e sejam, portanto, coerentes entre si [Har97]. De acordo com Atkinson et al. [Atk07], erros são frequentemente introduzidos na definição de um processo de software, por seus modeladores, e, geralmente, estão relacionados com a sintaxe ou erros tipográficos, o que leva a várias inconsistências no processo resultante.

Um modelador pode, por exemplo, cometer um erro simples ao conectar um produto de trabalho que ainda não foi produzido no processo de software como entrada para uma determinada tarefa (denominado em [Atk07] como ação). Ao fazer isso, o modelador pode quebrar uma dependência do processo, pois, se a tarefa em questão depende da entrada faltante, ela não pode ser executada, o que causa uma falha para a

execução do processo de software. Outros exemplos de inconsistências incluídas na atividade de definição dos processos de software são encontrados nos estudos de [Baj07], [Dai07], [Hus08] e [Bao08].

Para Bajec et al. [Baj07], os problemas de consistência nos processos de software estão basicamente relacionados com a incompletude das suas informações. Nesse sentido, os autores referenciam a importância do uso de um metamodelo para a definição de processos que estabeleça regras mínimas de consistência, através dos seus atributos e suas associações entre metaclasses. Esses tipos de regras devem, por exemplo, definir a quantidade mínima e máxima de papéis, produtos de trabalho e ferramentas que devem estar associados tarefas em um processo de software. Ainda, de acordo com Bajec et al. [Baj07], outras regras, as quais não podem ser expressas através de um metamodelo, devem ser definidas, utilizando outro tipo de linguagem como, por exemplo, a natural.

As inconsistências relacionadas com a incompletude de informações em um processo de software também são referenciadas por [Hus08]. Analogamente ao estudo de Bajec et al. [Baj06], o trabalho apresentado por Hsueh et al. também referencia o uso de um metamodelo de processo que permita a definição de regras de validação para cada um de seus elementos.

Outros importantes tipos de inconsistências citados por alguns estudos na literatura [Dai07], [Bao08], os quais também podem ocorrer durante a definição dos processos de software, são aquelas relacionadas com o sequenciamento definido para atividades ou tarefas. De acordo com Bao [Bao08], um conjunto de regras deve ser estabelecido para os elementos de um processo de software, de forma a garantir sua correta execução em um projeto de software. Essas regras, basicamente, devem definir requisitos afim de que o ponto inicial e final das atividades ou tarefas seja estabelecido, assim como devem estabelecer os requisitos para que as atividades ou tarefas sejam sequenciadas de forma a não apresentarem nenhuma situação que represente um

deadlock3 durante a execução do processo de software.

Analisando o exposto acima, é possível observar que é comum entre os autores da área de pesquisa sobre definição de processos, o uso de regras para checagem da consistência de um processo de software. Alguns destes autores enfatizam também uma etapa específica, durante a definição dos processos de software, para checagem da

3

Um deadlock se configura como uma situação onde duas ou mais atividades estão esperando uma pela outra para iniciar ou terminar formando assim uma cadeia circular.

consistência desses processos [Atk07], [Baj07] e [Hsu08]. Atkinson et al. em [Atk07], por exemplo, destacam a importância da checagem de um processo de software antes de sua execução devido à habilidade que esse mecanismo fornece para detectar e eliminar inconsistências em um processo antes que elas se tornem erros e comprometam o sucesso de um projeto de software. Hsueh et al. em [Hsu08] compartilham, em seu artigo, da mesma ideia de [Atk07] e ainda relatam que a verificação de processos é reconhecida como um elemento essencial para melhoria de um processo de software.

Faz-se necessário citar que inconsistências podem ser introduzidas também durante a adaptação dos processos, devido a falta de mecanismos apropriados para conduzir esse tipo de atividade. Para Yoon et al. [Yoo01], um mecanismo apropriado para adaptação de processos é fornecido por um conjunto de regras que guiem sistematicamente as operações de adaptação e preservem as relações de dependência entre os elementos de um processo de software. De acordo com Park et al. [Par11], todo mecanismo de adaptação deve fornecer uma análise de impacto sobre os elementos e relacionamentos afetados durante qualquer mudança em um processo de software. Para esses autores, essa é a única maneira de garantir que o responsável por uma mudança possa manter a consistência do processo original.

Outros autores, os quais apresentam soluções especificamente para a atividade de adaptação de processos, também relacionam o uso de regras para essas atividades [Wel95] e [Rui09] e suportam a análise de impacto para mudanças em processos de software [Wel95], [Yoo01] e [Rui09]. Percebe-se que, assim como na atividade de definição de processos, o uso de regras também é o principal mecanismo utilizado para garantir a consistência de um processo de software durante suas atividades de adaptação.

Desse modo, visando descrever as regras e o funcionamento dos trabalhos citados acima e de outros estudos relacionados, assim como objetivando a identificação das lacunas de pesquisa na área de definição e adaptação de processos de software consistentes, a seguir, apresenta-se o resultado da revisão sistemática conduzida sobre esse assunto nesta pesquisa.

Documentos relacionados