ORM-ish à la TiddlyWiki
I had the most interesting thought a couple of weeks ago:
What if TiddlyWiki could be used to document the semantics of a universe of discourse with simple facts expressed in natural language, which TiddlyWiki could, via macros, automagically generate:
- Plain text language scripts as input to tools that can generate software and/or database modelling diagrams (for example: PlantUML)
- Plain text language DDL scripts for database creation
- (i.e. forward engineering databases in the sense of "producing database-creation code from human-elaborated semantic documentation)
- Intertwingularity (to the max !!!)
- I am at my happiest when my mind is fully immersed in large and complex projects with deeply intertwingled information / thoughts / components / etc. etc.
- To me, every single thing is connected to everything else within only a few degrees of separation
- Wikis (in general)
- From the very moment I first learned about them, I immediately recognized the potential for wikis as easy, quick, inexpensive yet ridiculously powerful solutions for just about everything, including:
- Knowledge Management
- Content Management
- (Such an easy way to create an intranet!)
- Documentation Management
- (Documentation, not "documents"!!! A topic for some other day...)
- Since 1995, I've had the pleasure of maintaining and enhancing a very large suite of applications supporting functions related to the management of capital construction projects and to facilities management. For over fifteen years, I've used a wiki at work as a centralised/consolidated source for:
- software documentation
- end-user
- help desk
- operational support
- application development
- the coolest wiki use case:
context-sensitive help engine !!! - release management
- requirements management
- project management
- my own performance management
- TiddlyWiki (specifically !!!)
- I've always really enjoyed (fascinated with) any "diminutive" no fuss no muss (simple, light, inexpensive if not free) tool that humbly handles anything a creative imagination can throw at it.
- TiddlyWiki describes itself as "a non-linear personal web notebook." I agree with the description often put forward in the TiddlyWiki Google Group: TiddlyWiki is a platform for building solutions.
- Agile Modeling (AM) - Effective Practices for Modeling and Documentation
- (Copyright Scott W. Ambler)
- I have always been a huge fan of Scott Ambler's Agile Modelling methodology and the related values, principles, and practices since discovering and purchasing this book many moons ago. In particular, the practice "Single Source Information" permeates my mindset.
- Knowledge, Information, Content, Thoughts / Concepts
- (Related: Chunking)
- I believe well-organised text is much better than diagrams for communication and comprehension of information. Although proficient with many types of diagrams (ORM models, the gamut of UML models, Entity-Relationship models, mind/concept mapping models, etc.), I've always found diagrams less than stellar.
- Regardless, understanding the various information mapping approaches ("information mapping" in general, not the specific product) helps with hypertextual writing.
- An interesting reference that kind of explains what I've experienced: Diagram comprehension ability of college students in an introductory biology course
- I've always enjoyed Database Design and data modelling. Simply put: it is all about intertwingularity, all about organising information into entities and attributes and relationships. It is very good stuff.
- Using years of work experience with the Oracle Database product and applying that knowledge in this project, how cool is that?
- Object-Role Modelling (aka ORM) / Fully Communication Oriented Information Modelling (FCO-IM)
- Although I do not like diagrams, I do very much enjoy the use of natural language to describe (and validate) facts about a universe of discourse. I've found it so much easier to formulate and review simple/clear sentences with clients, and I've found it incredibly rewarding when the tool in use can take those sentences to forward engineer a database creation script.
- Gathering, discovering and organising requirements: YES!. Again, I find it all about intertwingularity, and there is so much intertwingularity in this project. For example: what types of things are needed to forward-engineer a database creation script? What requirements do we need regarding the process of gathering information about a universe of discourse?
- Planning? Just as I have never liked big requirements (or big design) up front, I have never liked big planning up front; so I approach the management of my work with no-nonsense philosophies / practices / principles to getting the job done quickly and successfully with all agile concepts, and related things such as: