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


Chapter Sixteen. Large-Scale Structure



Download 7,21 Mb.
Pdf ko'rish
bet298/343
Sana17.11.2022
Hajmi7,21 Mb.
#867526
1   ...   294   295   296   297   298   299   300   301   ...   343
Bog'liq
Eric Evans 2003 - Domain-Driven Design - Tackling Complexity in the Heart of Software

Chapter Sixteen. Large-Scale Structure
Thousands of people worked independently to create the AIDS Quilt.
A small Silicon Valley design firm had been contracted to create a simulator for a satellite
communications system. Work was progressing well. A 
MODEL-DRIVEN DESIGN
was developing that
could express and simulate a wide range of network conditions and failures.
But the lead developers on the project were uneasy. The problem was inherently complex. Driven
by the need to clarify the intricate relationships in the model, they had decomposed the design into
coherent 
MODULES
of manageable size. Now there were a 
lot
of 
MODULES
. Which package should a
developer look in to find a particular aspect of functionality? Where should a new class be placed?
What did some of these little packages really mean? How did they all fit together? And there was
still more to build.
The developers communicated well with one another and could still figure out what to do from day
to day, but the project leaders were not content to skirt the edge of comprehensibility. They
wanted some way of organizing the design so that it could be understood and manipulated as it
moved to the next level of complexity.


They brainstormed. There were a lot of possibilities. Alternative packaging schemes were
proposed. Maybe some document could give an overview of the system, or some new views of the
class diagram in the modeling tool could guide a developer to the right 
MODULE
. But the project
leaders weren't satisfied with these gimmicks.
They could tell a simple story of their simulation, of the way data would be marshaled through an
infrastructure, its integrity and routing assured by layers of telecommunications technology. Every
detail of that story was in the model, yet the broad arc of the story could not be seen.
Some essential concept from the domain was missing. But this time it was not a class or two
missing from the object model, it was a missing structure for the model as a whole.
After the developers mulled over the problem for a week or two, the idea began to jell. They would
impose a structure on the design. The entire simulator would be viewed as a series of layers
related to aspects of the communications system. The bottom layer would represent the physical
infrastructure, the basic ability to transmit bits from one node to another. Then there would be a
packet-routing layer that brought together the concerns of how a particular data stream would be
directed. Other layers would identify other conceptual levels of the problem. 
These layers would
outline their story of the system.
They set out to refactor the code to conform to the new structure. M
ODULES
had to be redefined so
as not to span layers. In some cases, object responsibilities were refactored so that each object
would clearly belong to one layer. Conversely, throughout this process the definitions of the
conceptual layers themselves were refined based on the hands-on experience of applying them.
The layers, 
MODULES
, and objects coevolved until, in the end, the entire design followed the
contours of this layered structure.
These layers were not 
MODULES
or any other artifact in the code. They were an overarching set of
rules that constrained the boundaries and relationships of any particular 
MODULE
or object
throughout the design, even at interfaces with other systems.
Imposing this order brought the design back to comfortable intelligibility. People knew roughly
where to look for a particular function. Individuals working independently could make design
decisions that were broadly consistent with each other. The complexity ceiling had been lifted.
Even with a 
MODULAR
breakdown, a large model can be too complicated to grasp. The 
MODULES
chunk the design into manageable bites, but there may be many of them. Also, modularity does
not necessarily bring uniformity to the design. Object to object, package to package, a jumble of
design decisions may be applied, each defensible but idiosyncratic.
The strict segregation imposed by 
BOUNDED CONTEXTS
prevents corruption and confusion, but it
does not, in itself, make it easier to see the system as a whole.
Distillation does help by focusing attention on the 
CORE DOMAIN
and casting other subdomains in
their supporting roles. But it is still necessary to understand the supporting elements and their
relationships to the 
CORE DOMAIN
—and to each other. And while the 
CORE DOMAIN
would ideally be
so clear and easily understood that no additional guidance would be needed, we are not always at
that point.
On a project of any size, people must work somewhat independently on different parts of the
system. Without any coordination or rules, a confusion of different styles and distinct solutions to
the same problems arises, making it hard to understand how the parts fit together and impossible
to see the big picture. Learning about one part of the design will not transfer to other parts, so the
project will end up with specialists in different 
MODULES
who cannot help each other outside their
narrow range. C
ONTINUOUS INTEGRATION
breaks down and the 
BOUNDED CONTEXT
fragments.

Download 7,21 Mb.

Do'stlaringiz bilan baham:
1   ...   294   295   296   297   298   299   300   301   ...   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