instanciação e execução das atividades do processo de ... · desta forma, um processo é dito...

15
Instanciação e Execução das Atividades do Processo de Análise de Desempenho de Processos de Software Rodrigo Figueiredo Magalhães 1 , Taísa Guidini Gonçalves 3 , Ana Regina Rocha 1 , Gleison Santos 2 , Káthia Marçal de Oliveira 3 1 COPPE/UFRJ Universidade Federal do Rio de Janeiro Caixa Postal 68511 CEP 21.941-972 Rio de Janeiro, RJ {rfmagalhaes, darocha}@cos.ufrj.br 2 Programa de Pós-Graduação em Informática Universidade Federal do Estado do Rio de Janeiro (UNIRIO) - Av. Pasteur 458, Urca, CEP 22290-240 Rio de Janeiro, RJ [email protected] 3 Laboratoire LAMIH UMR CNRS 8201, Université de Valenciennes F-59313 Valenciennes cedex 9, France {taisa.guidinigoncalves, kathia.oliveira}@univ-valenciennes.fr Abstract. Software organizations need to continuously improve the mechanisms to develop software in order to deliver better products to their customers. Process performance analysis is among the techniques that can be used to support this goal. However, software process performance analysis is not trivial due to its demand of knowledge about several methods and techniques. The goal of this paper is to provide software process lines and process components that encapsulate knowledge about performance analysis activities, methods and techniques and a tool to support the instantiation and execution of the process performance analysis in software organizations. Resumo. As organizações de software devem continuamente melhorar a forma de desenvolver software de modo que seus produtos finais atendam à qualidade esperada por seus clientes. Um dos mecanismos para apoiar o alcance desse objetivo é a análise de desempenho. A execução da análise de desempenho, entretanto, não é uma tarefa trivial e demanda conhecimento de diversos métodos e técnicas. O objetivo deste artigo é prover processos que apoiem as organizações de software na execução das atividades de análise de desempenho por meio da definição de linhas de processo de software e componentes de processo que encapsulem conhecimento sobre as atividades, métodos e técnicas para análise de desempenho de processos e, também, uma ferramenta para instanciar e executar o processo de análise de desempenho em organizações de software. 1. Introdução Atualmente não existe dúvida de que a qualidade do software depende da qualidade do processo utilizado em sua construção (Rocha et al., 2012). Desta forma, espera-se que as organizações de software busquem a melhoria contínua da qualidade e do desempenho de seus processos, de forma que os produtos desenvolvidos atendam às necessidades dos seus clientes. O uso de técnicas e métodos que apoiem a análise de XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers 49

Upload: tranquynh

Post on 28-Jan-2019

213 views

Category:

Documents


0 download

TRANSCRIPT

Instanciação e Execução das Atividades do Processo de Análise de Desempenho de Processos de Software

Rodrigo Figueiredo Magalhães1, Taísa Guidini Gonçalves3, Ana Regina Rocha1, Gleison Santos2, Káthia Marçal de Oliveira3

1 COPPE/UFRJ – Universidade Federal do Rio de Janeiro – Caixa Postal 68511 – CEP 21.941-972 – Rio de Janeiro, RJ

{rfmagalhaes, darocha}@cos.ufrj.br

2 Programa de Pós-Graduação em Informática – Universidade Federal do Estado do Rio de Janeiro (UNIRIO) - Av. Pasteur 458, Urca, CEP 22290-240 – Rio de Janeiro, RJ

[email protected]

3 Laboratoire LAMIH – UMR CNRS 8201, Université de Valenciennes – F-59313 Valenciennes cedex 9, France

{taisa.guidinigoncalves, kathia.oliveira}@univ-valenciennes.fr

Abstract. Software organizations need to continuously improve the mechanisms to develop software in order to deliver better products to their customers. Process performance analysis is among the techniques that can be used to support this goal. However, software process performance analysis is not trivial due to its demand of knowledge about several methods and techniques. The goal of this paper is to provide software process lines and process components that encapsulate knowledge about performance analysis activities, methods and techniques and a tool to support the instantiation and execution of the process performance analysis in software organizations. Resumo. As organizações de software devem continuamente melhorar a forma de desenvolver software de modo que seus produtos finais atendam à qualidade esperada por seus clientes. Um dos mecanismos para apoiar o alcance desse objetivo é a análise de desempenho. A execução da análise de desempenho, entretanto, não é uma tarefa trivial e demanda conhecimento de diversos métodos e técnicas. O objetivo deste artigo é prover processos que apoiem as organizações de software na execução das atividades de análise de desempenho por meio da definição de linhas de processo de software e componentes de processo que encapsulem conhecimento sobre as atividades, métodos e técnicas para análise de desempenho de processos e, também, uma ferramenta para instanciar e executar o processo de análise de desempenho em organizações de software.

1. Introdução Atualmente não existe dúvida de que a qualidade do software depende da qualidade do processo utilizado em sua construção (Rocha et al., 2012). Desta forma, espera-se que as organizações de software busquem a melhoria contínua da qualidade e do desempenho de seus processos, de forma que os produtos desenvolvidos atendam às necessidades dos seus clientes. O uso de técnicas e métodos que apoiem a análise de

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

49

desempenho de processos e evidenciem pontos que necessitem de melhorias é uma das formas de atingir a melhoria contínua (CMMI Product Team, 2010; Softex, 2012).

Na norma internacional ISO/IEC 15504 (ISO/IEC, 2003) e nos modelos de maturidade MR-MPS-SW (Softex, 2012) e CMMI-DEV (CMMI Product Team, 2010), a análise de desempenho de processos é um requisito para as organizações alcançarem a alta maturidade. A análise de desempenho de processos é capaz de auxiliar na melhoria contínua da qualidade e do desempenho dos processos, uma vez que oferece um entendimento quantitativo sobre a execução do processo, visando à sua previsibilidade e melhoria (Florac e Carleton, 1999).

Realizar a atividade de análise de desempenho de processos não é uma tarefa trivial e exige conhecimento sobre diversos métodos e técnicas e sobre como utilizá-los de forma adequada. Considerando a dificuldade da execução da análise de desempenho e que a utilização de linhas de processo e componentes de processo reutilizáveis pode reduzir o esforço e o tempo necessários para definir um processo (Barreto, 2011), um apoio importante para a sua implantação nas organizações pode vir da definição de um processo para análise de desempenho de processos que organize as atividades e tarefas envolvidas. Além da definição de um processo para análise de desempenho de processos, também é necessário apoio ferramental para controlar a execução de suas atividades e armazenar os resultados obtidos.

Este artigo apresenta resultados preliminares realizados para desenvolvimento do ambiente SPEAKER (Software Process PErformance Analysis Knowledge-based EnviRonment) que se encontra em desenvolvimento pelo grupo de Qualidade de Software do Programa de Engenharia de Sistemas e Computação da COPPE/UFRJ (Schots et al., 2014). Este ambiente é composto por um corpo de conhecimento disponibilizado através de um Sistema Baseado em Conhecimento (SBC) sobre os conceitos, atividades e técnicas de análise de desempenho de processos para apoiar as organizações na execução adequada da análise de desempenho de seus processos. Além do sistema baseado em conhecimento, o ambiente SPEAKER também possui linhas de processo de software para apoiar a execução das atividades do processo de análise de desempenho e, por último, uma ferramenta para apoiar a instanciação e execução do processo de análise de desempenho por meio do conhecimento disponibilizado no SBC. Os resultados preliminares apresentados neste artigo são referentes às linhas de processo de software do processo de análise de desempenho e a ferramenta para instanciar e executar o processo de análise de desempenho. Nas próximas seções, apresentamos uma breve revisão da literatura da análise de desempenho de processos (Seção 2), seguida de uma apresentação dos componentes e linhas de processo para análise de desempenho de processos de software (Seção 3), da ferramenta para instanciação e execução do processo de análise de desempenho (Seção 4) e do exemplo de uso (Seção 5). Na Seção 6, apresentamos as conclusões e perspectivas futuras desse trabalho.

2. Análise de Desempenho de Processos de Software Originalmente proposta na área de manufatura por Shewhart na década de 1920 (Wheeler e Chambers, 1992), a análise de desempenho de processos tem como objetivo estabelecer e manter um entendimento quantitativo do desempenho dos processos, visando a previsibilidade e a melhoria contínua destes processos (Florac e Carleton,

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

50

1999; CMMI Product Team, 2010). As mudanças e tendências ocorridas no comportamento do processo, ao longo do tempo, podem ser identificadas pela análise de desempenho de processos (Rocha et al., 2012). O desempenho de um processo pode ser definido como uma medida dos resultados atuais alcançados pelo processo (CMMI Product Team, 2010). Para a identificação desta medida dois conceitos principais são aplicados: estabilidade e capacidade do processo.

A estabilidade de um processo pode ser identificada a partir dos tipos de variações (causas comuns e causas atribuíveis) que o desempenho do processo apresenta, e permite prever o desempenho do processo em execuções futuras (Wheeler e Chambers, 1992; Rocha et al., 2012). Um processo é considerado estável se apresenta variações que são devidas somente a causas comuns (interações entre os componentes do próprio processo). Por outro lado, um processo que apresenta variações que são devidas a causas atribuíveis (variações que não fazem parte do curso normal do processo) não é considerado estável e estas causas precisam ser analisadas e tratadas (Wheeler e Chambers, 1992; Florac e Carleton, 1999). A capacidade de um processo está relacionada ao bom desempenho do processo, pois um processo pode ser estável e não ser capaz. Desta forma, um processo é dito capaz se ele é estável e consegue atingir os objetivos da organização e atender aos requisitos do cliente (Wheeler e Chambers, 1992). Para identificar a estabilidade e a capacidade de um processo, ferramentas e técnicas estatísticas são utilizadas e uma das ferramentas mais utilizadas é o gráfico de controle que permite conhecer o comportamento do processo (Wheeler e Chambers, 1992; Florac e Carleton, 1999; Rocha et al., 2012).

Na área de software, para Florac e Carleton (1999), a análise de desempenho de processos que leva à melhoria contínua do processo possui as seguintes atividades: (i) esclarecer os objetivos de negócio; (ii) identificar e priorizar questões; (iii) selecionar e definir medidas; (iv) coletar, verificar e armazenar os dados; (v) analisar o comportamento do processo; e (vi) avaliar o desempenho do processo. As atividades de (i) a (iv) dizem respeito à fase de preparação da análise de desempenho, a atividade (v) tem como objetivo verificar se o processo é estável ou não e a atividade (vi) tem como objetivo verificar se o processo (considerado estável) é capaz ou não.

A aplicação dos conceitos da análise de desempenho de processos na área de software é observada na literatura através de relatos de experiência, que de modo geral apresentam uma discussão sobre a implementação de uma ou mais atividades da análise de desempenho e os mecanismos utilizados na implementação (Weller, 2000; Komuro, 2006; Tarhan and Demirörs, 2006; Montoni et al., 2007; Baldassare et al., 2010; Mahanti e Evans, 2012; Simões et al., 2013). Além destes trabalhos, Monteiro (2008) e Gonçalves (2012) apresentam mecanismos (catálogo de medidas para a Análise de Desempenho de Processos de Software e processo-padrão para o controle estatístico de processo de software) para auxiliar a implementação da análise de desempenho de processos de software.

O trabalho de Gonçalves (2012) apresenta uma ferramenta para prover o apoio à geração de gráficos de controle visando à avaliação da estabilidade do processo e executando alguns testes de estabilidade. A análise dos dados é realizada para um tipo de gráfico de controle, o gráfico de controle individual. A ferramenta não executa uma linha de processos e sim um único processo definido.

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

51

Mais que um mecanismo que apoie as atividades da análise de desempenho, é importante que a organização consiga explicitar e reutilizar o conhecimento utilizado e produzido nesse contexto. As atividades da análise de desempenho podem ser repetidas mais de uma vez variando de acordo com as características do processo a ser analisado. Além disso, a execução da análise de desempenho para um único processo não é linear, mas iterativa. Isto faz com que uma determinada atividade seja executada mais de uma vez em uma mesma análise. Modelos de maturidade de processos de software e normas internacionais, tais como o MR-MPS-SW (Softex, 2012), o CMMI-DEV (CMMI Product Team, 2010) e a ISO/IEC 15504 (ISO/IEC, 2003), recomendam que as organizações implementem a análise de desempenho de processos como forma de buscar a melhoria contínua da qualidade e do desempenho dos processos.

Dada a particularidade da execução das atividades da análise de desempenho e a necessidade das organizações implementarem estas atividades, uma das formas de explicitar e reutilizar o conhecimento é através da definição de um processo para a análise de desempenho que apoie as organizações na implementação destas atividades (Gonçalves, 2012; Barreto, 2011). O estudo experimental apresentado em (Barreto, 2011) aponta que a definição de um processo através de linhas de processo e componentes de processo reutilizáveis pode reduzir o esforço e o tempo necessários para definir um processo.

3. Componentes e Linhas de Processo para Análise de Desempenho de Processos de Software Ao analisar modelos de maturidade de processos de software e normas internacionais, do ponto de vista das atividades necessárias para a execução da análise de desempenho de processos, percebe-se que algumas atividades podem ser realizadas de diferentes formas. Considerando esta análise, uma metodologia foi desenvolvida com o objetivo de definir processos para a análise de desempenho de processos de software e apoio ferramental para execução desses processos. A metodologia possui os seguintes passos: (i) identificar as atividades de análise de desempenho de processos; (ii) escolher uma abordagem para definir os processos de análise de desempenho; (iii) definir os processos; (iv) identificar os requisitos necessários para o desenvolvimento da ferramenta de execução; (v) desenvolver a ferramenta; (vi) avaliar a ferramenta.

Considerando as atividades de análise de desempenho identificadas e que a definição de processos via linha de processos leva à redução de esforço e de tempo necessários para a definição, foi utilizada abordagem de definição de processos para reutilização de Barreto (2011). Esta abordagem define linhas de processo de software como linhas de produtos onde os produtos são processos de software e é composta de quatro passos: (i) definir ou selecionar características de processo para a linha de processo; (ii) definir ou selecionar e caracterizar os elementos de processo para a linha de processo; (iii) estruturar e caracterizar a linha de processo; (iv) avaliar e aprovar linhas de processo.

O primeiro passo gerou o conjunto de necessidades (Tabela 1) a serem atendidas pela definição do processo de análise de desempenho, que posteriormente gerou as características (Tabela 2) dos componentes e das linhas de processo. No segundo passo foram definidos e caracterizados os elementos de processo (componentes de processo e atividades) que tiveram como origem as necessidades e as características do processo. A

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

52

Tabela 3 apresenta um extrato dos componentes definidos. A lista completa pode ser encontrada em (Gonçalves; 2014).

Tabela 1 – Necessidades Necessidades

(i) Derivar processos aderentes ao nível B do MR-MPS-SW (SOFTEX, 2012), ao nível 4 do CMMI-DEV (CMMI Product Team) e ao nível 4 de capacidade da ISO/IEC 15504 (ISO/IEC, 2003) (ii) Derivar processos com atividades voltadas para a verificação da estabilidade, determinação da capacidade e construção de modelos de desempenho dos subprocessos (iii) Derivar processos que utilizem métodos apropriados para a execução da análise de desempenho, de acordo com os requisitos estabelecidos nos modelos (iv) Derivar processos com atividades que apoiem diferentes tipos de dados, tipos de agrupamento de dados, tipos de áreas de observação e tipos de distribuição dos dados (v) Derivar processos que possam ser executados utilizando softwares estatísticos

Tabela 2 – Características de Processo Necessidade Tipo de característica Característica de Processo

(i) Compatibilidade com modelos e níveis de maturidade

MR-MPS-SW – Nível B CMMI-DEV – Nível 4

ISO/IEC 15504

(ii) Análise de desempenho de processos Verificação de estabilidade

Determina a capacidade Gera o modelo de desempenho

(iii) Técnicas estatísticas e quantitativas

Uso de gráfico de Controle Uso de gráfico de Dispersão Uso de gráfico de Frequência

Uso de Diagrama de Causa e Efeito Uso de Gráfico de Pareto

Análise da Capacidade do processo Análise de regressão

(iv)

Tipo de dados Dados de atributos Dados de variáveis

Quantidade de observações por subgrupo

Uma observação (sem subgrupo) De duas a dez observações por subgrupo Mais de dez observações por subgrupo Mais de cinco observações por amostra

Área observada Mesma área de observação Diferentes áreas de observação

Tipo de distribuição dos dados Distribuição Normal Distribuição de Poisson

(v) Software estatístico Uso do Minitab Uso do Statistica

O terceiro passo consistiu na estruturação das linhas de processo a partir das atividades e dos componentes de processo definidos. Para este passo, as seguintes atividades foram realizadas: (i) escolha dos componentes opcionais na linha de processos; (ii) definição das conexões entre os elementos de processo; (iii) determinação da obrigatoriedade ou opcionalidade da conexão; (iv) mapeamento das características de processo diretamente para as linhas de processos. Foram definidas três linhas de processos que caracterizam o contexto da análise de desempenho de processos de software: (i) linha de processos para verificar a estabilidade do subprocesso (esta linha de processos abrange componentes necessários ao contexto da estabilidade de processos), (ii) linha de processos para determinar a capacidade do subprocesso (esta linha de processos abrange componentes necessários ao contexto da capacidade de processos), (iii) linha de processos para estabelecer o modelo de desempenho do

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

53

subprocesso (esta linha de processos abrange componentes necessários ao contexto do modelo de desempenho de processos).

Tabela 3 – Componentes de processo Componentes Variantes Arquitetura interna

COP.ADP.EST.ABS.0001 Verificar a distribuição dos dados da medida

COP.ADP.EST.CON.0002 Verificar a distribuição Normal dos dados com Minitab

-

COP.ADP.EST.CON.0004 Verificar a distribuição Normal dos dados com Statistica

-

COP.ADP.EST.CON.0011 Construir gráfico de controle XmR com Minitab

COP.ADP.EST.CON.0008 Gerar Gráfico XmR COP.ADP.EST.CON.0009 Aplicar testes de estabilidade padrões COP.ADP.EST.CON.0010 Aplicar testes de estabilidade

COP.ADP.EST.CON.0014 Construir gráfico de controle X-bar e R com Statistica

COP.ADP.EST.CON.0015 Gerar Gráfico X-bar e R COP.ADP.EST.CON.0009 Aplicar testes de estabilidade padrões COP.ADP.EST.CON.0010 Aplicar testes de estabilidade

COP.ADP.EST.CON.0027 Aplicar testes de estabilidade complementares

- -

COP.ADP.CAP.ABS.0034 Determinar capacidade

COP.ADP.CAP.CON.0035 Determinar capacidade de análise de XmR com Minitab

COP.ADP.CAP.CON.0036 Construir histograma de frequência COP.ADP.CAP.CON.0037 Calcular índice de capacidade (Cp)

COP.ADP.MOD.ABS.0044 Desenvolver modelo de desempenho

COP.ADP.MOD.CON.0045 Desenvolver modelo de desempenho através de análise de regressão – Statistica

-

O quarto e último passo consistiu na avaliação dos componentes e das linhas de processo com a finalidade de verificar se estas atendem às necessidades estabelecidas. Além de avaliar se a definição aplicou corretamente os conceitos da abordagem definida por Barreto (2011), avalia-se também, por exemplo, se todas as informações obriga-tórias foram preenchidas, se somente componentes abstratos possuem variantes etc.

Para o procedimento de revisão por pares foi convidado um avaliador experiente do MPS.BR, credenciado pela SOFTEX para a alta maturidade. Na primeira revisão por pares foram avaliadas três linhas de processos que somavam um total de quarenta e dois componentes de processos, sendo cinco componentes abstratos e trinta e sete componentes concretos, além de dezesseis atividades, sendo oito atividades pertencentes às linhas de processos e oito atividades pertencentes às arquiteturas internas de componentes. Destes componentes, doze componentes concretos eram reutilizados na arquitetura interna de outros componentes. Após a primeira revisão por pares, melhorias foram sugeridas (Tabela 4) pelo revisor. Estas melhorias foram implementadas e as linhas e componentes de processo foram revisados novamente.

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

54

Na segunda revisão por pares, não foram identificadas novas sugestões e as sugestões implementadas na versão anterior foram todas aceitas. Esta nova versão que é a versão atual, possui três linhas de processo e quarenta e sete componentes de processo. Destes componentes, cinco são abstratos e quarenta e dois são concretos, além de oito atividades pertencentes às linhas de processos. Dez componentes concretos são reutilizados na arquitetura interna de outros componentes.

Tabela 4 - Percentual de sugestões de melhorias para as linhas e componentes

Critério Linha de Processo

“Verificar Estabilidade”

Linha de Processo “Determinar capacidade”

Linha de Processo “Estabelecer modelo

de desempenho” Sugestão de melhoria 8 3 1 Qtd de componentes 33 10 4

Na próxima seção será apresentado o resultado dos passos (iv) e (v) da metodologia descrita anteriormente e na seção 5 será apresentado o resultado do passo (vi) da abordagem.

4. Ferramenta para Instanciação e Execução do Processo de Análise de Desempenho A Ferramenta para Instanciação e Execução do Processo de Análise de Desempenho (FIE) foi desenvolvida com o objetivo de apoiar a instanciação e a execução do processo para análise de desempenho de processos de software. A partir da proposta da FIE e de um estudo realizado sobre o processo de Análise de Desempenho (Schots et al., 2014), foram definidos os requisitos da ferramenta FIE.

A execução da ferramenta FIE será, no futuro, guiada por um Sistema Baseado em Conhecimento (SBC), que se encontra em desenvolvimento (Schots et al. 2014). O objetivo do SBC é guiar o responsável pela execução da análise de desempenho, apresentando os conhecimentos necessários para executar cada atividade do processo. Este sistema baseado em conhecimento não será detalhado neste trabalho, mas é importante considerar este contexto para o entendimento dos requisitos da ferramenta. Os requisitos definidos para a ferramenta FIE são listados a seguir:

xREQ01 – A ferramenta FIE deve apoiar a instanciação de processos de análise de desempenho a partir de elementos de processo disponíveis na Biblioteca de Elementos de Processos Reutilizáveis, e de acordo com a análise realizada pelo SBC.

xREQ02 – A ferramenta FIE deve apoiar a execução das atividades da análise de desempenho e armazenar os resultados desta execução.

xREQ03 – A ferramenta FIE deve disponibilizar os resultados da execução das atividades para o SBC.

xREQ04 – A ferramenta FIE deve ser capaz de controlar a execução de uma única atividade do processo de análise de desempenho mais de uma vez, de acordo com as características do subprocesso analisado.

xREQ05 - A ferramenta FIE só executa componentes de processo concretos, ou seja, se em algum momento for solicitada a execução de um componente de processo abstrato, uma mensagem de erro será enviada, informando sobre o ocorrido.

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

55

xREQ06 – A ferramenta FIE implementa apenas dois níveis de execução para a arquitetura de processo interna de um componente. Em outras palavras, isso significa que caso um componente de processo possua em sua arquitetura de processo interna outro componente de processo com arquitetura de processo interna definida, somente o primeiro nível será executado. Esta regra foi criada para não se gerar um número muito grande de níveis de execução.

xREQ07 – Para encerrar a execução de uma análise de desempenho de processo específica, todos os elementos de processo executáveis devem possuir o atributo referente à utilização do resultado na definição do resultado da análise. Esta regra foi criada para que se possa gerar a versão final do processo executado.

xREQ08 – No momento da geração da versão final da execução do processo, caso um mesmo elemento de processo tenha sido executado mais de uma vez, e por algum erro na comunicação com o SBC o atributo que indica sua utilização esteja marcado com SIM, a ferramenta FIE utilizará, como padrão, o último resultado executado.

4.1. Estrutura para Instanciação e Execução do Processo de Análise de Desempenho Para atender aos requisitos da ferramenta FIE, foram definidas duas estruturas para armazenamento das informações. Essas estruturas fazem referência às informações sobre a análise de desempenho e sobre a execução das atividades do processo (Figura 1). O modelo definido para estruturar as informações sobre a análise de desempenho contempla os seguintes conceitos: análise subprocesso, análise medida, análise linha de processo e versão. O conceito de análise subprocesso está relacionado à organização que definiu o subprocesso de software e ao subprocesso avaliado. A análise medida está relacionada à medida que está sendo avaliada e uma análise subprocesso pode possuir uma ou mais análises medidas, visto que um subprocesso pode ser definido como estável em relação a uma medida em particular. A análise linha de processo está relacionada à linha de processo que será executada pela ferramenta FIE. Uma análise linha de processo está associada a uma análise medida e uma análise medida possui uma ou mais análises linhas de processo associadas, pois mais de uma Linha de Processo pode ser executada para uma mesma medida. Por exemplo, a linha de processo “Verificar estabilidade” e “Verificar a capacidade” podem ser executadas para a medida “Quantidade de horas diárias despendidas em manutenção” com os valores coletados para o subprocesso “Manutenção de projetos” da organização “Empresa XYZ”. Uma análise linha de processo possui data início, data fim e um status análise (que pode ser “Em execução” ou “Finalizado”) para controlar sua execução.

A ferramenta FIE executa um elemento de processo executável, onde este pode ser um componente de processo executável ou uma atividade de processo executável. Um elemento de processo executável está relacionado a um elemento de processo e precisa armazenar os resultados de sua execução. Para este armazenamento a entidade resultado execução foi definida no modelo. Um elemento de processo executável possui um ou mais registros de resultados de execução e um resultado de execução pode estar relacionado a um artefato definido para o elemento de processo associado. O elemento de processo executável possui um status execução que possibilita informar ao usuário em qual estado se encontra a execução deste elemento. Os possíveis estados de um

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

56

elemento de processo executável foram baseados em (Reis; 2003) e são: Em execução, Finalizado, Cancelado, Parado e Aguardando.

Figura 1 – Estrutura de Análise de Desempenho e Execução das atividades

4.2. Definição do Processo de Análise de Desempenho As atividades da análise de desempenho podem ser repetidas mais de uma vez, variando de acordo com as características do subprocesso a ser analisado. Além da repetição das atividades para cada subprocesso que precisa ser analisado de acordo com as necessidades da organização, a execução do processo de análise de desempenho para um único subprocesso não é linear e sim iterativa, permitindo que uma determinada atividade seja executada mais de uma vez em uma mesma análise.

Para executar a análise de desempenho de processos, é necessário ter um processo definido. A execução do processo de análise de desempenho é apoiada pela ferramenta FIE, que recebe demandas do SBC quanto à técnica a ser utilizada para análise de desempenho, seleciona o elemento de processo adequado da Biblioteca de Elementos de Processos Reutilizáveis para composição da linha de processo e executa o processo definido. Para apoiar a execução do processo de Análise de Desempenho, a ferramenta FIE possui um processo que é apresentado na Figura 2.

A execução deste processo com a ferramenta FIE permite que o processo para a análise de desempenho seja definido dinamicamente de acordo com o contexto organizacional e com as características do processo analisado. As atividades do processo serão executadas em sua maioria por funcionalidades internas da ferramenta FIE. Por este motivo, não possuem responsáveis, participantes, artefatos requeridos ou produzidos.

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

57

Figura 2 - Processo para Definição do Processo de Análise de Desempenho

A execução do processo é iniciada através de uma solicitação de execução enviada pelo SBC. Após essa solicitação, a ferramenta FIE avalia se as informações enviadas do subprocesso (organização, subprocesso, medida, linha de processo) já estão cadastradas em sua base de execução de processos. Assim, a partir destas informações, a ferramenta FIE verifica a necessidade de instanciar uma nova execução ou continuar na versão executada. Após a verificação, a ferramenta FIE seleciona o elemento de processo na Base de Elementos de Processos Reutilizáveis e o disponibiliza para execução, apresentando as suas informações e permitindo o cadastro dos resultados. O passo seguinte é armazenar os resultados e disponibilizá-los para o SBC. Após a disponibilização dos resultados, a ferramenta FIE aguarda a resposta do SBC quanto à utilização dos resultados da execução do elemento de processo.

O SBC informa o indicativo de utilização do resultado da execução do elemento de processo, esta informação é atualizada na base da ferramenta FIE. Este resultado é utilizado na geração final da versão executada do processo de análise de desempenho.

5. Exemplo de Uso O objetivo desta seção é apresentar um cenário adaptado de (Magalhães, 2015) para demonstrar a execução das atividades do processo de análise de desempenho por meio da ferramenta FIE. Será apresentado um cenário demonstrando a execução da linha de processo “Verificar a estabilidade do subprocesso” (Figura 3). O cenário definido demonstra a execução dos elementos de processo respeitando as informações definidas

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

58

para os elementos de processo e cadastrando os resultados para cada execução. Como até o momento o desenvolvimento do SBC não foi concluído, as interações com a ferramenta FIE são simuladas da maneira com a qual estão sendo desenvolvidas.

Figura 3 - Linha de processos para verificar a estabilidade do subprocesso

(Gonçalves, 2014)

Este exemplo se baseia na necessidade do gerente de escritório de projetos da Empresa XYZ analisar a estabilidade do subprocesso de manutenção de projetos com relação à medida quantidade de horas despendidas em atividades.

Para instanciar a execução do processo na ferramenta FIE, o SBC necessita enviar uma mensagem informando os seguintes parâmetros: (i) Organização responsável pela definição do subprocesso: Empresa XYZ; (ii) Subprocesso analisado: Manutenção de Projetos; (iii) Medida analisada: Quantidade de horas gastas; (iv) Linha de Processo Executada: Verificar Estabilidade; (v) Elemento de Processo: Registrar a categorização dos dados da medida, e (vi) Arquitetura Interna: Não possui. Essas entradas são obrigatórias para que a ferramenta FIE possa disponibilizar as informações necessárias para a execução das atividades do processo de análise de desempenho. As atividades possuem parâmetros de entrada e saída que são informados no momento da execução da atividade específica. Um exemplo de parâmetro de saída do processo são os gráficos de controle juntamente com o resultado da execução dos testes de estabilidade. Com essas informações é possível avaliar se o subprocesso analisado é estável ou não, por exemplo.

A partir dessas informações a ferramenta FIE cria a estrutura necessária para armazenar a análise que será realizada. É importante ressaltar que o elemento de processo da linha de processo executado será “Registrar a categorização dos dados da medida”. A partir deste momento, o usuário da ferramenta deverá preencher as informações sobre a execução do elemento. A Figura 4 apresenta a tela onde o usuário deverá preencher as informações de execução do elemento.

Como resultado esperado, o componente “Registrar a categorização dos dados da medida” exige um artefato contendo o registro da categorização realizada “Registro da categorização dados da medida”. A Figura 5 demonstra o formato de registro do resultado na ferramenta FIE. Para o tipo de dados (dados variáveis) e o tipo de análise desejada pelo gerente de projetos, o gráfico de controle XmR seria o mais adequado, visto que a medida em questão representa uma variável medida frequentemente. O componente definido para o gráfico de controle XmR recomenda que os dados sigam

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

59

uma distribuição Normal. Para avaliar esta recomendação, o componente abstrato “Verificar a distribuição dos dados da medida” será executado, porém, um componente concreto deverá ser escolhido para que a execução possa ser realizada.

Figura 4 - Tela da ferramenta FIE - Acompanhar Elemento de Processo

Este elemento possui um script associado para geração dos resultados na ferramenta Minitab. O script está disponível para download na página de edição do elemento em questão. Após a execução do script e análise do usuário, os resultados são cadastrados na ferramenta FIE. Como resultado, o elemento de processo exige um artefato contendo o resultado da verificação. Após o download e a execução do script na ferramenta Minitab, os resultados foram cadastrados na ferramenta FIE pelo usuário juntamente com a análise realizada de acordo com a descrição do componente.

Após a análise realizada pelo SBC sobre os resultados cadastrados na ferramenta FIE, o SBC envia uma nova mensagem solicitando a execução do próximo elemento da linha de processo que é “Selecionar o gráfico de controle apropriado e registrar a escolha”. Após essa execução, o próximo elemento a ser executado é o “Construir gráfico de controle”. Por ser um componente abstrato, o SBC deverá informar qual o componente concreto deverá ser executado. Esta escolha baseia-se na execução da atividade anterior da linha de processo “Selecionar o gráfico de controle apropriado e registrar a escolha”, que neste caso será o componente “Construir gráfico de controle XmR com Minitab”.

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

60

Figura 5 - Tela da ferramenta FIE - Cadastrar Resultado da Execução

Após a inclusão do componente na versão em execução, a ferramenta FIE disponibiliza o script associado para a geração do gráfico de controle e dos testes de estabilidade. Os resultados são analisados pelo SBC e de acordo com os resultados apresentados, os valores não falharam em nenhum dos testes executados. A Figura 6 apresenta o resultado da execução do script que foi armazenado pelo usuário na ferramenta FIE.

Figura 6 - Gráfico XmR gerado na execução do componente “Construir gráfico

de controle”

Por fim, como o processo foi considerado estável e o usuário ficou satisfeito com o resultado encontrado, o próximo elemento de processo executado é “Estabelecer baseline de desempenho”. Para finalizar a execução de uma análise específica, o usuário deverá clicar na funcionalidade encerrar análise e gerar versão final, neste momento a ferramenta FIE percorre todas as versões executadas para a análise específica e gera uma nova versão contendo o processo executado para se obter o resultado da Análise de Desempenho. Para este cenário, somente uma versão foi criada, por isso a versão final será a mesma.

A Figura 7 apresenta a versão final instanciada e executada da linha de processo para verificar a estabilidade do subprocesso analisado. Se analisarmos a Figura 3, que

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

61

apresenta toda a linha de processo definida com suas possíveis variações é possível verificar as escolhas dos componentes concretos executados realizadas pelo SBC.

Figura 7 - Versão final instanciada e executada do processo.

6. Considerações Finais A execução da análise de desempenho de processos necessita de um apoio para sua realização, pois não é uma tarefa trivial. Existem diversas técnicas e gráficos que podem ser utilizados. Este artigo apresenta resultados preliminares realizados para o desenvolvimento do ambiente SPEAKER que se encontra em desenvolvimento pelo grupo de Qualidade de Software do Programa de Engenharia de Sistemas e Computação da COPPE/UFRJ (Schots et al., 2014).

Uma das ameaças ao estudo é que as avaliações realizadas até o momento não foram realizadas no ambiente real e não foram utilizados dados de projetos reais. Por este motivo, o próximo passo deste trabalho é a integração dos componentes de processo e da ferramenta de execução (FIE), apresentados neste artigo, com o Sistema Baseado em Conhecimento (SBC), para que então seja possível avaliar o ambiente SPEAKER como um todo. A avaliação não pode ser executada até o momento, pois a ferramenta FIE necessita do conhecimento em análise de desempenho de processos e das solicitações realizadas pelo SBC para que então possa instanciar e executar as atividades do processo de análise de desempenho.

Agradecimentos À CAPES e à FAPERJ (projeto E-26/110.438/2014) pelo apoio financeiro. À Natália Schots pelo apoio e participação no desenvolvimento do SPEAKER. Aos professores Sheila Reinehr, Guilherme Horta Travassos e Toacy Cavalcante pelas valiosas sugestões no desenvolvimento do trabalho.

Referências Barreto, A., 2011, “Uma Abordagem para Definição de Processos Baseada em Reutilização

Visando à Alta Maturidade em Processos”, Tese de Doutorado, Programa de Pós-graduação em Engenharia de Sistemas e Computação – UFRJ, Rio de Janeiro.

Baldassarre, M. T., Boffoli, N., Caivano, D. (2010), “Statistical Process Control for Software: Fill de Gap”, in "Quality Management and Six Sigma”, pp. 135-153.

CMMI Product Team (2010), “CMMI for Development, Version 1.3 (CMU/SEI-2010-TR-033)”. Software Engineering Institute, Carnegie Mellon University. Disponível em: http://www.sei.cmu.edu/ Acesso em: março/2015.

Softex (2012), “MPS.BR – Melhoria de Processo do Software Brasileiro – Guia Geral MPS de Software”. Disponível em: http://www.softex.br. Acesso em: março/2015.

Florac, W. A., Carleton, A. D. (1999), “Measuring the Software Process: Statistical Process Control for Software Process Improvement”, Addison Wesley.

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

62

Gonçalves, T. G. (2014), “Componentes de Processo para Análise de Desempenho de Processos de Software”, Dissertação de Mestrado, Programa de Pós-graduação em Engenharia de Sistemas e Computação – UFRJ, Rio de Janeiro.

Gonçalves, L. P. (2012), “Apoio ao Controle Estatístico de Processos de Software integrado a um ADS”, Dissertação de Mestrado em Ciência da Computação – UFPA, Pará.

ISO/IEC (2003), “ISO/IEC 15504: Software Engineering – Process Assessment – Part 2: Performing an Assessment”, International Organization for the Standardization and International Electrotechnical Commission, Genebra, Suiça.

Komuro, M., (2006), "Experiences of Applying SPC Techniques to Software Development", In: Proceedings of the 28th International Conference on Software Engineering - ICSE’06, Shanghai, China, pp. 577-584.

Magalhães, R. F., (2015), “Ferramenta para Instanciação e Execução do Processo de Análise de Desempenho do Ambiente SPEAKER”, Dissertação de Mestrado, Programa de Pós-graduação em Engenharia de Sistemas e Computação – UFRJ, Rio de Janeiro.

Mahanti, R., Evans, J. R. (2012), “Critical Success Factors for Implementing Statistical Process Control in the Software Industry”, Benchmarking, v. 19(4), pp. 374-394.

Montoni, M., et al. (2007), “Uma Metodologia para Desenvolvimento de Modelos de Desempenho de Processos para Gerência Quantitativa de Projetos de Software”, In: VI Simpósio Brasileiro de Qualidade de Software, pp. 325-340.

Rocha, A. R. C., Souza, G. S., Barcellos, M. P. (2012), “Medição de Software e Controle Estatístico de Processos”, PBQP Software, Brasília.

Schots, N. C. L. et al. (2014), “Supporting Software Process Performance Analysis through a Knowledge-based Environment”. In: Proceedings of the Latin American Computing Conference, pp. 286-297.

Simões, C., et al., (2013), “Aplicando Controle Estatístico de Processo em Projetos Evolutivos de Pequeno Tamanho: Resultados e Lições Aprendidas na Implementação do Nível 5 do CMMI-DEV na Synapsis”, In: XII Simpósio Brasileiro de Qualidade de Software (SBQS), pp. 286-293, 2013.

Tarhan, A., Demirörs, O. (2006), “Investigating Suitability of Software Process and Metrics for Statistical Process Control”, Software Process Improvement, Lecture Notes in Computer Science, vol. 4257, pp. 88-99.

Wheeler, D. J., Chambers, D. S. (1992), “Understanding Statistical Process Control”, 2nd Edition, SPC Press, Inc.

Weller, E. F., 2000, "Practical Applications of Statistical Process Control", IEEE Software, v. 17, n. 3, pp. 48-55.

XIV Simpósio Brasileiro de Qualidade de Software / XIV Brazilian Symposium on Software Quality Artigos Técnicos / Research Papers

63