Software Design with the Modularity Matrix and the Modularity Conceptual Lattice Extended Abstract
Iaakov Exman Software Engineering Department, The Jerusalem College of Engineering – JCE - Azrieli POB 3566, Jerusalem, 9103501, Israel.
[email protected]
Keywords:
Modularity, Software Design, Modularity Matrix, Modularity Lattice, FCA, Software Systems.
Abstract:
Modularity Matrices of software systems, linking structors to functionals, can be put in almost block-diagonal form, where blocks reveal higher-level software modules. An alternative formalization has been independently proposed using Conceptual Lattices linking attributes to objects. This lecture shows the equivalence of Modularity Matrices to their respective Modularity Conceptual Lattices from a software design viewpoint. Both formalizations support the simplest form of software composition, i.e. linear composition, expressed as an addition of independent components. This equivalence has both theoretical and practical advantages. These are illustrated by comparison of both representations for a series of case studies.
1
INTRODUCTION
This lecture overviews the design of software systems. We focus on a central design goal, viz. to achieve system modularity. To this end, under the Linear Software Systems approach, one uses algebraic structures such as a Modularity Matrix or a Modularity Lattice. The relevance of software design to SKY – dealing with Software Knowledge – is that Modularity Lattices are a kind of Conceptual Lattices. This enables a variety of Software Knowledge problems to be treated by an FCA (Formal Concept Analysis) approach (Wille, 1982), (Ganter, 1999), (Belohlavek, 2008).
1.1
Modularity Matrix
The Standard Modularity Matrix – see e.g. (Exman, 2012a and 2012b) – is a square and blockdiagonal matrix, whose columns represent Structors and whose rows represent Functionals. Structors and Functionals stand for software architectural units that are used to describe respectively the structure and the behavior of a software system. One-valued matrix elements mark a structor that provides the respective functional. In case the Modularity Matrix of a given system is not of the Standard form, the outliers, i.e. matrix elements outside of the diagonal blocks, highlight coupling problems to be solved (Exman, 2014). Reprint edited from Extended Abstract in Proc. SKY 2015, 6th International Workshop on Software Knowledge – Lisbon, Portugal – November 2015- pages 72-73. Page 1
1.2
Modularity Lattice
The Modularity Lattice is a conceptual lattice (Ganter, 2005) obtained from a Modularity Matrix. It has been recently shown by Exman and Speicher (Exman, 2015) that the Modularity Matrix and its respective Modularity Lattice of a given system are equivalent from a software design point of view. Certain subsets of nodes in the Modularity Lattice nicely correspond to modules – the diagonal blocks – in the Modularity Matrix. These are the connected components obtained by cutting the Top and the Bottom from a Modularity Lattice. Outlier elements in the Modularity Matrix also have their corresponding characteristics in the Modularity Lattice.
2
DESIGN CASE STUDIES
We demonstrate the design approach by means of a series of case studies. For each of the case studies we illustrate and compare the software system characteristics as reflected in the Modularity Matrix and in the corresponding Modularity Lattice. First, we give examples of systems strictly obeying the Standard Modularity Matrix, such as design patterns (Gamma, 1995). Then, we illustrate systems that display outliers, analysing the possible sources of these coupling problems, and eventual solutions.
3
RELATED WORK
We shortly mention alternative matrices used in modular software design, such as DSM (Design Structure Matrix) – see e.g. (Baldwin, 2000) and (Cai, 2006) – and compare them with the Modularity Matrix. We also concisely refer to alternative uses of Conceptual Lattices for modular software design – see e.g. (Lindig, 1997), (Siff, 1999) and (Snelting, 2000). The Modularity Matrix and its Modularity Lattice are a unique approach linking these algebraic structures for software design.
4
FUTURE DEVELOPMENTS
The lecture is concluded by pointing out to open and interesting conceptual problems in software design that may benefit from generic Formal Concept Analysis techniques.
REFERENCES Baldwin, C.Y. and Clark, K.B., 2000. Design Rules, Vol. I. The Power of Modularity, MIT Press, MA, USA. Belohlavek, R., 2008. Introduction to Formal Concept Analysis, Dept. of Computer Science, Palacky University, Olomouc, Czech Republic. Cai, Y. and Sullivan, K.J., 2006. Modularity Analysis of Logical Design Models, in Proc. 21st IEEE/ACM Int. Conf. Automated Software Eng. ASE’06, pp. 91-102, Tokyo, Japan.
Page 2
Concept Explorer, 2006. A tool to build Conceptual Lattices – Web site: http://conexp.sourceforge.net/. Exman, I., November 2012a. Linear Software Models, Extended Abstract, in I. Jacobson, M. Goedicke and P. Johnson (eds.),. GTSE 2012, SEMAT Workshop on General Theory of Software Engineering, pp. 23-24, KTH Royal Institute of Technology, Stockholm, Sweden,. See also video in the next reference. Exman, I., November 2012b. Linear Software Models, Video presentation corresponding to the Extended Abstract in the previous reference: http://www.youtube.com/watch?v=EJfzArH8-ls Exman, I., 2013. Linear Software Models are Theoretical Standards of Modularity, in J. Cordeiro, S. Hammoudi, and M. van Sinderen (eds.): ICSOFT 2012, Revised selected papers, CCIS, Vol. 411, pp. 203–217, Springer-Verlag, Berlin, Germany. DOI: 10.1007/978-3-642-45404-2_14 Exman, I., 2014. Linear Software Models: Standard Modularity Highlights Residual Coupling, Int. Journal on Software Engineering and Knowledge Engineering, vol. 24, pp. 183-210, March 2014. DOI: 10.1142/S0218194014500089. Exman, I. and Speicher, D., 2015. “Linear Software Models: Equivalence of Modularity Matrix to its Modularity Lattice”, in Proc. 10th ICSOFT Int. Joint Conference on Software Technologies, Colmar, France, pp. 109-116, July 2015, DOI = 10.5220/0005557701090116 Gamma, E., Helm, R., Johnson, R. and Vlissides, J., 1995. Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, Boston, MA. Ganter, B. and Wille, R., 1999. Formal Concept Analysis. Mathematical Foundations. Springer. Ganter, B., Stumme, G. and Wille, R., 2005. Formal Concept Analysis - Foundations and Applications. Springer. Lindig, C. and Snelting, G., 1997. Assessing Modular Structure of Legacy Code Based on Mathematical Concept Analysis, in ICSE’97 Proc. 19th Int. Conf. on Software Engineering, pp. 349-359, ACM. DOI: 10.1145/253228.253354 Siff, M. and Reps, T., 1999. Identifying modules via concept analysis, IEEE Trans. Software Engineering, Vol. 25, (6), pp. 749-768. DOI: 10.1109/32.824377 Snelting, G., 2000. Software reengineering based on concept lattices, in Proc. of 4th European Software Maintenance and Reengineering, pp. 3-10, IEEE. DOI: 10.1109/CSMR.2000.827299 Wille, R., 1982. Restructuring lattice theory: an approach based on hierarchies of concepts. In: I. Rival (ed.): Ordered Sets, pp. 445–470, Reidel, Dordrecht-Boston.
Page 3