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.
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
Adamov, R. and Baumann, P. (1987). Literature Review on Software Metrics. Institut für Informatik der Universität Zürich.
Anderberg, M. R. (1973). Cluster Analysis for Applications. New York: Academic Press, Inc.
Anquetil, N. and Lethbridge, T. (1997). File clustering using naming conventions for legacy systems. In Proceedings of GASCON 1997, pp. 184–195, Toronto, Canada.
Botafogo, R. A. and Schneiderman, B. (1991). Identifying aggregates in hypertext structures. In Proceedings of Hypertext 91, pp. 63–74, December, San Antonio, TX.
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.
Carmichael, I. H., Tzerpos, V., and Holt, R. (1995). Design maintenance: Unexpected architectural interactions. International Conference on Software Maintenance, pp. 134–137, Nice.
Choi, S. C. and Scacchi, W. (1990). Extracting and restructuring the design of large systems. IEEE Software, January: 66–71.
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.
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.
Everitt, B. S. (1993). Cluster Analysis. New York: John Wiley & Sons.
Garey, M. R. and Johnson, D. S. (1979). Computers and Intractability. New York: W. H. Freeman and Co.
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.
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.
Hutchens, D. H. and Basili, V. R. (1985). System structure analysis: Clustering with data bindings. IEEE Transactions on Software Engineering, 11 (8): 749–757.
Jain, A. and Dubes, R. (1988). Algorithms for Clustering Data. Englewood Cliffs, NJ: Prentice-Hall.
Kernighan, B. W. and Lin, S. (1970). An efficient heuristic procedure for partitioning graphs. Bell Systems Technical Journal, 49: 291–307.
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.
Lakhotia, A. (1997). A unified framework for software subsystem classification techniques. Journal of Systems and Software, pp. 211–231.
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.
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.
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.
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.
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.
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.
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.
Parnas, D. (1972). On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15: 1053–1058.
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.
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.
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.
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.
Shaw, M. and Garlan, D. (1996). Software Architecture: Perspectives of an Emerging Discipline. Englewood Cliffs, NJ: Prentice-Hall,.
Silberschatz, A., Korth, H., and Sudarshan, S. (1997). Database Systems Concepts. New York: McGraw-Hill.
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.
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.
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.
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.
Vaswani, P. K. T. (1968). A technique for cluster emphasis and its application to automatic indexing. Information Processing, 68 (2): 1300–1303.
von Laszewski, G. (1993). A collection of graph partitioning algorithms. Technical Report SCCS 477, Northeast Parallel Architectures Center, Syracuse University, NY, April.
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.
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.
Editor information
Rights 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