Skip to main content
Log in

Improving design decomposition (extended version)

  • Original Article
  • Published:
Formal Aspects of Computing

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Abrial JR (2005) The B-book: assigning programs to meanings. Cambridge Press, Cambridge

    MATH  Google Scholar 

  2. Abrial JR (2010) Modeling in Event-B: system and software engineering. Cambridge University Press, Cambridge

    Book  MATH  Google Scholar 

  3. Al-Dallal J (2011) Measuring the discriminative power of object-oriented class cohesion metrics. Trans Softw Eng 37(6): 788–804

    Article  Google Scholar 

  4. Abrial JR, Hallerstede S (2007) Refinement, decomposition, and instantiation of discrete models: application to Event-B. Fundam Informaticae 77(1–2): 1–28

    MathSciNet  MATH  Google Scholar 

  5. Abrial JR, Hallerstede S (2009) Event model decomposition. Technical Report 626, ETH Zurich

  6. Bruegge B, Dutoit AH (2012) Object-oriented software engineering, 3rd edition. Pearson

  7. Blondel VD, Guillaume JL, Lambiotte R, Mech ELJS (2008) Fast unfolding of communities in large networks. J Stat Mech: Theory Exp P10008(10)

  8. 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

  9. 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

  10. 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

  11. Carroll M (1990) Programming from specifications. Prentice-Hall, Inc., Englewood Cliffs

  12. 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

  13. Codd EF (1990) The relational model for database management: version 2. Addison-Wesley Longman Publishing

  14. 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

  15. 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

  16. Fowler M (2001) Reducing coupling. IEEE Softw 18(4): 102–104

    Article  Google Scholar 

  17. 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

  18. 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

  19. Hitz M, Montazeri B (1995) Measuring coupling and cohesion in object-oriented systems. In: International symposium on applied corporate computing (ISAAC), pp 1–10

  20. Jackson D (2012) Software abstractions: logic, language, and analysis. MIT Press, Cambridge

    Google Scholar 

  21. Kamada T, Kawai S (1989) An algorithm for drawing general undirected graphs. Inf Process Lett 31(1): 7–15

    Article  MathSciNet  MATH  Google Scholar 

  22. Kim SD, Chang SH (2004) A systematic method to identify software components. In: 11th Asia-Pacific Software Engineering Conference (APSEC), pp 538–545. IEEE

  23. 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

  24. 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

  25. 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

  26. Lung CH, Xu X, Zaman M (2007) Software architecture decomposition using attributes. Softw Eng Knowl Eng 17(5): 599–613

    Article  Google Scholar 

  27. McConnell S (2004) Code complete, second edition. Microsoft Press, Redmond

    Google Scholar 

  28. 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

  29. 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

  30. North SC (2004) Drawing graphs with NEATO. NEATO Users Manual

  31. OMG (2011) UML superstructure specification, v2.4.1. Technical report, OMG

  32. Roscoe AW (1997) The theory and practice of concurrency. Prentice Hall, Englewood Cliffs

    Google Scholar 

  33. Rausch A, Reussner RH, Mirandola R, Plasil F (2008) The common component modeling example: comparing software component models, vol 5153 of LNCS. Springer, Berlin

  34. Subsystem decomposition. http://goo.gl/m5gnW3. Accessed Sept 2016

  35. Woodcock J, Davies J (1996) Using Z: specification, refinement, and proof. Prentice-Hall, Englewood Cliffs

    MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to David Faitelson.

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

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

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

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s00165-017-0428-0

Keywords

Navigation