An Open Framework for Extensible Multi-Stage Bioinformatics Software
Authors:
Gabriel Keeble-Gagnère,
Johan Nyström-Persson,
Matthew Bellgard,
Kenji Mizuguchi
Abstract:
In research labs, there is often a need to customise software at every step in a given bioinformatics workflow, but traditionally it has been difficult to obtain both a high degree of customisability and good performance. Performance-sensitive tools are often highly monolithic, which can make research difficult. We present a novel set of software development principles and a bioinformatics framewo…
▽ More
In research labs, there is often a need to customise software at every step in a given bioinformatics workflow, but traditionally it has been difficult to obtain both a high degree of customisability and good performance. Performance-sensitive tools are often highly monolithic, which can make research difficult. We present a novel set of software development principles and a bioinformatics framework, Friedrich, which is currently in early development. Friedrich applications support both early stage experimentation and late stage batch processing, since they simultaneously allow for good performance and a high degree of flexibility and customisability. These benefits are obtained in large part by basing Friedrich on the multiparadigm programming language Scala. We present a case study in the form of a basic genome assembler and its extension with new functionality. Our architecture has the potential to greatly increase the overall productivity of software developers and researchers in bioinformatics.
△ Less
Submitted 22 August, 2012;
originally announced August 2012.
Poplar: A Java Extension for Evolvable Component Integration
Authors:
Johan Nyström-Persson,
Shinichi Honiden
Abstract:
The Java programming language contains many features that aid component-based software development (CBSD), such as interfaces, visibility levels, and strong support for encapsulation. However, component evolution often causes so-called breaking changes, largely because of the rigidity of component interconnections in the form of explicit method calls and field accesses. We present a Java extension…
▽ More
The Java programming language contains many features that aid component-based software development (CBSD), such as interfaces, visibility levels, and strong support for encapsulation. However, component evolution often causes so-called breaking changes, largely because of the rigidity of component interconnections in the form of explicit method calls and field accesses. We present a Java extension, Poplar, which we are currently developing. In Poplar, inter-component dependencies are expressed using declarative queries; concrete linking code, generated using a planning algorithm, replaces these at compile time. Poplar includes a minimal specification language based on typestate-like protocols and labels, and a lightweight effect system, which ensures the absence of unwanted interference between hand-written code and generated code. We give several examples of fully automatic component integration using Poplar, and demonstrate its potential to simplify object-oriented software development greatly through evolvable and statically checkable integration links.
△ Less
Submitted 9 June, 2011; v1 submitted 8 June, 2011;
originally announced June 2011.