SIRA_PRISE benefits and advantages

A new DBMS is not very useful unless it offers opportunities to its users that other DBMS's don't have. This section explains how two of SIRA_PRISE's main features can translate into very significant cost cutting for its users : its support for database constraints of arbitrary complexity and its support for temporal data. We also give an indication how these facts translate into figures.

Database constraints of arbitrary complexity

Unlike any other existing DBMS known today (*), SIRA_PRISE offers support for the functionality that is equivalent to the CREATE ASSERTION statement of the SQL standard. What this essentially means, is that SIRA_PRISE users no longer have any need for application-enforced integrity. You can declare just any constraint, and SIRA_PRISE will enforce for you that the data will never violate that constraint. No programmer has to write one single byte of code to achieve that. Meaning that you need less programmers to complete your projects. No programmer can still make any mistakes in writing all that application-enforced integrity code. Meaning that you need less testing effort to complete your projects. No testers can still make the human error of overlooking some test scenario that happened to have been needed to detect an error that was indeed present. Meaning that less errors will make it to the production stage of your application, meaning that your applications will become much more reliable and stable, and obviously also meaning you will need to spend less effort on bug fixing.

To illustrate the point, we refer to the AM4DP book mentioned in the introduction. That book provides a fully worked-out example of all the things it takes to bring database constraint validation inside an SQL DBMS, using the mechanism of triggers. A database constraint as simple as "each customer must have at least one address", imposed on a database with two relvars, customer and address, can easily grow several pages of code tall when implemented "the SQL way". In SIRA_PRISE, it's just a matter of declaring a formula as simple as "SEMIMINUS(CUSTOMER,ADDRESS)" as being a database constraint. The SQL way can take hours of work to get it right, certainly if you include the testing part, with SIRA_PRISE, you're done in a matter of seconds. To illustrate the point, below are two boxes showing the needed code to enforce some given constraint. The first box is "the SQL way", the second is "the SIRA_PRISE way".

(*) With the exception of Rel, which is also a fully-and-truly relational DBMS, but which we disregard here because unlike SIRA_PRISE, its main intended area of use is in educating the theory. SIRA_PRISE intends to turn that theory into practice.

Temporal data

The need to keep records of "history data" is visibly growing in the IT world. All over the world, database designers are ever more frequently confronted with the need for including history data in their databases. Everyone who has already tried this, knows that this is not a trivial thing to do using any of the SQL-based systems known today. And that is equally true of that "other" kind of history data, namely the history of which data have been recorded in our databases, "bitemporal" data, to name it by its hot-topic-of-the-moment name.

SIRA_PRISE makes life easier for the database designer by offering support for interval types, combined with support for a set of operators that is commonly known as "Allen's operators". The advantages that SIRA_PRISE has over SQL-based systems may often seem small, but they are so numerous that when taken together, there cannot be any doubt that technology such as SIRA_PRISE's cannot be missed when dealing with temporal data, as is illustrated by the following table, comparing the database design tasks involved in a few of the most common kind of requirements when dealing with temporal data :

Temporal data management feature. SIRA_PRISE SQL
Temporal keys to guarantee non-overlap of tuples. Declarative. Include the interval-typed attribute in the declared key and you're done. Procedural. Extra triggers have to be coded (or extra application checks have to be included in each application) to find any overlap. Only exception are the engines that already implement the temporal features of the new SQL:2011 standard. At the time of writing, the count of the engines known to do this is 1. Things will obviously be moving in this area.
Autopack ("temporal coalescing") of relations. Automatic. No code needed. Procedural. Extra triggers have to be coded to find rows that are "mergeable". And depending on the limitations imposed by the particular DBMS system of what and what cannot be done inside triggered code, it may even be simply impossible, pushing the implementation of the feature toward the application. The new SQL:2011 standard does not include such a feature either, so it is not unreasonable to expect that no industrial engine will include any such support in the short or mid-term future.
Temporal RI to guarantee the integrity of an FK throughout an entire period of time. Declarative just like any other database constraint. Procedural. Extra triggers have to be coded to look up the corresponding data, and verify the inclusion property of both time periods involved. Only exception are the engines that already implement the temporal features of the new SQL:2011 standard. At the time of writing, the count of the engines known to do this is 1. Things will obviously be moving in this area.

Getting from facts to figures : the business case

From the foregoing, it should be clear where the potential cost savings are : there are massive numbers of lines of code, that do need to be written down with currently available technology, but no longer need to be written down with SIRA_PRISE. But what does that mean of in terms of man-months, which is the same as talking in terms of hard cash ?

Following activities occur in any software development project : requirements analysis & high-level design, detailed design & coding & unit testing, acceptance testing & deployment (user training, installation, ...). Typical distribution of time spent on each could be something like 30% / 50% / 20%. In a hypothetical 50 man-month project P, this means : 15 man-months analysis & design, 25 man-months coding & unit testing, 10 man-months acceptance testing & deployment.

In the requirements analysis phase, it should be clear that SIRA_PRISE will make little difference. If you just don't understand your user, no DBMS can ever help you overcome that.

In the high-level design phase, SIRA_PRISE might help materialise some benefit, because of its much better and cleaner separation between logical and physical design. SIRA_PRISE allows you to specify a logical design, without forcing you to specify the physical design at the same time. So to a certain extent, SIRA_PRISE can also take on the role of "integrated database design tool", replacing whatever E-R tools (and workflows !) that you are using now for that purpose. These gains, if any, are however likely to be comparatively small (and at any rate, SIRA_PRISE certainly doesn't have a graphical component for visualising database designs). Little changes are to be expected for our 15 man-months analysis & design.

Intuitively, the same can be said for the acceptance testing & deployment phase. It would be curious if any DBMS had some quality that made the applications built atop that DBMS lend themselves better to user acceptance testing, let alone to user training of the new system ... So switching to SIRA_PRISE will not change anything to our 10 man-months of acceptance testing & deployment either.

But what about the other 25 man-months of coding & testing ? Most modern software applications are built according to some kind of multi-layer structure, usually consisting of at least a layer of UI code (the "presentation layer"), a business layer, and some kind of data access layer. Typical distribution of time spent on each could be something like 45% / 35% / 20%.

Of these, it will be intuitively clear that the least potential for cost savings are in the presentation layer. It is not a typical feature of DBMS's to help you design your user screens, your user reports, etc. etc.

Now what about the business layer ? The largest chunk of code in this layer concerns itself with the enforcement of business rules. As has already been established, SIRA_PRISE has the power to do this all by itself. So the largest chunk of the man-months needed for "enforcing business rules" can simply be eliminated altogether from the project plan. Savings for our 50 man-month project : 35% of 25 man-months = 8.75 man-months. Round it down to 8, so we have some time left for doing stuff like "sending e-mail notifications upon certain events occurring".

And what about the data access layer ? There we can be very short : a good DBMS _IS_ that data access layer. That was the entire point of Codd's idea of "separation between logical and physical model". A database, and a DBMS, if and when used properly, simply eliminates the very need for any kind of data access layer coded separately. SIRA_PRISE supports and encourages exactly that. Savings for our 50 man-month project : 20% of 25 man-months = 5 man-months.

Concrete consequence for our 50 man-month project : minus 13 man-months, or minus roughly 25% of the overall development cost. At 6000 EUR per man-month, that's minus 780000 EUR for a project comparatively modest in size ...

Conclusion : we deliberately leave this open. You're free to draw your own. Perhaps take a second look at those two boxes of code above.