Development Workflow
This page shows a small demo of the develoment workflow for a little application. Everything we show here is based on our current development prototype.
The following example builds a small course organizer for instructors. She has the ability to manage
- term,
- students,
- labs,
- tests, and
- scores.
First, create a Module that will hold all kinds of classes, properties, UI-elements, logic, and everything else necessary to implement the application.
Next the classes can be modelled:
ClassName is the C# name of the class, TableName the name of the database table. The namespace is set by virtue of being a member of the CourseOrganiser module.
A term has the CourseName, an enumeration denoting summer or winter term, as well as the year (2009, in this case). The next screenshots show the creation of the CourseName property.
Since all properties are mandatory, they are all marked with a NotNullableConstraint“:
The other classes, properties, and constraints are added similarily.
After creating all classes and value-properties, the classes can be linked together to form the final object model:
- students take part in one or more terms
- students take part in zero or more labs
- students take zero or more tests
- labs are held in a specific term
- tests are held in a specific term
To link students and term, one can use the “Add Relation” button on one of the classes:

The other class has to be filled in:

“Separate” storage and a “ZeroOrMore” multiplicity already suggest that this is a n:m relation, that will be stored in a separate weak identity.
To be able to access this lists, we chose to “Create Navigator” on both relation ends:
Since the relation was already finished, the object list properties are automatically filled with sensible defaults.
After entering all relations, we generate the new classes. Currently there is no GUI for that. The !PublishAllUI.cmd in the repository contains all necessary invocations:


The cmd-file executes the following steps:
- generate and compile the data access layer
- upgrade the database to the new schema, thereby creating all necessary tables and keys
- export the new schema information into the
database.xmlwhich can be used for source control and/or deployment
Since the database is exported into the database.xml, it can be easily put under version control. This enables cooperation in teams without the risks and overhead of working on the same database. The format is robust enough that standard merge tools can be used to combine parallel changes from different parts of the database.
Now the new classes and tables are generated:
Also, the user interface has gained new capabilities:

















