Object-Oriented Model Driven Development  made easier


What is Constructor/MDRAD?

Constructor/MDRAD is a toolkit integrated to the Visual Studio 2002, 2003, 2005 or 2008 IDE. It lets you build a set of classes that closely follow your database schema, and provides an extensive API giving you full CRUD (Create, Read, Update, Delete) functionality at run time, without the need to write or hard-code any SQL statements.

The Object Run Time assemblies handle data inheritance, one-to-one, one-to-many and many-to-many relationships. Data is automatically lazy-filled when relationship paths are navigated (e.g. by requesting Customer.Orders) and object queries provide a way to retrieve data base on specific criteria.

How does it do that?

Constructor/MDRAD  is a developer productivity tool, using a 'Model' to describe business entities (a network of related objects). The Model is either created from scratch, or by reverse-engineering a database schema or XML Schema. You can even build up a library of Models and use parts of these to create new Models. The Model can be extended so that it does not have to simply reflect a database mapping on a one-one basis. The primary view uses a familiar tree view to visualize the Model and there is one simple option to create Class Diagrams (a graphical view of related objects) that you can use if desired. The Model is UML based but don't worry, it's jargon-free and very easy to use.

Once you have defined a Model, you use the toolkit to transform it into a .NET assembly - we call this a Run Time Model - which you can program against and deploy along with the other assemblies for your application.

Why would I need it? 

Creating basic forms with one or two data sources is easy to do. But development of fully fledged applications with possibly hundreds of underlying tables and their data relationships is a much different story. There's all the SQL statements. Then all the code to manipulate the data. Add rules and validation. And the not so small matter of tying it all up in a set of forms. Then you need to document the design so the next guy can take over and to ensure everyone who matters knows how the system fits together, so the application can be maintained and enhanced (this includes you 6 months later).

How does a Model help?

The Model effectively describes the objects and their relationships, reducing the need for separate documentation. The Model also allows you to define and generate code properties and methods that allow you to extend the run time functionality of your objects. And the Model can apply changes in the defined structure to your database to speed up deployment. Our Model is based on a design ratified by the Object Management Group (see Model Driven Architecture).

Name some benefits...

You can create a Model by reverse-engineering a database schema, or create one from scratch (perhaps using our Model Repository feature). You can generate C# or VB code from the Model so you can extend run time functionality. You can code against 'non-persistent' attributes you define in the Model but that do not need to exist in the database. You can create a database schema from the Model (or synchronize one with changes made). You no longer need to write data access code, object layers and complex SQL statements. The built in Object Relational Mapper handles data access for you and has an extensive API to handles rules, validation, data inheritance, many to many relationships, import/export of objects, provision of data to report engines, object rollback and much more. 

I need more...

How about a database schema compare tool, an event hook component to allow you to centralize and rationalize UI code, components and controls to provide datasources based on a Model, design-time UI helpers to hasten form creation, a unique 'Context View' model and code layer to allow you to extend or restrict core classes, a Model Browser to help you build new models from existing libraries, and a Standalone Model Editor to use outside of Visual Studio so that non-programmers can view and edit models.

I'm not moving over to the latest Visual Studio .NET yet - can I use it with an earlier version?

Constructor/MDRAD integrates with Visual Studio 2002, 2003, 2005 and 2008. Better yet, you get 2005/2008-like data source features within 2002/2003 to assist you in creating a data-driven User Interface more quickly.

Can I use it with Third Party UI controls?

Yes - you can just databind to controls as normal. Or and you can define simple XML templates to help you define styles and set properties at design time, when you use the Constructor/MDRAD UI generation utility. You can build up a library of templates and just drag and drop next time to replicate all your preferred look and feel in another form.

I am not into UML and want to get on with programming rather than learning theory.

You will be using a minimum of modeling terminology. The Constructor/MDRAD Objecteer (model editor) is easy to learn and use and will help you define your data classes. Not only that, but the data mappings are done for you, and you can generate C# or VB.NET code modules to add your own business logic.

It's a pain when the model goes out of sync with the database schema, isn't it?

There is a database schema synchronization feature - and you can reverse-engineer a database schema in order to create a new Constructor/MDRAD model. You can create data-driven forms in a few minutes and prototype your data.

Does it help me with SQL statements in terms of querying and updating the database?

The Object Relational Mapping and Data Access layer built in to Constructor/MDRAD creates the SQL statements dynamically based on the class definitions in your model. You can use Stored Procedures to query and update data if you prefer. Data is 'lazy-filled' in order to only retrieve the data you want to view/amend. You can track the SQL generated statements. Many-to-many relationships and data inheritance are catered for.

I don't really want to have to change my whole development style. I like the 'agile' approach.

Constructor/MDRAD makes it much easier to create a set of classes with which you wish to access your data. The Model becomes a valuable document and lets you see how all your classes inter-relate. Automatic mappings mean it is easier to make changes and sync the database schema. And dynamic code generation means you can keep the overall lines of code down to a minimum - you simply generate code where you want to add logic of your own. Other than that you can develop as you wish.

These lifecycle toolkits are way too expensive.

With its very competitive pricing, Constructor/MDRAD will fit into practically any budget. And it includes a Database Comparison Utility, Model Browser, UI Event Redirector, Model Editor, ORM/Data Access Layer and API. Add to that the ability to save up to 50% of development time, and you can see the real developer/business value for money proposition that Constructor/MDRAD puts forward.

What about support and run time costs?

The toolkit provides a royalty-free Object Relational Mapping and Data Access component for your deployment. Support is priced competitively and is optional. We endeavour to answer all queries promptly.