Back to neurospy documentation home

Guide to developing neurospy

This page links to resources of interest primarily to developers looking to extend, modify or repackage neurospy. You'd better look elsewhere if all you want is to install and use the software.

About NetBeans Platform

What exactly is the NetBeans Platform and why is it important? The quick answer is that the Platform and the Integrated Development Environment (IDE) built on top of it simplify development and deployment of large and complex applications by facilitating modularization and encouraging good design practices. Combined with the prevalence of Java Patterns in modern software development this saves time and dramatically increases productivity of large teams compared to “roll your own” solutions. There are many plug-in modules being actively developed for the Platform, meaning that your application, no matter how small, can take advantage of all the future improvements without ever having to recompile any code, for as long as the APIs it builds on are not deprecated as part of their natural lifecycle. For a longer treatise read the essay about the NetBeans Runtime Container by Jaroslav Tulach.

If you're new to NetBeans head over to NetBeans basics for many digested tips. The following links lead to much more information should you decide to delve deeper—NetBeans has a large and very active user community and is being continuously improved by a small army of both paid and volunteer programmers around the world.

Why NetBeans?

In case you're torn between LabView and a Real Programming Language, you may want to read this critique before making far-reaching architectural decisions you'll be regretting for many decades. It goes without saying that you ought to read and understand most of this first.

neurospy Architecture Overview

It is a common mistake to think of neurospy as a “program”. It is more accurate to think of it as an “Application Framework”. What this means is that “neurospy” is simply a brand put on a loose collection of modules that, once deployed together and configured properly, make up an application for data acquisition and analysis. The application can then be extended to do other things by simply dropping in additional modules downloaded from the net. For instance, the Java editor and compiler from the NetBeans IDE can be made available as part of neurospy so that additional neurospy-related functionality can be developed and tested inside of the running neurospy application, without having to have a separate IDE open. In the same fashion any of the modules that are part of neurospy can be made part of other branded applications.

The modules in neurospy are organized in a logical hierarchy of dependence. Low-level modules are, for instance, the ones that talk to acquisition hardware, or that read and save data files in a particular format. These have few dependencies other than those on the underlying system libraries. Next level up are modules that abstract or combine functionality from one or more low-level modules. Finally, at the top of the hierarchy are modules that combine all of this underlying functionality into high-level tasks perceived by the user, such as “scan a full frame and save the image to disk”. The Model-View-Controller paradigm is used pervasively throughout.

This diagram shows the tree of dependencies between the various modules.

Here are the descriptions of the different subsystems:

Miscellaneous

Hardware Support


Personal Tools