The Mjølner System: Overview
MULTI-PLATFORM RAPID APPLICATION DEVELOPMENT
WITH THE MJØLNER SYSTEM
Rapid Application Development (RAD)
Modern object-oriented methodologies recommend an evolutionary
approach with free alternation between analysis, design and
implementation. The Mjølner System supports Rapid Application
Development including initial prototyping, object-oriented modeling
and design, implementation, documentation and development of full
applications. The Mjølner System makes it easy to alternate between
analysis, design and implementation. RAD with The Mjølner System
includes UML-based design diagrams, GUI construction, and
implementation.
Multiplatform Development
The same source code can be used on Windows 95/98/2000, Windows NT, UNIX and
Macintosh. Multiplatform development includes: a common object format
for persistent objects, heterogeneous object distribution,
cross-platform development, and platform independent GUI framework.
Only one Language for Design and Implementation
The Mjølner System provides a modern object-oriented language, BETA,
which is a design language as well as an implementation language. BETA
has a graphical notation based on the Unified Modeling Language (UML)
for describing object-oriented design diagrams. BETA has also a
textual syntax for describing implementations. The underlying concepts
are the same. BETA unifies class, procedure, generic class, process,
exception, etc. into one abstraction mechanism, the pattern.
|
class |
procedure |
generic class |
process |
exception |
pattern |
|
|
|
|
|
subpattern |
|
|
|
|
|
virtual pattern |
|
|
|
|
|
pattern variable |
|
|
|
|
|
nested pattern |
|
|
|
|
|
Some of the advantages of the unified pattern concept are: In addition
to class inheritance, subpatterns give method and process
inheritance. Virtual methods are supported by virtual patterns which
in addition support genericity (templates) without a special
concept. Nested patterns are useful for structuring large frameworks
with hierarchical structures. No special construct for exceptions.
Concurrent Objects
BETA has builtin concurrency in the form of active objects. The basic
synchronization mechanism is the semaphore, but BETA's powerful
abstraction mechanisms make it easy to define high-level concurrency
abstractions on top of semaphores. The Mjølner System libraries
contain a number of such abstractions, including monitors, and
rendezvous-based synchronization.
Objects can be distributed in a network. Access to distributed objects
is transparent and looks the same as for local objects. A proxy
mechanism forwards remote method invocations. Client/server
applications are supported, and an object can at the same time be a
client as well as a server. It is easy to make distributed
applications in a network of UNIX, Windows PC's and Macintosh
computers.
Any BETA object may be saved in a persistent store. Persistence is
type orthogonal. When an object is saved, all objects reachable from
that object are also saved. Similarly when an object is read, all
objects reachable from that object are also read by need.
Mjølner integrates a number of tools:
- Freja - The Mjølner CASE Tool
Freja supports the UML-based syntax for BETA. Freja has incremental
code generation and incremental reverse engineering. This is achieved
without destroying the overview of the code with internal technical
comments. Changes in the design are immediately reflected in the code
and vice versa. Freja makes it easy to alternate between design and
implementation.
- Sif: Source Browser and Editor
Using abstract presentation and semantic browsing Sif provides good
overview of libraries, and frameworks including your own design and
code. Sif is a structure editor. It always operates on syntactically
complete structures. Sif prevents syntax errors and has powerful
operations for modifying even large pieces of code. The need for
scrolling is reduced, making it easy to select large structures not
fitting into a window.
- Frigg: Interface Builder
Frigg supports construction of graphical user interfaces in a direct
manipulation graphical editor with automatic incremental code
generation. The developer can alternate between working on the user
interface and coding the underlying functionality. Due to reverse
engineering the user interface can be changed in the graphical editor
throughout the whole process.
- Valhalla: Source Level Debugger
Valhalla supports breakpoints, single stepping, tracing, object
inspection, stack inspection, code inspection, source browsing,
etc. The accompanying objectbrowser can be used to inspect objects in
a persistent store.
- Efficient Compiler
The Mjølner System includes an efficient compiler that implements BETA
using native machine code, automatic memory management with generation
based scavenging, separate compilation, and configuration control - no
makefiles needed. Class libraries and frameworks
Lidskjalv makes it easy to construct advanced graphical user
interfaces. Lidskjalv is platform independent meaning that a user
interface developed on one platform can easily be ported to another
platform. The look-and-feel of a user interface will be that of the
respective platform.
Bifrost is a platform-independent object-oriented Stencil & Paint
imaging model, for construction of advanced, interactive drawings,
using e.g. Bezier splines, colors, fonts, and pictures. Drawings can
be saved and restored using Encapsulated PostScript.
The basic libraries of The Mjølner System include classic data
structures such as text, file, container, list, set, and hashtable.
Yggdrasil provides a well-defined interface for manipulating programs
as data. The metaprogramming system provides general grammarbased
tools, including an LALR(1) parser generator and adaptive pretty
printer.
External Interfaces
BETA has a general interface to external languages such as C making it
easy to call C functions and provide BETA patterns as callback
functions to C. The libraries include interfaces to the underlying
operating systems.
Teaching of object-oriented software construction should be based on
state of the art programming languages and tools. The Mjølner System
provides a complete solution for teaching object-orientation. The
Mjølner System has successfully been used for introductory
programming, programming in the large, software engineering,
distributed computing, and persistent data modeling.
More Information
If you are interested in a more elaborate introduction to the
Mjølner System, please read the various
Mjølner System tutorials.
Mjølner is the name of the hammer of the god Thor. According to
the mythology, this hammer is the perfect tool that cannot fail,
grows with the task, and always comes back in the hand of Thor.