Abstract |
Translate This Page To: Deutsche Francaise Espanol Italiana Português Russian Chinese Korean |
Object technology has become an industry standard for the majority of software development. This technology has evolved out of the principles of systems analysis and systems engineering driven by necessity to provide tools of abstraction to decompose and model complex software systems. There are two key and opposing forces involved in the modeling of complex software systems. These are abstraction and the minimization of complexity. Abstraction involves the application of theoretical modeling principles as tools to model a complex system. The minimization of complexity is crucial because this has a large impact on the feasibility of the development effort and the development time. In order for a system to be implemented in the shortest development cycle, the system's model must be reduced to its essential, minimal characteristics.
The optimal solution for modeling a system requires that the point of convergence for abstraction be determined. The point of convergence for abstraction is the level of theory that must be applied to adequately resolve the problems inherent in the problem space while not applying extraneous principles that over-abstract the problem and thereby introduce unnecessary complexity. Complexity is the adversary of the software developer. The software developer must always be conscious of reducing complexity in all aspects of development. One of the main goals of object modeling is to reduce complexity. The optimal solution applies the appropriate tools of abstraction to achieve the point of convergence of abstraction that defines the inherent complexity of the problem space.
A related and serious consequence of coupling a level of abstraction that is too high relative to the inherent complexity of the problem space, is that the level of proficiency of the entire development team must be raised to that level to be effective in the development effort. This implies unnecessary added cost and time for development in the development effort. The consequence of coupling a level of abstraction that is too low relative to the inherent complexity of the problem space, is that the solution does not efficiently and / or effectively address the problems in the problem space. The only way that the inherent complexity of the problem space can be accurately evaluated is to create a problem model that defines the relative importance and order of precedence of problems that constitute the problem space. This is an essential task in determining the architecture of a complex software system.
The tools of abstraction are defined by a meta-model whose constituent abstractions include pattern models, patterns, object models, objects, and object detail. Each of these abstractions exists at a different level of abstraction, from highest to lowest in the order specified above. Each is defined as follows:
Object: An object is the incarnation in the software space that implements the state and behavior of some well-defined abstraction that the software models.
Object Detail: The object detail fleshes out the detail that gives purpose to the structural relationships between objects that are defined in the object model. The object detail implements the details of the behavior that characterizes the object. The object detail typically equates to the algorithms and logic specified in the implementation model with source code in a programming language.
Object Model: An object model defines the structural relationships and dynamic interaction between a group of related objects.
Pattern: A pattern defines a recurring solution to a recurring problem in a given context. The details for each application of the pattern can be different, but the structure, dynamics, and general approach for the solution is the same in each instance. A pattern is a template for individual object models that are the instances of the pattern.
Pattern Model: A pattern model models the relationships between patterns, such as the relative importance between patterns and the order of precedence in applying patterns. Each pattern in a pattern model fits in at an appropriate level of abstraction within the pattern model, forming a hierarchy. The pattern model maps directly to the problem model that defines the hierarchy of problems in the problem space. Pattern models represent the point of convergence in the meta-model that defines the model of abstractions that exist in modeling the abstractions involved in object modeling.
|