exemplos especificação de software patrícia macedo joaquim filipe joão ascenso engenharia de...
TRANSCRIPT
Exemplos Exemplos Especificação de Software Especificação de Software
Patrícia MacedoPatrícia MacedoJoaquim FilipeJoaquim FilipeJoão AscensoJoão Ascenso
Engenharia de Software 2005/2006Engenharia de Software 2005/2006EST, SetúbalEST, Setúbal
Engenharia de Software 2
Indice GeralIndice Geral1ª Parte1ª Parte Especificação de Software Especificação de Software DFD’sDFD’s Maquinas de estadosMaquinas de estados Petri NetsPetri Nets
2ª Parte2ª Parte UMLUML
3ª 3ª ParteParte Exemplos (DFD’s, ME, PetriNets)Exemplos (DFD’s, ME, PetriNets)
Engenharia de Software 3
Exemplo com DFDSExemplo com DFDS
DFD mostra o DFD mostra o fluxo de dadosfluxo de dados ““o que acontece, o que acontece,
não como não como acontece”acontece”
Número infinito de Número infinito de interpretações interpretações possíveispossíveis
Engenharia de Software 4
Desenhar o DFDDesenhar o DFD
Primeiro refinamentoPrimeiro refinamento
Engenharia de Software 5
Desenhar o DFDDesenhar o DFD Segundo refinamentoSegundo refinamento Ordens em espera são vistas Ordens em espera são vistas
diáriamentediáriamente
Engenharia de Software 6
Desenhar o DFDDesenhar o DFD
Terceiro Terceiro refinamentorefinamento
Engenharia de Software 7
Desenhar o DFDDesenhar o DFD
DFD FinalDFD Final Maior, de fácil compreensão pelo Maior, de fácil compreensão pelo
clientecliente DFDs maioresDFDs maiores
HierarquiaHierarquia Uma caixa é um DFD num nível mais Uma caixa é um DFD num nível mais
baixobaixoP1
P11
P12
P13
Top-down
Engenharia de Software 8
Refinar os fluxos de dadosRefinar os fluxos de dados
Items de dados para cada fluxoItems de dados para cada fluxo Refinar cada fluxo Refinar cada fluxo Dicionário de dadosDicionário de dados
Engenharia de Software 9
Dicionário de dadosDicionário de dados
Entradas de exemploEntradas de exemplo
Engenharia de Software 10
Case studyCase study
A loja ABCD Software compra software de A loja ABCD Software compra software de vários fornecedores e vende ao público. O vários fornecedores e vende ao público. O software mais popular é mantido em software mais popular é mantido em stock, mas o resto é pedido à medida que stock, mas o resto é pedido à medida que é necessário. A algumas instituições e é necessário. A algumas instituições e associações são dadas facilidades no associações são dadas facilidades no acesso ao crédito. acesso ao crédito.
Engenharia de Software 11
Case studyCase study Perceber as razões: Perceber as razões:
Qual é o objectivo do sistema informático no seu negócio ?Qual é o objectivo do sistema informático no seu negócio ? Apenas porque vende software?Apenas porque vende software? Assumir: Introduzir um novo sistema “de forma a Assumir: Introduzir um novo sistema “de forma a
obter mais lucros” obter mais lucros” Análise custos / benefícios para cada secção do negócioAnálise custos / benefícios para cada secção do negócio
Questões importantes:Questões importantes: Que secções informatizar ? Todas ?Que secções informatizar ? Todas ? Como ? Batch ? Online ? Para uso interno ? e-commerce ? Como ? Batch ? Online ? Para uso interno ? e-commerce ?
O perigo de muitas soluções: O perigo de muitas soluções: Primeiro fornecer a solução, só depois descobrir qual é o Primeiro fornecer a solução, só depois descobrir qual é o
problemaproblema
Engenharia de Software 12
Análise estruturada de Análise estruturada de sistemassistemas
Técnica semi-formal para especificar softwareTécnica semi-formal para especificar software Desenvolvida em 1970: [DeMarco,1978], [Gane/Sarsen,1979], Desenvolvida em 1970: [DeMarco,1978], [Gane/Sarsen,1979],
[Yourdon/Constantine,1979] [Yourdon/Constantine,1979] Utilização dos DFDs:Utilização dos DFDs:
Os dados são processados em cada passo antes de se passar Os dados são processados em cada passo antes de se passar para o próximopara o próximo
Simples e intuitivo (os utilizadores participam no processo)Simples e intuitivo (os utilizadores participam no processo) Permite seguir e documentar como os dados são processadosPermite seguir e documentar como os dados são processados
Estes modelos permitem uma perspectiva funcional Estes modelos permitem uma perspectiva funcional de todo o sistemade todo o sistema
Engenharia de Software 13
Refinar os repositórios de Refinar os repositórios de dadosdados
Definir o conteúdo e a representação Definir o conteúdo e a representação (formato)(formato)
Definir a precisão dos dados numéricos, o Definir a precisão dos dados numéricos, o comprimento dos campos de texto etc.comprimento dos campos de texto etc.
Definir que dados irão ser necessários em Definir que dados irão ser necessários em que ficheiros, bases de dados etc. que ficheiros, bases de dados etc.
Engenharia de Software 14
Definir os recursos físicosDefinir os recursos físicos
Para cada ficheiro, especificarPara cada ficheiro, especificar Nome do ficheiroNome do ficheiro Organização (sequencial, indexada, etc.)Organização (sequencial, indexada, etc.) Meio de armazenamentoMeio de armazenamento Estrutura (até ao nível do campo)Estrutura (até ao nível do campo)
Engenharia de Software 15
Determinar Especificações Determinar Especificações I/OI/O
Especificar as entradas/saídas para as Especificar as entradas/saídas para as comunicações externas:comunicações externas: Esboço da interfaceEsboço da interface Esboço das saída de dadosEsboço das saída de dados Formato dos dados de importação/exportação Formato dos dados de importação/exportação
para outro softwarepara outro software
Engenharia de Software 16
Calcular parâmetros Calcular parâmetros relevantesrelevantes
Dados numéricos relevantesDados numéricos relevantes Volume dos dados de entrada Volume dos dados de entrada
(diariamente ou por hora)(diariamente ou por hora) Tamanho, frequência, deadline para cada Tamanho, frequência, deadline para cada
relatório impressorelatório impresso Tamanho, número de campos que passam Tamanho, número de campos que passam
entre o CPU e o meio de armazenamentoentre o CPU e o meio de armazenamento Tamanho de cada ficheiro, etc...Tamanho de cada ficheiro, etc...
Engenharia de Software 17
Requisitos de HardwareRequisitos de Hardware
Requisitos de armazenamentoRequisitos de armazenamento Definir forma de armazenamento para o back-up Definir forma de armazenamento para o back-up
de dadosde dados Input devicesInput devices Output devices Output devices O hardware existente serve ?O hardware existente serve ? Se não, recomendar compra/aluguerSe não, recomendar compra/aluguer
Engenharia de Software 18
No entanto... No entanto...
Tempos de resposta não podem ser Tempos de resposta não podem ser calculadoscalculados
Número de canais E/S apenas podem Número de canais E/S apenas podem ser adivinhadosser adivinhados
A capacidade de processamento A capacidade de processamento apenas pode ser adivinhadaapenas pode ser adivinhada
Engenharia de Software 19
Maquinas de estadosMaquinas de estados
ExemploExemplo
Engenharia de Software 20
Cofre com uma combinaçãoCofre com uma combinação
[Brady,1977][Brady,1977]
Engenharia de Software 21
• Combination lock with 3 positions: 1,2,3• The dial can be turned left L or right R• Any time there are 6 possible dial movements, 1L, 1R, 2L, 2R, 3L, 3R• The combination of the lock is: 1L, 3R, 2L• any other dial movement causes the alarm to go off
Safelocked A B
Safeunlocked
ALARM
any otherdial movement
any otherdial movement any other
dial movement
1L 3R 2L
Cofre com uma combinaçãoCofre com uma combinação
Engenharia de Software 22
Teste de DiagnósticoTeste de Diagnóstico Estado 0 Estado 0 Inicialização Inicialização Evento b Evento b Inicialização OK Inicialização OK Estado 1 Estado 1 Estou activo Estou activo Evento a1 Evento a1 Sem Problemas Sem Problemas Evento a2 Evento a2 Problema detectado Problema detectado Estado 4 Estado 4 Verificação do estado concluído Verificação do estado concluído Estado 5 Estado 5 Erro no teste de diagnóstico Erro no teste de diagnóstico
Ocorre quando recebe uma entrada não esperadaOcorre quando recebe uma entrada não esperada
Engenharia de Software 23
Produtor/ConsumidorProdutor/Consumidor
a) Produtor b) Consumidor c) Buffer
Engenharia de Software 24
Produtor/ConsumidorProdutor/Consumidor
Consumidor: Consumidor: Processo que lê as mensagens e as remove do Processo que lê as mensagens e as remove do
bufferbuffer Buffer vazio Buffer vazio espera que uma mensagem seja espera que uma mensagem seja
escritaescrita Produtor:Produtor:
Produz mensagens e escreve-as no bufferProduz mensagens e escreve-as no buffer Buffer cheio Buffer cheio espera que uma mensagem seja espera que uma mensagem seja
removidaremovida Buffer: suporta apenas 2 mensagensBuffer: suporta apenas 2 mensagens Conjunto de estados <0,p2,c2>:Conjunto de estados <0,p2,c2>:
Buffer vazio, produtor no estado p2 e Buffer vazio, produtor no estado p2 e consumidor no estado c2consumidor no estado c2
Engenharia de Software 25
Produtor/ConsumidorProdutor/Consumidor
Engenharia de Software 26
Redes de Petri - ExemplosRedes de Petri - Exemplos
Engenharia de Software 27
Exemplo: Máquina de Exemplo: Máquina de VendasVendas
Esta máquina dispensa dois tipos de Esta máquina dispensa dois tipos de consumíveis – 20c e 15cconsumíveis – 20c e 15c
Apenas dois tipos de moedas podem Apenas dois tipos de moedas podem ser utilizadasser utilizadas– de 10c e 5c– de 10c e 5c
A máquina não devolve nenhum A máquina não devolve nenhum trocotroco
Engenharia de Software 28
Exemplo: Máquina de VendasExemplo: Máquina de Vendas
5c
Take 15c bar
Deposit 5c
0c
Deposit 10c
Deposit 5c
10c
Deposit 10c
Deposit5c
Deposit 10c20c
Deposit5c
15c
Take 20c bar
Engenharia de Software 29
Exemplo: Máquina de VendasExemplo: Máquina de Vendas
Cenário 1: Cenário 1: Deposita 5c, deposita 5c, deposita 5c, deposita Deposita 5c, deposita 5c, deposita 5c, deposita
5c, retira o consumível de 20c5c, retira o consumível de 20c Cenário 2:Cenário 2:
deposita 10c, deposita 5c, retira o consumível deposita 10c, deposita 5c, retira o consumível de 15cde 15c
Cenário 3:Cenário 3: deposita 5c, deposita 10c, deposita 5c, retira o deposita 5c, deposita 10c, deposita 5c, retira o
consumível de 20cconsumível de 20c
Engenharia de Software 30
Exemplo: Máquina de VendasExemplo: Máquina de Vendas
5c
Take 15c bar
Deposit 5c
0c
Deposit 10c
Deposit 5c
10c
Deposit 10c
Deposit5c
Deposit 10c20c
Deposit5c
15c
Take 20c bar
Engenharia de Software 31
Outro exemploOutro exemplo
• Um sistema produtor-consumidor Um sistema produtor-consumidor consistindo em um produtor, dois consistindo em um produtor, dois consumidores e um buffer; com as consumidores e um buffer; com as seguintes características:seguintes características:• O buffer pode conter até 5 itemsO buffer pode conter até 5 items• O produtor pode enviar 3 items em cada O produtor pode enviar 3 items em cada
produçãoprodução• Ao mesmo tempo apenas um consumidor Ao mesmo tempo apenas um consumidor
consegue aceder ao bufferconsegue aceder ao buffer• Cada consumidor remove dois items quando Cada consumidor remove dois items quando
acede ao bufferacede ao buffer
Engenharia de Software 32
Produtor/ConsumidorProdutor/Consumidor
ready
p1
t1
produce
idle
send
p2
t2
k=1
k=1
k=5
Storage p3
3 2 t3 t4
p4
p5
k=2
k=2
accept
accepted
consume
ready
Producer Consumers
Engenharia de Software 33
Máquina de VendasMáquina de Vendas
5c
Take 15c bar
Deposit 5c
0c
Deposit 10c
Deposit 5c
10c
Deposit 10c
Deposit5c
Deposit 10c20c
Deposit5c
15c
Take 20c bar
Engenharia de Software 34
Estados...Estados...
t8
t1
p1
t2
p2
t3
p3
t4
t5
t6 p5
t7
p4
t9
M0 = (1,0,0,0,0)
M1 = (0,1,0,0,0)
M2 = (0,0,1,0,0)
M3 = (0,0,0,1,0)
M4 = (0,0,0,0,1)
Initial marking:M0
Engenharia de Software 35
Estados alcançáveisEstados alcançáveist8
t1
p1
t2
p2
t3
p3
t4
t5
t6 p5
t7
p4
t9
Initial marking:M0
M0 M1 M2 M3 M0 M2 M4t3t1 t5 t8 t2 t6
M0 = (1,0,0,0,0)
M1 = (0,1,0,0,0)
M2 = (0,0,1,0,0)
M3 = (0,0,0,1,0)
M4 = (0,0,0,0,1)
Engenharia de Software 36
Estados alcançáveisEstados alcançáveis
• ““M2 é M2 é alcançável alcançável a partir de M1 e M4 a partir de M1 e M4 é é alcançávelalcançável a partir de M0” a partir de M0”
• De facto, no exemplo anterior, todas De facto, no exemplo anterior, todas as marcas são alcançáveisas marcas são alcançáveis
M0 M1 M2 M3 M0 M2 M4t3t1 t5 t8 t2 t6
Uma sequência de disparo:
Engenharia de Software 37
Produtor/ConsumidorProdutor/Consumidor
• Nesta rede de Petri, cada lugar têm Nesta rede de Petri, cada lugar têm uma capacidade e cada arco têm um uma capacidade e cada arco têm um peso.peso.
• Isto permite que múltiplos Isto permite que múltiplos tokenstokens possam residir num lugar para possam residir num lugar para modelar um comportamento modelar um comportamento complexo.complexo.
Engenharia de Software 38
Exemplo: AvaliaçãoExemplo: Avaliação
Durante o semestre, o estudante têm de Durante o semestre, o estudante têm de passar a:passar a: TutesTutes PracsPracs Assignment eAssignment e TestTest
No fim do semestre o estudante, têm de No fim do semestre o estudante, têm de passar no exame para obter aprovação na passar no exame para obter aprovação na cadeiracadeira
Engenharia de Software 39
Exemplo: AvaliaçãoExemplo: Avaliação
P
F
P
F
P
FP
F
Tutes
Ass
Pracs
Test
passed
passed
passed
passed
Partial pass
Failed
Sit exam
EnrolIn ES
wait
passFailexam
Hooray!
You have passed!!
Engenharia de Software 40
Exemplo: AvaliaçãoExemplo: Avaliação
P
F
P
F
P
FP
F
Tutes
Ass
Pracs
Test
passed
passed
passed
passed
Partial pass
Failed
Sit exam
EnrolIn ES
wait
passFailexam
Hooray!
You have failed!!
Engenharia de Software 41
Exemplo: AvaliaçãoExemplo: Avaliação
P
F
P
F
P
FP
F
Tutes
Ass
Pracs
Test
passed
passed
passed
passed
Partial pass
Failed
Sit exam
EnrolIn ES
wait
passFailexam
Hooray!
You have failed!!
Engenharia de Software 42
Exemplo: Num restauranteExemplo: Num restaurante
Cenário 1:Cenário 1: O criado recebe ordens do cliente 1; O criado recebe ordens do cliente 1;
serve o cliente 1; recebe ordens do serve o cliente 1; recebe ordens do cliente 2; serve o cliente 2cliente 2; serve o cliente 2
Cenário 2:Cenário 2: O criado recebe ordens do consumidor 1; O criado recebe ordens do consumidor 1;
recebe ordens do consumidor 2; serve o recebe ordens do consumidor 2; serve o consumidor 2; serve o consumidor 1consumidor 2; serve o consumidor 1
Engenharia de Software 43
Exemplo: Num restaurante (Cenário 1)Exemplo: Num restaurante (Cenário 1)
WaiterfreeCustomer 1 Customer 2
Takeorder
Takeorder
Ordertaken
Tellkitchen
wait wait
Serve food Serve food
eating eating
Engenharia de Software 44
Exemplo: Num restaurante (Cenário 2)Exemplo: Num restaurante (Cenário 2)
WaiterfreeCustomer 1 Customer 2
Takeorder
Takeorder
Ordertaken
Tellkitchen
wait wait
Serve food Serve food
eating eating