{"title":"通过面向对象软件的逆向工程进行架构级假设检验","authors":"S. Counsell, Peter Newson, E. Mendes","doi":"10.1109/WPC.2000.852480","DOIUrl":null,"url":null,"abstract":"Comprehension of an object oriented (OO) system, its architecture and use of OO features such as aggregation, generalisation and other forms of association is a difficult task to undertake without the original design documentation for reference. A reverse engineering tool was used to reproduce the UML design documentation from code of three industrial sized systems. High level class metrics were then collected directly from the design documents. Three hypotheses were tested to establish relationships between these high level features and the low level class features of number of class methods and attributes. A further hypothesis was tested to determine features of key classes in a system. Results indicated that, whilst no clear patterns emerged for hypotheses relating to generalisation, there was a clear (positive) statistical significance for all three systems studied between aggregation, other types of association and the number of method and attributes in a class. The final hypothesis tested supported the view that key classes in each of the three systems tended to contain a large number of methods, attributes, and associations, significant amounts of aggregation but very little inheritance. An important factor in the comprehension of a systems' architecture is therefore an understanding of the systems' key classes and the coupling patterns (due to aggregation and association) of those classes.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"42 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"15","resultStr":"{\"title\":\"Architectural level hypothesis testing through reverse engineering of object-oriented software\",\"authors\":\"S. Counsell, Peter Newson, E. Mendes\",\"doi\":\"10.1109/WPC.2000.852480\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Comprehension of an object oriented (OO) system, its architecture and use of OO features such as aggregation, generalisation and other forms of association is a difficult task to undertake without the original design documentation for reference. A reverse engineering tool was used to reproduce the UML design documentation from code of three industrial sized systems. High level class metrics were then collected directly from the design documents. Three hypotheses were tested to establish relationships between these high level features and the low level class features of number of class methods and attributes. A further hypothesis was tested to determine features of key classes in a system. Results indicated that, whilst no clear patterns emerged for hypotheses relating to generalisation, there was a clear (positive) statistical significance for all three systems studied between aggregation, other types of association and the number of method and attributes in a class. The final hypothesis tested supported the view that key classes in each of the three systems tended to contain a large number of methods, attributes, and associations, significant amounts of aggregation but very little inheritance. An important factor in the comprehension of a systems' architecture is therefore an understanding of the systems' key classes and the coupling patterns (due to aggregation and association) of those classes.\",\"PeriodicalId\":448149,\"journal\":{\"name\":\"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension\",\"volume\":\"42 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2000-06-10\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"15\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1109/WPC.2000.852480\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/WPC.2000.852480","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Architectural level hypothesis testing through reverse engineering of object-oriented software
Comprehension of an object oriented (OO) system, its architecture and use of OO features such as aggregation, generalisation and other forms of association is a difficult task to undertake without the original design documentation for reference. A reverse engineering tool was used to reproduce the UML design documentation from code of three industrial sized systems. High level class metrics were then collected directly from the design documents. Three hypotheses were tested to establish relationships between these high level features and the low level class features of number of class methods and attributes. A further hypothesis was tested to determine features of key classes in a system. Results indicated that, whilst no clear patterns emerged for hypotheses relating to generalisation, there was a clear (positive) statistical significance for all three systems studied between aggregation, other types of association and the number of method and attributes in a class. The final hypothesis tested supported the view that key classes in each of the three systems tended to contain a large number of methods, attributes, and associations, significant amounts of aggregation but very little inheritance. An important factor in the comprehension of a systems' architecture is therefore an understanding of the systems' key classes and the coupling patterns (due to aggregation and association) of those classes.