MSS Code Factory 2.7: Documentation

# MSS Code Factory: A Fractal Programming System

Prev | Documentation Home | Next

## About MSS Code Factory

MSS Code Factory is a model-to-source code manufacturing tool designed to capture a knowledge engineer's (i.e. programmer's) coding architecture and style through a General Expansion Language (GEL) XML syntax.

It produces a Java 9 Object-Relational Management caching architecture with pluggable persistent storage to DB/2 LUW, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, and SAP/Sybase ASE databases, as well as an in-memory RAM repository.

It also produces a structured SAX XML parser for loading databases, and an X(ml)Msg implementation for client-server communications.

It produces an XMsgSrv WAR file and an SM (Security Manager) WAR file for deployment to unsecured and HTTPS-secured web servers, respectively.

Note that the security implemented over the HTTP connection requires that you have the unlimited strength cryptography installed on both your client and your server. I'm not interested in "watering down" security for anyone.

Development of a C++14 implementation targetting 64-bit Debian platforms is also in progress, though that effort may take a couple of years. The goal is to deploy C++14 servers with a mix of Java and C++14 clients. At some point in the future, the client code might be ported to Android as well, if g++ is used to target the ARM64 platforms.

### Where to get MSS Code Factory

MSS Code Factory is hosted for downloads by SourceForge.net.

The GitHub.com source repositories are all located at https://github.com/msobkow.

I find the combination a handy way of getting source and builds out the door.

### What is "A Fractal Programming System"?

MSS Code Factory is what I call a "Fractal Programming" system. It uses a rule base to specify a code fractal with mathematical precision, that is expanded based on those rules to produce predictable code.

It is also a self-maintaining system, in that its intial core focus was to create an expert system that would author domain-specific expert systems recursively.

Each generation "breeds" the next by writing the bulk of it. There have been 8 generations of the tool to get to this point (1.1, 1.3, 1.5, 2.1, 2.3, 2.5, 2.7., and now 2.9) Even numbered releases are for internal use and are not considered full generations.

### What is it like to work with an infinite team of junior coders?

When I work with MSS Code Factory on the rule base for producing applications, it is just like working with an infinite team of junior coders, all just waiting to implement whatever change I've made to the project "templates" (rules), and delivering the results in mere minutes.

It takes far, far longer to build and test the resulting code than it does to produce the code in the first place.

### What MSS Code Factory does for you...

By using MSS Code Factory, your projects will see:

- Improved delivery time. No one can edit a few thousand objects as fast as you can with this tool. No one. It's physically impossible for human developers to type fast enough, no matter how many offshore juniors you can afford to hire.
- Reduced development costs. As the rulebases grow and are extended, more and more application code becomes automated and a fixed per-enterprise lease becomes a negligable cost.
- Consistent modelling. The tool uses an XML-based application model, forcing the business developer to think in object-relational mapping terms as the core of their business modelling efforts. You can easily write an XML parser that will allow you to import the model to your own modelling tools, or you can follow the GPLv3 and use the existing MSS Code Factory code base.
- Reduced testing costs. As the rulesets are exercised and stabilized, there will be no further need to test new application objects that are added to the model, because they follow the same patterns as the objects created and tested in the past.
- Support your ISO9000 and Six Sigma efforts by developing your own extensions to the rule base. The transformation from model to code is encapsulated by an ever-growing rule base, with constant feedback to correct any defects in the manufactured code. The system learns not to repeat the same mistake, improving not only your current applications, but all future applications.

### Licensing, the GPLv3, and Apache V2 core code freedoms

All of the 2.9 and 2.10 projects are now under an Apache V2 license so that you can incorporate and extend them as part of your project models.

You must be compliant with Apache V2 requirements. You are not allowed to use the GPLv2 with manufactured code, because it is incompatible with the Apache V2 license. GPLv3 is compatible as I understand it.

#### Projects under the Apache V2 license, for reference/import by any project

CFSecurity (Security base is included by all projects at a minimum)

CFInternet (A structured internet object hierarchy specifically designed for model ownerships)

CFCrm (Customer Resource Management -- an address book/information database)

CFAccounting (A primitive accounting system with atomic server-side transactions)

CFAsterisk (A configuration database for Asterisk which can be used to serve up configurations to an Asterisk server, with some work, of course)

CFBam (The Business Application Model for MSS Code Factory itself)

CFDbTest (A test database used to exercise the data types manufactured by the factory)

CFEng (An english-language sytax parsing database)

MarkII (An experimental chat bot that responds with posts selected from an imported Facebook history directory tree.)

CFFreeSwitch (A configuration database for FreeSwitch which can be used to serve up configurations to a FreeSwitch server, with some work, of course)

CFUniverse (A universal C++14 server that incorporates all of the above projects except CFDbTest.)

CFLib (the core library used by all applications)

CFCore (the core library of the engine itself, required for builds, but only required by projects if you use the manufactured msscf package to run a GEL instance over your model to convert model elements to text.)