In my various exchanges with business and IT stakeholders at large enterprises, there has always been a recurring, predominant discussion regarding alternative approaches to enterprise application development. The issue is centered on comparing and contrasting Data vs. Process and Dynamic Case driven approaches.
A lot of assumptions that we had taken for granted in the management of databases, including integrity or logic pertaining to the independence of the data from the application, are now being challenged. The past couple of decades have created powerful gatekeepers of the enterprise data (the Database Administrators (DBA)) who sometimes block agility and the speed of change needed to sustain business requirements. The world – or I should say the digital world – is changing. The introduction of NoSQL databases, especially for Big Data, has introduced additional complexity for managing and maintaining consistency in heterogeneous DBMSs. This transformational change emanates from the need to engage customers directly. It also results from the explosion of information on the Internet, especially with Internet of Things.
Here I would like to contrast two approaches in building enterprise applications:
DBMS Driven Application Development
This approach focusses on persistent data as the primary first class citizens. Traditionally, it commences by creating Entity Relationship models of data and the relationship between the entity types. The DBA together with the data analysts creates the data models. However, emanating from digitization trends, the introduction of NoSQL databases especially for Big Data management, there are significant changes in designing, managing and maintaining - especially physical repositories of databases: object-oriented, graphical, document-oriented, etc. Each has its sweet spot and purpose. The focus of this new generation of database is to deal with the explosion of heterogeneous data and the storage and management of this data for innovative Internet applications (especially IoT). Still, by and large, the majority of transactional data for mission critical systems of record (which require transactional integrity) remains relational.
Dynamic Case (DCM) Driven Application Development
The DCM and process-driven application approach is very different. A fundamental assumption in the DCM & process driven approach is that a business is a collection of policies (decision management) and procedures (steps and processes in dynamic cases). Businesses think in terms of objectives and milestones or stages to achieve these objectives. There are typically value streams that span multiple teams or departments. Data is generated, responded to, or leveraged to achieve the business objectives and move forward the milestones of the case. Tasks in these cases can be planned or ad-hoc. The participants in the dynamic cases can be humans, business applications, business partners and increasingly Things. Cases respond to and generate events. Cases have their own data or use data from different repositories. More importantly, the data could be mined to detect patterns and operationalize the discovered models (e.g. predictive models) in the decisioning logic of case tasks.
Databases are increasingly heterogeneous. There is no ‘one size fits all’. Relational databases will co-exist side by side with modern NoSQL databases for Big Data. However, the DCM approach is at its core business and customer driven. It starts with the business objectives, the value streams spanning end-to-end various teams and focuses on resolving the case with planned and unplanned task – all the while leveraging, generating, and accessing heterogeneous data as needed.