The Model Driven Software Network

Raise your level of abstraction

Hello everybody,

just joined MDSN, looks like a lot of useful reading available.

Short self-introduction:

Computer science major, 20 years ago got into developing quite a few data-driven Applications with similar scenario, like:

one or more Enterprise data structures defined (branch, department,..., employee) and/or (warehouse, block,..., part) and/or (lists of processes, remunerations, customers, etc) which are were kept in the Database tables. There are CRUD operations defined on those related tables and there were some domain-specific operations too. Plus various reports. Pretty common and usual stuff.

I started with some generalization attempts: a business object consists of data container(a DB table), view(s) and form(s) and relations to other objects. It all could be expressed in plain text. CRUD operations could be executed in precompiled code - no actual generation here. UI of an object was interpreted by pre-written code again - no code generation here either. Relations one-to-many and many-to-many were again interpreted by run-time. Only custom logic has to be manually coded. So that how it started. I could elaborate if needed.

That approach evolved into something I cannot categorize and I'm looking for help and opinions here.

Today the highest level of  abstraction is the same: a business object is a table, plus UI(s), plus CRUD operations, plus objects relations, plus API to implement custom Data processing. An application is a set of such objects and it is most likely might be expressed in UML or such. Although it is not.

There was some custom language before, today an App definition is hidden behind objects' Visual Properties Manager(s). An App definition contained in the Relational DB as set of text-based objects' definitions. There is a server side code waiting for client code to connect. That is how it works.

The client supplies credentials and if valid, receives back from the server an "entry" object's definition from the Database - usually the Main Menu (a table). The client interprets that definition and creates UI. Human user make a gesture (keyboard or mouse, touch interface is not supported yet) and activates one of that Menu's links. Another object loaded from the server and so on. Menus are immutable objects - they are easy. When mutable table loaded from the server, both a client(grids, views, forms) and a server(sessions, locks) support CRUD and custom operations (e.g. delete every odd record in the table) in ACID fashion. All clients are synchronized real-time - means all the content changes instantly propagated to all relevant sessions. There is a gesture language to visually define parameters of complex requests. SQL gets generated and executed by the server part and results passed to relevant client/sessions. There is Java API (architecture is language agnostic) which used on loaded objects on the client side only (!) by mimicking human gestures: "load object"/"edit object" and so on. The server is never restarted.

The client part contains Properties Manager code, which allows to define new objects and redefine new ones without leaving a live Application. Team development welcome.

There are client side processors which allows to link a table cell to Images, PDFs, some HTML. More processors - more data types could be supported. At last there are pure UI objects - with no data containers defined. They work pretty much like Java Canvas. After being loaded they call user code, which has access to other objects in the Database. That allows to create UIs beyond grids and forms - up to multiplayer games - with custom programming sure.

That thingy works in production environment for 3 years now. It is extremely productive and helpful. But I'm struggling to classify it. What is it? RAD RIA tool? It does generates some SQL, it allows live Apps design like Web CMSs, it is based on generalization of an SQL table... I'm more experimenting practitioner then academician.

Please help me define what that Datalator thing is. And what place could it hope to find in the computing world. Would be much obliged for reviews and opinions. Sorry for hasty prepared story.

The site where I try to describe/market the Datalator is well, www.datalator.com aka www.fancydata.com aka www.moderngroupware.com.

I'm no good with web sites, forgive me. Please comment.

Views: 1592

Reply to This

Replies to This Discussion

Here is my take on ""scaling" is enough?" - at the time it looked like enough. From the "astronaut view" you could see all your code as a few megacities (projects?) with roads-interfaces, from the "plane view" your could see blocks of the city - libraries/packages, as a bird you'd see neighbourhoods-classes and on the gound you could see directives and data variables. With 2 way fully defined precise conversion - softscape to code and code back to softscape. And now one could speculate further: not just static visualizing, but peasants-coders (pictos) working on the streets, foremen-team leaders watching them closely and up above the Big Guy - manger (in helo?) dropping cheerful memos. And sending big dozers to level the gound for new projects. Like in a multiplayer shooter.
VRML engines were pretty heavy in 90s - so I did a simple 2,5D visualizer to play with. What I can tell - the effect was like of a first "3D" Doom-game. We humans are 3D creatures, we do operate to some extent with text based abstractions, but we are genetically hardwired to work with 3D scenes. I did remember every turn and every shade in Doom's labyrinths... the same effect in software scapes.
I did not find a good metaphor for OO inheritance (floors-subfloors ?) and that simulator was in action for a few month. So there is no proof, only assumptions. I was going to save it for myself - to enjoy building it some day - but... getting older... you know, time flies... probably a good time to start sharing it :-)
Techically - not very complex. Sid Meyer "Civilization" might be a good prototype. Will it be a plug-in for Eclipse? or IntelliJ? NetBeans? - sorry, not just Java - it is language agnostic... I can build real-time source sharing repository on my engine pretty fast. Might look like a few big screens with conventional IDE on one and synchronized "bird views" on others. You get the picture. That's what I'm into.
Thank you. Talk to you.
 

Alex, that looks a lot like CodeCity.

Thanks Rafael, very interesting.

I guess I like "EvoSpaces" even better http://www.inf.usi.ch/projects/evospaces/tool/evospaces_demo.avi

That is one nice visialization tool. The approach of my experiment were different though:

CodeCity/EvoSpaces more aimed on analysis of already created source, I'd use such an

environment to actually do coding... source to 3D conversion(or 3D to source) must be just a click away. The biggest problem I've got into when trying to implement such an environment is the visual methaphor for representing both algorithms and  data structures conviniently. I think I found one nice approximation, but... have no implementation so far... was not lucky to be discovered by Hasler Foundation (www.haslerstiftung.ch) which supported CodeCity and EvoSpaces :-(

When I have something to show - I will report here :-) Thank you for the link, nice to know somebody else researching the possible paradigm shift in software making.

RSS

Badge

Loading…

© 2019   Created by Mark Dalgarno.   Powered by

Badges  |  Report an Issue  |  Terms of Service