Methods to shift your enterprise.TM  
DomainMETHOD: A Domain-Driven Design Tool

Software development with DomainMETHOD is a blend of source code authoring and translation. Source is authored using a simple declarative metadata-based object notation followed by a compilation process that translates the meta-object notation (MON) into a working enterprise application domain layer. DomainMETHOD supports domain-driven design and development, generating code against the core patterns defined by domain-driven design experts Eric Evans and Martin Fowler.

The meta-object notation is a language crafted using a formal grammar. The notation forms a simple domain-specific language (DSL) syntax. The DSL facilitates the rapid development of enterprise applications by greatly reducing domain layer development efforts. Because a formal grammar is used—just like any quality programming language—DomainMETHOD can translate DSL source code into a highly accurate working application code.

The language itself supports and promotes domain-driven design and development. The application domain model—a conceptual model of a system which describes the various entities involved in that system and their relationships—serves as the basis for the authoring in the DomainMETHOD language.

The DomainMETHOD DSL syntax is simple, allowing the nested declaration of domain objects and the primary enterprise components that use them. The current DSL supports the declaration of the application's domain model following domain-driven design patterns. The emphasis is on the domain model source code that houses all domain concepts and concerns, which includes the application's core business logic.

From the set of MON sources an enterprise application domain layer can be generated for any number of target platforms. Likely your organization would focus on the use of just one such enterprise platform per application. The generated application domain layer realizes common patterns within all the appropriate architecture layer and expected components, per platform. Since a generative approach is used, various domain model refinements can be prototyped, generated, tested, refactored, and re-generated rapidly.

The back-end code generation is pluggable, allowing you to choose from among different base component types even within a single enterprise platform. Thus on the Java platform your domain model may be persisted using Hibernate or another approach, and your database definition code may be generated for Oracle or MySQL. On the Microsoft .NET platform you could choose to employ NHibernate, and likely you would use Microsoft SQL Server as your database. In any case, your persistence details are encapsulated behind Repository implementations, all automatically generated in an instant from your DomainMETHOD sources.

Although Java and .NET platforms are our current focus, there is really no practical limit to the number of platforms, architectural layers, components, and mechanisms that can be supported by the DomainMETHOD domain-driven approach.

The bottom line: DomainMETHOD supports our goal of up-and-running applications, faster. It's just one of our methods to shift your enterprise as quickly as industry demands.