Resuable
Frameworks
Raybright’s Object-Oriented Application Frameworks are
a promising technology for utilizing proven software designs and
implementations in order to reduce the cost and improve the quality
of software. Our frameworks are reusable, semi-complete applications
that can be specialized to produce custom applications. In contrast
to earlier reuse techniques that are based on class libraries,
frameworks are targeted for particular business units (such as
data processing or mobile communications) and application domains
(such as user interfaces ).The primary benefits of our Object
Oriented application frameworks stem from the modularity, reusability,
extensibility, and inversion of control they provide to developers,
as described below:
Modularity
Frameworks enhance modularity by encapsulating volatile implementation
details behind stable interfaces. Framework modularity helps to
improve software quality by localizing the impact of design and
implementation changes. This localization reduces the effort required
to understand and maintain existing software.
Reusability
The stable interfaces provided by our frameworks, enhance reusability
by defining generic components that can be reapplied to create
new applications. Our Framework reusability leverages the domain
knowledge and prior effort of experienced developers in order
to avoid re-creating and re-validating common solutions to recurring
application requirements and software design challenges. Reuse
of framework components can yield substantial improvements in
programmer productivity, as well as enhance the quality, performance,
reliability and interoperability of software.
Extensibility
Our framework enhances the extensibility by providing explicit
hook methods that allow applications to extend its stable interfaces.
Hook methods systematically decouple the stable interfaces and
behaviors of an application domain from the variations required
by instantiations of an application in a particular context. Framework
extensibility is essential to ensure timely customization of new
application services and features.
Inversion of control
Our run-time architecture of a framework is characterized by
an inversion of control. This architecture enables canonical application
processing steps to be customized by event handler objects that
are invoked via the framework's reactive dispatching mechanism.
When events occur, the framework's dispatcher reacts by invoking
hook methods on pre-registered handler objects, which perform
application-specific processing on the events. Inversion of control
allows the framework to determine which set of application-specific
methods to invoke in response to external events such as window
messages arriving from end-users or packets arriving on communication
ports.