Chapter 5. Best Practices for Building Software

5.1. Introduction

This chapter discusses some techniques that can be considered best practices in buiding systems for data acquisition and analysis that must be shared with other people and groups. The bulk of this chapter will therefore deal with the practical aspects of a very complex field of software engineering, configuration management.

If you are never going to send your software to other people, or are not maintaning a device for other users, you may not need to read this chapter. However much of what we will be talking about specifically in the context of NSCLDAQ and SpecTcl is applicable to the more general realm of software that must be configured to operate under many different environments.

Prequisite for this chapter is a working knowledge of:

If you feel your background in these areas is shaky, or if, as you read, you discover that you need some more background in any of these areas, see the Resources section at the end of this chapter for more information.

If you want to delve further into any of these subjects, again see the Resources section at the end of this chapter.

This chapter will cover the following material:

CautionDisclaimer
 

I make no claim that all of my software adheres to every one of the practices and techniques described here. The reasons my own software deviates from the practices in this section are two-fold.

  1. A practice represents something I wish I had done on a system that is large enough or established enough that to adopt this practice now would have too high a cost for either myself or the users of the software.

  2. A conscious design compromise was made because in my judgement, the cost of implementing the practice far outweighed the gain.

This second reason should be stressed. Each practice described has a cost. You must use your own judgement and common sense to determine whether or not the adoption of a practice will provide you more gain than the cost of the technique.