Bioinformatics refers to the science of collecting and analyzing complex biological data. An example is the analysis of genetic codes. The software used to gather, organize, visualize, analyze, interpret, and store such data is immensely complex and increasingly needs to be designed specifically for the field in which it will be used. Bioinformatics software engineers need to first understand the complexity of the computational tasks required to address the biological problems of the specific life science they are developing software for.
As the needs and requirements evolve, the success of software engineering for bioinformatics begins with the education of engineers, and a key element is teaching domain specificity. Immense amounts of time and resources can be saved by benefiting from the collective successes and failures of the bioinformatics software development community. The results of a survey among developers can improve our understanding of the requirements and, thereby, our approach to education.
The Approach to Development
The survey revealed that the majority of developers used prototyping or extreme programming (XP) as the process they followed. But how the processes were used differed, often based on what is applicable in the field of bioinformatics. This highlighted the need for collaboration within the community as to what works and what doesn’t. For example, prototyping may provide a more rapid solution to the client, but often the prototype is used as the actual software, resulting in bugs and other problems in the long run. Educators of the next generation of developers need to show the importance of a knowledge of XP and its associated paradigms, such as test-driven development. Ultimately, strategies may need to be mixed and adapted to fit the requirements of individual projects.
Want More Tech News? Subscribe to ComputingEdge Newsletter Today!
The Importance of Documentation
The importance of proper documentation goes beyond the maintenance needs of the specific project and extends into the education of the community itself. Thorough documentation saves money in the long run and increases the efficiency of maintenance of the software, but it also benefits future development. Existing software can be expanded and improved upon instead of developers being required to start from scratch.
Best Practices for Quality Assurance
Code review and testing must be performed adequately to ensure the quality and maintainability of the end product. The survey results showed that many developers feel that these steps fall far short of being thorough. Including writing test code and performing code reviews as part of the curriculum may help developers strengthen their appreciation for quality assurance best practices.
Evolution and Maintenance
As bioinformatics software becomes increasingly complex, it stands to reason that it would be expected to have a longer life cycle. However, increased age often translates into more frequent and costly maintenance. In order to achieve the right balance, educators would need to impress on budding developers the need to understand the cause-and-effect relationship between software complexity, lifecycle, and maintenance.
Requirements Gathering Techniques
It is helpful for bioinformatics software developers to have a knowledge of the specific requirements of the science being studied by their clients. Beyond what knowledge they may already have, they often need to interview end users and read up on current documentation. Again, community-based collaboration and agile requirement-gathering techniques will contribute to the success of the final product.
Additional concerns of bioinformatic software developers may be how to integrate and visualize data and when and how to reuse existing software. Helping developers to be cognizant of the challenges and how they can be solved at the educational stage will better prepare them for the hurdles they will face in the real world of bioinformatic software development. You can download and read the full results of the survey, Software Engineering for Bioinformatics, and access its comprehensive suggestions for educators.