Skip to main content

Automatic Architectural Clustering of Software

  • Chapter
Advances in Software Engineering

Abstract

The definition of the term large software is constantly changing, as the size of software systems continues to increase rapidly. What DeRemer and Kron called a large system in their classic paper on programming-in-the-large (1976), would probably be classified as a medium-sized, if not small-sized, system today. Advances in hardware technology concerning the size, speed, and cost of primary and secondary storage, as well as the advent of modern programming languages and object-oriented programming, have allowed the size of software systems to increase significantly in the last decade.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 59.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 79.95
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  • Adamov, R. and Baumann, P. (1987). Literature Review on Software Metrics. Institut für Informatik der Universität Zürich.

    Google Scholar 

  • Anderberg, M. R. (1973). Cluster Analysis for Applications. New York: Academic Press, Inc.

    MATH  Google Scholar 

  • Anquetil, N. and Lethbridge, T. (1997). File clustering using naming conventions for legacy systems. In Proceedings of GASCON 1997, pp. 184–195, Toronto, Canada.

    Google Scholar 

  • Botafogo, R. A. and Schneiderman, B. (1991). Identifying aggregates in hypertext structures. In Proceedings of Hypertext 91, pp. 63–74, December, San Antonio, TX.

    Google Scholar 

  • Bowman, I. T. and Holt, R. C. (1999). Reconstructing ownership architectures to help understand software systems. In Proceedings of the Seventh International Workshop on Program Comprehension, pp. 28–37, Pittsburgh, PA.

    Google Scholar 

  • Carmichael, I. H., Tzerpos, V., and Holt, R. (1995). Design maintenance: Unexpected architectural interactions. International Conference on Software Maintenance, pp. 134–137, Nice.

    Google Scholar 

  • Choi, S. C. and Scacchi, W. (1990). Extracting and restructuring the design of large systems. IEEE Software, January: 66–71.

    Google Scholar 

  • Corneil, D. G. and Woodward, M. E. (1978). A comparison and evaluation of graph theoretical clustering techniques. INFOR, The Canadian Journal of Operations Research and Information Processing, 16: 74–89.

    Google Scholar 

  • DeRemer, F. and Kron, H.H. (1976) Programming-in-the-large versus programming-in-the-small. IEEE Transactions on Software Engineering, 2 (2): 80–86.

    Article  MathSciNet  MATH  Google Scholar 

  • Everitt, B. S. (1993). Cluster Analysis. New York: John Wiley & Sons.

    Google Scholar 

  • Garey, M. R. and Johnson, D. S. (1979). Computers and Intractability. New York: W. H. Freeman and Co.

    MATH  Google Scholar 

  • Garlan, D. and Shaw, M. (1993). An introduction to software architecture. In Ambrola V. and Tortola, G. (eds.), Advances in Software Engineering and Knowledge Engineering, Series on Software Engineering and Knowledge Engineering, Vol. 2, pp. 1–39. Singapore: World Scientific.

    Chapter  Google Scholar 

  • Harris, D. R., Reubenstein, H. B., and Yeh, A. S. (1995). Reverse engineering to the architectural level. In International Conference on Software Engineering, pp. 186–195, Seattle, WA.

    Google Scholar 

  • Hutchens, D. H. and Basili, V. R. (1985). System structure analysis: Clustering with data bindings. IEEE Transactions on Software Engineering, 11 (8): 749–757.

    Article  Google Scholar 

  • Jain, A. and Dubes, R. (1988). Algorithms for Clustering Data. Englewood Cliffs, NJ: Prentice-Hall.

    MATH  Google Scholar 

  • Kernighan, B. W. and Lin, S. (1970). An efficient heuristic procedure for partitioning graphs. Bell Systems Technical Journal, 49: 291–307.

    MATH  Google Scholar 

  • Kontogiannis, K. (1997). Evaluation experiments on the detection of programming patterns using software metrics. In Proceedings of the Fourth Working Conference on Reverse Engineering,pp. 44–55, Amsterdam.

    Google Scholar 

  • Lakhotia, A. (1997). A unified framework for software subsystem classification techniques. Journal of Systems and Software, pp. 211–231.

    Google Scholar 

  • Lakhotia, A. and Gravley, J. M. (1995). Toward experimental evaluation of subsystem classification recovery techniques. In Proceedings of the Second Working Conference on Reverse Engineering, pp. 262–269.

    Google Scholar 

  • Lindig, C. and Snelting, G. (1997). Assessing modular structure of legacy code based on mathematical concept analysis. In Proceedings of the 19th International Conference on Software Engineering, pp. 349–359, Boston, MA.

    Google Scholar 

  • Mancoridis, S., Mitchell, B., Rorres, C., Chen, Y., and Gansner, E.R. (1998). Using automatic clustering to produce high-level system organizations of source code. In IWPC ‘88, IEEE Proceedings of the 1998 International Workshop on Program Comprehension, pp. 45–53, Ischia, Italy.

    Google Scholar 

  • Müller, H. A., Orgun, M. A., Tilley, S. R., and Uhl, J. S. (1993). A reverse engineering approach to subsystem structure identification. Journal of Software Maintenance: Research and Practice, 5: 181–204.

    Article  Google Scholar 

  • Müller, H. A. and Uhl, J. S. (1990). Composing subsystem structures using (k,2)-partite graphs. In Conference on Software Maintenance, pp. 12–19, 26–29 November, San DiegO, CA.

    Google Scholar 

  • Neighbors, J. M. (1996). Finding reusable software components in large systems. In Proceedings of the Third Working Conference on Reverse Engineering, pp. 2–10, Monterrey, CA.

    Google Scholar 

  • Ng, R. T. and Han, J. (1994). Efficient and effective clustering methods for spatial data mining. In Proceedings of VLDB 94,pp. 144–155, September 12–15, Santiago de Chile.

    Google Scholar 

  • Parnas, D. (1972). On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15: 1053–1058.

    Article  Google Scholar 

  • Raghavan, V. V. and Yu, C. T. (1981). A comparison of the stability characteristics of some graph theoretic clustering methods. IEEE Transactions on Pattern Analysis and Machine Intelligence, 3 (4): 393–402.

    Article  MATH  Google Scholar 

  • Schwanke, R. W. (1991). An intelligent tool for re-engineering software modularity. In Proceedings of the 13th International Conference on Software Engineering, pp. 83–92, Austin, TX.

    Google Scholar 

  • Schwanke, R. W., Altucher, R., and Platoff, M. A. (1989). Discovering, visualizing, and controlling software structure. ACM SIGSOFT Software Engineering Notes, 14 (3): 147–150.

    Article  Google Scholar 

  • Schwanke, R. W. and Platoff, M. A. (1989). Cross references are features. In Second International Workshop on Software Configuration Management,pp. 86–95. ACM Press.

    Google Scholar 

  • Shaw, M. and Garlan, D. (1996). Software Architecture: Perspectives of an Emerging Discipline. Englewood Cliffs, NJ: Prentice-Hall,.

    MATH  Google Scholar 

  • Silberschatz, A., Korth, H., and Sudarshan, S. (1997). Database Systems Concepts. New York: McGraw-Hill.

    Google Scholar 

  • Tsangaris, M. S. and Naughton, J. F. (1991). A stochastic approach for clustering in object bases. In Proceedings of SIGMOD 91, pp. 12–21, Denver, CO.

    Google Scholar 

  • Tzerpos, V. and Holt, R. C. (1996).A hybrid process for recovering software architecture. In Cascon 1996,pp. 1–6, October 12–14, Toronto,Canada.

    Google Scholar 

  • Tzerpos, V. and Holt, R. C. (1997). The orphan adoption problem in architecture maintenance. In Proceedings of the Fourth Working Conference on Reverse Engineering,pp. 76–82, October 6–8, Amsterdam.

    Google Scholar 

  • van Deursen, A. and Kuipers, T. (1999). Identifuing objects using cluster and concept analysis. In Proceedings of the 21 th International Conference on Software Engineering, pp. 246–255, May 16–12, Los Angeles, CA.

    Google Scholar 

  • Vaswani, P. K. T. (1968). A technique for cluster emphasis and its application to automatic indexing. Information Processing, 68 (2): 1300–1303.

    Google Scholar 

  • von Laszewski, G. (1993). A collection of graph partitioning algorithms. Technical Report SCCS 477, Northeast Parallel Architectures Center, Syracuse University, NY, April.

    Google Scholar 

  • Wiggerts, T. A. (1997). Using clustering algorithms in legacy systems remodularization. In Proceedings of the Fourth Working Conference on Reverse Engineering,pp. 33–43, Amsterdam.

    Google Scholar 

  • Zhang, T., Ramakrishnan, R., and Livny, M. (1996). Birch: An efficient data clustering method for very large databases. In Proceedings of SIGMOD 96, pp. 103–114, Montreal, Canada.

    Google Scholar 

Download references

Authors

Editor information

Hakan Erdogmus Oryal Tanir

Rights and permissions

Reprints and permissions

Copyright information

© 2002 Springer Science+Business Media New York

About this chapter

Cite this chapter

Tzerpos, V., Holt, R.C. (2002). Automatic Architectural Clustering of Software. In: Erdogmus, H., Tanir, O. (eds) Advances in Software Engineering. Springer, New York, NY. https://doi.org/10.1007/978-0-387-21599-0_8

Download citation

  • DOI: https://doi.org/10.1007/978-0-387-21599-0_8

  • Publisher Name: Springer, New York, NY

  • Print ISBN: 978-1-4419-2878-8

  • Online ISBN: 978-0-387-21599-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics