The distinctive character of this book stems from two endeavors. First, this book is about the way software engineering is done in practice. Second, it is about software engineering for enterprise applications. “Enterprise applications include payroll, patient records, shipping tracking, cost analysis, credit scoring, insurance, supply chain, accounting, customer service, and foreign exchange trading. Enterprise applications don’t include automobile fuel injection, word processors, elevator controllers, chemical plant controllers, telephone switches, operating systems, compilers, and games.” (Fowler, 2003, p.3). The book is pivoted on one main case-study, a large number of supporting examples, and end-of-chapter problem-solving exercises consisting of case-study exercises and minicases. A particular organization that the case-study, problem-solving exercises and most examples are derived from is a company specializing in advertising expenditure measurement. The book endeavors to give broad software engineering knowledge and to provide background information prior to presenting case-study solutions. However, a distinguishing emphasis of the book is to concentrate on support skills for system design and programming. For given requirements, the book iteratively develops design and implementation models. Case-study, examples and problem-solving exercises are carefully selected to emphasize various aspects of software development as necessitated by unique characteristics of different applications and target software solutions. The book consists of four parts. Part A (Software projects) discusses software lifecycle, software engineering tools, project planning, budgeting and scheduling, project quality, risk management, and change management. The next three parts (B, C, and D) concentrate on methods, techniques, processes, and development environments of software engineering. The case-study, examples and problem-solving exercises are based on the experience gained from a large ACNielsen project. For pedagogical reasons, industrial problems and solutions have been simplified and re-implemented specifically for the purpose of the book. Occasionally, for comparative purposes, more than one programming environment has been used in presented solutions. All programming code, including code not presented in the text, is available on the book’s website. The code is mostly Java accessing Oracle database.