Simulations from UML in minutes with GXE
A domain model is a standard way of defining the primary business entities, rules and relationships addressed by an application system. Traditionally, domain models have been used solely to express requirements. Gorilla Logic elevates domain models to a directly executable format with Gorilla UML (GUML). Standard UML is not sufficiently complete to support direct execution. Gorilla UML (GUML) augments standard UML with some small yet powerful extensions for concisely expressing business rules and dynamic behavior.
High-Level + Declarative
GUML augments standard UML with a high-level declarative constraint
language. It is high-level because information is expressed in business
terms relative to the domain model, rather than in terms of 3GL
programming artifacts. It is declarative because it does not employ
control flow statements such as loops. It is a constraint language
because you specify what is true about your business information,
while the myriad lower-level details of maintaining the integrity
of that information are managed for you.
Declarative vs. Procedural
Declarative programming involves specifying what to do, not how
to do it. Procedural specifications increase in complexity as one
attempts to ensure that the desired outcome in all possible circumstances.
A declarative specification more directly describes the desired
outcome regardless of the circumstances. Consider the simple example
of processing an invoice. On the leftmost diagram below are just
some of the procedural issues you must account for, when considering
the 'how'. The declarative diagram on the right specifies the 'what'.
|
|
|
Procedural Approach |
Declarative Approach |
Use the Best Language for the Job
Models extended with GUML sufficiently describe most business applications,
but sometimes procedural coding is the best approach for creating
an application. GUML is not intended to replace general-purpose
programming languages. Instead it coexists with 3GL languages, allowing
you to mix and match the best programming format for your needs.
You can capture most of your business logic declaratively, and extend
that with small amounts of procedural code as needed.
Applications can thus be created at several levels:
Domain Model (graphical UML class diagram)
You may layout a domain model in any UML modeling tool. The GXE will directly import and execute a domain model from supported modeling tools. The domain model specifies entities, names, and relationships with great concision and comprehensibility.GUML Extensions
You may use GUML to specify textual constraints, triggers, derived formulas, etc. as model annotations in the domain model. GUML uses the language of your domain model directly, so together they form the highest-level abstraction of your specification with the richness needed for an Executable Domain Model.GUML Scripting
The Gorilla Shell (Gosh) is for data exploration, ad-hoc queries, model administration, direct data operations, and more. Gosh may be run interactively, through scripts, or as methods embedded in models. Interactively, Gosh can be run in command line mode or through an HTML interface.Python Scripting
You may embed GUML scripting within the high-level object-oriented scripting language Python. This powerful language allows easy integration of existing Java libraries and full access to the underlying Gorilla Logic runtime platform.Java
Java classes can be referenced directly from within GUML models, allowing the resulting applications to incorporate existing or newly developed Java code. The GXE is completely accessible as a software framework through Java, which is particularly useful in integrating with existing systems. The GXE can generate Java classes corresponding to the domain model, which you can extend directly if desired.
Summary: The GUML Difference
Intuitive
GUML elevates application design to a human level with a more intuitive approach. Consider the people, partners, documents and business rules that define your company. The most powerful statements about these concepts are declarative: they say what to do, not how to do it. GUML describes business rules declaratively in the terminology of the business analyst.Concise
GUML represents the clearest and most direct expression of business domain problems. GUML provides simple but rigorous semantics for concepts like ownership, dependency, and constraints, which drive behavior in a consistent, verifiable way unachievable with the flow charts common to other tools. Also, GUML is less verbose and more precise than procedural specifications because it defines your business entities and their invariant relationships regardless of when, how, or by whom the information is accessed.Extensible
Sometimes it is easier to solve a specific problem with a few lines of procedural code. For these situations, GUML supports procedural methods through a variety of means, including direct extension of Java-based domain API's, as well as very high level, object-oriented scripting in Python. However, declarative GUML models generally require little, if any, procedural programming to complete a solution.