What is Object Persistence
In the last few decades, there have
been different ways of creating software solutions from procedural
top-down development to object oriented and service oriented solutions.
They all have their place and were created based on different
requirements, budgets, and skill sets. There are always different ways
on how a software solution can be created and implemented. One way of implementing a software solution is to use Object Oriented Software Development (OOSD) and its many advantages. If
you are on a project that does not necessarily take advantage of OOSD,
that’s fine, too. Not all projects may require a full OOSD solution. In
addition, you can always refactor parts of a solution to take advantage
of OOSD techniques if time and budget permit or if new business
requirements are so that it calls for a OOSD solution.
Object Oriented Software Development is a powerful
and proven technique to create software solutions that mimic a network
of real life processes, tasks, and business rules of a domain. Most
importantly, as you design and develop your solution, you start
thinking in a domain specific language. You acquire a deeper
understanding of the business. Domain Driven Design (DDD)
is a technique within OOSD that allows you to get very intimate with the
business and requirements at hand. Eric Evans, author of Domain Driven Design, explains in great detail on how this can be accomplished. I highly recommend his book if you are interested in this exciting technique.
The premise of domain-driven design is two-fold:
* For most software projects, the primary focus should be on the domain and domain logic; and
* Complex domain designs should be based on a model.
Domain-driven design is
not a technology or a methodology. It is a way of thinking and a set of
priorities, aimed at accelerating software projects that have to deal
with complicated domains.
To accomplish that goal, teams need an extensive set of design practices, techniques and principles.
The Challenge of Complexity
Of course, many things
can put a project off course, bureaucracy, unclear objectives, lack of
resources, to name a few, but it is the approach to design that largely
determines how complex software can become. When complexity gets out of
hand, the software can no longer be understood well enough to be easily
changed or extended. By contrast, a good design can make opportunities
out of those complex features.
Some of these design
factors are technological, and a great deal of effort has gone into the
design of networks, databases, and other technical dimension of
software. Books have been written about how to solve these problems.
Developers have cultivated their skills.
Yet the most significant
complexity of many applications is not technical. It is in the domain
itself, the activity or business of the user. When this domain
complexity is not dealt with in the design, it won’t matter that the
infrastructural technology is well-conceived. A successful design must
systematically deal with this central aspect of the software.
Source: http://domaindrivendesign.org
Many books have been written about OOSD and I
encourage you to dig deeper if you are interested in learning specifics.
Besides Eric Evans’ book about Domain Driven Design and Domain Driven Design Quickly, I have also been recommending The Object Primer, by Scott Ambler. I highly recommend his Object Primer and urge you to find some time for it.
What is Object Persistence?
If you are on a project that takes advantage of
OOSD techniques, chances are that you also had to worry about storing
your domain objects at some point.
When you are dealing with a domain model, business
objects working in harmony with other business objects, you will need to
deal with Object Persistence sooner rather than later. Object
Persistence can be described as a running domain model to survive power
failures or power spikes so that no data is lost. Some describe Object
Persistence as serializing objects out to the disk and retrieving them
later. Serializing an object usually means to store the values of public
properties of an object. De-serializing would be just the opposite and
retrieve the values and reconstruct the original object back to its
original state. Others describe Object Persistence as storing objects
into a RDBMS where you will encounter the difficulties of the impedance
mismatch between the three dimensional object worlds and flat, two
dimensional relational databases equivalent of trying to fit a square
into a round hole.
In short, Object Persistence is storing the data,
the behavior, and the relationships with other objects for later reuse
to output valuable information.
A typical Object Persistence can easily consume 50%
– 60% of a project’s resources and time if not handled correctly. This
time is not just the initial time when a system is being developed. More
importantly, the future maintenance of a system is the most expensive
part of a system during its lifetime until retirement. If Object
Persistence takes up such a big part, shouldn’t Object Persistence
deserve a lot more attention?
There are several ways on how Object Persistence
can be done. I will go into some details in future posts. Until then,
think about the time and productivity that can be gained through
effective Object Persistence and not just during prototyping but full
blown production systems. How much time do you usually spend dealing
with creating a database schema, creating some layer to store “stuff”
into tables, and how much time you spend updating all these parts until
the system goes into production. Once in production, how much time do
you spend making changes as requirements change? How much plumbing work
do you do vs. actually solving the domain problems?
In future blogs, I will post about Object
Persistence and why this is so important in software development
projects that do utilize OOSD today. I will take ideas from my upcoming
book The Abundance of Object Persistence to highlight the importance of
this crucial part in system architecture not only from a technical
perspective but also from a business point of view. Please feel free to provide any comments or suggestions. I’m looking forward to your feedback
No comments:
Post a Comment
Vulgar language in this blog is PROHIBITED....