Software Amanuensis with VisualBRON
Amanuensis - a person employed to write what another dictates or to copy or to translate what has been written by another.
Software Amanuensis - a package employed to write code that an architect dictates or to emulate software patterns written by another.
The Philosophy
We'd like to have a method of getting an architectural idea, from the mind of the architect, into a design tool in the quickest and easiest possible way without compromising the validity of the design.
On a system wide, module or sub module basis, we need to be able to perform a set of definition tasks, quickly, easily and efficiently - defining sets of ...
- annotations and notation categories
- design objects
- synchronous interfaces, methods and data sources and sinks
- asynchronous interfaces, protocols
- constant, enumerations and established values for the system
- data tables - with fixed and derived values
Then down to ...
- design notes
- signals that make up a protocol and their parameters
- object longevity, allocation strategy and deployment
- object fields, references, methods and their parameters, default values and procedure
- object states, stateless procedures, state based procedures
and so on ... until an entire design is captured, but at every stage there should be a framework that designers of other parts of the system can rely upon in their design.
A design should be completed in an iterative manner, with a continuous stream of small cycles of refinement.
By capturing enough information, structured in the correct manner, it should be possible to present a team of software writers a design that they can code from and with enough information, ie a complete design, it should be possible to generate the code entirely.
The Good Bit
Once you're done, you can change the flavour of the code at the push of a button ... the code can be generated as monolithic, or threaded ( vertically - as with SMP Linux and pthreads, where a task becomes the unit of division ) or better still threaded ( horizontally - where the handling of individual messages is the subdivision ) and all this can be done with no modification to the code base. No messing around with division of labour on threads, no playing with locks, mutexes and semaphores ... it just does it, automatically! It makes the distribution of your design onto the latest multicore processors efficient and as simple as child's play.
The Practice
To see how .... click here ... SoftwareAmanuensis
