Copyright 2011,
Ralph Rönnquist.
Goal Oriented Teams (GORITE) is a Java framework for implementation of Goal Oriented Process Models in a Team Oriented Paradigm. The GORITE concept combines a Team Oriented view of software systems with Goal Oriented process modelling, and offers an effective approach to complex and large-scale software.
The GORITE emphasis is that of developing a software system with complex behaviour by using the analogy to human organisation as a design technique, and thus form a software architecture that in concept is based on autonomous organisational units. But in the software, as opposed to a human organisation, the autonomous reasoning is represented and carried out at all levels. Through this, the system behaviour is designed at all levels, and although the behaviour may be too complex to predict, it is engineered behaviour with a high degree of repeatability, which brings significant gains in terms of performance, simplicity and maintainability of the software.
A Java developer would use GORITE for implementing their Team Oriented design, and whilst the framework makes this a straight-forward task, it relies on the Java developer utilising background skills in Team and Goal Oriented Programming to form the design.
The Goal Oriented Programming side of GORITE provides a BDI (Belief - Desire - Intention) execution machinery for goal oriented process models. Technically the programming is done by creating goal hierarchies, which define how goals are achieved by means of achieving sub goals, and these are data structures that are interpreted in order to carry out the process steps that achieving the goals require.
The Team Oriented Programming side of GORITE is based on the notion that a software system is conceived as an organisation of cooperating agents, or recursively, as a team of sub teams, which operate together so as to provide the system function. There is a loose analogy with human organisations in this, such that the overall functions are understood as the fruits of (business) processes that coordinate the efforts of the individuals. In the Team Oriented design, the behaviour of organisational units are defined separately from the behaviour of their sub units. Unit behaviour is expressed as an orchestration of the services that sub units provide.
The overall design stance is an organisation oriented engineering perspective: at first we regard the system as a whole as a performer although comprised of sub units, and we design a top layer of system processes that coordinate efforts of the organisational sub units. Thereafter we focus on each sub unit in turn, regard it a performer although comprised of sub units, and design its processes that coordinate efforts of its sub units, and so forth.
The GORITE framework simply maps this perspective onto Goal Oriented Team Programming: a team is an organisational unit, which operates autonomously according to its defined business processes in order to fill its function as sub unit of a larger team. In other words, a team is a performer for the larger team (or teams) it belongs to, while its own behaviour typically is defined as a coordination of the performer it consists of. The team concept is recursive in this way; that a team consists of sub teams. From the "above", the team is seen as a performer in itself, and from "below" it has members that are performers.