Bean Assembler - Original Spec

December 3, 1998 - Jack Harich - Document Map

Nutshell Vision

The Bean Assembler (BA) assembles Java beans into a system using visual tools and no code. It uses parameters (what to do) instead of code (how to do it). The parameters are saved to store a system and loaded (incrementally) to initialize the system. This is done completely transparently to the developer. The BA is an Integrated Assembly Environment (IAE), not an IDE.

(This is the original spec. Note a bit of deviation from what we currently have.)

A system is developed by visually assembling beans into modules, and these modules into a hierarchical tree. Detailed bean behavior is expressed by setting properties and invoking methods. The BA tracks these user gestures and retains them as configuration parameters. This occurs while the system is running. Gone is the design/runtime dichotomy. Since the parameters are text, not code, they can easily be modified while the system is running.

Modules contain beans and/or modules. Modules are reusable. A module's contents can be visually displayed and manipulated in an icon diagram, much like a modelling tool.

Beans are standard per the Java bean spec. There are no special requirements of any kind, allowing the BA to use any bean. A bean may use module services by implementing a particular interface. If special logic is needed that cannot be expressed via properties or module configuration, then a bean must be modified or created using code. This is not done in the BA, which draws a line in the sand between bean development and assembly.

The BA addresses the need to build and modify complex systems from reusable components. 10% of such systems are the GUI, 10% are persistence related, 10% are middleware related and 70% is generally business logic. The business logic category is not adequately addressed by current IDEs, but is where large or complex systems need help the most.

The main visual tools are:

Anticipated benefits are:


Background

Lo and behold, it seems that the practice and useful utilities Jack has developed, when put together, form the basic elements needed. This was a surprise. Due to having already built these first versions, we have confidence that discovery will be minmal when the BA's elements are built. An exception is orthogonal connectors, which we will not use initially.

The first version utilities we have are:


Features


Issue - The Software Assembly Paradigm

Using composition, relationships and properties of components to define an entire system is foreign to most developers. Thus the BA may meet with low interest. But this is the future of software development, better called software assembly. To illustrate, here's a story from ComputerWorld, December 1, 1997, page 55. I've summarized and reworded it.

Rocketdyne Technical Servies in Maui operates a space surveillance system for the U. S. Air Force. They track the 8,000 or so celestial bodies, spacecraft and debris that affects mission planning in the Hawaiian area. They needed some serious telescope tracking software, so they put out bids for the sofware project.

The bids came in averaging $150,000, with one at $200,000. There was one exception, at an incredibly low $500. Believe it or not, the $500 bid was accepted, the project was completed successfully, and Rocketdyne is very pleased. How did they do it? Reusable components. To quote the system manager, Daron Hishimoto, "I've never seen a system that had so much capability using software off the shelf. This is really high-grade, low cost. I've never seen anything like it."

The source was Software Bisque, who provides tracking software for amateur astronomers. They're a family business of four brothers. Two are developers and two are astronomers. The kicker? Software Bisque is providing upgrades to Rocketdyne for $99. :-)

This is the future of software.... (BTW, I was amazed too - JH)


Issue - No or Trivial Example Systems

Another problem we may face is sure, we've got a nice little Java Bean Assembler, but developers have no confidence it's useful, since no significant systems have been built with it, and it comes with no significant examples.

I'm not sure how to address this one - JH


Issue - The BA Doesn't Do Everything Syndrome

Many developers have used IDEs or tool suites, and have come to expect their main tool to "have everything". The BA is deliberately designed to not "have everything". Like a good class, it does one thing and does it well - stitching together existing components into useful systems.

Other than education or success examples I'm not sure how to address this one - JH


Issue - The BA Is Not Much Different From An IDE

Actually IDEs use code instead of parameters to accomplish the same thing. They also allow the developer to express logic that cannot be expressed in parameters. Once could easily argue that IDEs are more powerful and more useful that the BA.

There are major differences. The BA: