This book is for readers with backgrounds in science engineering who have experience in computer programming but who lack a training in software engineering. The treatment is centered around a case study in software development in 'e-Science'' using the Java programming language. A graphical front-end for browsing and visualising scientific waveform data is progressively refactored using important design patterns for object-oriented software. The final product is ready for porting onto the Grid. Object-oriented design patterns are taught in a real-world context which is relevant to computational science.