What We Do
Elemental Reasoning is a world leader in specialized design consulting for large software systems. We offer a wide range of services, centered around a powerful and novel semantic analysis of software that is language, domain, and implementation independent. Our tools and experts can help you find the problematic portions of your system, provide refactoring plans, document what you have, and guide you to where you want to be.
Training
Elemental Design Patterns
Elemental Reasoning is proud to be the world leader in training and information on the Elemental Design Patterns approach to software engineering. We offer a range of workshops for our clients, from one-on-one design consulting engagements to formal classroom environments for classes of up to 25 students.
The implementation language for the examples and workbook can be chosen from Java, C++, or C#. A customized tutorial system can be created for your work environment in the language of your choice. Likewise, Elemental Reasoning can work with your company to craft a workshop that is attuned to your specific domain and enterprise. As design patterns, and particularly Elemental Design Patterns, are an implementation- and domain-independent field, using examples that your developers are already familiar with can help orient them and make for more efficient learning. Language and domain customizations carry appropriate fees, which are billed according to the specifics of the needs. Some clients may want an established language workshop such as Java, but in the domain of their specification, while another may want a custom language workshop, yet not require targeting of their implementation domain. Others may desire both. It is up to you.
While extensive understanding or experience with design patterns is not required for these workshops, it is best if the students have at least a passing familiarity with the concept. The first class exercise will be to ascertain what the views of the class are on the design patterns field, and provide a basis to properly offer content. We currently offer two and three day workshops, depending on the scheduling needs of the client and what level of detail is desired.
Classes are taught by the originator of the Elemental Design Patterns literature, Dr. Jason McC. Smith. He will walk the students through the process of re-thinking how we design and work with software in a bottom-up fashion, taking concepts that the developers are intimately familiar with and re-presenting them in a new light. These create a foundation for working with software not as a collection of constructs, but instead as a network of concepts. Raising the level of abstraction in software design in this manner creates a more flexible way of inspecting and implementing software systems.
Structured Patterns Metamodel Standard
The Structured Patterns Metamodel Standard (SPMS) is an industry standard from the venerable Object Management Group (OMG), progenitor of numerous modeling standards such as UML, SysML, BPMN, and many others. SPMS is a unified way for practitioners to provide definitions of patterns for software, business, architecture, and many other design disciplines.
SPMS is a standard for working with what are commonly called design patterns, architecture patterns, enterprise patterns, and business process patterns. In reality it can be used with any hierarchically describable set of abstractions, and has found applicability in everything from software design to biological systems modeling. It provides five major pieces to support patterns work:
- Definition - Provide a definition of a pattern, based on custom organizational templates created by patterns communities.
- Observations - Report when, where, and how you created or found an instance of a pattern within a system. Leverages the Structured Metrics Metamodel common to many tool chains.
- Relationships - Describe how patterns relate to one another. Give guidance for practitioners looking for a solution to a problem. Create a repository of pattern definitions for your pattern using community to rally around.
- Formalism - Enhance your patterns with machine readable formalisms using existing standards (UML, OCL, BPML, AST, etc) to give analysis tools common definitions to work from.
- Diagramming - Annotate your existing diagramming notations (UML, BPMN, etc) with the Pattern Instance Notation, and use the PIN to encapsulate your diagrams in a flexible hierarchical way. Show, don't tell, what abstractions your system incorporates.
SPMS is the common backbone for tool vendors, pattern repository providers, and practitioners to work together in unison. Elemental Reasoning is uniquely positioned to offer guidance and assistance on SPMS and related technologies within your practice. Our founder was a primary author on the SPMS specification, and chairs the ongoing revision task force at the OMG. We offer hands-on training and consulting services on SPMS, as well as related technologies, such as the Structured Metrics Metamodel.
Design Analysis
Elemental Reasoning offers a range of automated and manual software analysis approaches and tools to help you discover the hidden designs within your systems. Using the Elemental Design Patterns literature as a basis, our domain-independent tools provide standards-based reporting of the design of your implementation. We currently offer analysis in Java, C++, and C, and additional languages can be developed for a fee. The underlying techniques and formalisms are language-independent, allowing for a wide range of possibilities to address your needs.
All analysis results are provided in industry standard models, including the Unified Modeling Language (UML), Structured Patterns Metamodel Standard (SPMS), and the Structured Metrics Metamodel (SMM) from the Object Management Group standards body. By offering data in these formats, Elemental Reasoning ensures that you are never locked into proprietary tooling. You choose your standards-compliant tools, we provide the analysis data.