Domain-Driven Design: Tackling Complexity in the Heart of Software



Download 7,21 Mb.
Pdf ko'rish
bet79/343
Sana17.11.2022
Hajmi7,21 Mb.
#867526
1   ...   75   76   77   78   79   80   81   82   ...   343
Bog'liq
Eric Evans 2003 - Domain-Driven Design - Tackling Complexity in the Heart of Software

Modeling Paradigms
M
ODEL-DRIVEN DESIGN
calls for an implementation technology in tune with the particular modeling
paradigm being applied. Many such paradigms have been experimented with, but only a few have
been widely used in practice. At present, the dominant paradigm is object-oriented design, and
most complex projects these days set out to use objects. This predominance has come about for a
variety of reasons: some factors are intrinsic to objects, some are circumstantial, and others
derive from the advantages that come from wide usage itself.
Why the Object Paradigm Predominates
Many of the reasons teams choose the object paradigm are not technical, or even intrinsic to
objects. But right out of the gate, object modeling does strike a nice balance of simplicity and
sophistication.
If a modeling paradigm is too esoteric, not enough developers will master it, and they will use it
badly. If the nontechnical members of the team can't grasp at least the rudiments of the
paradigm, they will not understand the model, and the 
UBIQUITOUS LANGUAGE
will be lost. The
fundamentals of object-oriented design seem to come naturally to most people. Although some
developers miss the subtleties of modeling, even nontechnologists can follow a diagram of an
object model.
Yet, simple as the concept of object modeling is, it has proven rich enough to capture important
domain knowledge. And it has been supported from the outset by development tools that allowed
a model to be expressed in software.
Today, the object paradigm also has some significant circumstantial advantages deriving from
maturity and widespread adoption. Without mature infrastructure and tool support, a project can
get sidetracked into technological R&D, delaying and diverting resources away from application
development and introducing technical risks. Some technologies don't play well with others, and it
may not be possible to integrate them with industry-standard solutions, forcing the team to
reinvent common utilities. But over the years, many of these problems have been solved for
objects, or made irrelevant by widespread adoption. (Now it falls on other approaches to integrate
with mainstream object technology.) Most new technologies provide the means to integrate with
the popular object-oriented platforms. This makes integration easier and even leaves open the
option of mixing in subsystems based on other modeling paradigms (which we will discuss later in
this chapter).
Equally important is the maturity of the 
developer community and the design culture itself
. A
project that adopts a novel paradigm may be unable to find developers with expertise in the
technology, or with the experience to create effective models in the chosen paradigm. It may not
be feasible to educate developers in a reasonable amount of time because the patterns for making
the most of the paradigm and technology haven't gelled yet. Perhaps the pioneers of the field are
effective but haven't yet published their insights in an accessible form.
Objects are already understood by a community of thousands of developers, project managers,
and all the other specialists involved in project work.
A story from an object-oriented project of only a decade ago illustrates the risks of working in an
immature paradigm. In the early 1990s, this project committed itself to several cutting-edge


technologies, including use of an object-oriented database on a large scale. It was exciting. People
on the team would proudly tell visitors that we were deploying the biggest database this
technology had ever supported. When I joined the project, different teams were spinning out
object-oriented designs and storing their objects in the database effortlessly. But gradually the
realization crept upon us that we were beginning to absorb a significant fraction of the database's
capacity—with test data! The actual database would be dozens of times larger. The actual
transaction volume would be dozens of times higher. Was it impossible to use this technology for
this application? Had we used it improperly? We were out of our depth.
Fortunately, we were able to bring onto the team one of a handful of people in the world with the
skills to extricate us from the problem. He named his price and we paid it. There were three
sources of the problem. First, the off-the-shelf infrastructure provided with the database simply
didn't scale up to our needs. Second, storage of fine-grained objects turned out to be much more
costly than we had realized. Third, parts of the object model had such a tangle of
interdependencies that contention became a problem with a relatively small number of concurrent
transactions.
With the help of this hired expert, we enhanced the infrastructure. The team, now aware of the
impact of fine-grained objects, began to find models that worked better with this technology. All of
us deepened our thinking about the importance of limiting the web of relationships in a model, and
we began applying this new understanding to making better models with more decoupling between
closely interrelated aggregates.
Several months were lost in this recovery, in addition to the earlier months spent going down a
failed path. And this had not been the team's first setback resulting from the immaturity of the
chosen technologies and our own lack of experience with the associated learning curve. Sadly, this
project eventually retrenched and became quite conservative. To this day they use the exotic
technologies, but for cautiously scoped applications that probably don't really benefit from them.
A decade later, object-oriented technology is relatively mature. Most common infrastructure needs
can be met with off-the-shelf solutions that have been used in the field. Mission-critical tools come
from major vendors, often multiple vendors, or from stable open-source projects. Many of these
infrastructure pieces themselves are used widely enough that there is a base of people who
already understand them, as well as books explaining them, and so forth. The limitations of these
established technologies are fairly well understood, so that knowledgeable teams are less likely to
overreach.
Other interesting modeling paradigms just don't have this maturity. Some are too hard to master
and will never be used outside small specialties. Others have potential, but the technical
infrastructure is still patchy or shaky, and few people understand the subtleties of creating good
models for them. These may come of age, but they are not ready for most projects.
This is why, for the present, most projects attempting 
MODEL-DRIVEN DESIGN
are wise to use
object-oriented technology as the core of their system. They will not be locked into an object-only
system—because objects have become the mainstream of the industry, integration tools are
available to connect with almost any other technology in current use.
Yet this doesn't mean that people should restrict themselves to objects forever. Traveling with the
crowd provides some safety, but it isn't always the way to go. Object models address a large
number of practical software problems, but there are domains that are not natural to model as
discrete packets of encapsulated behavior. For example, domains that are intensely mathematical
or that are dominated by global logical reasoning do not fit well into the object-oriented paradigm.

Download 7,21 Mb.

Do'stlaringiz bilan baham:
1   ...   75   76   77   78   79   80   81   82   ...   343




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish