Está en la página 1de 7

IEEE LATIN AMERICA TRANSACTIONS, VOL. 4, NO.

2, APRIL 2006 93

Generacin Automtica de Aplicaciones


Mixtas Sw/Hw mediante la Integracin de
Componentes COTS
Cristina Vicente, Ana Toledo, Carlos Fernndez, Pedro Snchez

I. INTRODUCCIN
Resumen-- Los grandes avances realizados en el mundo de la
electrnica han dado lugar a la proliferacin de sistemas mix-

A
tos que combinan la flexibilidad de las rutinas Software (Sw) ctualmente, son muchos los dispositivos Hw que re-
con la velocidad del procesamiento Hardware (Hw). En este ar- quieren de una lgica cada vez ms compleja y so-
tculo se presenta un nuevo enfoque para el desarrollo de este fisticada. As, hoy en da encontramos en el
tipo de sistemas mixtos Sw/Hw, que cubre todas las fases de su mercado desde telfonos mviles capaces de transmitir
ciclo de vida. La propuesta que aqu se recoge integra dos de vdeo en tiempo real, hasta frigorficos inteligentes ca-
los paradigmas de desarrollo de software ms en boga actual- paces de realizar la compra de productos alimentarios a
mente: el desarrollo de software basado en componentes y la
travs de Internet. La programacin de estos dispositivos
generacin automtica de software (meta-programacin). Si
bien este trabajo se centra en el desarrollo de aplicaciones mix-
suele realizarse utilizando lenguajes propietarios de muy ba-
tas Sw/Hw en el dominio de los Sistemas de Procesamiento de jo nivel, optimizados para obtener el mximo rendimiento
Informacin Visual (VIPS), los resultados obtenidos son fcil- de la plataforma Hw especfica empleada en cada producto
mente trasladables a otros dominios como los de las aplicacio- (microprocesadores, memorias, buses, Digital Signal Pro-
nes de control o de telecomunicacin. Como parte de este tra- cessors DSP, Field Programmable Gate Array FPGA, etc).
bajo se ha desarrollado la herramienta visual IP-CoDER que Los grandes avances realizados en el campo de la elec-
permite la construccin incremental de VIPS desde el diseo de trnica nos permiten contar en la actualidad con Hw cada
prototipos funcionales y su particionado en mdulos Sw/Hw, vez ms flexible, potente, pequeo y econmico. Sin embar-
hasta la generacin automtica del cdigo final de la aplicacin.
go, algunos sistemas requieren del uso de algoritmos com-
plejos que deben procesar ingentes cantidades de informa-
Palabras clave-- Generacin Automtica de Software, Desa-
cin, a veces bajo estrictos requisitos de tiempo real. En este
rrollo de Software Basado en Componentes, Componentes
COTS: Commercial Off-The-Shelf, Sistemas Mixtos Sw/Hw, caso, la implementacin exclusivamente Hw de este tipo de
Sistemas de Procesamiento de Informacin Visual (VIPS). sistemas puede resultar desaconsejable, cuando no inviable,
por varios motivos. En primer lugar, si bien en trminos ge-
nerales el procesamiento Hw es mucho ms rpido que el
equivalente Sw, no es sencillo codificar, menos an de ma-
Este trabajo ha sido parcialmente financiado por el Proyecto Europeo EFT- nera optimizada, ciertos algoritmos complejos haciendo uso
COR (DPI2002-11583-E), y por los proyectos CICYT COSIVA (TIC 2000- de lenguajes de tan bajo nivel como los requeridos por este
1765-C03-02) y ANCLA (TIC 2003-07804-C05-02). tipo de dispositivos. Es ms, codificar y optimizar estos al-
goritmos puede requerir tanto tiempo que, al ritmo que evo-
Los autores son miembros del Grupo de Investigacin DSIE de la Universi-
dad Politcnica de Cartagena, Campus Muralla del Mar, Edificio Antigo-
luciona la electrnica, muy probablemente aparecern en el
nes, Cartagena, Espaa. Telfono: +34968326448. Email: Cristi- mercado dispositivos mucho ms potentes sobre los que di-
na.Vicente@upct.es. chas optimizaciones tendran un impacto prcticamente des-
preciable. Adems, a pesar del abaratamiento de estos dispo-
sitivos, la complejidad de ciertos sistemas requiere del uso
94 IEEE LATIN AMERICA TRANSACTIONS, VOL. 4, NO. 2, APRIL 2006

de ciertas tecnologas demasiado costosas an como para re-  Plataformas Sw de propsito general como los proce-
sultar viables. sadores de Intel, o de propsito especfico como al-
Por todo ello, en ocasiones resulta imprescindible abor- gunos DSP.
dar la construccin de este tipo de sistemas a partir de un di-  Plataformas Hw de propsito general como las
seo mixto Sw/Hw. De este modo, parte del procesamiento, FPGA, o costosas plataformas de propsito especfi-
generalmente el ms complejo, se codificar haciendo uso co basadas en DSPs (p.e. los sistemas de Matrox
de lenguajes de programacin de alto nivel y se ejecutar [7]).
sobre un procesador convencional (microprocesador). Si-
multneamente, ciertos clculos sencillos y que deban reali- x Herramientas de programacin, ya sean generales (por
zarse de manera muy veloz, se ejecutarn en paralelo sobre ejemplo, cualquiera de los entornos de desarrollo C/C++)
un dispositivo Hw de propsito especfico (por ejemplo, un o especficas para el desarrollo de VIPS [9].
sensor inteligente) o ms general (por ejemplo, una FPGA). x Herramientas de (co-) simulacin [10-11].
En particular, entre los sistemas de este tipo, nuestro Sin embargo, ninguno de estos productos cubre por s s-
grupo de investigacin cuenta con una amplia experiencia en lo todas las fases del desarrollo de los VIPS. As, a fecha de
el desarrollo de Sistemas de Procesamiento de Informacin hoy, este tipo de sistemas se siguen codificando de manera
Visual (VIPS) [1-2]. En este artculo se analizar cmo el casi artesanal, siguiendo una metodologa muy centrada en
uso de tcnicas de generacin automtica de cdigo [3] y de el Hw, tal y como se describe a continuacin.
desarrollo de Sw basado en componentes [4], en particular
de tipo COTS [5], puede ayudar a disear e implementar es- A. Construccin tradicional de los vips
te tipo de sistemas de manera rpida, sencilla e intuitiva. A
pesar de que este trabajo se centra en el dominio especfico Tradicionalmente, los VIPS se construyen en torno a un de-
de los VIPS, la metodologa que aqu se presenta es de apli- terminado Hw, a pesar de tratarse de sistemas intensivamen-
cacin para una amplia variedad de sistemas mixtos Sw/Hw, te Sw. De hecho, la prctica habitual consiste en seleccionar,
como los sistemas de control en tiempo real, los sistemas de en primera instancia, la plataforma Hw sobre la que se im-
telecomunicacin, o las redes de sensores, entre otros. plementar el VIPS, atendiendo a ciertos requisitos no fun-
El resto del artculo se estructura como sigue. En el si- cionales como el coste mximo del sistema final o la veloci-
guiente apartado se describe la metodologa tradicionalmen- dad mnima a la que deben procesarse las imgenes (ver Fig.
te empleada para el desarrollo de los VIPS y los inconve- 1), para posteriormente, desarrollar la lgica Sw atendiendo
nientes que de ella se derivan. En el apartado 3 se propone a la funcionalidad exigida al sistema.
un nuevo enfoque metodolgico que permite realizar dise- La primera consecuencia negativa derivada del hecho de
os menos dependientes del Hw y por lo tanto ms flexibles anteponer la seleccin del Hw a la implementacin del Sw,
y fciles de reutilizar. Para dar soporte a esta nueva metodo- suele ser la adquisicin de plataformas sobredimensionadas,
loga se ha creado la herramienta visual IP-CoDER, que se tanto en coste como en capacidad de procesamiento, hacien-
presenta en el apartado 4. Esta herramienta permite disear e do vlido el dicho ms vale que sobre. Adems, la elec-
implementar nuevos VIPS de manera semiautomtica, cin y adquisicin de una plataforma Hw como primer paso
haciendo uso de una librera de componentes Sw y Hw para en la construccin de un VIPS, suele imponer el uso de de-
procesamiento de imgenes, construida a partir de diversos terminados controladores (drivers) y libreras de procesa-
componentes COTS. Finalmente, en el apartado 5 se reco- miento de imgenes optimizadas para dicha plataforma (ver
gen algunas conclusiones y lneas de trabajo futuras. Fig. 1). Sin embargo, quiz la limitacin ms importante re-
sultado de la subordinacin del Sw al Hw, sea la dificultad
de conseguir diseos flexibles y reutilizables. Como conse-
II. SISTEMAS DE PROCESAMIENTO DE INFORMA- cuencia, cada nuevo VIPS se construye prcticamente desde
CIN VISUAL (VIPS) cero, aunque su lgica sea casi idntica a la de otros siste-
mas desarrollados previamente, pero implementados sobre
En la actualidad, el abanico de aplicaciones que hacen uso otras plataformas. Una de las razones que podran justificar
de informacin de tipo visual es amplsimo: sistemas de ins- la concepcin Hw de los VIPS, es que este tipo de aplica-
peccin visual automatizada de productos industriales, apli- ciones suelen implementarlas ingenieros en automatizacin
caciones de videoconferencia, sistemas de seguridad biom- y control con experiencia como programadores, pero con es-
tricos basados en la identificacin del rostro o de las huellas casa formacin en Ingeniera del Software. As, en la mayo-
digitales, sistemas de diagnstico mdico, aplicaciones de ra de los casos, las fases de anlisis y diseo o bien se ob-
compresin de vdeo, etc. vian, o bien se realizan de forma poco sistemtica sin seguir
El procesamiento de imgenes es una tarea computacio- una metodologa formal de desarrollo de Sw.
nalmente muy costosa dado el ingente volumen de informa- En cuanto a la fase de implementacin, sta suele reali-
cin contenido en cada imagen y la complejidad de algunos zarse en dos etapas. La primera de ellas consiste en desarro-
de los algoritmos necesarios para extraer la informacin re- llar un prototipo Sw sobre el que testar distintos algoritmos
levante en cada caso. Por ello, la implementacin de VIPS de procesamiento de imgenes, seleccionados generalmente
suele requerir del uso tanto de lenguajes de programacin de manera emprica (prueba y error), hasta dar con la com-
eficientes como de procesadores potentes. En la actualidad, binacin que permita cumplir los requisitos funcionales. Es-
el mercado ofrece diversos productos, tanto Sw como Hw, te prototipo suele programarse haciendo uso de herramientas
tiles para el desarrollo de VIPS: de muy alto nivel (p.e. Matlab) que facilitan el desarrollo r-
pido de aplicaciones pero que no son especialmente eficien-
x Libreras de procesamiento de imgenes [6-8] optimiza-
tes. En la mayora de los casos, una vez validado este proto-
das para distintas plataformas:
tipo inicial se desecha, siendo necesario re-implementar ca-
da algoritmo seleccionado, bien en su versin Sw (haciendo
VICENTE-CHICOTE et al.: AUTOMATIC GENERATION 95

uso de libreras Sw optimizadas), bien en su versin Hw A. Prototipado funcional y simulacin


(utilizando un lenguaje de descripcin de Hw, p.e. VHDL1).
La construccin y evaluacin de prototipos es una forma r-
Anlisis de
Requisitos pida y econmica de validar los requisitos de un sistema
[12]. En concreto, durante esta primera fase se persigue va-
lidar los requisitos funciones del VIPS, creando un prototipo
Requisitos Funcionales Requisitos No Funcionales ejecutable que permita seleccionar los algoritmos de proce-
samiento de imgenes ms adecuados en cuanto a su fiabili-
guan
dad y robustez.
Seleccin y Adquisicin El prototipado funcional que se propone, a diferencia del
guan de la Plataforma HW realizado siguiendo el enfoque tradicional, es evolutivo y to-
(cmara, digitalizador,
procesador HW especfico) talmente independiente de la plataforma sobre la que final-
Seleccin algoritmos
(prueba y error) determina
mente se implementen los algoritmos seleccionados.
As, dado que no hay restricciones relativas al Hw em-
Prototipo Sw Herramientas de
Desechable desarrollo de SW
pleado, este primer prototipo podr implementarse haciendo
(libreras de visin optimizadas uso de cualquiera de las libreras de procesamiento de im-
para la plataforma HW) genes disponibles en el mercado [6-8], incluso de aquellas
Mdulos Hw Mdulos Sw optimizadas para una determinada plataforma, sea o no la
utilizadas para codificar utilizada finalmente. Dado que la eficiencia no es un factor
Sistema Final
determinante en este punto, podr emplearse cualquier len-
guaje de programacin (C/C++, Matlab, Java, etc), siendo
preferible uno de alto nivel que permita construir el prototi-
Figura 1. Esquema de las fases de desarrollo de un VIPS si- po lo ms rpidamente posible y modificarlo de manera sen-
guiendo el enfoque tradicional. cilla, si fuera necesario.
III. UNA NUEVA METODOLOGA DE DESARROLLO B. Particionado Sw/Hw y Co-simulacin
Con el fin de solucionar los problemas derivados de la con- Esta fase consiste en realizar una particin Sw/Hw de los al-
cepcin Hw de los VIPS, se propone una nueva metodologa goritmos seleccionados durante el prototipado funcional,
que parte de los requisitos funcionales del sistema y permite identificando cules de ellos se van a implementar como
retrasar la seleccin y adquisicin de un determinado Hw funciones Sw y cules como bloques Hw. El resultado de es-
hasta la fase final de implementacin. La propuesta metodo- ta particin ser un prototipo mixto Sw/Hw (co-prototipo)
lgica que aqu se presenta persigue el desarrollo de siste- que se validar haciendo uso de tcnicas de co-simulacin.
mas ms flexibles, cuyos diseos sean reutilizables y fcil- A priori cualquier particin es viable, si bien debe procu-
mente adaptables a distintas plataformas. Esta flexibilidad rarse reducir al mximo el intercambio de informacin entre
slo es posible si se afronta la construccin de estos sistemas elementos Sw y Hw para evitar retardos innecesarios y pro-
mixtos poniendo el nfasis en su componente Sw. blemas de sincronizacin. Por lo general, resulta ms til
Como se describe a continuacin, la construccin de realizar primero todo el procesamiento Hw (algoritmos sen-
VIPS suele requerir explorar una gran cantidad de configu- cillos de bajo nivel que acondicionen la imagen justo des-
raciones: distintas combinaciones de algoritmos de proce- pus de su adquisicin), para posteriormente realizar el pro-
samiento de imgenes, diferentes particiones Sw/Hw de la cesamiento Sw (algoritmos de procesamiento de alto nivel
funcionalidad y diversas plataformas sobre las que realizar por lo general ms complejos); de este modo, slo ser ne-
la co-simulacin e implementacin final del sistema. As, cesario realizar un nico intercambio de datos Hw-Sw.
muy probablemente, durante el desarrollo de estos sistemas Una vez decidida esta particin es necesario seleccionar
deberemos volver atrs en el diseo para reconsiderar alguna una plataforma que proporcione los bloques Hw necesarios,
de las decisiones adoptadas. Por ello, la metodologa que o al menos la funcionalidad para poder construirlos. Ntese
proponemos no consiste en una secuencia lineal de tareas si- que esta eleccin de una plataforma no implica necesaria-
no en un proceso en espiral que permite refinar el sistema de mente su adquisicin ya que, en muchos casos, los fabrican-
manera iterativa e incremental hasta llegar a la versin final. tes de estos dispositivos proporcionan modelos Sw lgica-
A pesar de que esta propuesta parte de algunos conceptos mente equivalentes sobre los que es posible simular el com-
relativamente abstractos, propios de una metodologa de de- portamiento del Hw de manera virtual. Este es el caso, por
sarrollo de Sw, fundamentalmente se pretende ofrecer una ejemplo, de la herramienta System Generator [13] que ofre-
solucin pragmtica que d soporte a todo el ciclo de vida ce modelos Sw Simulink [10] de las FPGA de Xillinx.
de este tipo de productos, cubriendo las lagunas que tradi- En cuanto al particionado, existen varias herramientas
cionalmente aparecen entre el diseo (abstracto) y la imple- que permiten realizar este proceso de manera (semi-) auto-
mentacin (concreta). mtica [14]. Sin embargo, stas suelen requerir especificar el
A continuacin se describe esta nueva metodologa indi- prototipo inicial haciendo uso de la misma herramienta. Ob-
cando, para cada una de las etapas identificadas (ver Fig. 2), viamente esto contraviene la filosofa de nuestra propuesta
qu tipo de herramientas pueden resultar tiles y si stas con la que se intenta promover la construccin de diseos
existen o no actualmente en el mercado. independientes tanto de las herramientas de desarrollo como
del Hw especfico.
El mercado tambin ofrece varias herramientas de co-
simulacin con las que validar la viabilidad del co-prototipo
1
VHDL: siglas de VHSIC-HDL (Very high speed integrated circuit (correcta sincronizacin Hw/Sw, tiempos de ejecucin, ocu-
Hardware Description Language).
96 IEEE LATIN AMERICA TRANSACTIONS, VOL. 4, NO. 2, APRIL 2006

pacin de la memoria y el procesador, etc). Algunas, como Dada la enorme cantidad y variedad de estos productos
la ya mencionada Simulink [10], permiten realizar la co- cabe preguntarse por qu ninguno de ellos cubre todas las
simulacin de manera tanto virtual (simulacin Sw de la pla- fases implicadas en el proceso de construccin de los VIPS.
taforma Hw) como real (los bloques Hw se ejecutan de ma- Muy probablemente la respuesta a esta pregunta se halle en
nera efectiva sobre la plataforma seleccionada y los resulta- la ausencia de estndares que faciliten la integracin de los
dos se envan a Simulink en tiempo real). distintos productos. De hecho, estas herramientas estn im-
plementadas utilizando distintos lenguajes y paradigmas de
C. Implementacin del cdigo final programacin y suelen definir sus propios tipos de datos y
convenciones de paso de parmetros para sus funciones, esto
Una vez validado el co-prototipo slo resta generar el cdi- sin mencionar la concepcin radicalmente distinta de los
go final de la aplicacin y volcar cada parte sobre la plata- productos orientados al Sw (procesamiento secuencial del
forma Sw o Hw correspondiente. Por suerte, la mayora de cdigo) frente a los ms orientados al Hw (procesamiento
las herramientas de co-simulacin permiten realizar este pa- paralelo de los datos).
so de manera (semi-) automtica. As, como afirma Perrier en su artculo [15], es necesario
desarrollar una nueva generacin de aplicaciones que, de
IV. LA HERRAMIENTA IP-CODER una parte, resuelva los vacos existentes entre las herramien-
tas actuales, y de otra, permita la integracin de Sw y Hw de
Entre las herramientas de procesamiento de imgenes ac- una forma ms natural. En esta lnea, e intentando evitar re-
tualmente disponibles en el mercado podemos encontrar li- inventar la rueda cuando sea posible, IP-CoDER se cons-
breras de funciones Sw [6-8] y Hw [13] as como entornos truye ms como un entorno integrador de distintas herra-
completos de programacin [9-10]; productos COTS [7-8] mientas que como un nuevo producto para el desarrollo de
(comerciales, estndar y cerrados) y libreras de cdigo VIPS. A continuacin se describe cmo, gracias al uso de
abierto y libre distribucin [6]; soluciones optimizadas para tcnicas de generacin automtica de Sw y a la definicin de
un determinado procesador de propsito general (p.e. un lenguaje de programacin visual sencillo e intuitivo de
OpenCv [6] optimizada para las MMX de Intel) y otras di- manejar, IP-CoDER permite integrar una amplia variedad de
seadas para una determinada plataforma Hw (p.e. los IP- herramientas de manera transparente para el usuario.
cores de Xillinx [13] optimizados para sus FPGAs).
Libreras de Visin Sw/Hw
(Componentes COTS)

Anlisis de
Requisitos

Requisitos Funcionales Requisitos No Funcionales


0
Construccin refinado
automtica de 1 guan mediante
adaptadores simulacin
Librera de
componentes 2
homogneos Utiliza Prototipo Funcional
Comp Ejecutable
Sw

guan

Utiliza particin manual


Comp 3
Sw/Hw condicionan
Mdulos Sw Mdulos Hw

4 Generacin automtica
IP-CoDER del co-prototipo Simulink

Convencin Grfica
Simulink Seleccin de una
5 Plataforma HW

Producto COTS
Generacin Refinado mediante
automtica del co-simulacin: test
cdigo final
6
Proceso virual de la plataforma
automatizado Sw/Hw
Adquisicin de la
Sistema Final plataforma Hw

Figura 2. Esquema del ciclo de vida de desarrollo de VIPS haciendo uso de la herramienta IP-
CoDER.
A. Biblioteca de componentes homogneos sw/hw para 2 - Etapa 0). Estos componentes exhiben interfaces compa-
procesamiento de imgenes tibles de modo que el usuario puede conectarlos entre s,
reemplazar unos por otros, o agruparlos para construir
En este apartado se describe cmo se han confeccionado componentes de ms alto nivel, sin tener que preocuparse
sendas libreras de componentes homogneos Sw y Hw de la compatibilidad entre las funciones contenidas inter-
que encapsulan funciones procedentes de varias de las li- namente en dichos componentes. El procedimiento de
breras de procesamiento de imgenes existentes (ver Fig. creacin de nuevos componentes se ha diseado de modo
VICENTE-CHICOTE et al.: AUTOMATIC GENERATION 97

que es posible incorporar las funciones de tantas libreras rar automticamente el cdigo asociado al nuevo compo-
como se desee, incluso de aquellas que pudieran aparecer nente (Fig. 3.a y 3.b), realizando las transformaciones de
en el futuro. De este modo se facilita el mantenimiento y la tipos necesarias tanto de los parmetros de entrada como
extensibilidad tanto de las libreras de componentes como de los de salida, e invocando a la funcin original en el for-
de las aplicaciones que hacen uso de ellas. mato adecuado. Ntese que en el caso de los componentes
Tanto los componentes Sw como los Hw hacen uso compuestos no es necesario realizar ninguna transforma-
adaptadores o wrappers para conseguir homogeneizar tanto cin de tipos (Fig. 3b) puesto que los componentes internos
sus interfaces como los tipos de datos que intercambian ya son homogneos.
con otros componentes [16]. En ambos casos, se han mo- En el caso de los componentes Hw, si bien la herra-
delado tanto componentes simples (contienen funciones de mienta utilizada para construir los wrappers es Simulink,
librera) como componentes compuestos (contienen dos o el procedimiento es idntico (relleno de una plantilla gen-
ms componentes previamente definidos ya sean simples o rica). La eleccin de Simulink en lugar de IP-CoDER pa-
compuestos). ra esta tarea responde fundamentalmente a dos razones. En
Los adaptadores de los componentes Sw se generan uti- primer lugar, como ya hemos comentado, varias de las li-
lizando la herramienta IP-CoDER. Para ello el usuario de- breras Hw existentes proporcionan modelos Sw Simulink
ber rellenar una plantilla especificando, entre otras cosas, equivalentes [13], por lo que en estos casos no har falta
los conectores del componente (interfaz externa), los pa- realizar adaptaciones adicionales. Adems, los componen-
rmetros de la funcin que desea encapsular (interfaz in- tes Hw intervienen fundamentalmente durante la co-
terna), la correspondencia entre ambas interfaces, y en el simulacin, y esta se realiza utilizando Simulink, tal y
caso de componentes simples, la librera de la que procede como se explica en el apartado 4.3.
la funcin interna. A partir de estos datos IP-CoDER gene-
gPixToPlane char* gGetPlane0 gImage
fileName out0
gImage
cvCvtPixToPlane ( char*
gImage gLoadImage gImage gPixToPlane
gImage IplImage src0,
out0 int
in0 IplImage *dst0,
IplImage *dst1, gImage
1
IplImage *dst2); out1
gImage
out2
void gGetPlane0(char* fileName, gImage* out0)
void gPixToPlane ( gImage* in0, gImage* out0, {
gImage* out1, gImage* out2 ) gImage* out1,out2;
{ gImage* in0 = gLoadImage(fileName,1);
// Input Type conversion gPixToPlane(in0, out0, out1, out2);
IplImage *src0=in0->gImage2IplImage(); }
// Output declaration
IplImage *dst0, *dst1, *dst2; (b)
// Function Call
cvCvtPixToPlane(src0,dst0,dst1,dst2); gCConvertPlane0
char*
// Output Type Conversion filename gImage
*out0= *gImage::IplImage2gImage (dst0); gMimConvert out0
*out1= *gImage::IplImage2gImage (dst1);
*out2= *gImage::IplImage2gImage (dst2);
1 M_RGB_TO_HLS
}

(a) (c)

Figura 3. Componentes Sw para procesamiento de imgenes. (a) Componente simple generado


automticamente a partir de una funcin OpenCV [3], (b) y (c) Componentes compues-
tos a partir de los definidos previamente.
B. Prototipado funcional con ip-coder cional sin escribir ni una sola lnea de cdigo y en el que
podemos hacer uso de varias libreras simultneamente
IP-CoDER cubre la fase de prototipado funcional definida gracias a la capacidad integradora de IP-CoDER.
en la metodologa (ver Fig. 2 - Etapa 1) durante la que se
seleccionan los algoritmos de procesamiento de imgenes
adecuados para cada VIPS. Dado que IP-CoDER se conci-
bi como una herramienta de programacin visual, se ha C. Generacin del co-prototipo Simulink
dotado a los componentes Sw de la biblioteca de una inter-
faz grfica de modo que el usuario puede seleccionarlos, Una vez validado el prototipo funcional, el usuario podr
arrastrarlos, conectarlos entre s y agruparlos con un simple realizar una particin manual Sw/Hw del mismo (Fig. 2 -
clic del ratn. Cuando el prototipo est listo (ver Fig. 4.a) Etapa 3) previa eleccin de una plataforma Hw. IP-CoDER
IP-CoDER genera automticamente el cdigo ejecutable le ofrecer los componentes Hw disponibles en la bi-
equivalente, enlazando el cdigo de sus componentes aten- blioteca para la
diendo a cmo stos estn conectados. Este cdigo permite plataforma seleccionada, de modo que pueda elegir cules
simular el funcionamiento del VIPS utilizando distintas utilizar en la co-simulacin. Una vez particionado el proto-
imgenes de entrada. Si el resultado no es el esperado el tipo, IP-CoDER generar automticamente el co-prototipo
usuario podr aadir, eliminar, o cambiar los componentes Simulink correspondiente (Fig. 2 - Etapa 4), creando los
hasta encontrar una configuracin ms adecuada. adaptadores Simulink correspondientes para los bloques
As, hemos pasado del enfoque tradicional en el que es- Sw (S-function) e invocando a los bloques Hw selecciona-
te prototipo se codificaba manualmente haciendo uso de dos en la librera.
una nica librera (la optimizada para la plataforma pre-
viamente seleccionada), a poder construir un prototipo fun- D. Generacin del cdigo final del sistema
98 IEEE LATIN AMERICA TRANSACTIONS, VOL. 4, NO. 2, APRIL 2006

Una vez validado el co-prototipo, el cdigo final Sw y Hw cambios introducidos durante el prototipado funcional, su
se genera automticamente por separado. As, mientras implementacin llev tan slo unos minutos. Por otra par-
Simulink genera el cdigo VHDL correspondiente a los te, y a pesar de lo pequeo de las imgenes empleadas, la
bloques Hw, IP-CoDER genera el cdigo correspondiente co-simulacin tard en ejecutarse aproximadamente 15
a la particin Sw del prototipo inicial (Fig. 2 - Etapa 6). minutos. De haberse empleado imgenes ms grandes este
tiempo podra ascender a horas. Esto nos lleva a la conclu-
E. Ejemplo de uso sin de que, como caba esperar, los cambios introducidos
durante el prototipado funcional tienen un impacto mucho
Para validar la utilidad y el correcto funcionamiento de IP- menor en el tiempo de desarrollo de las aplicaciones que
CoDER se ha desarrollado un VIPS para la deteccin de los realizados durante el co-prototipado.
zonas de piel en imgenes color cuyos resultados se mues-
tran en la Fig. 4. Es necesario resear que a pesar de los

(a) (b)
Figura 4. (a) Prototipo funcional IP-CoDER en el que se ha realizado una particin Hw (azul) /
Sw (naranja), (b) Co-Prototipo Simulink obtenido a partir de (a); encima se muestran
las imgenes resultado de la co-simulacin.
partir de la Descripcin de un Patrn Arquitectural
IV. CONCLUSIONES Y TRABAJOS FUTUROS Genrico, NOVATICA, no. 171, pp. 63-65, 2004.
[2] C. Vicente, A. Toledo, C. Fernndez, Heterogeneous
Este trabajo presenta una nueva metodologa de desarrollo COTS product integration to allow the comprehen-
de sistemas mixtos Sw/Hw que pretende la obtencin de sive development of image processing systems, 4th
diseos flexibles, reutilizables y fcilmente adaptables a Intl Conf. on COTS-Based Software Systems, LNCS
distintas plataformas. La metodologa propuesta aborda to- Vol. 3412, pp. 8, Bilbao, 2005.
das las fases del ciclo de vida de estos sistemas siguiendo
un proceso en espiral. Si bien esta propuesta se centra en el [3] K. Czarnecki and U. Eisenecker, Generative pro-
dominio de los VIPS, los resultados obtenidos son fcil- gramming: methods, tools, and applications, Addi-
mente trasladables a otros sistemas como los de control o son-Wesley, 2000.
los de telecomunicacin. [4] F. Bachmann et al.; Technical concepts of compo-
Para dar soporte a la metodologa propuesta se ha des- nent-based software engineering, Tech. report
arrollado la herramienta visual IP-CoDER que permite in- CMU/SEI-2000-TR-0008, Software Engineering In-
tegrar distintas libreras, en su mayora COTS, de modo stitute (SEI), Carnegie Mellon Univ., 2000.
que puedan utilizarse conjuntamente. Esta herramienta [5] C. Albert, L. Brownsword, Evolutionary process for
permite adems la generacin automtica de prototipos integrating COTS-based systems (EPIC): An Over-
funcionales ejecutables y de co-prototipos Hw/Sw de view, Tech. report CMU/SEI-2002-TR-009, Soft-
VIPS. ware Engineering Institute (SEI), Carnegie Mellon
En el futuro, sera interesante conseguir un mayor gra- Univ., 2002.
do de automatizacin del proceso de particionado Sw/Hw,
as como contar con un sistema de ayuda a la decisin que [6] Intel Open Source Computer Vision Library, infor-
gue al usuario en la seleccin de los algoritmos de proce- macin disponible en:
samiento de imgenes ms adecuados en cada caso. www.intel.com/research/mrl/research/opencv
[7] Matrox Imaging Library (MIL) v.7.5, informacin del
producto disponible en:
V. AGRADECIMIENTOS www.matrox.com/imaging/products/mil
[8] Matlab Image Processing Toolbox v.5, informacin
Queremos agradecer a A. J. Martnez Lamberto y a J. A. del producto disponible en:
Martnez Navarro su colaboracin en el desarrollo de IP- www.mathworks.com/products/image/
CoDER.
[9] VisiQuest, informacin disponible en:
VI. REFERENCIAS http://www.accusoft.com/imaging/visiquest
[10] Simulink v.6, informacin disponible en:
[1] C. Vicente, C. Fernndez, P. Snchez, Desarrollo www.mathworks.com/products/simulink/
de Sistemas de Inspeccin Visual Automatizada a
VICENTE-CHICOTE et al.: AUTOMATIC GENERATION 99

[11] SIMNON for Windows. informacin disponible en:


www.mpassociates.gr/software/ cata-
log/sci/simnon/simnon.html Carlos Fernndez-Andrs is an
[12] I. Sommerville, Software Engineering 6 th
Edition, Associate Professor of Computer
Chap. 8, Addison-Wesley, 2000. Science at the Tech. Univ. of
Cartagena (Spain). His research
[13] Xillinx System Generator, informacin del producto interests include conceptual image
disponible en: www.xilinx.com processing applications, software and
[14] GEDAE, informacin del producto disponible en: hardware architectures, and soft-
www.gedae.com ware/hardware co-design. He received
[15] V. Perrier, A look inside Electronic System Level
a PhD in Industrial Engineering from
(ESL) design, EEDesign.com, Art. Id. 18402916, the Tech. Univ. of Madrid (Spain). He is a member of the
2004. Systems and Electronic Engineering Division (SEED) re-
search group of the Tech. Univ. of Cartagena (Spain). Con-
[16] J.M. Troya, and A. Vallecillo, Controllers: reusable tact him at Carlos.Fernandez@upct.es.
wrappers to adapt software components, Informa-
tion & Software Technology, Vol. 43, No. 3, pp. 189-
202, 2001. Pedro Snchez-Palma is an Associ-
ate Professor at the Tech. Univ. of
Cartagena (Spain). His research
interests include conceptual
VII. BIOGRAPHIES modelling, software architectures and
object-oriented paradigm. He
Cristina Vicente-Chicote is an received a PhD in Computer Science
Assistant Professor and a PhD from the Tech. Univ. of Valencia
candidate in Telecommunication (Spain) in 2000. He is a member of
Engineering at the Tech. Univ. of the Systems and Electronic
Cartagena (Spain). Her research Engineering Division (SEED) research group of the Tech.
interests include software product Univ. of Cartagena (Spain). Contact him at
lines, COTS product integration, Pedro.Sanchez@upct.es.
generative and visual programming,
and image processing applications.
She received a MS in Computer
Science from the Univ. of Murcia (Spain). She is a member
of the Systems and Electronic Engineering Division
(SEED) research group of the Tech. Univ. of Cartagena
(Spain). Contact her at Cristina.Vicente@upct.es.

Ana Toledo-Moreo is a PhD and Assistant Lecturer in the


Electronics Technology Department of
the Technical University of Cartagena,
Spain. Her research has been mainly
focussed in developing low-level
image processing algorithms for
FPGAs. She is also interested in
artificial neural networks, principally
in the improvement of learning algo-
rithms. She has a number of
publications related with the two areas in international
journals and conferences. Contact her at
Ana.Toledo@upct.es.

También podría gustarte