A Catalogue of Bad Smells for Software Process Smells
1. A Catalogue of Bad Smells for Software Process
Mestrando:
Edison Santos
edison.santos@ufba.br rita.suzana@ufba.br santanna@dcc.ufba.br
Co-orientador: Prof. Dr.
Claudio Sant’anna
Orientadora: Prof.
Dra. Rita Suzana
Programa de Pós-graduação em Ciência da Computação
SBQS XVII - 17/10/2018
2. Agenda
Conceitos gerais; problema e solução.
Introdução
01
Processo de adaptação de bad smells para
processo modelado com SPEM (Software &
Systems Process Engineering Meta-Model);
Metodologia
02
Qualitativos, Quantitativos, Discussão e Ameaças a
validade
Resultados do Survey
03
A Catalogue of
Bad Smells for
Software Process
3. Estratégia de
detecção de bad
smells
Medição de
processo
Avaliação de
processo
PML - SPEM
Modelo de Processo
de Software
Problema
Process Smell
Solução
Como detectar problemas no processo
antes da execução do mesmo?
Elaborar um catálogo de bad smells para
processo de software de forma a apoiar a
detecção dos bad smells
Introdução
3
Process smells podem resultar de decisões tomadas
durante as fases como concepção e modelagem
de um processo. Os process smells incidem na
especificação dos elementos do processo e
podem impactar negativamente em fatores de qualidade
de processo, como, por exemplo compreensibilidade.
4. 1) Adaptação de bad smells de código orientado a objetos
para o contexto de processo de software
2) Entrevista semi estruturada
(i) Estabelecer possíveis relações entre os elementos
de código orientado a objeto e elementos do SPEM;
(ii) Realizar a adaptação das definições dos bad
smells e identificar o elemento impactado;
(iii) Construir a representação do bad smell em SPEM*;
(iv) Estabelecer quais fatores de qualidade poderiam ser
impactados pelos bad smells já adaptados para processo
(v) Elaborar o catálogo
Questionário
A) Perfil do Participante
B) Process Smells
b.1 Definição do process smell
b.2 Verificação dos impactos negativos
para a compreensibilidade
b.3 Verificação dos impactos negativos
para a modificabilidade
Metodologia – Elaboração e Validação do Catálogo
4
5. Elementos POO e SPEM
Programa de Software SPEM
Módulo/Classe Atividade
Função/Método Tarefa
Estrutura condicionais e loops Passos
Acessadores/Propriedades Produtos de Trabalho
Tabela 1: Elementos e respectivos símbolos do SPEM
Elemento Símbolo Elemento Símbolo
Atividade Passos
Tarefa Produtos de
Trabalho
(i) Estabelecer possíveis relações entre os elementos de código orientado a objeto e elementos do SPEM;
Metodologia – Especificação do do Catálogo
5
6. (iv) Estabelecer quais fatores de qualidade podem ser impactados pelos bad smells já adaptados para processo;
Visão sistêmica da engenharia de software centrada no ser humano
Sub atributos: Compreensibilidade (usabilidade) e Modificabilidade (manutenabilidade)
* Propriedades estruturais – tamanho, complexidade e modularidade
• podem ser medidas antes da execução do processo
(ii) Realizar a adaptação das definições dos bad smells e identificar o elemento impactado;
Elementos impactados: Atividades (activities),
Tarefas (tasks), Produtos de Trabalho (Work
Product)
Código OO Adaptados para SPEM
Brain Method Brain Task
Brain Class Brain Activity
Data Class Data Activity
Large Class Large Activity
Data Clumps Work Product Clumps
*Divergent Change, Feature Envy,, Long Input List,
Message Chains, Shotgun Surgery
(iii) Construir a representação do bad smell em SPEM*;
Metodologia – Especificação do do Catálogo
6
7. Atividade
centralizadora, possui
muitas tarefas, e
muitos fluxos de
decisão e
utiliza produtos de
trabalho de outras
atividades mais triviais
Large Activity
1 2 3 4 5
Ocorre quando uma
atividade é
configurada para
atender a mais de uma
"necessidade"
Divergent Change
É configurada quando
uma tarefa precisa de
um grande número de
produtos de trabalho
de entrada
Long Input List
É quando um conjunto
de produtos de
trabalho de
determinadas
atividades/tarefas são
constantemente vistos
juntos
Work Product Clumps
Uma atividade que ao
sofrer uma mudança
desencadeará a
necessidade de muitas
pequenas mudanças
em várias outras
atividades
Shotgun Surgery
Define que longas
cadeias de trocas de
produtos de trabalho
entre tarefas podem
representar
dependências
disfarçadas
Message Chains
6 7 8
uma tarefa que faz de
uso extensivo de
produtos de trabalho
de saída de outras
Atividades.
Feature Envy
Quando uma atividade
não desempenha
objetivos relevantes no
processo, mas
fornece bastante
produtos de trabalho
de saída
Data Activity
Uma tarefa longa que
centraliza as ações de
uma atividade, possui
muitos passos e
possui muitos fluxos
de decisão para
estruturar os passos
Brain Task
Uma atividade
centralizadora, possui
muitas tarefas e
muitos fluxos de
decisão
Brain Activity
9 10
Catálogo de Process Smells
7
8. Process Smell: Large Activity
Elemento impactado:Atividade
Descrição
Uma Large Activity se caracteriza quando uma atividade é grande por conter muitas tarefas e possui muitas
responsabilidades. Ela centraliza as principais ações do processo, deixando, para outras atividades, apenas
responsabilidades mais triviais. Além disto, a Large Activity utiliza produtos de trabalho destas outras atividades para
concluir seus objetivos.
Possíveis Impactos
Apesar da sensação de simplificar o modelo usando poucas atividades, uma Large Activity possuir muitas tarefas e
muitos fluxos de decisão, assim aumenta a complexidade. A inserção de muitas tarefas em uma mesma atividade, gera o
risco de confundir a responsabilidade da atividade, adicionando tarefas que cuidam de diferentes necessidades do
processo. Este fato pode também impactar negativamente a coesão entre as tarefas. Essas duas características podem
reduzir a compreensibilidade da atividade.
A dependência que uma Large Activity tem de produtos de trabalho de entrada insere a possibilidade de impactos
negativos caso as atividades quais a Large Activity é dependente mudem. Este fato reduz a capacidade de
modificabilidade do processo.
Large Activity – Exemplo de Process Smell
8
10. Perfis dos Participantes (experiência e certificações)
8 Participantes
Quantidade de processo/
Tempo de experiência
B - Modelei
apenas um
processo
C - Modelei
entre 2 à 5
processos
D - Modelei
entre 6 à 15
processos
E - Modelei
mais que 15
processos
F - Acima de 4 anos. 1 1 2
E - Entre 3 à 4 anos. 1 1
B - Entre 6 meses e 1 ano. 1
A - Menos de 6 meses 1
Quanto a certificações:
2 CMMI Internos;
1 líder CMMI e MPS-Br;
1 Cobit e CCSA.
Validação do Catálogo
10
Experiência
Modelagens realizadas
11. Resultados Quantitativos
Taxa de aceitação = soma das respostas positivas de cada process smell / total de participantes.
Process Smell Definição Compreensibilidade Modificabilidade Aceitação Geral
Brain Activity 0,75 0,75 NA 0,75
Brain Task 0,88 1,00 NA 0,94
Data Activity 0,75 NA 0,75 0,75
Divergent Change 0,88 0,88 NA 0,88
Feature Envy 0,88 0,88 NA 0,88
Large Activity 0,88 0,88 1,00 0,92
Long Input List 0,88 0,88 NA 0,88
Message Chains 0,88 0,88 NA 0,88
Shotgun Surgery 1,00 NA 1,00 1,00
Work Product Clump 0,75 NA 0,75 0,75
Aceitação Geral 0,85 0,88 0,88 0,86
* NA - não se aplica
Validação do Catálogo - Resultados
11
12. Resultados Qualitativos
Concordância com as definições dos process smells e atributos de qualidade impactados:
Impacto negativo para modificabilidade.
acoplamento relativo a dependência entre atividades/tarefas a partir da troca de produtos de trabalho
Impacto negativo para compreensibilidade:
(i) tamanho de uma atividade, em termos do número de tarefas;
(ii) tamanho de uma tarefa, em termos dos números de passos;
(iii) baixa coesão de uma atividade ou atender a mais de um objetivo de negócio;
(iv) número de fluxos de decisão da atividade ou tarefa.
Validação do Catálogo - Resultados
12
13. Resultados Qualitativos
Discordância em relação aos process smells
Discordância Large
Activity
Divergent
Change
Brain
Activity
Data
Activity
Work Product
Clump
Atividade grande pode não
representar um process smell
X X X
Não considerar o número de
papéis envolvidos na atividade
X X
Não apresentar a ocorrência do
acoplamento entre as atividades
X X
“A quantidade de inputs é abstrata para definir um problema”: Long Input List;
“Em alguns contextos é necessário existir artefatos dependentes” : Work Product Clump;
“Tarefas de suporte que vão possuir essa configuração não caracterizam um problema” : Feature Envy;
“o laço entre um conjunto de tarefas é o real problema e não a cadeia longa entre tarefas” : Message Chains.
O Shotgun Surgery não recebeu nenhuma discordância obtendo uma taxa de 100% de aceitação.
Validação do Catálogo - Resultados
13
14. Discussão
Relacionando os dados quantitativos e qualitativos associadas as rejeições
PROCESS SMELLS COM 75% DE ACEITAÇÃO (MENOR TAXA)
Brain Activity - a indicação que atividades grandes podem não são um problemas.
Data Activity - ausência da definição da centralização da atividade para um único papel do processo.
Work Product Clump - necessidade da apresentação da ocorrência do acoplamento.
Validação do Catálogo - Resultados
Ameaças a validade
1. Amostra não probabilística por conveniência com oito participantes.
2. Três participantes não conhecerem o SPEM.
3. Alguns participantes citaram o desconhecimento do conceito de bad smells de código.
14
15. Conclusão e Trabalhos Futuros
01
02
03
Detectar e remover process smells na fase de
especificação de um processo de software,
pode evitar que estes ocasionem problemas
na fase de execução do processo em um
projeto de desenvolvimento de software.
Conclusão - Geral
Analistas de processo possuem algumas
preocupações que são consideras na fase de
especificação do processo.
Conclusão - Discussão
1 – Realizar o survey com mais profissionais;
2 - Verificar a aplicação dos process smells
em processos reais de desenvolvimento de
software.
Trabalhos Futuros
15