Metodos de Especificação de
Software
1ª Parte
Patrícia Macedo
Joaquim Filipe
João Ascenso
Engenharia de Software 2004/2005
EST, Setúbal
Indice Geral
1ª Parte
 Especificação de Software
 DFD’s
 Maquinas de estados
 Petri Nets
2ª Parte

UML
3ª Parte
 Exemplos
Engenharia de Software
2
Motivação

Ao longo de várias disciplinas do curso temos
utilizado várias formas de especificar o software.





Fluxogramas (IP, ATAI, POO Microprocessadores)
DFD’s - ASI
Maquinas Finitas - Microprocessadores
Redes Petri
UML – POO
O objectivo desta aula é fazer uma breve revisão de
algumas destas diferentes tecnicas de especificar o
software.
Engenharia de Software
3
Especificação

No dicionário:


No contexto da engenharia:


Especifica: que pertence a uma espécie particular
Descrição dos detalhes estruturais e comportamentais
de um produto a desenvolver
No contexto da ES:

Descrição precisa das entidades de um sistema, do
conjunto de métodos para as manipular e do seu
comportamento.
Engenharia de Software
4
Especificação

Vários significados possíveis, em ES:

Especificação de requisitos


Especificação de desenho


Acordo entre o utilizador e o responsável pelo sistema de SW
completo
Acordo entre o arquitecto do sistema e os programadores
Especificação de módulos

Acordo entre os programadores que utilizam o módulo e os
programadores que o implementam
Engenharia de Software
5
Para que servem as especificações

Indicar as necessidades do utilizador


Importante para o programador saber quais são as
necessidades do utilizador
O utilizador não sabe bem o que quer


Evitar ambiguidades e diferentes interpretações entre
o utilizador e o programador


Tentar obter uma especificação clara e precisa
VERIFICAR as especificações
As especificações podem ser construídas de uma
forma muito clara e precisa

e.g. métodos formais
Engenharia de Software
6
Para que servem as especificações

Indicação dos requisitos para a implementação


Ponto de referência durante a implementação
Especificação define o comportamento:



Interno – Especificação de desenho
Externo – Especificação de requisitos
A especificação de desenho deve ser escrita de forma
mais formal e precisa que as de requisitos


Especificação de desenho  programadores
Especificação de requisitos  utilizadores
Engenharia de Software
7
Qualidades das Especificações

Três características fundamentais a ter em conta na
especificaçaõ do software:

Clareza:


Consistência:


Sem ambiguidades e compreensíveis
Sem regras contraditórias
Ser completa


Internamente: toda a terminologia interna estar definida
Relativamente aos requisitos: documentar todos os requisitos
Engenharia de Software
8
Estilos de Especificação

Critério 1: especificações formais vs. especificações
informais




Formais: A notação utilizada possui uma sintaxe e uma
semântica totalmente precisa
Informal: Escritas em linguagem natural
As linguagens TDN e GDN são semi-formais. Porquê?
Critério 2: Especificações operacionais vs. especificações
descritivas



A especificação operacional define comportamentos desejados
através de um modelo do sistema
A especificação descritiva define propriedades desejáveis, de
forma puramente declarativa
Exemplo: a especificação de uma elipse – através do desenho da
sua forma ou através da sua fórmula: ax2 + by2 + c = 0
Engenharia de Software
9
Especificações Informais



Escritas em linguagem natural
Fáceis de serem entendidas pelo cliente
Mais susceptíveis de possuírem:




Erros, omissões, imprecisões ou ambiguidades
As falhas são descobertas mais tarde, na integração,
no teste do sistema ou mesmo na entrega do produto
Conclusão: Não é uma boa forma de especificar um
sistema complexo
Facto: ainda é utilizado por muitas empresas.


Principais razões: gestão não uniformizada, pessoal não
qualificado, pressões do cliente, falta de investimento
No entanto, o panorama está a mudar.
Engenharia de Software
10
Especificações Formais


Comunicação fácil entre os arquitectos do sistema
de SW, programadores e responsáveis pela escrita
dos requisitos
Representações formais:

Análise automática


Medidas objectivas



O desempenho é baixo ? Existem deadlocks ?
e.g. de acoplamento e/ou de coesão entre módulos
Verificação de algumas propriedades do SW
Podem ser utilizadas para testar o sistema de SW:

E.g. através de test scripts
Engenharia de Software
11
Formalidade vs Informalidade

Método informal


Métodos semi-formais





Linguagem natural
Gane & Sarsen/DeMarco/Yourdon
Entity-Relationship Diagrams
Jackson/Orr/Warnier,
SADT, PSL/PSA, SREM, etc.
Métodos formais




Finite State Machines
Petri Nets
Z
ANNA, VDM, CSP, etc.
Engenharia de Software
12
Formalidade vs Informalidade

Notações semi-formais



Possuem uma fraca semântica associada com a
estrutrura
Muito utilizadas, fácil compreensão
Notações formais


A semântica é claramente definida (conceito
matemático)
As especificações não são ambíguas



Menos atrito entre o cliente e o produtor de SW
Implementação mais fácil
Díficil compreensão
Engenharia de Software
13
Especificação Formal: Exemplo
A system consists of a set of object files. Each
object file is derived from one or more source
files. Object and source files have a timestamp
indicating when they were last modified. If an
object file is older than any source file, then the
object file must be rederived.
Engenharia de Software
14
Especificação Formal: Primeiro Passo
A system consists of a set of object files. Each
object file is derived from one or more source
files. Object and source files have a
timestamp indicating when they were last
modified. If an object file is older than any
source file, then the object file must be
rederived.
Engenharia de Software
15
Especificação Formal








O = {o1, o2, o3, …}
S = {s1, s2, s3, …}
F=OUS
T: F → R
D: O → PowerSet(S)
ForAll(o ε O),
ForAll(s ε D(o))
T(o) > T(s)






O = conjunto dos ficheiros obj
S = conjunto dos ficheiros
fonte
F = Todos os ficheiros
T = relação do timestamp
D = relação deriva
Um exemplo: os timestamp de
O devem ser maiores que os
timestamps de s
Engenharia de Software
16
Especificações Operacionais

Notações para indicação de especificações em
estilo operacional:

Diagramas de Fluxo de Dados - Data Flow Diagrams


Máquinas de Estados Finitas - Finite State Machines


Especificação de colecções de dados que são manipulados
por funções, em termos de repositórios e fluxos de dados
Especificação de estruturas de controlo
Redes de Petri – Petri Nets

Especificação de sistemas assíncronos, em termos de lugares
e transições entre lugares
Engenharia de Software
17
Data Flow Diagrams (DFDs)
DFDs



Servem para especificar as funções de um
sistema de informação
O sistema é descrito como uma colecção de
dados manipulados por funções
Os dados podem ser organizados de várias
formas:



Repositórios de dados
Transferências de dados
Entradas/saídas
Engenharia de Software
19
DFDs

Notação gráfica:




Nós (“bubble”): representam funções.
Setas: representam fluxos de dados
Caixas abertas: representam repositórios de dados.
Caixas de E/S: Representam a aquisição e produção
de dados durante a interacção humano-máquina.
Função
Dispositivo
de entrada
Dispositivo
de saída
Engenharia de Software
Fluxo de
Dados
Repositório
De Dados
20
Exemplo
(a + b) * (c + a * d)
b
+
ou,
em notação prefixa:
(* (+ a b) (+ c (* a d)))
Engenharia de Software
a
d
*
c
+
*
21
Outro Exemplo: Biblioteca
Livro
Título e Autor
do livro pedido;
Nome do utilizador
Prateleira
Obter
um
livro
Autor
Lista de
Autores
Lista de Titulos
Lista de
Tópicos
Livro
Título
Pedido de Livro
pelo utilizador
Recepção
do Livro
Titulo; utilizador
Título
Procurar
por
Tópico
Tópico
Tópico
Tópico
pedido pelo
utilizador.
Engenharia de Software
Lista de livros
emprestados
Lista de Títulos
Referentes ao
Tópico
Lista de
Títulos
22
Problemas com os DFDs

Os DFDs possuem uma notação gráfica atractiva capaz
de capturar de forma intuitiva o fluxo de dados e as
operações envolvidas num sistema de informação:




No entanto falta-lhes uma semântica precisa
Requerem uma interpretação intuitiva
Notação semi-formal
O controlo não é definido por este modelo:



Um nó ("bubble") utiliza todas as suas entradas ?
Espera por todas ou por um determinado número ?
Repete os cálculos quando as entradas são constantes ?
Engenharia de Software
23
Ultrapassar os problemas

Utilizar uma notação complementar para descrever os
aspectos não abrangidos pelas DFDs


Aumentar o modelo DFD, por forma a abranger mais
funcionalidades.


Especificação completa = DFDs + descrições auxiliares
e.g. Introdução de setas de controlo de fluxo
Rever a notação DFD tradicional para a tornar
completamente formal

Revela-se muito complicado !!!
Engenharia de Software
24
Máquinas de estado finitas
Máquinas de Estado Finitas
As MEF assumem que o sistema está sempre em
um dos estados permitidos
Switch on
Switch off
Current State
Action
Off
On
Switch on
On
On
Switch off
Off
Off
Switch off
Off
On
Switch on
Switch off
Engenharia de Software
Switch on
26
Máquinas de Estados Finitas


Trata-se de um modelo bem conhecido para representar
controlo.
Uma MEF é adequada para representar:




Anos de experiência com as MEF !!!
Exemplos:




Sistemas com num número finito de estados, e
Transições entre estados como consequência de um evento
Relógios
Calculadoras
Máquinas ATM
Por vezes o manual de utilização têm diagramas de MEF
Engenharia de Software
27
Máquinas de Estado Finitas



Estados
Distinção entre estado iniciais e/ou finais
Transição entre estados é accionada por
eventos:



Tais como pressionar o botão de uma
calculadora
Ou de um relógio
Ou uma item de um menu numa GUI
Engenharia de Software
28
Máquinas de Estado Finitas

Definição formal:

M = {Q,I,}, onde
Q é um conjunto finito de estados
 I é um conjunto finito de entradas
  é uma função de transição : Q x I -> Q


A função  pode ser uma função parcial (i.e.
indefinida para certos valores do seu domínio)
Engenharia de Software
29
Máquinas de Estado Finitas

Representação gráfica



Os nós (círculos) representam estados
Os arcos são dirigidos e possuem uma
etiqueta (label) que pertence ao conjunto I
Um arco com uma etiqueta i vai do estado q1
para q2 se e só se (q1,i) = q2
Engenharia de Software
30
Exemplo I
a
q0
q1
a
q2
b
c
q3
Engenharia de Software
b
31
Exemplo II
Engenharia de Software
32
Máquinas de Estado Finitas

Modelo de execução



A MEF está sempre em algum estado
A entrada obriga a mudanças de estado de
acordo com 
Extensões comuns:


Estados iniciais e estados de paragem
A saída é gerada quando existe uma transição
entre estados

 : Q x I -> Q x O
Engenharia de Software
33
Exemplo III
Engenharia de Software
34
Geração de Linguagens

Seja E = {a,b} um conjunto de eventos.
Considere a linguagem:


L = {a,aa,ba,aaa,aba,baa,bba,...}
i.e. Todas as strings de a e b seguidas de a.
a
b
0
a
b
Engenharia de Software
1
35
MEF equivalentes
a
b
a
0
1
b
a
a
0
1
b
a
a
0
a
1
b
2
b
0
a
b
1
a
…
a
b
Engenharia de Software
n
a
n+1
a
b
36
Blocking and Livelock


Estado 5 é uma deadlock
Estados 3 e 4 uma livelock
Engenharia de Software
37
Vantagens do modelo MEF

Simples de entender e mais precisa que outras
abordagens semi-formais:



Um menu de um GUI é uma MEF
Representação gráfica evidente e clara
É fácil construir ferramentas de suporte

Transformadores:


Transformam o modelo MEF em outras representações, e.g.
código C++
Análise e Validação:

Esta MEF irá correr para sempre ? Quando é que irá parar ?
Deadlock ?
Engenharia de Software
38
Limitações das MEF

Limite teórico no poder computacional


A MEF não possui memória
A utilização de estados como memória é ineficiente:



Explosão de estados na combinação de vários
módulos:


Considere modelar um sistema de navegação com estados
que modelam a velocidade:
Registo de 8 bits = 256 estados
Os estados são multiplicativos
Inerentemente síncrona:

Em cada instante, o estado global do sistema tem de
estar definido e apenas pode ocorrer uma transição
de cada vez
Engenharia de Software
39
Redes de Petri
Introdução
•
•
•
Introduzidas por Carl Adam Petri em 1962
Ferramenta de diagramas para modelar
concorrência e sincronização em sistemas
distribuídos
Baseada numa fundação matemática
muito forte
Engenharia de Software
41
Uma especificação de Redes Petri

Consiste em três tipos de componentes:
lugares (círculos), transições (rectângulos
ou barras) e arcos (setas):



Os lugares representam os estados possíveis
do sistema
As transições são eventos ou acções que
causam a mudança de estado
Cada arco liga um lugar com uma transição ou
uma transição com um lugar
Engenharia de Software
42
Exemplo de Rede de Petri
Engenharia de Software
43
Exemplo: Sistema de Segurança
1 digit
Initial
1 digit
d1
1 digit
d2
1 digit
d4
d3
OK
OK
OK
OK
OK
OK
pressed
Rejected!
Reject
approve
approved
Engenharia de Software
44
Mudança de estado



Ocorre quando existe um movimento de
token(s) (pontos pretos) de lugar em lugar
e é causado pelo disparo de uma transição
O disparo representa a ocorrência de um
evento ou uma acção tomada
O disparo é sujeito às condições de
entrada, i.e. pela disponibilidade de
tokens(s)
Engenharia de Software
45
Mudança de estado



Uma transição está activa quando existem
tokens suficientes nas suas entradas
Depois do disparo, os tokens irão ser
transferidos dos lugares de entrada (estado
anterior) para os lugares de saída (novo estado)
Quando uma transição está activa a rede pode
evoluir de formas diferentes:

O modelo é não determinístico


Mesmo estado inicial – vários estados finais possíveis
Salienta-se que o exemplo anterior é uma rede
de Petri de uma MEF
Engenharia de Software
46
Exemplo: Sistema de Segurança
• Cenário 1: Normal
•
Introduz os 4 dígitos e pressiona em OK.
• Cenário 2: Excepcional
•
Introduz apenas 3 dígitos e pressiona em OK.
Engenharia de Software
47
Exemplo: Sistema de Segurança
1 digit
Initial
1 digit
d1
1 digit
d2
1 digit
d4
d3
OK
OK
OK
OK
OK
OK
pressed
Rejected!
Reject
approve
approved
Engenharia de Software
48
Múltiplos estados locais



No mundo real, existem eventos que
acontecem ao mesmo tempo
Um sistema pode ter muitos estados locais
para obter um estado global
Existe uma necessidade de modelar
concorrência e sincronização
Engenharia de Software
49
Estruturas da rede

Uma sequência de eventos/acções:
e1

e2
e3
Execuções concorrentes:
e2
e3
e4
e5
e1
Engenharia de Software
50
Estruturas de rede

Eventos não determínisticos - conflito, escolha
ou decisão : A escolha de e1, e2 … ou e3, e4 ...
e1
e2
e3
e4
Engenharia de Software
51
Estrutura da rede

Sincronização
e1
Engenharia de Software
52
Estruturas de Rede

Sincronização e Concorrência
e1
Engenharia de Software
53
Exemplo: Obtenção de um recurso
Estado Inicial
T1 dispara
T2 dispara
Modelo não
deterministico
Tanto t3 como
t4 podem disparar
Modelo
concorrente.
O disparo de t1
não impede t2
de disparar
Engenharia de Software
54
Exemplo: Obtenção de um recurso
Estado Inicial
T1 e T2 dispara
Não está definida
uma política
de resolução
de conflitos
T3 dispara
T5 dispara
Pode ocorrer
starvation
Engenharia de Software
55
Formalizando...
Definição de Rede de Petri
Def.: Uma Rede de Petri (grafo ou estrutura) é um grafo pesado
bipartido (P,T,A,w), onde:
P={p1, p2,... pn} é o conjunto finito de lugares (places)
T ={t1, t2,... tm} é o conjunto finito de transições (transitions)
A  ( P  T )  (T  P) é o conjunto de arcos de lugares para
transições (pi,tj) e transições para lugares (tj,pi)
w : A  1,2,3, é a função de pesos associados aos arcos
Conjunto de lugares de entrada de t j  T
I (t j )  { pi  P : ( pi , t j )  A}
Conjunto de lugares de saída de t j  T
O(t j )  { pi  P : (t j , pi )  A}
Engenharia de Software
57
Exemplo de Rede de Petri
p2
t2
p1
p4
t1
p3
t3
P  p1 , p 2 , p3 , p 4 }
T  t1 ,t 2 , t 3 }
A  {( p1 , t1 ), ( p 2 , t 2 ), ( p 2 , t 3 ), ( p3 , t 3 ), (t1 , p 2 ), (t1 , p3 ), (t 2 , p1 ), (t 3 , p3 ), (t 3 , p 4 )}
T odosos pesossão  1
Engenharia de Software
58
Marcações, Dinâmica e Espaço de Estados
Def.: Uma Rede de Petri marcada é um 5-túpulo (P,T,A,w,x),
em que (P,T,A,w) é um grafo de Rede de Petri e x é uma
marcação do conjunto de lugares P;
x  [ x( p1), x( p2 ),, x( pn )]  Nn
é o vector linha associado a x.
Def. (Dinâmica de RdP): A função de transição de estado,
f : N n  T  N n da rede de Petri (P,T,A,w,x), está definida
para a transição t j  T sse
tj Permitida
x( pi )  w( pi , t j ), pi  I (t j ).
(Enabled)
Se f(x,tj) estiver definida, o novo estado é dado por x’ = f(x,tj), onde
x' ( pi )  x( pi )  w( pi , t j )  w(t j , pi ), i  1,, n.
Engenharia de Software
59
Marcações, Dinâmica e Espaço de Estados
p2
t2
p1
p4
t1
p3
t3
x  x 0  1 0 0 0
Engenharia de Software
60
Marcações, Dinâmica e Espaço de Estados
p2
t2
p1
p4
t1
p3
t3
x  0 1 1 0
Engenharia de Software
61
Marcações, Dinâmica e Espaço de Estados
p2
t2
p1
p4
t1
p3
t3
x  1 0 1 0
Engenharia de Software
62
Marcações, Dinâmica e Espaço de Estados
p2
t2
p1
p4
t1
p3
t3
x  0 1 2 0
Engenharia de Software
63
Marcações, Dinâmica e Espaço de Estados
p2
t2
p1
p4
t1
p3
t3
x  0 0 2 1
Engenharia de Software
64
Caracteristicas das Petri Nets







Petri Nets servem para modelar o comportamento de um
sistema durante o desenvolvimento do SW
Petri Nets modelam MEF
Modelam um estado global e muitos estado locais no
mundo real
Uma rede de Petri permite múltiplos cenários
Diferentes tokens para diferentes cenários
Redes de Petri : Sequência, Escolha, Sincronização e
Concorrência
Mais expressivas que as MEF
Engenharia de Software
65
Comportamento
• Estados alcançáveis
•
“Pode-se alcançar um estado particular a partir
de outro?”
• Limite de armazenamento
•
“Irá haver overflows num círculo ?”
• Deadlocks ?
•
“Irá o sistema morrer num estado particular ?”
Engenharia de Software
66
Limite
•
•
Diz-se que uma rede de Petri possui um
limite em k ou é simplesmente limitada se
o número de tokens em cada lugar não
excede um número finito k para qualquer
estado a partir de M0
A rede de Petri para a máquina de vendas
possui um limite em 1
•
A rede de Petri net diz-se segura (safe)
Engenharia de Software
67
Bloqueio



Uma rede de Petri pode entrar num estado de
bloqueio (deadlock) quando não é possível
disparar nenhuma transição
Uma rede de Petri em que não é possível haver
bloqueios diz-se “viva”
É possível analisar a existência de estados de
bloqueio no sistema através da análise manual
da rede de Petri que modela o sistema
Engenharia de Software
68
Deadlocks ?
•
•
•
A máquina de vendas e o sistema produtorconsumidor não possuem deadlocks
Uma transição está morta se não pode ser
disparada por qualquer sequência de disparo
Outra definição: “Uma rede de Petri com um
marcas iniciais M0 não possui deadlocks se, para
qualquer situação alcançada a partir de M0, é
possível disparar uma transição através de uma
sequência de disparo”
Engenharia de Software
69
Bloqueio
Engenharia de Software
70
Um exemplo
t1
p3
p2
p1
t3
t4
p4
t2
M0 = (1,0,0,1)
M1 = (0,1,0,1)
M2 = (0,0,1,0)
M3 = (0,0,0,1)
A bounded but non-live Petri net
Engenharia de Software
71
Outro exemplo
M0 = (1, 0, 0, 0, 0)
p1
M1 = (0, 1, 1, 0, 0)
M2 = (0, 0, 0, 1, 1)
t1
M3 = (1, 1, 0, 0, 0)
p2
p3
t2
t3
p4
p5
t4
M4 = (0, 2, 1, 0, 0)
An unbounded but live Petri net
Engenharia de Software
72
Métodos de Análise
• Análise de alcançabilidade:
•
•
Árvore de cobertura
Problema na explosão de estados
• Matriz de Incidência e Equações de estado
• Análise estrutural
•
Baseado em estruturas de rede
Engenharia de Software
73
Limitações das Redes de Petri


Marcas anónimas => não é possível a
tomada de decisões (de selecção) com
base no conteúdo nem a modificação do
conteúdo
Não existe o conceito de “tempo” de uma
forma explicita:

Limita a sua utilização em sistemas de tempo
real
Engenharia de Software
74
Download

Engenharia de Software