addressalign-toparrow-leftarrow-rightbackbellblockcalendarcameraccwcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-checkcircle-with-crosscircle-with-pluscrossdots-three-verticaleditemptyheartexporteye-with-lineeyefacebookfolderfullheartglobegmailgooglegroupshelp-with-circleimageimagesinstagramlinklocation-pinm-swarmSearchmailmessagesminusmoremuplabelShape 3 + Rectangle 1ShapeoutlookpersonJoin Group on CardStartprice-ribbonShapeShapeShapeShapeImported LayersImported LayersImported Layersshieldstartickettrashtriangle-downtriangle-uptwitteruserwarningyahoo

Exploring Object Role Modeling In Domain-Driven Design


Some time ago, Stephen Forte gave a presentation on the M language and Quadrant tool at a NY .NET User Group meet up.  During the presentation Stephen mentioned, correctly, that one of the most important features of any well-designed application is the database behind it; however, taking the users' requirements and turning them into a proper 3rd normalized form didn't always capture the users' needs.  M and Quadrant were meant to help solve this problem, among many others, in revolutionary, not evolutionary ways, but somewhere along the line the train came off the tracks, and the promise of M and Quadrant vanished.

Stephen Bohlen presented at an Agile FireStarter and defined Agile as a method that aims to keep things in flux right up until the end.  It may seem counter-intuitive, but instead of trying to figure out all the requirements up-front, beginning development, and finally and inevitably having to start over because the user changed his/her mind, we can develop the application a little bit at a time, each time adding to and/or modifying what we had before, most likely using a code-first approach. 

That said, using NORMA (an Object Role Modeling tool) would prevent the project from being in flux, at all, and gets to where M and Quadrant were meant to be.  It does this because it eliminates the impedance mismatch between user and developer, requirement and code that exists when using a code-first approach or when turning requirements into database objects in isolation.  It allows the business user to create and fine-tune an abstract model to match their business needs exactly, using the English language, up-front.  That abstract model can be instantly shaped into UML models of tables in 3rd normalized form and can be instantly turned into DDL, which can be copied and pasted into a SQL based database system.  More importantly, that same abstract model defines exactly the shape of the classes needed by the application.  Whether you are a developer describing your code, a database developer describing the schema, or a business person describing your requirements, each of your descriptions of the requirement would be identical.

About the Speaker

Ashraf Kharrubi is an application developer in New York City with twenty years of experience developing applications in the investment banking, healthcare, and online publishing sectors.  Over the course of his career he has taught himself dBase, FoxPro, Visual Basic, and C#, attaining the Microsoft Certified Solution Developer (MCSD.NET) certification in C# in the process.  Currently, he specializes in PowerShell, SQL Server, C#, andVB.NET, he has begun to teach himself F#.  Ashraf is also a soccer fanatic, supporting Arsenal football club in the English Premier League.


Join or login to comment.

21 went

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy