Summary
Focuses on actual code development and teaches technical skills in requirements, analysis, design and testing. *Helps students make the transition from lower-level courses in which assignments are program oriented to final year level courses that are project oriented. *Covers fundamental software techniques - practical requirements analysis, design methods and notations, test planning, and testing. *Introduces the important aspects of formalism as well as the pragmatics of implementing just the right amount of formalism. *Includes discussion of basic management issues and their impact on technical software development. *Provides coverage of contemporary topics like Capability Maturity Model, and Java, as well as practical issues surrounding automated and Regression testing, and Safety for mission critical projects. *Includes detailed presentations of alternative design methods, with an example of each carried through implementation. The methods are: pseudocode, SA/SD (Dataflow diagrams), Object-oriented design (CRC), abstract datatypes, and finite state machines. *Emphasizes the social responsibilities of software professionals. *Contains exercises at the end of each chapter (with