Speaker: David Faitelson, Afeka
Title: Systematic design decomposition
Abstract
Decomposing a system into subsystems is essential to the design of large
software systems. Traditionally, subsystem decomposition is performed
intuitively without rigorously analyzing the system model. This makes it
difficult to check the correctness of the decomposition, and risks
creating subsystems that are either too tightly coupled or not cohesive
enough. An aggravating factor is that traditionally, classes are the
atomic units of design. In many cases, however, the same classes play a
role in more than one subsystem, and partitioning them unbroken among
the subsystems may increase coupling and reduce cohesion. I this talk I
will present an analytical approach that enables reasoning about early
exploration of decomposition alternatives. In addition, I will describe a
visual notation for diagramming the composition of subsystems, and an
automatic technique for suggesting good decompositions. A key to the
approach is that individual relations, not classes, are the atomic units
of design. I will illustrate the approach with examples and discuss
future work with regards to tools and application to software evolution.
This is joint work with Prof. Shmuel Tyszberowicz.