In order to be able to write good software, students will need to be familiar with a range of techniques; good programming practice, experience of problem solving, familiarity with development methodologies, and knowledge of software processes. This book takes a new approach to the teaching of software development. Using a collection of case studies, it takes the student through the whole life cycle of building an application, starting at problem formulation, requirements analysis, system design, and the detail of the Java coding and testing. Each case study; -exploits object oriented concepts and techniques incrementally, with each case application getting more complex than the one before it-traces the path from problem statement through to implementation of the solution, giving guidance that is useful in subsequent case studies-gives a 'conceptual roadmap' where the student can follow the development of an application, and use those general principles in future software development-uses a different methodology, from a stand-alone application (computer simulator) to a distributed system (messaging server) through to a more complex system (workflow management system)