UML4SPM
(Software Process Modeling)
Davi Junio S. de Oliveira
[email protected]
Tópicos Avançados em Engenharia de Software 3
28/05/2008
AGENDA
• Motivação
• Processo de Software e Meta-Processo de Software
• Modelo de Processo de Software
– Conceito
– Objetivos
• Linguagem de Modelagem de Processo
• Linguagens de Modelagem de Processo baseadas em UML
–
–
–
–
–
Spem1.1
Spem2
Di Nitto
PROMENADE
Shih-Chien Chous
• UML4SPM
–
–
–
–
–
–
–
Metamodelo
Process Structure Package
Element Process Package
Foundation Package
Notação UML4SPM
Avaliação da UML4SPM
Avaliação da UML4SPM com ISPW-6
MOTIVAÇÃO
• Preocupação
em
administrar
a
complexidade gerada pelas atividades do
Ciclo de Vida de Desenvolvimento de
Software;
• Os modelos de CVDS (SDLC) tem um
granularidade grossa;
• Criar pequenas atividades com um nível
de detalhamento mais explícito e preciso;
PROCESSO E META-PROCESSO
• Processo de Desenvolvimento de Software: O
conjunto total de atividades de Engenharia de
Software necessárias para transformar requisitos
de usuário em software[Humphrey];
• Meta-Processo: Consiste em atividades de
modelagem do processo, administração do
processo,
suporte
para
execução
e
melhoramento deste;
MODELO DE PROCESSO
SOFTWARE - CONCEITO
• Um Modelo de Processo é uma descrição
abstrata de um processo proposto que
representa elementos do processo selecionado
que são considerados importantes para a
finalidade do modelo e podem ser executados
por um humano ou por uma máquina [Curtis 92];
• Representa uma sequência de atividades, objetos
e transformações que compõe a estratégia para a
execução do desenvolvimento do software
[Scacchi];
MODELO DE PROCESSO SOFTWARE OBJETIVOS
• Facilitar e Suportar o desenvolvimento de
software de alta qualidade e baixo custo;
• Facilidade de Comunicação e Entendimento
humano;
• Facilidade de reuso do processo;
• Suporte a melhorias no processo;
• Suporte a administração do processo;
• Automatização do andamento do processo;
LINGUAGUEM DE MODELAGEM DE
PROCESSO - CONCEITO
• É uma linguagem usada para expressar modelos de
processos [Zamli];
• Uma LMP pode ser vista como uma linguagem de
modelagem ou como uma linguagem de programação;
• A abrangência da linguagem depende dos seus objetivos e
metas do modelo resultante;
• O nível de entendimento, precisão e usabilidade de um
modelo de processo dependem diretamente da LMP usada
para descrevé-lo;
LINGUAGUEM DE MODELAGEM DE
PROCESSO
• Semântica Rica
– Elementos do Processo: Agentes, Regras, Atividades
(Passos) , Artefatos e Ferramentas;
– Coordenação das Ações e Atividades:
• Controles Proativos : Control Flow e Object Flow;
• Controles Reativos: Exception, Event Handling;
– Tratadores de Exceção;
• Isso é modelagem de processo
ou desenvolvimento de software?
LINGUAGUEM DE MODELAGEM DE
PROCESSO
• Semântica Rica
– Construções Avançadas:
• Entendível
– Código ou Notação Visual?
LINGUAGUEM DE MODELAGEM DE
PROCESSO
• Precisão;
– Depende da Granulidade
• Executável;
• Modularização;
– Capacidade de combinar diferentes
pedaços de processos para formar
um novo processo.
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• SPEM 1.1 (Software Process Engineering
Metamodel - OMG)
– UML 1.4 Profile;
– MOF 1.3 Compliant;
– SPEM_FOUNDATION E SPEM_EXTENSIONS
– Process Structure Package;
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Semântica Rica
– Elementos do Processo
•
•
•
•
Activity;
Work Product ;
Process Role;
Human, Agent, Tool???
– Coordenação de Atividades e Ações;
• Controles Proativos: start-start, finish-start, finish-finish;
• Controles Reativos???
– Tratadores de Exceções???;
– Construtores Avançados;
• Loops e Condicionais???
• Phase e iteration;
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Entendível
• Precisão
– Phase, Lifecycle, Iteration, WorkDefinition, Step;
• Executabilidade
– O conceito de passo é impreciso…
• Modularização
– ProcessComponent
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Ferramentas
– Rational Process WorkBench;
– Iris Suite;
– SPEM Profile;
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• SPEM 2 (Software Process Engineering
Metamodel - OMG)
– UML 2 Superstructure Profile ;
– MOF 2 Compliant extendendo UML Infrastructure;
– Não defini restrições OCL;
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Semântica Rica
– Elementos do Processo
• Role Uses, Activities, Work Product Uses, etc;
• Agent e Tool;
– Coordenação de Atividades e Ações;
• Controles Proativos;
• Contoles Reativos: WorkSequenceKind;
– Tratadores de Exceções????;
– Construtores Avançados;
• Extensible Element;
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Entendível
– Muito complexo;
• Precisão
• Executabilidade
– O padrão não especifica uma forma;
– Process Behavior Package;
• Modularização
– Activity Use Kind;
– Process Component;
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Ferramentas
– Eclipse Process Framework;
– Rational Method Composer;
– PRO3;
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Di Nitto (International Conference of Software
Engineering 2002)
– Subconjunto de UML 1.3 como uma LMP
executável;
– Duas fases, primeira fase é realizada através da
descrição do processo usando diagramas UML, na
segunda fase os diagramas são traduzidos em
código;
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Semântica Rica
– Elementos do Processo
• Tool, Role????
– Coordenação de Atividades e Ações;
• Active Controls;
• Reactive Controls???;
– Tratadores de Exceções???;
– Construtores Avançados???;
• Entendível
– Não existem mecanismos de ligação de dois diagramas;
– Não existe o conceito de composição no diagrama de atividades;
– O uso de diagramas de estados dificultam a leitura de pessoas que não
estão acostumadas a eles;
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Precisão
• Executabilidade
– Todos os diagramas podem ser traduzidos para
código desde que contenham informações
suficientes;
• Modularização???
• Ferramentas
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• PROMENADE (PROcess-oriented Modelling
and Enactement of Software DEvelopment)
– ComProLab Project;
– UML 1.3;
– Duas partes, primeira fase é estática, realiza a
descrição do processo usando diagramas UML, a
segunda fase é dinânmica, estabelece a sequência
das atividades a serem executadas (Gráfico de
Precendência);
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Semântica Rica
– Elementos do Processo
– Coordenação de Atividades e Ações;
• Strong;
• Weak;
• Synchronizing;
– Tratadores de Exceções;
• CompleteUnsucc (Diagrama de Estados);
– Construtores Avançados???;
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Entendível
– Processo simples, usa o diagrama de classe para
representar os elementos do processo e o diagrama
de precedência para representar a ordem de execução
das tarefas;
– Como integrar???
• Precisão
– Única unidade de trabalho, Task;
• Executabilidade???
• Modularização
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Shih-Chien Chous
– National Science Council of Taiwan;
– UML 1.4;
– Duas partes, representar a descrição do processo
usando diagramas UML, mapear a descrição para
um linguagem em formato legível por máquina;
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Semântica Rica
– Elementos do Processo
• Activity, Role, Tool;
• Agent???
– Coordenação de Atividades e Ações;
• Active Controls;
• Reactive Controls???
– Tratadores de Exceções;
• Representado no P-activity como uma atividade;
– Construtores Avançados???;
• Branch e Loop (Gramática BNF);
LINGUAGUENS DE MODELAGEM DE
PROCESSO BASEADAS EM UML
• Entendível
– Não existe ligação entre os dois diagramas
propostos;
• Precisão
– Activity
• Executabilidade
– Não existe ferramenta para geração automática de
um programa do processo;
• Modularização???
UML4SPM
• Baseada em UML2;
• Linguagem de Modelagem e
Execução de processos de software;
• MOF Compliant Metamodel
extendendo UML Superstructure;
UML4SPM
• Aumentar o nível de abstração, e por
consequência elevar o nível de entendimento da
linguagem, possibilitando assim a compreensão
deste por profissionais que não são de ciência da
computação;
• Usar um formalismo bem conhecido e padrão;
• Modelo de Processo Executável;
UML4SPM - Metamodel
• UML4SPM_FOUNDATION;
• UML4SPM_EXTENSIONS;
UML4SPM – Process Structure Package
Process Element
• Descrição: Metaclasse para Software
Responsible Role e Work Products;
• Generalização:
Activities,
– UML Superstructure::Kernel::Classifier;
• Atributos:
– description: String;
– name: String (herdado de Classifier);
• Associações:
– Kind: Process Element Kind [0..1]
• Restrições: Um process element kind não pode ser
reusado por diferentes subclasses de process element;
UML4SPM – Process Element
Process Element Kind
• Descrição: Metaclasse para definição de tipos
de elementos de processos específicos;
• Generalização:
• Atributos:
– name: String;
• Associações:
• Restrições:
Software Activity Kind
• Descrição: Metaclasse para definição de tipos
de atividades de software específicos;
• Generalização: Process Element Kind;
• Atributos:
– name: String (Process Element Kind);
• Associações:
• Restrições:
Work Product Kind
• Descrição: Metaclasse para definição de tipos
de produtos de trabalho específicos;
• Generalização: Process Element Kind;
• Atributos:
– name: String (Process Element Kind);
• Associações:
• Restrições:
Responsible Role Kind
• Descrição: Metaclasse para definição de tipos
de responsabilidades específicos;
• Generalização: Process Element Kind;
• Atributos:
– name: String (Process Element Kind);
• Associações:
• Restrições:
Software Activity
• Descrição: Descreve o esforço ou pedaço de trabalho que deve ser
executado durante o processo de desenvolvimento de software;
• Generalização:
– Process Element
– UML Superstructure::Activities::Activity;
• Atributos:
–
–
–
–
–
–
–
name: String (Classifier);
description: String (Process Element);
executionKind: ActivityExecutionKind;
priority: PriorityKind;
complexity: ComplexityKind;
isInitial: Boolean;
duration: String;
• Associações:
– responsibleRoles: ResponsibleRole [1..N];
– softwareActivityKind: SoftwareActivityKind [0..1]
Software Activity
• Associações:
– requires: Guidance [0..N];
– startAt: TimeLimit [0..1]
– endAt: TimeLimit [0..1]
• Restrições: Somente uma Software Activity
pode ser isInitial=true
context Model inv:
self.allOwnedElement()->select(oclIsKindOf(SoftwareActivity))>select(sa | sa.isInitial)->size()=1
Software Activity
Activity Execution Kind
• Descrição: Enumeração que define os tipos de
execução de uma Software Activity
– machineExecution;
– humanExecution;
•
•
•
•
Generalização:
Atributos:
Associações:
Restrições:
Priority Kind
• Descrição: Enumeração que define a prioridade
da Software Activity dentro do processo;
– Low;
– Medium;
– High;
•
•
•
•
Generalização:
Atributos:
Associações:
Restrições:
Complexity Kind
• Descrição:
Enumeração
que
define
a
complexidade da Software Activity dentro do
processo;
– Easy;
– Medium;
– Difficult;
•
•
•
•
Generalização:
Atributos:
Associações:
Restrições:
Responsible Role
• Descrição: Define responsabilidades e habilidades
necessárias para executar uma Software Activity.
Também é responsável pela realização do Work
Product;
• Generalização:
– Process Element;
• Atributos:
–
–
–
–
–
name: String (Classifier);
description: String (Process Element);
responsibility: String;
qualification: String;
rights: String;
Responsible Role
• Associações:
– activities: SoftwareActivity [0..N];
– workproducts: WorkProduct [0..N];
– responsibleRoleKind: ResponsibleRoleKind [0..1];
– rolePerformer: RolePerformer [1..N]
• Restrições:
Work Product
• Descrição: Representa qualquer pedaço físico de informação consumido,
produzido ou modificado durante o processo de desenvolvimento. Pode
ser composto por outros WorkProducts. Pode também ser usado como
input/output de SoftwareActivities;
• Generalização:
– Process Element ;
– UML Superstructure::Deployments::Artifacts::Artifact;
• Atributos:
–
–
–
–
–
–
–
–
name: String (Classifier);
description: String (Process Element);
idWorkProduct: String;
isDeliverable: Boolean;
created: String;
lastTimeModified: String;
version: String;
uriLocalisation: String;
Work Product
• Associações:
– performer: ResponsibleRole [0..N];
– workProductKind: WorkProductKind[0..1];
– Impact: WorkProduct[0..N];
• Restrições:
Role Performer
• Descrição: Representa a entidade que irá
realizar a Responsible Role afim de executar a
Software Activity;
• Generalização:
• Atributos:
– name: String;
• Associações:
• Restrições:
Tool
• Descrição: Representa a entidade que irá realizar a
Responsible Role afim de executar a Software Activity;
• Generalização:
– Role Performer;
• Atributos:
–
–
–
–
name: String (Role Performer);
description: String;
isBatch: Boolean;
version: String;
• Associações:
• Restrições:
Team
• Descrição: Representa a entidade que irá realizar a Responsible Role
afim de executar a Software Activity. Pode ser composto por
Agents ou outros Teams;
• Generalização:
– Role Performer;
• Atributos:
– name: String (Role Performer);
• Associações:
– performers: RolePerformer [1..N]
• Restrições:Um Team só pode ser composto por Agents ou outros
Teams, não pode ser composto por Tools;
context Team inv:
self.performers->forAll (roleperformer |roleperformer.isKindOf (Team) or
roleperformer.isKindOf(Agent)
Agent
• Descrição: Representa a entidade que irá realizar a
Responsible Role afim de executar a Software Activity;
• Generalização:
– Role Performer;
• Atributos:
–
–
–
–
name: String (Role Performer);
skill: String;
isAvailable: Boolean;
version: String;
• Associações:
• Restrições:
Guidance
• Descrição: Linhas gerais afim de indicar meios
para a execução de atividades do processo;
• Generalização:
– WorkProduct;
• Atributos: Mesmos de WorkProduct;
• Associações:
• Restrições:
TimeLimit
• Descrição: Representa o tempo que um
SoftwareActivity inicia ou termina;
• Generalização:
• Atributos:
– milestone: string;
• Associações:
• Restrições:
FOUNDATION PACKAGE
Activity
• Descrição: Sequência coordenada de Actions.
Usa o modelo de Object e Control Flow.
Podem incluir Control Nodes, Objects Nodes e
Actions;
• Generalização:
– Behavior;
• Atributos:
– isReadOnly: boolean;
– isSingleExecution: boolean;
Artifact
• Descrição: Representam uma entidade física. Pode ter
assossiações com outros artefatos. Como WorkProduct
deriva de Artifact pode ser definido como Activity
Parameter Nodes em termos de Software Activity e
InputPin ou OutputPin em termos de Action. Pode ter
associado um diagrama de estados;
• Generalização:
– Classifier;
– DeployedArtifact e;
– NamedElement;
• Atributos:
– fileName: String;
Action
• Descrição: Unidade fundamental de especificação de comportamento;
• Ações Reusadas:
– CallBehaviorAction;
• Sincrona;
• Assincrona;
– CallOperationAction;
• Síncrona;
• Assíncrona;
– SendSignalAction;
• Controle Reativo;
– AcceptEventAction;
• Time Event;
• Change Event;
• Message Event;
– BroadcastSignalAction;
– RaiseExceptionAction;
– OpaqueAction;
Action
Notação UML4SPM
Avaliação da UML4SPM
• Semântica Rica
– Elementos do Processo:
•
•
•
•
•
Noção de Atividade é dada pela Software Activity;
Noção de Regras é dada pela Responsible Role;
Noção de Artefato é dada pela Work Product;
Noção de Humano é dada pela Team e Agent;
Noção de Tool é dada pela Tool;
Avaliação da UML4SPM
• Semântica Rica
– Coordenação e Sequência de Ações:
Avaliação da UML4SPM
• Semântica Rica
– Coordenação e Sequência de Atividades:
• Message Event;
– AcceptEventAction
•
•
•
•
Time Event;
Change Event;
CallBehaviorAction;
ActivityParameterNode;
Avaliação da UML4SPM
• Semântica Rica
– Tratadores de Evento:
• RaiseExceptionAction;
• ExceptionHandler;
– Construtores Avançados:
•
•
•
•
Decision Nodes;
Loop Nodes;
Conditional Nodes;
DataStoreNode;
Avaliação da UML4SPM
• Entendível
– Diagrama de Atividades: Modela a sequência de
Software Activities e Work Products trocados entre
Actions;
– Diagrama de Estados: Modela os possíveis estados e
operações de Software Activities, Work Products ou
Agents;
– Diagrama de Sequência: Especifica as chamadas de
operações entre Software Activities;
– Diagrama de Classes: Especificar a relação entre
diferentes elementos do modelo de processo;
Avaliação da UML4SPM
• Precisão
– É possível representar uma hierarquia de processo
definidos por uma metodologia específica através
do Software Activity e Software Activity Kind;
– Dois níveis de abstração: Process e Activity;
Avaliação da UML4SPM
• Executável
– Basic Actions: CallBehaviorAction,
SendSignalAction, etc;
– Intermediate Actions: CreateObjectAction,
DestroyObjectAction, etc;
– Complete Actions: AcceptEventAction,
AcceptCallAction;
– Structured Actions: Structured Nodes;
Avaliação da UML4SPM
• Modularização
– Software Activity pode conter outras unidades;
– Pode-se compor novas Softwares Activity através
de outras;
– CallBehaviorActions liga Software Activities como
se fosse um chamada de método;
Avaliação da UML4SPM
• Modularização
Avaliação da UML4SPM com ISPW-6
• ISPW-6
– Six International Software Process Workshop;
– Visando comparar e entender as diversas
linguagens de modelagem de processo de
software foi criado um exemplo de problema de
modelagem de processo;
– Avalia pontos fortes e pontos fracos das
abordagens de modelagem de processo
examinadas;
Avaliação da UML4SPM com ISPW-6
• ISPW-6
– O problema foca no projeto, codificação, teste
unitário e administração de uma mudança localizada
para um software. É apresenta uma mudança nos
requisitos que pode ocorrer depois da fase de
desenvolvimento ou durante a fase de suporte;
– O problema inicia com o gerente do projeto
agendando mudanças e atribuindo funções, o
exemplo termina quando a nova versão do código é
passado com sucesso pelo novo teste de unidade;
Avaliação da UML4SPM com ISPW-6
• ISPW-6
– Agendamento e Atribuição de tarefas;
– Modificação do Projeto;
– Revisão do Projeto;
– Modificação do Código;
– Modificação dos Planos de Teste;
– Modificação do Pacote de Teste Unitário;
– Teste de unidade;
– Monitorar o Progresso;
Avaliação da UML4SPM com ISPW-6
• Modificação do Projeto:
– Descrição: modificação da unidade de código afetada pela
mudança dos requisitos. O projeto modificado deve ser
revisto e se aprovado implementado em código;
– Entradas:
• Projeto Atual;
• Projeto Revisto;
– Saídas:
• Projeto Revisto;
– Responsabilidade: Atribuído ao Engenheiro de Projeto
– Restrições:
• O passo deve ser iniciado tão logo a tarefa seja atribuída pelo
Gerente do Projeto;
• Subsequentes iterações devem iniciar tão logo a revisão do projeto
tenha sido completada;
• O passo termina quando a saída é fornecida;
Avaliação da UML4SPM com ISPW-6
• Modificação do Projeto:
Avaliação da UML4SPM com ISPW-6
• Revisão do Projeto:
– Descrição: Revisão formal do projeto modificado. Os revisores
anotarão o número de defeitos encontrados para medir o
esforço empregado na revisão;
• Aprovação incondicional;
• Recomendadas poucas mudanças;
• Recomendadas grandes mudanças;
– Entradas:
• Projeto Modificado;
– Saídas:
• Feedback do Projeto Revisto;
• Aprovação do Projeto Modificado;
• Relatório de resultados, erros encontrados e esforço empregado;
– Responsabilidade: Atribuído a uma equipe de revisores
– Restrições:
• O passo deve ocorrer no tempo programado;
• O passo termina quando todas as saídas são fornecidas;
Avaliação da UML4SPM com ISPW-6
• Revisão do Projeto:
Download

linguaguens de modelagem de processo baseadas em uml