The Software Development industry faces many challenges as anyone who has ever been involved in a project of any size will most assuredly attest. Due to the intrinsic nature and complexity of the software development process, there are rarely projects which do not face some type of problems at some point during development life cycle. In most cases, these problems can ultimately be traced back to a disconnect between the end users and the developers.
Developers are tasked with the job of building the components of a software solution designed to meet the end users' needs. However, many times the end user cannot accurately conceptualize nor communicate what it is that they need in the first place. This is usually due to the fact that most people are "Visual" thinkers, which means that they can really only comprehend a concept once they "see" a visual representation of it. Therefore, it is often times difficult to gather the solid software requirements needed by the development team in order to produce a viable solution. It was out of this problem that the "Agile" approach to software development was born.
The Agile software development approach focuses on building in short iterations which put something in front of the end users as quickly as possible in order to gain valuable feedback. This feedback is then processed into new requirements, which are in turn added to the system in the next iteration, and so on, and so on...
The challenge with the Agile approach to software development is the fact that it is usually more difficult to change an existing code base than it would have been to originally build it with adequate requirement specifications in the first place. If the changes are of any significance, then they will most surely require modifications at the data layer. This means that the actual database table structure, views, functions, and any associated stored procedures will need to change. Then the changes will need to be propogated through the data access layer to the middle tier and beyond all the way out to the user interface.
Developers can spend countless hours refactoring the existing code base just so they can display some new data elements on a user interface screen. This can lead to frustration on the developer's part because most IT professionals are "abstract" thinkers, which means they have the ability to conceptualize something without "seeing" it first. Thus, the developer has a hard time understanding why the end user didn't just ask for the new data elements in the original request?
If decent requirments are not obtained within a small enough number of iterations, the Agile approach can become more costly on the development side than originally anticipated. Therefore everyone involved can become upset before the project is completed! The customer will blame the developers, and the developers will blame the end users for inadequate requirements, and in many cases no one is really happy at the end of the day.
The Automated Database Object Model (ADOM) provides developers with the ability to work with the database in an entirely new way! The ADOM framework constructs an XML object model directly within the database catalog by virtue of automatically generated log tables, triggers, functions and stored procedures. The result is a fully functional, fully related, hierarchical XML Object model. All the database developer has to do is modify the target table schema, and ADOM automates the rest.
Next, an ADOMized database automatically provides the developer with a coinciding, correlated class model in the middle tier. At any moment, the database can be changed, and the class model can be re-generated to immediately reflect the changes made on the database, coupling database to class model. This saves expensive development man-hours, and allows the developer to focus on what really matters to the end user in the first place: A rich user interface!
The ADOM framework also provides several other features:
- Automated Change Logging
- Transactional & Non-Transactional Saves
- Concurrency Checking
- Security at the Data Element Level
- Built-In Business Rules Engine
- User & System Notifications
- Built-In Workflow System