BA Tutorial

March 21, 1999 - Jack Harich - Go Back

(Document Status - In progress)

The BA is not OO, it is not Java, it is not an IDE. What is it?

The Bean Assembler is an infinitely extensible framework for rapidly assemblying systems from reusable parts.


Dramatic Overview

The BA is a dramatically new way of development, completely different from traditional methods. See the Corporate Perspective for a high level introduction. Be sure to memorize the Conceptual Model above. The BA has been called "A Framework for Frameworks." I first heard this term from Mark Lilywhite and then Christian Cryder.

As you study the BA, you will probably rise through several levels of understanding:

  1. First, you will see that it is Part Centric. All we do is assemble systems from reusable parts.
  2. Then you will understand the parts are reused by initializing them with Declarative Knowledge.
  3. Next, it will become apparent that Plugpoint Frameworks are required to do this.
  4. A 1000 watt light bulb will turn on when you realize that beneath all these Plugpoint Frameworks is a small, powerful but simple, Plugpoint Framework that serves as the starting point for all other frameworks. This is the BA Microkernel.
  5. Sooner or later you will transcend thinking procedurally, and think of systems as massive collections of collaborating parts, most of which you have no idea of how they work inside. You are now Thinking in Parts.
  6. As the visual tools and Part Shop inventories mature, and you do many systems, you will see whole new types of products that you could not consider before, because they took too long to create, or they were not dynamic enough, or you had hit the wall on system complexity, or it was too expensive to write so much new code, or you had trouble coordinating so many contributors, or you kept having to start over as products aged, or you had trouble getting so many good developers, etc. You see systems and products, not pieces and tools. To you software is just a flow of user intentions into assembled systems. Congratulations. You have transcended code and parts, and are now Thinking As A System Assembler. Don't bliss out when you get there. :-)


Simple Practice System Without BA

See this link.


Super Cool Practice System with BA

People learn best by doing and understanding what they are doing. Therefore we are going to build a Super Cool Practice System one understandable step at a time. Time to have some fun!!!

We will be building an "AutoTest" system. It automatically tests another system and is designed to become a Full Regression Test. It can also handle Unit Tests, do impressive system demos, or even support online help by showing a user how to do something in slow motion. AutoTest automagically simulates user events in the User Interface of systems using the Modular Screen Subsystem (MSS). It's really cool to watch it run, since it looks like an invisible user is clicking links, buttons and entering text. We frequently stand around watching AutoTest run, laughing and cracking our best and worst jokes....

This exercise:


Eye Opener Practice Lessons

AutoTest System Tree

Root Marker Class
....MessageRouter (Message Service)
....MainWindow
....Mediator (has window, registry)
....TestRegistry (has TestContext)
........Test1
........Test2
........Test3
....TestContext
....Services
........SystemMessageSender
........CommandSender (in awt thread)
........TextLogger (to text file)
------ Primordial Invocations ------
Mediator.start()
For those already somewhat familiar with the BA, here's the AutoTest System Tree we will be building. Note you can design many systems this way and skip traditional Object Diagrams. This System Tree is the actual model used for designing this tutorial. Why do it the old way when there's a better way?

Start thinking in terms of System Trees.

The Mediator part is custom, using lots of custom code. All other parts are reusable, and could have been plucked from the Part Shop. In a second iteration the Mediator could probably be designed as a group of DK driven reusable parts, which is how reusable part libraries are built.

Please understand the entire system is assembled with no code except for the Mediator. This illustrates the awesome potential of the BA - Building systems with parts and DK, not gobs of code.

The following lessons must be done in sequence because each builds on the previous lesson. Each lesson opens your eager little skeptical eyes to some Key BA Concepts, we promise! :-). Notice how we start with a small system and keep adding parts for more functionality. This is exactly how real BA systems are built, in a long series of iterations. You start with something and just keep snapping parts in....


Lesson 1 - The smallest possible BA system, prints "Hello World", has a single Test1 part.
Concepts - System Marker Class, How to Start a System, Primordial Invocations, System Tree

Lesson 2 - Add Test2 part with "Hello There" supplied with config line.
Concepts - ConfigLines, DK Editor (aka Param Editor)

Lesson 3 - Add Test3 part with "Hello World" stored as Declarative Knowledge.
Concepts - Declarative Knowledge, Datatron, Param Datatron

Lesson 4 - Add TextContext, add setTextContext() to each test.
Concepts - Establishing Part Relationships

Lesson 5 - Add TestRegistry that contains the above 3 parts which implement Test interface.
Concepts - Part Registry, Interface, Polymorphism

Lesson 6 - Put Test parts in subdirectory, showing how systems can branch.
Concepts - System Hierarchy, Container Services

Lesson 7 - Add Mediator, has TestRegistry, starts the system.
Concepts - Part Relationships, Mediator Pattern

Lesson 8 - Add MessageRouter, mod Mediator and TestRegistry to use router.
Concepts - Messages, Anonymous Collaboration, Message Service

Lesson 9 - Add MainWindow, uses Data Framework.
Concepts - Framework Reuse, Complex DK

Lesson 10 - Add TextLogger, logs test results to a text file.
Concepts - Part Reuse, Service Architecture, Branch Auto Start

Lesson 11 - Add CommandSender, sends command Param to system being tested. Modify tests?
Concepts - Inter System Collaboration

Lesson 12 - Add SystemMessageSender by breaking up CommandSender.
Concepts - Continuous Improvement, Part Splitting, High Quality Parts

Congratulations, you're done. You're now ready for How to Create BA Plugpoint Frameworks. This uses a lot of the same stuff we've been covering here, MSS and AutoTest.

See (*** do document as we go) Glossary of BA Terms for further illumination.