• Nenhum resultado encontrado

Análise Comparativa entre a Solução e os Trabalhos Relacionados

A solução para mapear processo de software e processos de software é realizada através da representação de elementos do processo de software no plano do projeto, durante a instanciação. Essa representação estabelece um vínculo entre as perspectivas. Dessa forma, é possível identificar as informações do processo a partir das tarefas e registros de execução, ao longo projeto de software. Durante a revisão da literatura realizada (Capítulo 4), foram identificados trabalhos relacionados que abordam o problema da lacuna entre as perspectivas do processo e do projeto. Estes trabalhos foram agrupados em três categorias de solução para o problema: Correspondência, Alinhamento e Mineração.

As estratégias de Correspondência (Matching) propostas por Baier et al. (2014), Baier et al. (2015a), Baier et al. (2015b) e Baier et al. (2018) exigem pouco esforço manual para corresponder os registros de execução com as atividades predefinidas no modelo de processo. A solução definida nesta tese também requer esforço manual, mas o mapeamento entre as tarefas e atividades do processo é feito na criação dos registros, devido à complexidade de formalizar heurísticas, para identificar o relacionamento entre o processo de software definido (atividade) e o plano do projeto (tarefa), após o plano de o projeto ter sido criado.

As estratégias de Alinhamento apresentaram soluções de alinhamento entre o registro de eventos e o modelo de processo. Os seguintes trabalhos foram identificados: Leoni, Maggi e Van der Aalst (2012), Adriansyah et al. (2012), Adriansyah e Buijs (2012), Leoni e Van Der Aalst (2013), Leoni, Maggi e Van der Aalst (2015), Mannardt et al. (2016), Leoni e Marrella (2017), Van Dongen et al. (2017). Eles apontaram alguns benefícios desse alinhamento para apoiar a verificação de conformidade e utilizam métricas que avaliam a qualidade de um modelo de processo para representar o comportamento observado (aptidão e precisão). No entanto, as técnicas apresentadas não consideram o problema da falta de mapeamento entre o processo e o projeto (a atividade do processo de referência não é registrada durante a execução do processo), o que dificulta a identificação da atividade para cada registro

da base de dados de execução. Nesse sentido, sem esse vínculo, a aplicação de técnicas de alinhamento pode enfrentar desafios. De acordo com Baier et al. (2018), a relação entre eventos e atividades não pode ser facilmente identificada usando uma correspondência simples de cadeias, pois os termos usados nos registros raramente ocorrem nos nomes das atividades do modelo de processo. A solução apresentada nesta tese pretende estabelecer o vínculo entre elementos do modelo de processo e tarefa do plano do projeto através de operações de instanciação. Neste sentido, o mapeamento entre as perspectivas pode ser apresentado como um pré-requisito para a aplicação das abordagens de alinhamento, uma vez torna explícita a ligação entre as perspectivas, por meio do mapeamento entre as representações do processo e projeto de software.

Não foi possível identificar na literatura nenhuma abordagem automática, e a solução apresentada não é uma exceção neste aspecto, pois para estabelecer o mapeamento requer um esforço manual. Apesar do esforço manual necessário, o aumento desse esforço ocorre na criação do plano do projeto (instanciação), uma etapa já prevista e realizada ao longo do projeto de software. Considerando que o mapeamento é realizado por profissionais que devem conhecer o processo, não é necessário alocar recursos adicionais para realizar este mapeamento.

Diferentemente das estratégias apontadas nos trabalhos relacionados, a principal vantagem desta solução é que o mapeamento é estabelecido durante a instanciação (criação do plano do projeto) do processo. Assim, os benefícios do mapeamento podem ser obtidos logo após a instanciação do processo de software. Enquanto, nas estratégias identificadas, o mapeamento é realizado após a execução. Portanto, os benefícios do mapeamento podem ser usados apenas em novos projetos ou em iterações subsequentes do mesmo projeto. Uma vez estabelecido o mapeamento, é possível extrair informações do processo, para que ações como re- planejamento e treinamento da equipe possam ser executadas para ajustar o processo do software de referência ao projeto do software, ou vice-versa, se necessário.

As estratégias identificadas na literatura, o mapeamento ocorre após a execução do processo, sendo assim, perde-se o conhecimento dos profissionais envolvidos na criação do plano do projeto. Assim, o esforço de mapeamento é mais significativo após a execução do processo, conforme discutido por Baier et al. (2018). De acordo com Baier et al. (2018) independentemente das técnicas empregadas, a pior complexidade do problema de calcular alinhamentos ideais é exponencial em relação à quantidade de comportamento permitido pelos modelos de processo e o tamanho dos registros de execução.

Para finalizar, todas as pesquisas identificadas são da área de processos de negócio. Em nossa revisão da literatura, não identificamos trabalhos que abordem estratégias de mapeamento aplicadas a processos de software. Isto reforça a necessidade de investigar esse problema nos processos de software e na dedicação de esforços na proposição de soluções.

5.6 Considerações Finais

Este Capítulo apresentou a visão geral da solução para mapear as perspectivas de processo e projeto. O processo de aplicação da solução, que compreende as etapas de definição, instanciação e execução, foi descrito. Também foram apresentadas em detalhes as operações de instanciação propostas que implementam mecanismos que permitem que elementos do processo de software definido estejam explícitos durante a instanciação e execução. A partir do estudo de observação e das entrevistas realizadas foi possível identificar a ocorrência das relações propostas por cada operação de instanciação. De maneira geral, com base no estudo de observação e nas entrevistas realizadas, foi possível confirmar que o comportamento proposto por cada operação é observado durante a criação das tarefas. A busca estruturada permitiu-nos identificar que não existem abordagens e tecnologias disponíveis na literatura que possa apoiar aos engenheiros de software a mapear o processo definido para as tarefas do projeto. Uma análise comparativa permitiu identificar o diferencial da solução em relação aos trabalhos relacionados.

Considere-se que o resultado do mapeamento estabelecido, por meio das operações de instanciação, além de permitir o mapeamento entre as perspectivas de processo e projeto, também permite realizar mais facilmente análises dos processos de software efetivamente executados nos projetos de software. Neste sentido, o Capítulo seguinte apresenta orientações para apoiar a demonstração do benefício do mapeamento na identificação do processo de software executado, bem como na verificação de sua conformidade com o processo de software definido.

6 Identificação do Processo de Software

Executado e de não Conformidades

Este Capítulo apresenta orientações para demonstrar o benefício do mapeamento entre as perspectivas de processo e projeto na identificação do processo de software executado e na identificação de não conformidades.

6.1 Introdução

Considerando os objetivos específicos apresentados no Capítulo 1 na Seção

1.3 – Viabilizar a identificação do processo de software executado, por meio da

estruturação dos registros de execução e Viabilizar a identificação de não conformidades, a partir do mapeamento entre as perspectivas, este capítulo apresenta orientações que apoiam a demonstração do benefício do mapeamento, entre representações do processo e projeto de software, na identificação do processo de software executado e na identificação de não conformidades. Conforme destacado por Baier et al. (2018), o mapeamento dos eventos produzidos (tarefas e registros) e as atividades de um determinado modelo de processo é essencial para verificação de conformidade e entendimento dos resultados da mineração de processos.

De acordo com Van der Aalst et al. (2011) as técnicas de Mineração de Processo podem ajudar as organizações a ter um conhecimento mais profundo de seus processos, a partir das tarefas registradas em ferramentas de gerenciamento de projetos, em termos de descoberta e aprimoramento de modelos de processo ou verificação da conformidade da execução com a definição. Porém, conforme observado por Santos, de Oliveira e Brito e Abreu (2015), é difícil realizar a análise do processo de software executado a partir dos registros de execução, embora seja registrada uma grande quantidade de dados ao longo do projeto de desenvolvimento de software, uma vez que informações do processo de software de referência não estão explícitas nos registros de execução. O que torna a análise do processo que efetivamente é seguido ao longo dos projetos uma atividade não trivial, demorada e propensa a erros. De acordo com Baier et al. (2018) os modelos descobertos são mais compreensíveis, quando a terminologia, representada nos registros de execução, é de conhecimentos dos profissionais envolvidos no processo.

A Figura 8 apresenta a visão geral da identificação do processo de software executado e de não conformidades considerando a obtenção de registros de execução mapeados com as atividades do processo de referência.

Figura 8 - Visão geral da Identificação do Processo de Software Executado e de não Conformidades. Fonte: A Autora.

A atividade Obter Registros de Execução Mapeados envolve a obtenção dos registros de execução, gerados a partir da solução de mapeamento apresentada no Capítulo 5, assim que a execução da iteração ou do projeto é concluída.

A Seção 6.2 apresenta as orientações para a identificação do processo de software executado realizada a partir de bases de dados de execução de projetos mapeados. E a Seção 6.3 apresenta as orientações para a identificação de não conformidade, realizada a partir de bases de dados de execução de projetos mapeados. Por último as considerações finais são apresentadas na Seção 6.4.

6.2 Identificando o Processo de Software Executado