Software
Software
Component
Component
Engineering
Engineering
Generic
Generic
Programming
Programming
DESERT
DESERT ContainersContainers
Roberto de Oliveira Leão
Contexto
Contexto
Projeto DESERT Projeto DESERT -- Desenvolvimento de Desenvolvimento de
Ferramentas de Síntese de Sistemas sob
Ferramentas de Síntese de Sistemas sob
Restrições de Tempo Real;
Restrições de Tempo Real;
A modelagem intermediária das A modelagem intermediária das
ferramentas desenvolvidas no âmbito do
ferramentas desenvolvidas no âmbito do
projeto DESERT são
projeto DESERT são containerscontainers, ,
principalmente GRAFOS que são usados
principalmente GRAFOS que são usados
para modelar toda a estrutura de
para modelar toda a estrutura de
HARDWARE, seus estados e também o
HARDWARE, seus estados e também o
fluxo dos dados.
Justificativa
Justificativa
GenericGeneric ProgrammingProgramming possui ótimos possui ótimos
mecanismos para flexibilização da
mecanismos para flexibilização da
estrutura de
estrutura de containerscontainers, o que facilita a , o que facilita a criação de componentes reusáveis para o
criação de componentes reusáveis para o
próprio projeto, já que a modelagem
próprio projeto, já que a modelagem
básica de GRAFOS é sempre a mesma;
básica de GRAFOS é sempre a mesma;
Um dos objetivos no decorrer da Um dos objetivos no decorrer da
dissertação, é implementar um container
dissertação, é implementar um container
capaz de suportar novos algoritmos, sem
capaz de suportar novos algoritmos, sem
que o responsável pela criação do novo
que o responsável pela criação do novo
algoritmo tenha que conhecer a fundo a
algoritmo tenha que conhecer a fundo a
estrutura de
Diagrama em blocos*
Diagrama em blocos*
*Este diagrama corresponde ao diagrama da antiga ferramenta do projeto OASIS, a qual será usada como referência em grande parte para implementação das novas ferramentas. Os blocos serão idênticos.
Descrição HDL
Modelo de grafos Ferramentas Escopo deste trabalho
Tradutor HDL->Grafos
Estrutura GRAFOS*
Estrutura GRAFOS*
«abstract» AbsGraph «template» Graph «inherits» «implementation class» Edge * 1 «implementation class» Node 1 * «implementation class» SMG «implementation class» DFG «implementation class»DPG «inherits» «inherits» «inherits» «implementation class» TRA «implementation class» STA «inherits» 1 * 1 * «implementation class» DFN «implementation class» DFE «inherits» «inherits» 1 * 1 * «implementation class» WIR «implementation class» CMP «inherits» «inherits» 1 * 1 *Estrutura GRAFOS
Estrutura GRAFOS
-
-
Continuação
Continuação
O diagrama de classes pode ser entendido da O diagrama de classes pode ser entendido da
seguinte maneira:
seguinte maneira:
Especialização de
Especialização de EdgeEdge Transition
Transition TRA
TRA
Especialização de
Especialização de NodeNode State
State STA
STA
Especialização de
Especialização de GraphGraph State
State MachineMachine GraphGraph SMG
SMG
Especialização de
Especialização de EdgeEdge Wire
Wire WIR
WIR
Especialização de
Especialização de NodeNode Component
Component CMP
CMP
Especialização de
Especialização de GraphGraph Data
Data PathPath GraphGraph DPG
DPG
Especialização de
Especialização de EdgeEdge Data
Data FlowFlow EdgeEdge DFE
DFE
Especialização de
Especialização de NodeNode Data
Data FlowFlow NodeNode DFN
DFN
Especialização de
Especialização de GraphGraph Data
Data FlowFlow GraphGraph DFG
Estrutura GRAFOS
Estrutura GRAFOS
-
-
Continuação
Continuação
Como UML não possui suporte a Como UML não possui suporte a
templates
templates, uma forma de modelar classes , uma forma de modelar classes templates
templates é usando é usando <<stereotypes>>;<<stereotypes>>;
Ainda com relação a Ainda com relação a templatestemplates, a forma , a forma
encontrada para modelar classes “filhas”
encontrada para modelar classes “filhas”
que definem o
que definem o templatetemplate, foi através de , foi através de agregação.*
agregação.*
*Talvez esta não seja a melhor forma para tal modelagem, mas dessa maneira fica claro a associação entre as classes.
Estrutura GRAFOS
Estrutura GRAFOS
–
–
Associações*
Associações*
«implementation class» STA «implementation class» DFN «implementation class» CMP ASSIGNMENT * * BINDING * * «implementation class» STA «implementation class» CMP ACTIVATION * *
Neste diagrama temos as classes resultantes das “associações”
resultantes de tarefas do processo de síntese
BINDING – Classe que modela a relação de uma operação ser escalonada para executar em um X componente de Hardware ASSIGNMENT – Classe
que modela a relação de uma operação ser
escalonada para executar em um X estado.
ACTIVATION – Classe que modela a relação de, em que estados um
componente X está sendo utilizado.
Conclusões
Conclusões
ContainersContainers implementados eficientemente implementados eficientemente
e robustos para os
e robustos para os requisistosrequisistos do sistema;do sistema;
Porém falta generalização de alguns Porém falta generalização de alguns
aspectos dos
aspectos dos containerscontainers, que permitam , que permitam um reuso em futuras ferramentas, sem
um reuso em futuras ferramentas, sem
que seja necessário um conhecimento à
que seja necessário um conhecimento à
fundo dos
fundo dos containerscontainers já implementados;já implementados;
Uma vantagem desta modelagem é de ser Uma vantagem desta modelagem é de ser
bastante simples e sendo assim, facilita o
bastante simples e sendo assim, facilita o
entendimento de quem nunca trabalhou
entendimento de quem nunca trabalhou
com estes
Perspectivas
Perspectivas
Generalizar ainda mais a implementação, Generalizar ainda mais a implementação,
principalmente nos grafos especializados para as
principalmente nos grafos especializados para as
ferramentas de síntese(DFG, SMG e DPG). Uma
ferramentas de síntese(DFG, SMG e DPG). Uma
possibilidade de generalização seria utilizar
possibilidade de generalização seria utilizar
conceitos de
conceitos de FunctionFunction ObjectsObjects que permitiriam que permitiriam agregar algoritmos novos de síntese, sem a
agregar algoritmos novos de síntese, sem a
necessidade de recriar todo o container.
necessidade de recriar todo o container.
Gerar um primeiro protótipo já no TI para que Gerar um primeiro protótipo já no TI para que
na dissertação e em futuras ferramentas do
na dissertação e em futuras ferramentas do
projeto DESERT, possamos usufruir dos
projeto DESERT, possamos usufruir dos
benefícios de uma Engenharia de Software bem
benefícios de uma Engenharia de Software bem
aplicada.
Referências Bibliográficas
Referências Bibliográficas
SANTOS, L. C. V. dos: ”A Síntese de Alto Nível na SANTOS, L. C. V. dos: ”A Síntese de Alto Nível na Automação do Projeto de Sistemas Computacionais”,
Automação do Projeto de Sistemas Computacionais”,
cap. 8, livro
cap. 8, livro--texto da VIII Escola de Informática da texto da VIII Escola de Informática da SBCSBC- -Sul
Sul, p. 211, p. 211--231, maio de 2000.231, maio de 2000.
DE MICHELI , G. “DE MICHELI , G. “SynthesisSynthesis andand OptimizationOptimization of Digital of Digital Circuits
Circuits, , McGrawMcGraw--HillHill, 1994., 1994.
STROUSTRUP, B.; ELLIS, Margaret. “C++”, EUA: STROUSTRUP, B.; ELLIS, Margaret. “C++”, EUA: Campus, 1993, 546p.
Campus, 1993, 546p.
WEISS, M. A. “WEISS, M. A. “AlgorithmsAlgorithms, Data , Data StructuresStructures, , AndAnd Problem
Problem SolvingSolving WithWith CC++”, USA, 1996.++”, USA, 1996.
FRÖHLICH, A. A. M. Notas de Aula FRÖHLICH, A. A. M. Notas de Aula –– INE 65100 INE 65100 –– Software
Software ComponentsComponents EngineringEnginering –– 20032003/2 /2 -
-http://www.lisha.ufsc.br/~guto/teaching/sce/index.html
http://www.lisha.ufsc.br/~guto/teaching/sce/index.html
(consultado em Setembro/2003