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.