Abstract :
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.
Keywords :
natural sciences computing; software architecture; software reliability; Bose-Einstein condensation labs; agile computer control; complex experiment; experiment control software; numerical computing; plague experimental labs; reliable code base; software engineering culture; software patterns; software projects; sophisticated software architecture; Art; Clocks; Delay; Hardware; Software design; Software engineering; Software tools; Timing; Visualization; Writing; Python; agile computing; experimental control; frameworks; hardware;