Abstract
Decomposing a system into subsystems is essential to the design of large software systems. Traditionally, it is performed intuitively without rigorously analyzing the system model. This makes it difficult to check the decomposition correctness, and risks creating subsystems that are either too tightly coupled or not cohesive enough. An aggravating factor is that traditionally classes are the atomic design units. 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. We present an analytical approach that enables reasoning about early exploration of decomposition alternatives. In addition, we describe a visual notation for diagramming the composition of subsystems, and an automatic technique for suggesting good decompositions. A key to our approach is that individual relations, not classes, are the atomic design units. We illustrate the approach with examples and demonstrate its effectiveness on a commercial system. This paper is an extended version of previous work.
Similar content being viewed by others
References
Abrial JR (2005) The B-book: assigning programs to meanings. Cambridge Press, Cambridge
Abrial JR (2010) Modeling in Event-B: system and software engineering. Cambridge University Press, Cambridge
Al-Dallal J (2011) Measuring the discriminative power of object-oriented class cohesion metrics. Trans Softw Eng 37(6): 788–804
Abrial JR, Hallerstede S (2007) Refinement, decomposition, and instantiation of discrete models: application to Event-B. Fundam Informaticae 77(1–2): 1–28
Abrial JR, Hallerstede S (2009) Event model decomposition. Technical Report 626, ETH Zurich
Bruegge B, Dutoit AH (2012) Object-oriented software engineering, 3rd edition. Pearson
Blondel VD, Guillaume JL, Lambiotte R, Mech ELJS (2008) Fast unfolding of communities in large networks. J Stat Mech: Theory Exp P10008(10)
Bastian M, Heymann S, Jacomy M (2009) Gephi: an open source software for exploring and manipulating networks. In: International AAAI Conference on Web and Social Media (ICWSM). The AAAI Press
Becker S, Hauck M, Trifu M, Krogmann K, Kofron J (2010) Reverse engineering component models for quality predictions. In: 14th European Conference on Software Maintenance and Reengineering (CSMR), pp 194–197. IEEE
Birkmeier D, Overhage S (2009) On component identification approaches–classification, state of the art, and comparison. In: 12th International Symposium on Component-Based Software Engineering (CBSE), pp 1–18. IEEE
Carroll M (1990) Programming from specifications. Prentice-Hall, Inc., Englewood Cliffs
Carrington DA, Duke DJ, Hayes IJ, Welsh J (1993) Deriving modular designs from formal specifications. In: Notkin D (ed) First ACM SIGSOFT symposium on foundations of software engineering, pp 89–98. ACM
Codd EF (1990) The relational model for database management: version 2. Addison-Wesley Longman Publishing
e Abreu FB, Goulão M (2001) Coupling and cohesion as modularization drivers: are we being over-persuaded? In: 5th Conference on Software Maintenance and Reengineering (CSMR), pp 47–57. IEEE
Fan-Chao M, Den-Chen Z, Xiao-Fei X (2005) Business component identification of enterprise information system: a hierarchical clustering method. In: IEEE International Conference on e-Business Engineering (ICEBE), pp 473–480. IEEE
Fowler M (2001) Reducing coupling. IEEE Softw 18(4): 102–104
Faitelson D, Tyszberowicz S (2015) Improving design decomposition. In: Li X, Liu Z, Yi W (eds) First international symposium on dependable software engineering: theories, tools, and applications (SETTA), Nanjing, China, volume 9409 of Lecture Notes in Computer Science, pp 185–200. Springer
Heinrich R, Gärtner S, Hesse TM, Ruhroth T, Reussner R, Schneider K, Paech B, Jürjens J (2015) A platform for empirical research on information system evolution. In: 27th International conference on software engineering and knowledge engineering (SEKE), pp 415–420
Hitz M, Montazeri B (1995) Measuring coupling and cohesion in object-oriented systems. In: International symposium on applied corporate computing (ISAAC), pp 1–10
Jackson D (2012) Software abstractions: logic, language, and analysis. MIT Press, Cambridge
Kamada T, Kawai S (1989) An algorithm for drawing general undirected graphs. Inf Process Lett 31(1): 7–15
Kim SD, Chang SH (2004) A systematic method to identify software components. In: 11th Asia-Pacific Software Engineering Conference (APSEC), pp 538–545. IEEE
Liu Z, He J, Li X, Chen Y (2003) A relational model for formal object-oriented requirement analysis in UML. In: Dong JS, Woodcock J (eds) Formal methods and software engineering, 5th international conference on formal engineering methods (ICFEM), vol 2885 of LNCS, pp 641–664
Li D, Li X, Liu Z, Stolz V (2011) Interactive transformations from object-oriented models to component-based models. In: Arbab F, Ölveczky PC (eds) International symposium on formal aspects of component software (FACS), revised selected papers, vol 7253 of lecture notes in computer science, pp 97–114. Springer
Lee JK, Seung SJ, Kim SD, Hyun WH, Ham DH (2001) Component identification method with coupling and cohesion. In: 8th Asia-Pacific Software Engineering Conference (APSEC), pp 79–86
Lung CH, Xu X, Zaman M (2007) Software architecture decomposition using attributes. Softw Eng Knowl Eng 17(5): 599–613
McConnell S (2004) Code complete, second edition. Microsoft Press, Redmond
Mayer T, Hall T (1999) Measuring OO systems: a critical analysis of the MOOD metrics. In: International conference on technology of object-oriented languages and systems (TOOLS), pp 108–117. IEEE
Moser S, Misic VB (1997) Measuring class coupling and cohesion: a formal metamodel approach. In: 4th Asia-Pacific software engineering and international computer science conference (APSEC), pp 31–40. IEEE
North SC (2004) Drawing graphs with NEATO. NEATO Users Manual
OMG (2011) UML superstructure specification, v2.4.1. Technical report, OMG
Roscoe AW (1997) The theory and practice of concurrency. Prentice Hall, Englewood Cliffs
Rausch A, Reussner RH, Mirandola R, Plasil F (2008) The common component modeling example: comparing software component models, vol 5153 of LNCS. Springer, Berlin
Subsystem decomposition. http://goo.gl/m5gnW3. Accessed Sept 2016
Woodcock J, Davies J (1996) Using Z: specification, refinement, and proof. Prentice-Hall, Englewood Cliffs
Author information
Authors and Affiliations
Corresponding author
Additional information
Cliff Jones, Xuandong Li, and Zhiming Liu
This paper is a revised and extended version of a paper that was presented in [FT15]. This work has been partially supported by GIF (Grant No. 1131-9.6/2011).
Rights and permissions
About this article
Cite this article
Faitelson, D., Tyszberowicz, S. Improving design decomposition (extended version). Form Asp Comp 29, 601–627 (2017). https://doi.org/10.1007/s00165-017-0428-0
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00165-017-0428-0