Revisões de Software
Parte 3
Ricardo de Almeida Falbo
Tópicos Especiais – Qualidade de Software
2008/2
Departamento de Informática
Universidade Federal do Espírito Santo
Agenda



Técnicas de Leitura de Artefatos do
Desenvolvimento Orientado a Objetos
Modelagem Funcional: Qualidade de Modelos de
Casos de Uso
Modelagem Estrutural: Qualidade de Diagramas
de Classes de Análise
Tópicos Especiais - Qualidade de Software 2008/2
2
Técnicas de Leitura de Artefatos do
Desenvolvimento Orientado a Objetos




Técnicas para leitura de artefatos do
desenvolvimento orientado a objetos, tomando
por base uma documentação contendo
diagramas da UML.
Cinco técnicas de Leitura Horizontal.
Seis técnicas de Leitura Vertical.
Orientações para a garantia da qualidade de
Modelos e Diagramas UML.
Tópicos Especiais - Qualidade de Software 2008/2
3
Artefatos

Documento de Especificação de Requisitos:




Diagrama de Pacotes (opcional)
Diagramas de Casos de Uso
Descrições de Casos de Uso
Documento de Especificação de Análise:





Diagrama de Pacotes (opcional)
Diagramas de Classes
Diagramas de Estados (opcional)
Diagramas de Seqüência (opcional)
Dicionário de Projeto descrevendo classes, atributos e
operações
Tópicos Especiais - Qualidade de Software 2008/2
4
Técnicas de Leitura de Artefatos de
Análise e Projeto Orientados a Objetos
Especificação de
Requisitos
Descrições de Casos
de Uso
H1
Diagrama de
Casos de Uso
V4
Especificação de
Análise
Dicionário de
Projeto
V1
H2
Diagrama de
Classes
V2
H3
V3
Diagrama de
Estados
Diagrama de
Seqüência
H4
Especificação de
Projeto
V6
Dicionário de
Projeto
V5
H5
Diagrama de Classes do
Domínio do Problema
Tópicos Especiais - Qualidade de Software 2008/2
5
Qualidade de Modelos de Casos de Uso


Modelo de Casos de Uso: Diagramas de Casos de
Uso + Descrições de Casos de Uso
Elementos de Modelo:





Ator
Caso de Uso
Associações entre Atores e Casos de Uso
Relacionamentos de Generalização / Especialização
entre Atores
Relacionamentos entre Casos de Uso



Generalização / Especialização entre Casos de Uso
Inclusão
Extensão
Tópicos Especiais - Qualidade de Software 2008/2
6
Qualidade de Modelos de Casos de Uso:
Atores


Ator: especifica um papel desempenhado por um
usuário ou outro sistema que interage com o
sistema em questão, mas que é externo ao
mesmo (OMG, 2005).
Avaliando a qualidade:


O próprio sistema ou uma parte dele não pode ser um
ator.
Um ator só pode ter dois tipos de relacionamentos:



associações com casos de uso, sendo que essas só podem
ser binárias.
generalização / especialização com outros atores.
Evitar nomes muito gerais (tal como usuário do
sistema), pois não especifica claramente o papel
desempenhado pelo ator.
Tópicos Especiais - Qualidade de Software 2008/2
7
Qualidade de Modelos de Casos de Uso:
Casos de Uso



Casos de Uso: são meios de especificar usos
requeridos para um sistema, capturando
requisitos funcionais.
Um caso de uso é uma especificação de um
conjunto de ações realizadas por um sistema,
que produz um resultado de valor observável
para um ou mais atores ou patrocinadores do
sistema (OMG, 2005).
Avaliando a qualidade:


Todo caso de uso base deve prover uma funcionalidade
significativa para os usuários do sistema. Se isso não
acontecer, o caso de uso não faz sentido.
As ações descritas em um caso de uso devem ser de
responsabilidade do sistema em desenvolvimento ou
relacionadas à interação de atores com o mesmo.
Tópicos Especiais - Qualidade de Software 2008/2
8
Qualidade de Modelos de Casos de Uso:
Casos de Uso


Um caso de uso representa uma declaração de
um comportamento oferecido pelo sistema, sem
se referenciar a sua estrutura interna (OMG,
2005).
Avaliando a qualidade:


A descrição de um caso de uso deve ser feita usando
conceitos do domínio do problema, sem se preocupar
com aspectos computacionais e de implementação.
Os termos usados para designar os conceitos utilizados
na descrição de casos de uso devem ser mantidos na
fase de análise para facilitar a rastreabilidade.
Tópicos Especiais - Qualidade de Software 2008/2
9
Qualidade de Modelos de Casos de Uso:
Casos de Uso


Um caso de uso pode incluir variações possíveis
de seu comportamento básico, tais como
comportamentos de exceção e manipulação de
erros (OMG, 2005).
Avaliando a qualidade:

A descrição de um caso de uso deve separar o fluxo de
eventos principal (normal) dos fluxos de evento
alternativos e de exceção.
Tópicos Especiais - Qualidade de Software 2008/2
10
Qualidade de Modelos de Casos de Uso:
Casos de Uso



Cada caso de uso especifica uma unidade de
funcionalidade útil que o sistema provê para os
usuários. Essa funcionalidade, que é tipicamente
iniciada por um ator, deve ser sempre realizada
na íntegra para que o caso de uso termine.
Considera-se que o caso de uso foi concluído se,
após sua execução, o sistema encontra-se em
um estado no qual nenhuma entrada ou ação
adicional é esperada, ou em um estado de erro
(OMG, 2005).
Avaliando a qualidade:

A descrição de um caso de uso deve especificar fluxos
de eventos completos que atendam a metas do usuário.
Tópicos Especiais - Qualidade de Software 2008/2
11
Qualidade de Modelos de Casos de Uso:
Casos de Uso


O comportamento de um caso de uso pode ser
descrito por uma especificação, incluindo texto
em linguagem natural, pré e pós-condições,
diagramas de atividades, diagramas de interação
etc. Qual dessas técnicas utilizar depende da
natureza do caso de uso, bem como do futuro
leitor. Elas podem ser combinadas (OMG, 2005).
Avaliando a qualidade:


A descrição de um caso de uso pode especificar mais de
um fluxo de eventos relacionados a uma mesma
macro-funcionalidade.
Quando um outro diagrama UML for usado para
descrever um caso de uso, técnicas de leitura vertical
devem ser aplicadas.
Tópicos Especiais - Qualidade de Software 2008/2
12
Qualidade de Modelos de Casos de Uso:
Generalização/Especialização de Casos de Uso



Uma generalização é um relacionamento
taxonômico entre um classificador mais geral e
um classificador mais específico (OMG, 2005).
Casos de uso são tipos de classificadores e,
portanto, podem ser generalizados /
especializados.
Avaliando a qualidade:


Quando um caso de uso é uma especialização de outro,
então ele deve prover os mesmos fluxos de eventos
principais, possivelmente alterados. Além disso, ele
pode prover novos fluxos de eventos principais.
As descrições não devem se repetir. Apenas as porções
alteradas ou incluídas devem ser especificadas na
descrição do caso de uso especializado.
Tópicos Especiais - Qualidade de Software 2008/2
13
Qualidade de Modelos de Casos de Uso:
Inclusão de Caso de Uso




Relacionamento de Inclusão: define que um caso
de uso base contém o comportamento
especificado em outro caso de uso.
O comportamento do caso de uso incluído é
inserido no comportamento do caso de uso base.
O caso de uso base depende somente do
resultado do caso de uso incluído, resultante da
execução do mesmo (OMG, 2005).
Avaliando a qualidade:

A descrição do caso de uso base não deve fazer menção
a informações ou passos do caso de uso incluído, mas
somente à sua chamada e a seu resultado.
Tópicos Especiais - Qualidade de Software 2008/2
14
Qualidade de Modelos de Casos de Uso:
Inclusão de Caso de Uso


O relacionamento de inclusão deve ser usado
quando há partes comuns no comportamento de
dois ou mais casos de uso. Essa parte comum é,
então, extraída em um caso de uso separado, a
ser incluído por todos os casos de uso base que
tenham essa parte comum. Por conseguinte, o
comportamento do caso de uso incluído não é
significativo por si só.
O uso principal do relacionamento de inclusão é o
reuso de partes comuns e, portanto, o quê está
especificado no caso de uso base normalmente
não é completo em si, mas dependente das partes
incluídas para ser significativo (OMG, 2005).
Tópicos Especiais - Qualidade de Software 2008/2
15
Qualidade de Modelos de Casos de Uso:
Inclusão de Caso de Uso


O caso de uso incluído não é opcional. Ele é
sempre requerido para que o caso de uso base
execute corretamente (OMG, 2005).
Avaliando a qualidade:



O comportamento do caso de uso incluído deve ser
sempre necessário para a realização correta do caso de
uso base.
Uma vez que o comportamento do caso de uso incluído
vai ser inserido em diversos casos de uso base que o
incluem, sua descrição tem de ser compatível com as
descrições de todos eles. Além disso, ela deve estar
aderente ao formato de uma chamada que retorna um
resultado para o caso de uso base prosseguir a sua
execução.
Um caso de uso não pode incluir um caso de uso que o
inclua direta ou indiretamente.
Tópicos Especiais - Qualidade de Software 2008/2
16
Qualidade de Modelos de Casos de Uso:
Extensão de Caso de Uso



Relacionamento de Extensão: especifica que o
comportamento de um caso de uso pode ser
estendido pelo comportamento de outro caso de
uso, tipicamente suplementar.
É um relacionamento direcionado de um caso de uso
de extensão para um caso de uso estendido (caso
de uso base), especificando como e quando o
comportamento definido no caso de uso de extensão
pode ser inserido no caso de uso base (OMG, 2005).
Avaliando a qualidade:

O relacionamento de extensão deve ser sempre direcionado
do caso de uso de extensão para o caso de uso estendido
(base).
Tópicos Especiais - Qualidade de Software 2008/2
17
Qualidade de Modelos de Casos de Uso:
Extensão de Caso de Uso



O caso de uso base é definido de forma
independente do caso de uso de extensão e é
significativo independentemente do caso de uso
de extensão.
O comportamento do caso de uso de extensão
não necessariamente é significativo por si só. Ele
pode definir fragmentos de comportamento que
ampliam o comportamento do caso de uso base
sob certas condições (OMG, 2005).
Avaliando a qualidade:

A extensão não deve especificar um comportamento
crucial para a realização do caso de uso base.
Tópicos Especiais - Qualidade de Software 2008/2
18
Qualidade de Modelos de Casos de Uso:
Extensão de Caso de Uso



Um mesmo caso de uso de extensão pode
estender mais de um caso de uso base.
Quando nenhuma condição é especificada, então
a extensão é incondicional (OMG, 2005).
Avaliando a qualidade:

Extensões, assim como inclusões, podem ser
incondicionais. Atenção especial deve ser dada a esse
fato, pois muitas vezes desenvolvedores assumem que
se um comportamento deve ser incondicionalmente
adicionado a outro, esse relacionamento deve ser
modelado como uma inclusão.
Tópicos Especiais - Qualidade de Software 2008/2
19
Qualidade de Modelos de Casos de Uso:
Extensão de Caso de Uso


A extensão ocorre em um ou mais pontos de
extensão definidos no caso de uso estendido
(caso de uso base) (OMG, 2005).
Avaliando a qualidade:

A descrição do caso de uso base deve fazer menção
explícita ao ponto de extensão, indicando qual o
comportamento do caso de uso de extensão.
Tópicos Especiais - Qualidade de Software 2008/2
20
Qualidade de Modelos de Casos de Uso:
Extensão de Caso de Uso

Avaliando a qualidade:



É uma boa prática modelar os pontos de extensão
explicitamente no diagrama de casos de uso, bem como
em que ponto de extensão um caso de uso estendido
amplia o comportamento do caso de uso base.
Para casos de uso de extensão com apenas um fluxo de
eventos, o nome do ponto de extensão deve ser o nome
do próprio caso de uso de extensão.
Para casos de uso de extensão com vários fluxos de
eventos, o nome do ponto de extensão deve ser o nome
do fluxo de eventos a ser adicionado naquele ponto.
Tópicos Especiais - Qualidade de Software 2008/2
21
Modelagem Estrutural



A modelagem estrutural visa definir as
entidades importantes para um sistema e
modelar as estruturas internas capazes de
satisfazer os requisitos identificados na
especificação de requisitos.
O principal diagrama estrutural da UML usado
para esse fim é o diagrama de classes.
Diagramas de classes buscam representar a
estrutura estática de um domínio.
Tópicos Especiais - Qualidade de Software 2008/2
22
Diagrama de Classes

Elementos de Modelo tipicamente usados:



Classes
Interfaces (design)
Atributos






Operações
Relacionamentos de Generalização / Especialização
Relacionamento de Realização de Interface (design)
Associações




Multiplicidades
Navegabilidades (design)
Papéis
Tipos de Associações



Tipos de dados (design)
Visibilidade (design)
Agregação (válida apenas para associações binárias)
Composição (válida apenas para associações binárias)
Classes de Associação ou Classes Associativas
Tópicos Especiais - Qualidade de Software 2008/2
23
Modelagem Estrutural: Qualidade de
Diagramas de Classes de Análise


Quando produzido na fase de análise
(modelagem conceitual), um diagrama de
classes não deve introduzir aspectos do domínio
da solução (plataforma de implementação),
tratando apenas do domínio do problema.
Avaliando a qualidade:


As classes do diagrama de classes devem corresponder
a conceitos importantes do domínio do problema, sem
considerar aspectos de implementação.
Um diagrama de classes de análise não deve
incorporar construções típicas da fase de design.
Tópicos Especiais - Qualidade de Software 2008/2
24
Qualidade de Diagramas de Classes de
Análise: Análise Ontológica



A Análise Ontológica trata do entendimento da
natureza dos elementos que existem em um
domínio.
A UML não provê construções para diferenciar
certos tipos de classes, caracterizando uma
imperfeição ontológica (Guizzardi, 2005).
Contudo, a percepção dessas (e outras)
distinções pode ajudar na construção de
diagramas de classes mais bem formados, tal
como na definição de hierarquias de
generalização / especialização, na definição de
certas associações e na modelagem de papéis.
Tópicos Especiais - Qualidade de Software 2008/2
25
Análise Ontológica: Classes

Propriedades de Classes que ajudam a distinguir
o seu tipo (Guizzardi, 2005):




Rigidez: Os objetos que representam instâncias da
classe permanecerão sendo instâncias dessa classe
durante toda a sua existência.
Anti-rigidez: Todas as instâncias da classe podem
deixar de ser instâncias desse conceito em algum
momento de sua existência.
Identidade: A classe possui uma identidade que é única
para cada uma das instâncias da classe.
Dependência: Toda instância da classe só existirá se
existir uma instância de uma outra classe com a qual a
classe da primeira obrigatoriamente se relaciona.
Tópicos Especiais - Qualidade de Software 2008/2
26
Análise Ontológica: Classes

Avaliando a qualidade:




Classes rígidas não podem herdar de classes antirígidas.
Uma classe relacionalmente dependente tem de possuir
uma associação com outra classe (que representa a
condição de restrição de dependência), sendo a
multiplicidade mínima >= 1.
Classes sem identidade (misturas ou mixins) têm de
ser abstratas.
Classes sem identidade não podem herdar de classes
que possuem identidade.
Tópicos Especiais - Qualidade de Software 2008/2
27
Análise Ontológica: Classes

Tipos de Classes Rígidas em OntoUML
(Guizzardi, 2005):



Tipo (kind): classe rígida, relacionalmente
independente e que possui identidade. Ex.: Animal.
Sub-tipo (sub-kind): classe rígida, relacionalmente
independente e que possui identidade, mas essa
identidade é dada por um super-tipo que a subjulga.
Ex.: Pessoa, subclasse de Animal.
Categoria (category): classe rígida e relacionalmente
independente, mas que não possui identidade. É uma
mistura (mixin) que agrega um conjunto de
propriedades comuns a diferentes tipos/sub-tipos. Ex.:
Entidade Racional (generalização de Pessoa e Agente
Inteligente).
Tópicos Especiais - Qualidade de Software 2008/2
28
Análise Ontológica: Classes

Tipos de Classes Não Rígidas em OntoUML
(Guizzardi, 2005):



Fase (phase): classe anti-rígida e relacionalmente
independente, que possui identidade, dada por um tipo
que a subjulga. Ex.: Adulto.
Papel (role): classe anti-rígida e relacionalmente
dependente, que possui identidade, dada por um tipo
que a subjulga. Ex.: Estudante.
Mistura de Papéis (roleMixin): classe anti-rígida e
externamente dependente, que não possui identidade.
Mistura (mixin) que agrega um conjunto de
propriedades comuns a vários papéis.
Tópicos Especiais - Qualidade de Software 2008/2
29
Análise Ontológica: Classes

Avaliando a qualidade:

Classes rígidas não podem herdar de classes antirígidas, logo:


Um tipo / sub-tipo / categoria não pode ser subclasse de
um papel, fase ou mistura de papel.
Outras restrições:




Um tipo não pode ser subclasse de um sub-tipo.
Todo sub-tipo é subclasse de um único tipo.
Toda fase é subclasse de um único tipo.
Todo papel é subclasse de um único tipo.
Tópicos Especiais - Qualidade de Software 2008/2
30
Análise Ontológica: Classes

Avaliando a qualidade:

Uma classe relacionalmente dependente tem de possuir
uma associação com outra classe (que representa a
condição de restrição de dependência), sendo a
multiplicidade mínima >= 1, logo:


Um papel ou uma mistura de papéis tem de possuir uma
associação com outra classe, sendo a multiplicidade
mínima >= 1.
Classes sem identidade (misturas ou mixins) têm de
ser abstratas, logo:

Categorias e misturas de papéis têm de ser classes
abstratas.
Tópicos Especiais - Qualidade de Software 2008/2
31
Análise Ontológica: Classes

Avaliando a qualidade:

Classes sem identidade não podem herdar de classes
que possuem identidade, logo:

Categorias e misturas de papéis não podem ser subclasses
de tipos, subtipos, fases e papéis.
Tópicos Especiais - Qualidade de Software 2008/2
32
Análise Ontológica: Relações


Relações são entidades que aglutinam outras
entidades (Guizzardi et al., 2008).
Tipos de Relações (Guizzardi et al., 2008):



Relações formais: acontecem entre duas ou mais
entidades diretamente, sem nenhum outro indivíduo
intervindo.
Relações materiais: possuem estrutura material por si
próprias.
Para que uma relação material aconteça, uma
outra entidade precisa existir para mediar a
relação. Essas entidades são denominadas
modos relacionais (relators) e são indivíduos
com o poder de conectar (mediar) outros
indivíduos (Guizzardi et al., 2008).
Tópicos Especiais - Qualidade de Software 2008/2
33
Análise Ontológica: Relações

Avaliando a qualidade:



Relações materiais necessitam de classes
representando as entidades mediadoras da relação
(modos relacionais – relators).
Muitas vezes essas classes de modos relacionais estão
relacionadas a eventos. Ex.: relação “alocado em”,
entre Pessoa e Projeto necessita de uma classe de
modo relacional Alocação que media a relação entre
Pessoa e Projeto, estando essa classe relacionada ao
evento Alocação de Pessoa a Projeto.
O uso de classes associativas deve ser feito com
cuidado, uma vez que não especifica informações
importantes.
Tópicos Especiais - Qualidade de Software 2008/2
34
Referências



OMG, Unified Modeling Language
Superstructure, version 2.0, formal/05-07-04
August 2005.
Guizzardi, G., Ontological Foundations for
Structural Conceptual Models, Universal Press,
The Netherlands, 2005, ISBN 90-75176-81-3.
Guizzardi, G., Falbo, R.A., Guizzardi, R.S.S.,
“Grounding Software Domain Ontologies in the
Unified Foundational Ontology (UFO): The case
of the ODE Software Process Ontology”,
Proceedings of the XI Iberoamerican Workshop
on Requirements Engineering and Software
Environments, Recife, Brazil, 2008.
Tópicos Especiais - Qualidade de Software 2008/2
35
Download

Aula 4 - Revisao de Software