A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Metodos de Especificação de Software 1ª Parte

Apresentações semelhantes


Apresentação em tema: "Metodos de Especificação de Software 1ª Parte"— Transcrição da apresentação:

1 Metodos de Especificação de Software 1ª Parte
Patrícia Macedo Joaquim Filipe João Ascenso Engenharia de Software 2004/2005 EST, Setúbal

2 Engenharia de Software
Indice Geral 1ª Parte Especificação de Software DFD’s Maquinas de estados Petri Nets 2ª Parte UML 3ª Parte Exemplos Engenharia de Software

3 Engenharia de Software
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

4 Engenharia de Software
Especificação No dicionário: Especifica: que pertence a uma espécie particular No contexto da engenharia: 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

5 Engenharia de Software
Especificação Vários significados possíveis, em ES: Especificação de requisitos Acordo entre o utilizador e o responsável pelo sistema de SW completo Especificação de desenho 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

6 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 Tentar obter uma especificação clara e precisa Evitar ambiguidades e diferentes interpretações entre o utilizador e o programador 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

7 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

8 Qualidades das Especificações
Três características fundamentais a ter em conta na especificaçaõ do software: Clareza: Sem ambiguidades e compreensíveis Consistência: Sem regras contraditórias Ser completa Internamente: toda a terminologia interna estar definida Relativamente aos requisitos: documentar todos os requisitos Engenharia de Software

9 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

10 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

11 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 O desempenho é baixo ? Existem deadlocks ? Medidas objectivas 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

12 Formalidade vs Informalidade
Método informal Linguagem natural Métodos semi-formais 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

13 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

14 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

15 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

16 Engenharia de Software
Especificação Formal O = {o1, o2, o3, …} S = {s1, s2, s3, …} F = O U S 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

17 Especificações Operacionais
Notações para indicação de especificações em estilo operacional: Diagramas de Fluxo de Dados - Data Flow Diagrams Especificação de colecções de dados que são manipulados por funções, em termos de repositórios e fluxos de dados Máquinas de Estados Finitas - Finite State Machines 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

18 Data Flow Diagrams (DFDs)

19 Engenharia de Software
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

20 Engenharia de Software
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 Fluxo de Dados Repositório De Dados Engenharia de Software

21 Engenharia de Software
Exemplo (a + b) * (c + a * d) ou, em notação prefixa: (* (+ a b) (+ c (* a d))) b c d a + * + * Engenharia de Software

22 Outro Exemplo: Biblioteca
Livro Título e Autor do livro pedido; Nome do utilizador Pedido de Livro pelo utilizador Prateleira Obter um livro Autor Livro Recepção do Livro Lista de Autores Título Titulo; utilizador Lista de Titulos Título Procurar por Tópico Lista de livros emprestados Tópico Lista de Tópicos Tópico Lista de Títulos Referentes ao Tópico Lista de Títulos Tópico pedido pelo utilizador. Engenharia de Software

23 Engenharia de Software
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

24 Ultrapassar os problemas
Utilizar uma notação complementar para descrever os aspectos não abrangidos pelas DFDs Especificação completa = DFDs + descrições auxiliares Aumentar o modelo DFD, por forma a abranger mais funcionalidades. 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

25 Máquinas de estado finitas

26 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 off Off On Switch on On On Switch on Switch off Off Off Switch on Switch off Engenharia de Software

27 Máquinas de Estados Finitas
Trata-se de um modelo bem conhecido para representar controlo. Uma MEF é adequada para representar: Sistemas com num número finito de estados, e Transições entre estados como consequência de um evento Anos de experiência com as MEF !!! Exemplos: Relógios Calculadoras Máquinas ATM Por vezes o manual de utilização têm diagramas de MEF Engenharia de Software

28 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

29 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

30 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

31 Engenharia de Software
Exemplo I q1 a a q0 q2 b c b q3 Engenharia de Software

32 Engenharia de Software
Exemplo II Engenharia de Software

33 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

34 Engenharia de Software
Exemplo III Engenharia de Software

35 Engenharia de Software
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 a 1 b Engenharia de Software

36 Engenharia de Software
MEF equivalentes b a a a a 1 1 b b a a a 1 2 b b a a a a a 1 n n+1 b b b Engenharia de Software

37 Engenharia de Software
Blocking and Livelock Estado 5 é uma deadlock Estados 3 e 4 uma livelock Engenharia de Software

38 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

39 Engenharia de Software
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: Considere modelar um sistema de navegação com estados que modelam a velocidade: Registo de 8 bits = 256 estados Explosão de estados na combinação de vários módulos: 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

40 Redes de Petri

41 Engenharia de Software
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

42 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

43 Exemplo de Rede de Petri
Engenharia de Software

44 Exemplo: Sistema de Segurança
Initial 1 digit d1 d2 d3 d4 OK pressed approve approved Reject Rejected! Engenharia de Software

45 Engenharia de Software
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

46 Engenharia de Software
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

47 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

48 Exemplo: Sistema de Segurança
Initial 1 digit d1 d2 d3 d4 OK pressed approve approved Reject Rejected! Engenharia de Software

49 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

50 Engenharia de Software
Estruturas da rede Uma sequência de eventos/acções: Execuções concorrentes: e1 e2 e3 e1 e2 e3 e4 e5 Engenharia de Software

51 Engenharia de Software
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

52 Engenharia de Software
Estrutura da rede Sincronização e1 Engenharia de Software

53 Engenharia de Software
Estruturas de Rede Sincronização e Concorrência e1 Engenharia de Software

54 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

55 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

56 Formalizando...

57 Engenharia de Software
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) é o conjunto de arcos de lugares para transições (pi,tj) e transições para lugares (tj,pi) é a função de pesos associados aos arcos Conjunto de lugares de entrada de Conjunto de lugares de saída de Engenharia de Software

58 Engenharia de Software
Exemplo de Rede de Petri p1 p2 p3 p4 t1 t2 t3 Engenharia de Software

59 Engenharia de Software
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; é o vector linha associado a x. Def. (Dinâmica de RdP): A função de transição de estado, da rede de Petri (P,T,A,w,x), está definida para a transição sse tj Permitida (Enabled) Se f(x,tj) estiver definida, o novo estado é dado por x’ = f(x,tj), onde Engenharia de Software

60 Engenharia de Software
Marcações, Dinâmica e Espaço de Estados p2 t2 p4 p1 t1 p3 t3 Engenharia de Software

61 Engenharia de Software
Marcações, Dinâmica e Espaço de Estados p2 t2 p4 p1 t1 p3 t3 Engenharia de Software

62 Engenharia de Software
Marcações, Dinâmica e Espaço de Estados p2 t2 p4 p1 t1 p3 t3 Engenharia de Software

63 Engenharia de Software
Marcações, Dinâmica e Espaço de Estados p2 t2 p4 p1 t1 p3 t3 Engenharia de Software

64 Engenharia de Software
Marcações, Dinâmica e Espaço de Estados p2 t2 p4 p1 t1 p3 t3 Engenharia de Software

65 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

66 Engenharia de Software
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

67 Engenharia de Software
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

68 Engenharia de Software
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

69 Engenharia de Software
Deadlocks ? A máquina de vendas e o sistema produtor-consumidor 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

70 Engenharia de Software
Bloqueio Engenharia de Software

71 Engenharia de Software
Um exemplo t1 p3 t3 t4 p1 p2 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

72 Engenharia de Software
Outro exemplo M0 = (1, 0, 0, 0, 0) M1 = (0, 1, 1, 0, 0) M2 = (0, 0, 0, 1, 1) M3 = (1, 1, 0, 0, 0) M4 = (0, 2, 1, 0, 0) p1 t1 p2 p3 t2 t3 p4 p5 t4 An unbounded but live Petri net Engenharia de Software

73 Engenharia de Software
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

74 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


Carregar ppt "Metodos de Especificação de Software 1ª Parte"

Apresentações semelhantes


Anúncios Google