How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Michael C. Feathers
The average book on Agile software development describes a fairyland of greenfield projects, with wall-to-wall tests that run after every few edits, and clean & simple source code.
The average software project, in our industry, was written under some aspect of code-and-fix, and without automated unit tests. And we can't just throw this code away; it represents a significant effort debugging and maintaining. It contains many latent requirements decisions. Just as Agile processes are incremental, Agile adoption must be incremental too. No more throwing away code just because it looked at us funny.
Mike begins his book with a very diplomatic definition of "Legacy". I'l skip ahead to the undiplomatic version: Legacy code is code without unit tests.
Before cleaning that code up, and before adding new features and removing bugs, such code must be de-legacified. It needs unit tests.
To add unit tests, you must change the code. To change the code, you need unit tests to show how safe your change was.
The core of the book is a cookbook of recipes to conduct various careful attacks. Each presents a particular problem, and a relatively safe way to migrate the code towards tests.
Code undergoing this migration will begin to experience the benefits of unit tests, and these benefits will incrementally make new tests easier to write. These efforts will make aspects of a legacy codebase easy to change.
It's an unfortunate commentary on the state of our programming industry how much we need this book.
This volume is a handbook for enterprise system developers, guiding them through the intricacies and lessons learned in enterprise application development. It provides proven solutions to the everyday problems facing information systems developers.
Martin Fowler, Kent Beck
Users can dramatically improve the design, performance, and manageability of object-oriented code without altering its interfaces or behavior. "Refactoring" shows users exactly how to spot the best opportunities for refactoring and exactly how to do it, step by step.
Dino Esposito, Andrea Saltarello
Provides information on designing and building effective enterprise solutions, covering such topics as UML, the business layer, the service layer, and the data access layer.
Mike Keith, Merrick Schincariol
Pro JPA 2 introduces, explains, and demonstrates how to use the Java Persistence API (JPA). JPA provides Java developers with both the knowledge and insight needed to write Java applications that access relational databases through JPA. Authors Mike Keith and Merrick Schincariol take a hands–on approach to teaching by giving examples to illustrate each concept of the API and showing how it is used in practice. All of the examples use a common model from an overriding sample application, giving readers a context from which to start and helping them to understand the examples within an already familiar domain. After completing the book, you will have a full understanding and be able to successfully code applications using JPA. The book also serves as a reference guide during initial and later JPA application experiences. Hands-on examples for all the aspects of the JPA specification, based on the reference implementation of this specification A special section on migration to JPA Expert insight about various aspects of the API and when they are useful Portability hints to provide increased awareness of the potential for non–portable JPA code What you’ll learn Get started with enterprise applications using JPA 2 Get up to speed with object–relational mapping and Entity Manager Learn and use queries and the query language (JP QL) Employ advanced object–relational mapping techniques Use XML mapping files and learn other advanced techniques Package and deploy your Java persistence applications Test your Java persistence applications Migrate your Java persistence applications Who this book is for The book generally targets enterprise and persistence developers who fall in one of three categories: Those who are new to persistence; we will present some background information and introduce these readers to the basic persistence concepts to bring them up to speed. Those who know and/or use existing ORM persistence products such as Hibernate or TopLink. Those who have already used JPA and want to learn about newer features introduced by JPA 2, or have a good reference book to consult when they develop JPA applications. In general, we assume that the reader is knowledgeable with Java, SQL, and JDBC, and has a little knowledge of J2EE. Table of Contents Introduction Getting Started Enterprise Applications Object-Relational Mapping Collection Mapping Entity Manager Using Queries Query Language Criteria API Advanced Object-Relational Mapping Advanced Topics XML Mapping Files Packaging and Deployment Testing Migration
Len Silverston, Paul Agnew
This third volume of the best-selling "Data Model Resource Book" series revolutionizes the data modeling discipline by answering the question "How can you save significant time while improving the quality of any type of data modeling effort?" In contrast to the first two volumes, this new volume focuses on the fundamental, underlying patterns that affect over 50 percent of most data modeling efforts. These patterns can be used to considerably reduce modeling time and cost, to jump-start data modeling efforts, as standards and guidelines to increase data model consistency and quality, and as an objective source against which an enterprise can evaluate data models. Praise for The Data Model Resource Book, Volume 3 "Len and Paul look beneath the superficial issues of data modeling and have produced a work that is a must for every serious designer and manager of an IT project." —Bill Inmon, World-renowned expert, speaker, and author on data warehousing and widely recognized as the "father of data warehousing" "The Data Model Resource Book, Volume 3: Universal Patterns for Data Modeling is a great source for reusable patterns you can use to save a tremendous amount of time, effort, and cost on any data modeling effort. Len Silverston and Paul Agnewhave provided an indispensable reference of very high-quality patterns for the most foundational types of datamodel structures. This book represents a revolutionary leap in moving the data modeling profession forward." —Ron Powell, Cofounder and Editorial Director of the Business Intelligence Network "After we model a Customer, Product, or Order, there is still more about each of these that remains to be captured, such as roles they play, classifications in which they belong, or states in which they change. The Data Model Resource Book, Volume 3: Universal Patterns for Data Modeling clearly illustrates these common structures. Len Silverston and Paul Agnew have created a valuable addition to our field, allowing us to improve the consistency and quality of our models by leveraging the many common structures within this text." —Steve Hoberman, Best-Selling Author of Data Modeling Made Simple "The large national health insurance company I work at has actively used these data patterns and the (Universal Data Models) UDM, ahead of this book, through Len Silverston's UDM Jump Start engagement. The patterns have found their way into the core of our Enterprise Information Model, our data warehouse designs, and progressively into key business function databases. We are getting to reuse the patterns across projects and are reaping benefits in understanding, flexibility, and time-to-market. Thanks so much." —David Chasteen, Enterprise Information Architect "Reusing proven data modeling design patterns means exactly that. Data models become stable, but remain very flexible to accommodate changes. We have had the fortune of having Len and Paul share the patterns that are described in this book via our engagements with Universal Data Models, LLC. These data modeling design patterns have helped us to focus on the essential business issues because we have leveraged these reusable building blocks for many of the standard design problems. These design patterns have also helped us to evaluate the quality of data models for their intended purpose. Many times there are a lot of enhancements required. Too often the very specialized business-oriented data model is also implemented physically. This may have significant drawbacks to flexibility. I'm looking forward to increasing the data modeling design pattern competence within Nokia with the help of this book." —Teemu Mattelmaki, Chief Information Architect, Nokia "Once again, Len Silverston, this time together with Paul Agnew, has made a valuable contribution to the body of knowledge about datamodels, and the act of building sound data models. As a professional d
Mike Keith, Merrick Schincariol
Pro JPA 2, Second Edition introduces, explains, and demonstrates how to use the new Java Persistence API (JPA) 2.1 from the perspective of one of the specification creators. A one-of-a-kind resource, it provides both theoretical and extremely practical coverage of JPA usage for both beginning and advanced developers. Authors Mike Keith and Merrick Schincariol take a hands–on approach, based on their wealth of experience and expertise, by giving examples to illustrate each concept of the API and showing how it is used in practice. The examples use a common model from an overriding sample application, giving readers a context from which to start and helping them to understand the examples within an already familiar domain. After completing the book, you will have a full understanding of JPA and be able to successfully code applications using its annotations and APIs. The book also serves as an excellent reference guide during initial and later JPA application experiences. Hands-on examples for all aspects of the JPA specification Expert insight about various aspects of the API and when they are useful Portability hints to provide increased awareness of the potential for non–portable JPA code What you’ll learn How to get started with enterprise applications using JPA 2.1 Simple and advanced object–relational mapping techiques How to use the complete Entity Manager API How to create queries using the query language (JP QL) and the Criteria API Locking, concurrency, and other advanced concepts How to use XML mapping files and descriptors How to package and deploy your Java Persistence applications How to test your Java Persistence applications Who this book is for The book generally targets enterprise and persistence developers who fall in one of three categories: Those who are new to persistence; we will offer an introduction to persistence and to the basic concepts so these readers can have solid base from which to become proficient at JPA. Those who know and/or use existing ORM persistence products such as Hibernate or TopLink/EclipseLink. Those who have already used JPA and want to learn about newer features introduced by JPA 2.1, or have a good reference book to consult when they develop JPA applications. In general, we assume that the reader is knowledgeable with Java, SQL, and JDBC, and has a little knowledge of Java EE. Table of Contents Introduction Getting Started Enterprise Applications Object Relational Mapping Collection Mapping Entity Manager Using Queries Java Persistence Query Language Criteria Advanced Object Relational Mapping Advanced Queries Advanced Topics XML Mapping Files Packaging and Deployment Testing
Floyd Marinescu, Abel Avram
Domain Driven Design is a vision and approach for dealing with highly complex domains that is based on making the domain itself the main focus of the project, and maintaining a software model that reflects a deep understanding of the domain. This book is a short, quickly-readable summary and introduction to the fundamentals of DDD; it does not introduce any new concepts; it attempts to concisely summarize the essence of what DDD is, drawing mostly Eric Evans' original book, as well other sources since published such as Jimmy Nilsson's Applying Domain Driven Design, and various DDD discussion forums. The main topics covered in the book include: Building Domain Knowledge, The Ubiquitous Language, Model Driven Design, Refactoring Toward Deeper Insight, and Preserving Model Integrity. Also included is an interview with Eric Evans on Domain Driven Design today.