Create your own
teaching resources

Sign up for a free account to try! It takes less than 20 seconds

Teacherbot 12 Jan, 03:10:50

\authorinfo{Jiri Skrivanek}{jiri.skrivanek@fit.cvut.cz}{Faculty of Information Technology, Czech Technical University in Prague, Czech Republic}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\maketitle

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{abstract}

Plug-ins are nowadays a quite dominant form of software components. Typical development tasks are difficult and time consuming due to a tight coupling with the host application. Consequently automatic support for plug-ins development is very desirable. Existing approaches however suffer from tight coupling. We believe that the approach to develop plug-ins decoupling them from the host application environment is a promising perspective. We present the idea in general and its concrete realization in form of a framework supporting plug-ins development. We mention features already available and the ones which could be implemented in the future. The focus is mainly on extensibility and support for established development models. The framework gives an automatic environment for plug-ins development, deployment and management.

\end{abstract}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Introduction}

Plug-ins are nowadays a quite dominant form of software components. Almost all end user software offers support for plug-ins \cite{Metz2009}. One example of the potential for improving end user applications by enabling plug-ins evolution is given in \cite{Kullgren2009}. Thus plug-ins give an attractive way how to extend an existing application.

On the other hand development of plug-ins is quite difficult and time consuming task. The main problem is tight coupling of the plug-ins with the host application they extend. The plug-in code needs to consider the behavior and structure of the host application and takes its execution environment. This makes creating new or modifying existing plug-ins dependent on the state of the host application. Furthermore the plug-in deployment procedure is closely tied to the deployment procedure of the application.

Loose coupling of the plug-in code with its deployment environment makes the plug-ins development easier. Some frameworks like JavaBeans have been propositioned in the past. Unfortunately it does not solve the problem completely as different frameworks from different sources often necessitate using different deployment environment.

We believe that the idea to develop plug-ins independently from their deployment environment is a promising perspective. Our goal is to boost plug-ins development by abstracting the details of the underlying application environment. Thus providing plug-in developers access to an automatic environment suitable for plug-ins development and deployment.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Plug-in abstraction level}

We consider abstract level equipped with features enabling faster prototyping and debugging of the plug-in code. Such level would correspond to the basic objects of the host application environment. Thus, there is no need to stem features directly into the source code, which makes the plug-in code more maintainable.

It would be a multi dimensional abstraction enabling instant feedback. For example certain user actions done in the host application GUI should correspond to certain changes in the plug-in output. The abstract level will translate changes from the host application environment into the plug-in to keep these changes synchronized.

Such abstracted plug-in level should be able to support usage of different design models for rapid development. Robust design models like MVC pattern \cite{gamma1995design} should be suppored as well and provide good separation of the plug-ins views and data.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Framework realization}

Our framework is designed to be used as a plug-in platform offering tools for creating and managing plug-ins. It supports multi-platform approach utilizing platform abstraction layer to access native API. Thus, making usage of the same plug-ins for multiple platforms possible.

Plug-ins written for our framework have the same interface regardless of their implementation. They are written in different programming language (currently Java, C++, C# and Python). All necessary native bindings to the host application API are automatically generated from the information derived from native API headers.

The framework gives an automatic environment for plug-ins development, deployment and management. It provides an abstraction over the native API of the host application. It consists of the following components:

\begin{itemize} \item plug-in API definition \item plug-in API documentation \item native API to plug-in API abstraction layer \item resource manager \item plug-in loader \item event sender \end{itemize}

The elements of the framework are intended to provide an environment suitable for plug-ins development, deployment and management.

The current version of the framework possess the following features:

\begin{itemize} \item resource tracking for transformation to the contextual tree \item access to native API properties and methods from plug-in construct code \item detection of plug-in changes \end{itemize}

Furthermore some planned features to implement in the future include:

\begin{itemize} \item automatic native API detection \item support for design patterns for rapid plug-in development \item cross platform development/deployment of plug-ins \end{itemize}

The framework is well suited for plug-in development process decoupling them from the underlying environment. This greatly simplifies procedires like development and plug-in deployment. It allows developing and testing given plug-in independent of the host application. It can be used to deploy the same plug-in to multiple platforms as well.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Conclusions}

The idea of a framework decoupling the plug-ins from their underlying environment is presented and described. It consists of several components providing automatic environment for plug-ins development and efficient management of their execution. Presently the framework is suitable for resources tracking. Future implementations will benefit from support for design patterns and cross - platform development of plug-ins.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\newpage

\bibliographystyle{unsrt} \bibliography{biblio}

\end{document}