Material on this and related links (c) Copyright Ali Arsanjani 1989-2002
Unauthorized reproduction or usage is prohibited.
What is GOOD?GOOD is about writing very flexible software. Grammar-oriented Object Design started with
a university registration project around
1983 with H.Mirian and F. Oromchian. This
project used an LL(1) parser to drive the
execution of the program which would accept
input tokens from user input using a scanner
that would then submit them to a parser.
This parser used a grammar that described
the university registration system; specifically
its screen flow and back end logic (then
on the mainframe). Map of Concepts
ApplicationsOther applications of GOOD include:
GOOD starts out by defining the manners of a component-oriented system. Manners are rules governing the behavior of a component or business object, plus the meta-data needed to give it the following properties:
Manners also have to do with Business Rules as First-class Constructs of the component-based paradigm of software development where replaceable, executable parts are defined on the basis of their externally visible ports, connectors and interfaces. A component can be queried for its manners within a given processing context. GOOD can be used to build Adaptive or Active Object Models. Here is a workshop that will address using Grammar-oriented Object Design in building Adaptive Systems. |
|
||||||||||||||||||||||||||
Subsystem Anlaysis describes the interface language: The Configurable Architectural StyleA separate language can be used to specify the static and dynamic aspects of a business domain in terms of its subsystems and enterprise components. This langauge focuses on defining the how the components should interact; "talk to each other." |
![]() |
In families of products, the architecture is crucial in ensuring different family members can readily be formed by composing the components in different configurations. The same is true in enterprise integration.
In many cases the formal specification schools
of thought have their arguments on rigour
brushed aside by the pragmatic considerations
of real-life ("in the trenaches")
software engineering.
From this perspective, GOOD provides a balance
between things like Z and a general purpose
programming language like Java.
Component Identification
This involves more than the traditional noun
underlining or using use-cases to non-systematically
divine out key architectural abstractions
rather, we suggest using business goals and
business rules to drive out the functional
chunks that support the business and may
be represented as components downstream.
[Arsanjani89] Using Grammars to Dynamically Describe Applications
[Arsanjani98] GOOD: Meta-modeling and Grammar-oriented Object Design. OOPSLA 98 Workshop on Meta-Data and Active Object Models.
[Arsanjani99] Developing GOOD Business Frameworks
[Arsanjani2000] USING GRAMMAR-ORIENTED OBJECT DESIGN TO SEAMLESSLY MAP BUSINESS MODELS TO COMPONENT-BASED SOFTWARE ARCHITECTURES
Other publications
[Mirian 96] Application Programming and LL(1) Grammar, Seyed-Hassan Mirian-Hosseinabadi Farhad Oroumchian October 31, 1996
Last Updated : Jan 2000, Dec 2001