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 work has been partially supported by GIF (grant No. 1131-9.6/2011).
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Subsystem decomposition. http://goo.gl/m5gnW3. Accessed: June 2015
Abrial, J.: The B-book: Assigning programs to meanings. Cambridge Press (2005)
Abrial, J.-R., Hallerstede, S.: Refinement, decomposition, and instantiation of discrete models: Application to event-b. Fundam. Inf. 77(1–2), 1–28 (2007)
Al-Dallal, J.: Measuring the discriminative power of object-oriented class cohesion metrics. Trans. on Software Engineering 37(6), 788–804 (2011)
Bastian, M., Heymann, S., Jacomy, M.: Gephi: An open source software for exploring and manipulating networks. In: ICWSM. The AAAI Press (2009)
Becker, S., Hauck, M., Trifu, M., Krogmann, K., Kofron, J.: Reverse engineering component models for quality predictions. In: CSMR, pp. 194–197. IEEE (2010)
Birkmeier, D., Overhage, S.: On component identification approaches – classification, state of the art, and comparison. In: Lewis, G.A., Poernomo, I., Hofmeister, C. (eds.) CBSE. LNCS, vol. 5582, pp. 1–18. Springer, Heidelberg (2009)
Blondel, V., Guillaume, J., Lambiotte, R., Mech, E.: Fast unfolding of communities in large networks. J. Stat. Mech. 10, 2008 (2008)
Bruegge, B., Dutoit, A.: Object-Oriented Software Engineering. Pearson (2010)
e Abreu, F.B., Goulão, M.: Coupling and cohesion as modularization drivers: Are we being over-persuaded? In: CSMR, pp. 47–57. IEEE (2001)
Fan-Chao, M., Den-Chen, Z., Xiao-Fei, X.: Business component identification of enterprise information system: a hierarchical clustering method. In: ICEBE, pp. 473–480. IEEE (2005)
Fowler, M.: Reducing coupling. IEEE Software 18(4), 102–104 (2001)
Heinrich, R., Gärtner, S., Hesse, T.-M., Ruhroth, T., Reussner, R., Schneider, K., Paech, B., Jürjens, J.: A platform for empirical research on information system evolution. In: SEKE, pp. 415–420 (2015)
Hitz, M., Montazeri, B.: Measuring coupling and cohesion in object-oriented systems. In: ISAAC, pp. 1–10 (1995)
Jackson, D.: Software Abstractions: Logic, Language, and Analysis. MIT Press (2012)
Kamada, T., Kawai, S.: An algorithm for drawing general undirected graphs. Information processing letters 31(1), 7–15 (1989)
Kim, S.D., Chang, S.H.: A systematic method to identify software components. In: APSEC, pp. 538–545. IEEE (2004)
Lee, J.K., Jung, S.J., Kim, S.D., Jang, W.H., Ham, D.H.: Component identification method with coupling and cohesion. In: APSEC, pp. 79–86 (2001)
Lung, C.-H., Xu, X., Zaman, M.: Software architecture decomposition using attributes. Software Engineering and Knowledge Engineering 17(5), 599–613 (2007)
Mayer, T., Hall, T.: Measuring OO systems: A critical analysis of the MOOD metrics. In: TOOLS, pp. 108–117. IEEE (1999)
Morgan, C.: Programming from Specifications. Prentice-Hall Inc (1990)
Moser, M., Misic, V.B.: Measuring class coupling and cohesion: A formal metamodel approach. In: APSEC, pp. 31–40. IEEE (1997)
North, S.C.: Drawing graphs with NEATO, 2004. NEATO User Manual
Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM 15(12), 1053–1058 (1972)
Roscoe, A.W.: The Theory and Practice of Concurrency. Prentice Hall (1997)
Woodcock, J., Davies, J.: Using Z: Specification, Refinement, and Proof. Prentice-Hall (1996)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Faitelson, D., Tyszberowicz, S. (2015). Improving Design Decomposition. In: Li, X., Liu, Z., Yi, W. (eds) Dependable Software Engineering: Theories, Tools, and Applications. SETTA 2015. Lecture Notes in Computer Science(), vol 9409. Springer, Cham. https://doi.org/10.1007/978-3-319-25942-0_12
Download citation
DOI: https://doi.org/10.1007/978-3-319-25942-0_12
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-25941-3
Online ISBN: 978-3-319-25942-0
eBook Packages: Computer ScienceComputer Science (R0)