Font Size: a A A

Knowledge-Driven Software Pattern Recognition

Posted on:2021-06-30Degree:DoctorType:Dissertation
Country:ChinaCandidate:R H XiongFull Text:PDF
GTID:1488306557493314Subject:Software engineering
Abstract/Summary:PDF Full Text Request
Due to the complexity of software systems,understanding existing software has become one of the most expensive tasks during all stages of the software life cycle.According to statistics,as much as 60% of the workload in software engineering is spent on understanding software systems.Recovering design information from legacy systems is a very challenging task.Even for mediumsized projects with 70 K to 280 K source code lines,it takes an experienced designer to spend an average of 100 hours to create an accurate architecture.Identifying software patterns is one of the important means to understand the system.Software patterns,including architectural patterns and design patterns,summarize solutions to specific and recurring problems in the design or implementation of software systems.The recognition of software patterns provides an effective way to understand the principles behind the system design.The recognized pattern instances reveal the intentions of the developers and provide maintainers with insights into the structure of the software system and its internal characteristics.The software model itself refines the design knowledge obtained by experienced experts from practice;and the artifacts,from which the software system is understood,can also be understood as a form of knowledge about the system.Nevertheless,existing approaches rarely explore the recognition of software patterns from a knowledge perspective.Recognizing patterns involves many aspects of domain knowledge.Existing methods often use a single aspect of domain knowledge as evidence of patterns' existence,which is often insufficient and leads to false positives.The context of the technical field is not clear,and the mapping between design and implementation is difficult to automate,resulting in a large manual workload for recognizing patterns.In response to the above problems,the main contributions of this dissertation include the following aspects:(1)Using idiomatic implementation to identify design patterns in the context of Java language.A set of ontologies are construct to describe the concept of design patterns and the structure of Java language.An entity and relationship extraction algorithm is further proposed to construct knowledge graph from source code,and the pattern templates of 23 GoF(Gang of Four)design patterns are constructed.An experiment is finally performed on five open source benchmark systems comparing with three other approaches;the accuracy and time performance of the recognition are evaluated.(2)On this basis,using dynamic analysis methods to further distinguish structurally similar design pattern instances.A test script markup language and a test case generation algorithm based on the markup language are proposed to drive the execution of design pattern instances.A program tracking method is described,which enables the monitor of the the program's running status without instrumentation.Interval-based temporal relationships are further introduced to construct a modeling and specification method of runtime behavior.Finally,466 instances reported by five existing approaches were experimently verified using six open source benchmark systems with respect to five GoF design patterns,which further improved the accuracy of recognition.(3)Integrating multiple domain knowledge based on grounded theory to use experts' empirical knowledge for architectural pattern recognition.A grounded theory-based architectural pattern recognition approach is proposed.The approach focuses on the analysis of study cases to conduct research on relevant materials.Through a top-down recognition process,the approach builds a theory about the architectural pattern.Then the practical application of the approach is demonstrated and analyzed around two open source systems.Finally the accuracy and time performance of the approach are experimently evaluated using six open source systems.(4)Abstracting the process and implementation methods of solving design pattern and architectural pattern recognition problems based on static analysis,dynamic anslysis and grounded theory to establish a knowledge-driven pattern recognition framework.A layered knowledge graph is proposed taking advantage of the characteristics of layered structure.On this basis,patterns are formally defined using description logic,and the pattern recognition problem is transformed into the concept satisfiability problem.The core process and components of pattern recognition are finally defined to encapsulate the variable part of the recognition process into pluggable components.A prototype tool is further implemented based on the framework.
Keywords/Search Tags:Software Pattern Recognition, Software Comprehension, Reverse Engineering, Knowledge Representation
PDF Full Text Request
Related items