Some design decisions have an impact on the trajectory of the whole project. Modeling is most needed in complex circumstances, yet the typical dynamics of the large projects that might benefit from it too often derail it or disconnect it from the real design. Conversely, modeling is best carried out by small, dynamic teams with a lot of autonomy, yet creating large systems requires coordination and project-spanning decisions. Managers and developers alike need to pay close attention to this intersection of design, project organization, and politics.
This talk briefly introduces two broad principles for strategic design.
First, 'context mapping' addresses a vital fact of life: Different groups think differently. Ignoring these realities leads to dumbed-down models, costly, buggy integrations, and disruption of project plans where they depend on other teams.
Then, 'distilling the core domain' concentrates effort on real business assets and gives a system focus, based on a shared vision. This view provides a systematic guide to when software must be developed by a team close to the business and could be outsourced or might better be purchased off-the-shelf. It suggests when "good enough" is good enough versus when it matters to push for excellence.
Eric Evans is the author of Domain-Driven Design: Tackling Complexity in Software, Addison-Wesley 2004. Since the early 1990s, he has worked on many projects developing large business systems with objects with many different approaches and many different outcomes. The book is a synthesis of that experience. It presents a system of modeling and design techniques, both tactical and strategic, that successful teams have used to align complex software systems with business needs and to keep projects agile as systems grow large. Eric now leads Domain Language, a consulting group which coaches and trains teams applying domain-driven design, helping them to make their development work more productive and more valuable to their business.
Refactoring HTML— As web sites transition from simple content to full-blown, two-way applications the legacy cruft of the past ten years is becoming apparent. There are millions of sites and billions of pages that have been around since the 1990s. Many of these pages were designed for browsers like Netscape 3, Internet Explorer 2, or even Mosaic. They may have been redesigned several times, but the underlying structure and markup remains the same; and this is becoming a problem. These pages don't work well with modern technologies and tools like AJAX, DOM, E4X, JavaScript, and more.
Code Organization Guidelines— Structuring a large code base maintained by teams working in parallel can be a real challenge. If you are not disciplined about code structure overtime, you will end up with a tangled, unmaintainable mess that cannot adapt to change and risks ossifying into legacy. This session presents typical challenges in evolving large code bases, focusing on package interdependencies and module decomposition according to 'conceptual boundaries'. We will discuss lessons learned from the Spring project itself, and investigate the use of tools for validating architectural soundness.
Top 10 Ways to Botch Enterprise Java Applications— This follow-on to last year's JavaOne sleeper hit 'The Top 10 Ways to Botch an Enterprise Java Technology-Based Application' explores best practices for protecting against scalability and reliability in Java Enterprise Edition applications and compute grid environments. Starting with simple abuses of messaging and clustering technologies, this presentation navigates a wide swath of options available to enterprising architects seeking to limit the effectiveness of scale-out environments.
How to build Enterprise Java applications with Spring— The Spring framework has an extremely rich set of features that span all tiers of the application. If you are relatively new to Spring you might be wondering which of the many features to focus on; which features to avoid; and how to use the various features together in an application. This talk describes how the Spring framework was used to build an enterprise Java application. We will walk through each tier of the application and describe how the Spring framework was used.
Coherence, An introduction— Oracle Coherence enables in-memory data management for clustered J2EE applications and application servers that makes sharing and managing data in a cluster as simple as on a single server. Developers can easily take advantage of Coherence features using the standard Java collections API to access and modify data, and use the standard JavaBean event model to receive data change notifications.