Aplicação ao Estudo de Caso:
Sistema de Reserva de Hotéis
Automated
SynthesiS of
Embedded
Technology
Eduardo C. Zini
Marcelo A. Dantas
Marcelo F. Cruz
Tópicos Abordados
• Recordando a metodologia ASSET
• Descrição e especificação
• Requisitos não-funcionais
• Projeto
• Verificação e Validação do Projeto
• Notas finais e conclusões
• Bibliografia
Recordando...
O Asset é composto por 3 fases:


Especificação (Verificação)

Especificação.

Descrição das Funções.

Código Dummy.

Log e Grafo de Dependência.

Geração do ESIR.

Estimação e Particionamento

Seleção do Processador.

Estimativas de Hardware

Estimativas de Software

Particionamento

Síntese

Implementação
Estudo de Caso – Reserva em Hotel
Descrição:

Uma rede de hotéis deseja tornar seus sistemas de reserva um diferencial
para clientes VIP’s.

É negociado com a operadora e com a fábrica de celulares um sistema de
reserva de quartos usando o celular.

No celular do cliente são exibidos uma lista de quartos disponíveis e sua
cotação (de 1 a 5 estrelas).

O cliente pode selecionar um quarto e efetuar a reserva.

O celular deve se conectar a um servidor; este por sua vez deve enviar a
resposta ao cliente.
Estudo de Caso – Reserva em Hotel
Estudo de Caso – Reserva em Hotel
Especificação:

Especificação:

Caso de uso: Verificação de Disponibilidade.
Descrição: Lista todos os quartos disponíveis para o hotel selecionado.
Atores: Cliente
Pré-Condições: O cliente deve ter selecionado um hotel
Fluxo-Básico:
1
O cliente seleciona um hotel.
2
Sistema solicita a lista de quartos disponíveis.
3
Sistema recebe a lista de quartos disponíveis e a exibe.
Fluxo-Alternativo:
2.1
Sistema não consegue enviar solicitação.
2.1.1 Sistema tenta novamente após 4 segundos.
2.1.2 Sistema cancela operação após 5 tentativas.
3.1
Sistema não recebe a lista dentro de 10 segundos.
3.1.1 Sistema envia pedido novamente
3.1.2 Sistema cancela a operaçào após 5 tentativas
Estudo de Caso – Reserva em Hotel
Especificação (cont.) – Descrição Alto Nível:
1. Listagem de hotéis disponíveis para a execução do sistema.
2. O cliente seleciona um hotel cuja disponibilidade de quartos deseja verificar .
3. Tenta-se conectar ao servidor do hotel selecionado.
3.1. São realizadas no máximo cinco tentativas de acesso ao servidor do
hotel escolhido.
3.2. Cada tentativa deve possuir tempo limite de 4 segundos.
3.3. Caso não seja possível efetuar a conexão, o sistema deve retornar
para a etapa de escolha de hotéis.
4. Os dados de disponibilidade de quartos são recebidos
4.1. São realizadas no máximo 5 tentativas de obtenção de dados.
4.2. Cada tentativa deve possuir tempo limite igual a 10 segundos.
4.3. Caso não seja possível obter os dados, o sistema deve retornar
para a etapa de escolha de hotéis.
Estudo de Caso – Reserva em Hotel
Especificação (cont.) – Descrição Alto Nível:
5. Os dados recebidos (referentes ao hotel selecionado) são atualizados na
base de dados do aparelho.
6. São exibidos para o cliente os quartos disponíveis do hotel selecionado
6.1. Caso não haja nenhum quarto disponível no hotel selecionado
uma mensagem informativa é dada.
6.1.1 O sistema deve retornar para a etapa de escolha de
hotéis.
7. O cliente seleciona então um quarto disponível que deseja ver em detalhes.
8. São exibidos os detalhes do quarto selecionado pelo cliente.
8.1 Se o cliente desejar pode ou voltar para a lista de quartos do hotel
selecionado ou voltar para a seleção dos hotéis.
Estudo de Caso – Reserva em Hotel
Especificação (cont.) – Refinamento Procedural:
Criamos a descrição das funções a serem criadas:
Função
Descrição
showScreen_hoteis(hoteltype hotel)
Espera o usuário selecionar um hotel.
getHotelInDatabase(String idHotel)
Obtém os dados sobre um determinado hotel no banco de
dados do aparelho.
connect(hoteltype hotel )
Realiza a conexão com o hotel selecionado.
waitForRequestAck()
Espera a confirmação do servidor de ter recebido o pedido.
sendRequest()
Informa que deseja-se realizar uma consulta no hotel
getRooms(hoteltype hotel)
Obtém os quartos disponíveis do hotel desejado.
sendResponseAck( )
Confirma para o servidor os dados recebidos.
databaseUpdate(hoteltype hotel)
Insere os dados obtidos na base de dados do aparelho.
showScreen_quartos(hoteltype hotel)
Espera o usuário escolher um quarto disponível.
showScreen_quarto(hoteltype hotel)
Mostra na tela as informações sobre o quarto escolhido.
start_ver_disp( )
Inicia todo o fluxo de execução.
Estudo de Caso – Reserva em Hotel
Especificação (cont.):

Grafo de Dependência.
start_ver_disp
showScreen_hoteis
Connect
getHotelInDatabase
sendRequest
getRooms
waitForRequestAck
databaseUpdate
sendResponseAck
showScreen_quartos
showScreen_quarto
Estudo de Caso – Reserva em Hotel
Especificação (cont.) – Input do SUIF e criação da RI do Projeto (ESIR):
• Criação do código Dummy
• Representação ESIR
Estudo de Caso – Reserva em Hotel
Estimação e Particionamento:

Requisitos não funcionais.
 São indispensáveis nessa fase da metodologia.
 Os requisitos não funcionais são as métricas que auxiliam na
estimação e particionamento.

Exemplos:
Hardware: Plataforma, Número de Registradores, Clock do
Processador,
Mémoria
disponível,
Capacidade
de
Escalonamento, Capacidade de Armazenamento, etc.


Software: Tempo de Resposta, Carga de Usuários, etc.
Estudo de Caso – Reserva em Hotel
Estimação e Particionamento (cont.) – selecionando o processador:
• Apoiado no ESIR
• ESIR contêm informações que permitem uma estimativa do número de ciclos por
unidade de tempo para o codigo Dummy utilizado para o caso de uso.
• A partir dessa estimativa é possível que se realize a seleção do melhor
processador a ser utilizado para o conjunto de funções dado.
• Com isso temos a seguinte tabela:
Estudo de Caso – Reserva em Hotel
Função
Sparc(Clocks/
Tempo)
Mips(Clocks/
Tempo)
Celeron(Clocks/
Tempo)
showScreen_hoteis(hoteltype hotel)
560
500
500
getHotelInDatabase(String idHotel)
495
400
1250
connect(hoteltype hotel )
501
1325
499
waitForRequestAck()
457
1000
455
sendRequest()
547
550
520
getRooms(hoteltype hotel)
881
800
898
sendResponseAck( )
545
1200
555
databaseUpdate(hoteltype hotel)
744
560
1000
showScreen_quartos(hoteltype hotel)
601
533
600
showScreen_quarto(hoteltype hotel)
578
565
1225
start_ver_disp( )
5909
7433
7502
SPARC foi escolhido!!!
Estimação e Particionamento (cont.) – selecionando o processador:
Estudo de Caso – Reserva em Hotel
Estimação e Particionamento (cont.):
Submetemos nosso ESIR ao Software Estimator:
Função
Tempo de Execução para Software
showScreen_hoteis(hoteltype hotel)
545
getHotelInDatabase(String idHotel)
502
connect(hoteltype hotel )
1111
waitForRequestAck()
1230
sendRequest()
547
getRooms(hoteltype hotel)
555
sendResponseAck( )
1201
databaseUpdate(hoteltype hotel)
700
showScreen_quartos(hoteltype hotel)
500
showScreen_quarto(hoteltype hotel)
521
start_ver_disp( )
6301
Estudo de Caso – Reserva em Hotel
Estimação e Particionamento (cont.):
Submetemos nosso ESIR ao Hardware Estimator
Função
Tempo de Execução para Hardware
showScreen_hoteis(hoteltype hotel)
754
getHotelInDatabase(String idHotel)
787
connect(hoteltype hotel )
564
waitForRequestAck()
555
sendRequest()
897
getRooms(hoteltype hotel)
798
sendResponseAck( )
700
databaseUpdate(hoteltype hotel)
988
showScreen_quartos(hoteltype hotel)
987
showScreen_quarto(hoteltype hotel)
885
start_ver_disp( )
7915
Estudo de Caso – Reserva em Hotel
Estimação e Particionamento (cont.):
•
Criamos um modelo de Programação Linear que conterá as métricas para o
Particionamento.
1.
2.
Variáveis de Decisão:
1.
tsi = Tempo de execução da função i em sw
2.
thi = Tempo de execução da função i em hw
3.
T = Tempo total de execução
4.
ci = 1 se a função i é invocada por uma função de hardware e invoca
uma de software (vice-versa) ou 0 se ele é invocada e invoca funções do
mesmo tipo (em hardware e software).
5.
hi = 1 se a função i é implementada em hw, 0 caso contrário
6.
si = 1 se a função i é implementada em sw, 0 caso contrário
7.
tci = Tempo de execução da função na Interface.
Restrições:
1.
Min (T) = (h1*th1 + s1*ts1) + ... + (hn*thn + sn*tsn)
2.
hi + si + ci = 1
3.
ci = 1 se s(i-1) + s(i+1) = 1
4.
tci = min (tci,thi)
Estudo de Caso – Reserva em Hotel
Estimação e Particionamento (cont.):
• Configuramos o Partitioner com a PL modelada.
• Aplicamos a saida do Sofware Estimantor e Hardware Estimator.
Função
Decisão
showScreen_hoteis(hoteltype hotel)
Software
getHotelInDatabase(String idHotel)
Software
connect(hoteltype hotel )
Hardware
waitForRequestAck()
Hardware
sendRequest()
Interface
getRoom(hoteltype hotel)
Software
getRooms(hoteltype hotel)
Software
showScreen_quartos(hoteltype hotel)
Software
showScreen_quarto(hoteltype hotel)
Software
sendResponseAck( )
Interface
Estudo de Caso – Reserva em Hotel
Estimação e Particionamento (cont.):
Temos dessa maneira como será realizada a divisão das partes do projeto e podemos
partir para a fase de síntese em si.

showScreen_hoteis
sendRequest
Connect
getHotelInDatabase
sendResponseAck
waitForRequestAck
getRoom
getRooms
showScreen_quartos
showScreen_quarto
Estudo de Caso – Reserva em Hotel
Verificação e Validação do Projeto:

A Validação do Sistema é feita por co-simulação:
 VHDL
 Liguagem que simula dispositivos de Hardware.
 SystemC
 Conjunto de Classes C++ que auxiliam no desenvolvimento de
simuladores de hardware.
 ArchC
 É uma linguagem open source usada descrição de arquiteturas.
 É baseada em SystemC.
 Simula as hierarquias de memória, pipeline, tamanho dos
registradores e outras caracteristicas mais específicas.
 Muito útil no desenvolvimento de processadores.
Essas ferramentas são usadas para validar o comportamento da aplicação
no processador selecionado e medir a performance.


Auxiliam também na decisão do processador a ser utilizado.
Estudo de Caso – Reserva em Hotel
Conclusões e Notas Finais:
A metodologia aplica-se melhor em projetos de dispositivos altamente embarcados e com
especificidade alta, tais como os de tecnologia aeroespacial.
A necessidade de velocidade e as altas restrições de requisitos não-funcionais são
prioridades e portanto exigem um método de desenvolvimento rápido e simples.
Pontos Positivos:
Sendo a metodologia totalmente baseada em ferramentas, encontramos:
•
Facilidade de definição da arquitetura utilizada
•
Forte automação do processo de desenvolvimento
•
Rapidez nas tomadas de decisões durante o ciclo de design
•
Verificação do sistema é possível em todas as etapas de desenvolvimento
Pontos Negativos:
•
Especificação do projeto deixa a desejar em alguns aspectos.
•
Não possui uma fácil manutenção do sistema (fluxo de desenvolvimento unidirecional).
•
Não foi possível utilizar as ferramentas (proprietárias) de estimativas, de difícil acesso.
Bibliografia

http://www.cse.iitd.ernet.in/esproject : Architectures and CAD for Embedded Systems.
Acessado em 01/12/04.

Vinod Gupta, Purvesh Sharma, M. Balakrishnan, and Sharad Malik. Processor Evaluation in an
Embedded Systems Design Environment. In Proc. of the Intl. Conf. on VLSI Design, Calcutta,
India, Jan. 2000. Trechos cedidos.

Vivek Haldar, Gokul Varadhan, Abhishek Saxena, M. Balakrishnan, and Subhashis Banerjee.
Design of Embedded Systems for Real-Time Vision. In Proc. ICVGIP, 2000. Trechos cedidos.

Aviral Shrivastava, Mohit Kumar, Sanjiv Kapoor, Shashi Kumar, and M. Balakrishnan. Optimal
Hardware/Software Partitioning for Concurrent Specication using Dynamic Programming.
In Proc. Intl. Conf. on VLSI Design, IEEE CS Press, Calcutta, India, pages 110.113, 2000.
Trechos cedidos.

http://suif.stanford.edu/ : The Stanford SUIF Compiler Group. Acessado em 02/12/04.

http://www.archc.org :The ArchC Project Home Page. Acessado em 03/12/04.

http://www.systemc.org :The SystemC Project Home Page. Acessado em 03/12/04.

http://www.ginvhdl.com.br : VHDL Reference. Acessado em 03/12/04.
Download

Estudo de Caso – Reserva em Hotel