Large-scale software systems are usually long-living and have long development cycle in which architecture design is a vital part of the software development process.Software architecture knowledge(such as architectural decision knowledge)has become the core of architecture description.Software architecture knowledge comprises intricate conceptual elements.In practice,architectural knowledge usually is undocumented and unstructured,and is written as textual data.Therefore,the core question is how to effectively extract and analyze important software architectural knowledge and how to apply software architecture knowledge in the architecting activities.Whilst some works have been done in this area,there still exist practical problems to be investigated:(1)The approaches to extracting architecture knowledge are not systematically investigated.Architecture knowledge is from diverse sources and abstract,and there are two main approaches to extract architecture knowledge in software artifacts: manual extraction and automatic extraction.There are limited explorations on what architecture knowledge extraction current research focus on,what are standard ways of manually or automatically extracting architecture knowledge,and what can be the further improvements of architectural knowledge extraction.In addition,the current approaches for automatic architecture knowledge extraction are not clear;for example,what architecting activities could be supported by the extracted architecture knowledge.(2)Architecture knowledge spans the entire software development life cycle,and architecture pattern is an important high-level design decision that affects other design decisions in the software development,such as software requirement knowledge,risk-related knowledge,software maintenance relevant knowledge,and refactoring relevant knowledge.Therefore,it is necessary to investigate what architecture knowledge is widely discussed in practice.Architecture patterns are widely discussed and analyzed by developers;however,there is no systematic research on architecture pattern knowledge extraction and analysis.Furthermore,there is limited investigation of how architecture patterns are applied in architecting activities,for example,how architecture patterns are related to software quality attributes.(3)Architecture tactic is a lower-level design,and the applications of architecture tactics and architecture patterns can be used together to satisfy software quality attributes.However,the design relationship between architecture tactics and software quality attributes needs further investigation.This thesis proposed the approaches to extract architecture knowledge and analyzed the extracted architectural knowledge in architecting activities from the developers’ perspective.Several valuable research achievements have been made:(1)Architectural knowledge is scatted in various software artifacst and highly abstract,and this thesis proposed a classification on the purposes,software artifacts,and benefits and limitations of architecture knowledge extraction.This thesis first designed and performed a systemic mapping study of(semi-)automatic architecture knowledge extraction.The key results are: seven text analysis techniques that can be used for extracting textual architecture knowledge,and the extracted architecture knowledge can be used for supporting a set of architecting activities;four categories of software artifacts that can be used for(semi-)automatic knowledge extraction,and the extraction and analysis of architecture knowledge helps establish development knowledge traceability;five categories of benefits are identified of(semi-)automictic architecture knowledge extraction,and as well as three categories of limitations.Knowing these benefits and limitations can help developers apply(semi-)automatic architecture knowledge extraction methods effectively in practice.(2)Given that there is no systematic research on architecture knowledge in practice,this thesis proposed a conceptual model for extracting and analyzing architecture pattern knowledge.We first manually extracted architecture pattern knowledge in the developers’ question and answer website for analysis.We analyzed the relationships between architecture pattern and software quality attributes to build a baseline.The results show that design contexts impact the applications of architecture patterns.In addition,we extracted data to identify architecture knowledge in the developer mailing list of open source software projects.This thesis identified software architecture knowledge communicated by the developers.The terms related to the architecture knowledge are extracted to establish the architecture truth dataset,which can support(semi-)automatic extraction of architecture knowledge in the next step.(3)Regrading that there is no systematic research on the relationship between architecture tactics and software quality,this thesis proposed a semi-automatic extraction method based on the architecture domain dictionary.The method is used to extract architecture tactic knowledge in the developer’s question and answer website.This thesis then applied a bottom-up empirical analysis to analyze how architecture tactics impact software quality attributes.The key results are: the architecture domain dictionary can greatly improve the accuracy of the architecture knowledge extraction;this thesis summarized the design relationship between tactics and quality attributes based on empirical evidence;and this thesis compared the extracted relationships(architecture tactics and software quality attributes)with the literature.The relationships extracted of this thesis can be used as a supplement to the current literature to help architects and software practitioners better apply architectural tactics knowledge in practice. |