Scientists are skilled with computers, and main of them understand the intricacy of numerical computing. Yet, designing the sophisticated software architecture that controls an experiment requires different skills, and small- and mid-sized experimental labs often lack a software engineering culture. Bad design choices plague experimental labs even though the real experimental difficulty seldom lies in the software itself. In this article, I give some guidelines for designing an experiment's control software based on my experience in various Bose-Einstein condensation labs. I explore the tools and patterns that lead to successful projects - in particular, a flexible and reliable code base that lets scientists cope with a research lab's ever-changing goals and resources.
Published in:
Computing in Science & Engineering
(Volume:10
,
Issue:
2
)
Date of Publication: March-April 2008