{"title":"使用遗传算法的软件系统自动聚类","authors":"D. Doval, S. Mancoridis, B. Mitchell","doi":"10.1109/STEP.1999.798481","DOIUrl":null,"url":null,"abstract":"Large software systems tend to have a rich and complex structure. Designers typically depict the structure of software systems as one or more directed graphs. For example, a directed graph can be used to describe the modules (or classes) of a system and their static interrelationships using nodes and directed edges, respectively. We call such graphs \"module dependency graphs\" (MDGs). MDGs can be large and complex graphs. One way of making them more accessible is to partition them, separating their nodes (i.e. modules) into clusters (i.e. subsystems). In this paper, we describe a technique for finding \"good\" MDG partitions. Good partitions feature relatively independent subsystems that contain modules which are highly interdependent. Our technique treats finding a good partition as an optimization problem, and uses a genetic algorithm (GA) to search the extraordinarily large solution space of all possible MDG partitions. The effectiveness of our technique is demonstrated by applying it to a medium-sized software system.","PeriodicalId":254605,"journal":{"name":"STEP '99. Proceedings Ninth International Workshop Software Technology and Engineering Practice","volume":"19 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1999-08-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"303","resultStr":"{\"title\":\"Automatic clustering of software systems using a genetic algorithm\",\"authors\":\"D. Doval, S. Mancoridis, B. Mitchell\",\"doi\":\"10.1109/STEP.1999.798481\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Large software systems tend to have a rich and complex structure. Designers typically depict the structure of software systems as one or more directed graphs. For example, a directed graph can be used to describe the modules (or classes) of a system and their static interrelationships using nodes and directed edges, respectively. We call such graphs \\\"module dependency graphs\\\" (MDGs). MDGs can be large and complex graphs. One way of making them more accessible is to partition them, separating their nodes (i.e. modules) into clusters (i.e. subsystems). In this paper, we describe a technique for finding \\\"good\\\" MDG partitions. Good partitions feature relatively independent subsystems that contain modules which are highly interdependent. Our technique treats finding a good partition as an optimization problem, and uses a genetic algorithm (GA) to search the extraordinarily large solution space of all possible MDG partitions. The effectiveness of our technique is demonstrated by applying it to a medium-sized software system.\",\"PeriodicalId\":254605,\"journal\":{\"name\":\"STEP '99. Proceedings Ninth International Workshop Software Technology and Engineering Practice\",\"volume\":\"19 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"1999-08-30\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"303\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"STEP '99. Proceedings Ninth International Workshop Software Technology and Engineering Practice\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1109/STEP.1999.798481\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"STEP '99. Proceedings Ninth International Workshop Software Technology and Engineering Practice","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/STEP.1999.798481","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Automatic clustering of software systems using a genetic algorithm
Large software systems tend to have a rich and complex structure. Designers typically depict the structure of software systems as one or more directed graphs. For example, a directed graph can be used to describe the modules (or classes) of a system and their static interrelationships using nodes and directed edges, respectively. We call such graphs "module dependency graphs" (MDGs). MDGs can be large and complex graphs. One way of making them more accessible is to partition them, separating their nodes (i.e. modules) into clusters (i.e. subsystems). In this paper, we describe a technique for finding "good" MDG partitions. Good partitions feature relatively independent subsystems that contain modules which are highly interdependent. Our technique treats finding a good partition as an optimization problem, and uses a genetic algorithm (GA) to search the extraordinarily large solution space of all possible MDG partitions. The effectiveness of our technique is demonstrated by applying it to a medium-sized software system.