Pub Date : 2019-12-01DOI: 10.1109/APSEC48747.2019.00063
Denghui Zhang, Guisai Wang, Wei Xu, Kevin Gao
Python is the programming language of choice for many data scientists, and thus widely used in cloud computing platforms. Untrusted cloud environments have imposed challenges to the security of Python applications. Intel SGX (Intel Software Guard eXtensions) provides an encrypted enclave for securing applications, and a library OS technology can be adopted to run legacy applications inside these enclaves. However, this technology has some limitations: (i) It is difficult to ensure the integrity of Python applications as a result of the complex dependencies among modules. (ii) Python applications often spawn new processes, and file access permissions need to be handled separately in the parent-child process. To address these limitations, we present SGXPy (SGX Python), an integrity preserving tool for Python applications. The design of SGXPy makes it possible to obtain dependencies of applications and assign file access permissions among processes automatically: (i) During the build stage, SGXPy constructs dependency manifests of Python applications based on the ptrace mechanism. (ii) To enhance access control among processes, SGXPy utilizes process introspection to cascading manifests for each process. With the proposed framework, sophisticated Python applications such as NumPy and a web server can now run unmodified with the library OS. We present a series of experiments to evaluate performance overheads of Python applications in SGX. Our evaluation of NumPy submodules shows SGXPy can pass 97.60% of unit testing, even with the isolated environment and limited memory of SGX.
{"title":"SGXPy: Protecting Integrity of Python Applications with Intel SGX","authors":"Denghui Zhang, Guisai Wang, Wei Xu, Kevin Gao","doi":"10.1109/APSEC48747.2019.00063","DOIUrl":"https://doi.org/10.1109/APSEC48747.2019.00063","url":null,"abstract":"Python is the programming language of choice for many data scientists, and thus widely used in cloud computing platforms. Untrusted cloud environments have imposed challenges to the security of Python applications. Intel SGX (Intel Software Guard eXtensions) provides an encrypted enclave for securing applications, and a library OS technology can be adopted to run legacy applications inside these enclaves. However, this technology has some limitations: (i) It is difficult to ensure the integrity of Python applications as a result of the complex dependencies among modules. (ii) Python applications often spawn new processes, and file access permissions need to be handled separately in the parent-child process. To address these limitations, we present SGXPy (SGX Python), an integrity preserving tool for Python applications. The design of SGXPy makes it possible to obtain dependencies of applications and assign file access permissions among processes automatically: (i) During the build stage, SGXPy constructs dependency manifests of Python applications based on the ptrace mechanism. (ii) To enhance access control among processes, SGXPy utilizes process introspection to cascading manifests for each process. With the proposed framework, sophisticated Python applications such as NumPy and a web server can now run unmodified with the library OS. We present a series of experiments to evaluate performance overheads of Python applications in SGX. Our evaluation of NumPy submodules shows SGXPy can pass 97.60% of unit testing, even with the isolated environment and limited memory of SGX.","PeriodicalId":325642,"journal":{"name":"2019 26th Asia-Pacific Software Engineering Conference (APSEC)","volume":"22 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115510697","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Semantic versioning (SemVer) was widely used in the development of microservice systems to place limits on the configuration and growth of service versions. SemVer can suppress the complexity of MSAs; however, the interactions among various elements (e.g., services, endpoints, versions) remain difficult to manage. Therefore, this paper presents a tool for monitoring microservice systems, generating visualized version-based service dependency graphs, and providing graph search services. The proposed scheme is called Version-based Microservice Analysis, Monitoring, and Visualization (VMAMV). This system automatically detects potential design problems for microservice with multiple versions in design time, discover service anomalies for all service versions in runtime, and immediately notifies users of problems shortly after they occur. The conducted experiments show that VMAMV is feasible and effective on the detection of problems and anomalies for microservice development and operation.
{"title":"Version-Based Microservice Analysis, Monitoring, and Visualization","authors":"Shang-Pin Ma, I-Hsiu Liu, Chun-Yu Chen, Jiun-Ting Lin, Nien-Lin Hsueh","doi":"10.1109/APSEC48747.2019.00031","DOIUrl":"https://doi.org/10.1109/APSEC48747.2019.00031","url":null,"abstract":"Semantic versioning (SemVer) was widely used in the development of microservice systems to place limits on the configuration and growth of service versions. SemVer can suppress the complexity of MSAs; however, the interactions among various elements (e.g., services, endpoints, versions) remain difficult to manage. Therefore, this paper presents a tool for monitoring microservice systems, generating visualized version-based service dependency graphs, and providing graph search services. The proposed scheme is called Version-based Microservice Analysis, Monitoring, and Visualization (VMAMV). This system automatically detects potential design problems for microservice with multiple versions in design time, discover service anomalies for all service versions in runtime, and immediately notifies users of problems shortly after they occur. The conducted experiments show that VMAMV is feasible and effective on the detection of problems and anomalies for microservice development and operation.","PeriodicalId":325642,"journal":{"name":"2019 26th Asia-Pacific Software Engineering Conference (APSEC)","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130592310","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-12-01DOI: 10.1109/APSEC48747.2019.00054
Sapna Jaidka, S. Reeves, Judy Bowen
To gain confidence in safety-critical interactive systems, formal modelling and analysis plays a vital role. The aim of this paper is to use Coloured Petri Nets to model and analyze safety-critical interactive systems. We present a technique to construct a single Coloured Petri Net model of the user interface, interaction and functionality of safety-critical interactive systems and then analyze the achieved Coloured Petri Net model using a state space analysis method. There are several reasons for using Coloured Petri Nets. Coloured Petri Nets provides a graphical representation and hierarchical structuring mechanism, and a state space verification technique, which allows querying the state space to investigate behaviours of a system. There are several tools that supports Coloured Petri Nets including the CPN Tool which helps in building CPN models and allows simulation and analysis using state spaces. The technique to model and analyze safety-critical interactive systems is illustrated using a simplified infusion pump example.
{"title":"A Coloured Petri Net Approach to Model and Analyze Safety-Critical Interactive Systems","authors":"Sapna Jaidka, S. Reeves, Judy Bowen","doi":"10.1109/APSEC48747.2019.00054","DOIUrl":"https://doi.org/10.1109/APSEC48747.2019.00054","url":null,"abstract":"To gain confidence in safety-critical interactive systems, formal modelling and analysis plays a vital role. The aim of this paper is to use Coloured Petri Nets to model and analyze safety-critical interactive systems. We present a technique to construct a single Coloured Petri Net model of the user interface, interaction and functionality of safety-critical interactive systems and then analyze the achieved Coloured Petri Net model using a state space analysis method. There are several reasons for using Coloured Petri Nets. Coloured Petri Nets provides a graphical representation and hierarchical structuring mechanism, and a state space verification technique, which allows querying the state space to investigate behaviours of a system. There are several tools that supports Coloured Petri Nets including the CPN Tool which helps in building CPN models and allows simulation and analysis using state spaces. The technique to model and analyze safety-critical interactive systems is illustrated using a simplified infusion pump example.","PeriodicalId":325642,"journal":{"name":"2019 26th Asia-Pacific Software Engineering Conference (APSEC)","volume":"61 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116528735","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-12-01DOI: 10.1109/APSEC48747.2019.00038
Dehui Du, Tong Guo, Yao Wang
Cyber-Physical Systems (CPS) connect the cyberworld with physical world with a network of interrelated el-ements, such as sensors and actuators. It is always runningin an open environment and the main characteristics of CPSis hybrid and stochastic. Domain-Specific Modeling Language(DSML) offers a tailor-made solution for modeling a specific field. However, there still lacks of DSML to model hybrid and stochasticbehavior in CPS. To address these issues, we propose a StochasticHybrid Modeling Language (SHML) based on domain modellanguage engineering, which supports modeling stochastic andhybrid behaviors in CPS. The abstract syntax, concrete syntax, and operational semantics of SHML are presented. The SHMLis implemented based on the GEMOC studio. With the help ofthe GEMOC execution engine and the Scilab plugin, the SHMLmodels can be executed to generate simulation traces of thesystem. These traces are fed into a statistical model checker whichsupports simulation-based verification to enable the qualitativeand quantitative analysis. The novelty of our work is that aDSML is proposed to model the behavior of CPS. Moreover, the tool prototype is implemented based on the model-drivenarchitecture. We illustrate the feasibility of our approach withan energy-aware building.
{"title":"SHML: Stochastic Hybrid Modeling Language for CPS Behavior","authors":"Dehui Du, Tong Guo, Yao Wang","doi":"10.1109/APSEC48747.2019.00038","DOIUrl":"https://doi.org/10.1109/APSEC48747.2019.00038","url":null,"abstract":"Cyber-Physical Systems (CPS) connect the cyberworld with physical world with a network of interrelated el-ements, such as sensors and actuators. It is always runningin an open environment and the main characteristics of CPSis hybrid and stochastic. Domain-Specific Modeling Language(DSML) offers a tailor-made solution for modeling a specific field. However, there still lacks of DSML to model hybrid and stochasticbehavior in CPS. To address these issues, we propose a StochasticHybrid Modeling Language (SHML) based on domain modellanguage engineering, which supports modeling stochastic andhybrid behaviors in CPS. The abstract syntax, concrete syntax, and operational semantics of SHML are presented. The SHMLis implemented based on the GEMOC studio. With the help ofthe GEMOC execution engine and the Scilab plugin, the SHMLmodels can be executed to generate simulation traces of thesystem. These traces are fed into a statistical model checker whichsupports simulation-based verification to enable the qualitativeand quantitative analysis. The novelty of our work is that aDSML is proposed to model the behavior of CPS. Moreover, the tool prototype is implemented based on the model-drivenarchitecture. We illustrate the feasibility of our approach withan energy-aware building.","PeriodicalId":325642,"journal":{"name":"2019 26th Asia-Pacific Software Engineering Conference (APSEC)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122062676","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-12-01DOI: 10.1109/APSEC48747.2019.00070
Nozomi Nakajima, S. Matsumoto, S. Kusumoto
Comparing and selecting the most appropriate JavaScript Framework (JSF) is an important activity for web application development. However, it is difficult to collect much information for comparison of JSFs. In this paper, we present a playground tool named Jact to support comprehension of individual JSF characteristics. By the concept of playground, users can freely run, edit, and share source code in their web browsers. Based on the concept, Jact enables developers to compare source codes and runtime performances of each JSF based on typical tasks in web development. Task-based comparison is useful for understanding the feature of each JSF. Furthermore, developers can submit tasks and source code which uses a specific JSF. By sharing tasks and source code written by not only administrators but also developers, Jact can continuously provide information relating to JSF, which includes benchmark and API usage. In order to evaluate the effectiveness of Jact, we conducted a subject experiment with 13 participants. Jact is currently available at http://13.231.18.92.
{"title":"Jact: A Playground Tool for Comparison of JavaScript Frameworks","authors":"Nozomi Nakajima, S. Matsumoto, S. Kusumoto","doi":"10.1109/APSEC48747.2019.00070","DOIUrl":"https://doi.org/10.1109/APSEC48747.2019.00070","url":null,"abstract":"Comparing and selecting the most appropriate JavaScript Framework (JSF) is an important activity for web application development. However, it is difficult to collect much information for comparison of JSFs. In this paper, we present a playground tool named Jact to support comprehension of individual JSF characteristics. By the concept of playground, users can freely run, edit, and share source code in their web browsers. Based on the concept, Jact enables developers to compare source codes and runtime performances of each JSF based on typical tasks in web development. Task-based comparison is useful for understanding the feature of each JSF. Furthermore, developers can submit tasks and source code which uses a specific JSF. By sharing tasks and source code written by not only administrators but also developers, Jact can continuously provide information relating to JSF, which includes benchmark and API usage. In order to evaluate the effectiveness of Jact, we conducted a subject experiment with 13 participants. Jact is currently available at http://13.231.18.92.","PeriodicalId":325642,"journal":{"name":"2019 26th Asia-Pacific Software Engineering Conference (APSEC)","volume":"28 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126967966","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-12-01DOI: 10.1109/APSEC48747.2019.00028
Chen Zhi, Shuiguang Deng, Jianwei Yin, Min Fu, Hai Zhu, Yuanping Li, Tao Xie
To assure high software quality for large-scale industrial software systems, traditional approaches of software quality assurance, such as software testing and performance engineering, have been widely used within Alibaba, the world's largest retailer, and one of the largest Internet companies in the world. However, there still exists a high demand for software quality assessment to achieve high sustainability of business growth and engineering culture in Alibaba. To address this issue, we develop an industrial solution for software quality assessment by following the GQM paradigm in an industrial setting. Moreover, we integrate multiple assessment methods into our solution, ranging from metric selection to rating aggregation. Our solution has been implemented, deployed, and adopted at Alibaba: (1) used by Alibaba's Business Platform Unit to continually monitor the quality for 60+ core software systems; (2) used by Alibaba's R&D Efficiency Unit to support group-wide quality-aware code search and automatic code inspection. This paper presents our proposed industrial solution, including its techniques and industrial adoption, along with the lessons learned during the development and deployment of our solution.
{"title":"Quality Assessment for Large-Scale Industrial Software Systems: Experience Report at Alibaba","authors":"Chen Zhi, Shuiguang Deng, Jianwei Yin, Min Fu, Hai Zhu, Yuanping Li, Tao Xie","doi":"10.1109/APSEC48747.2019.00028","DOIUrl":"https://doi.org/10.1109/APSEC48747.2019.00028","url":null,"abstract":"To assure high software quality for large-scale industrial software systems, traditional approaches of software quality assurance, such as software testing and performance engineering, have been widely used within Alibaba, the world's largest retailer, and one of the largest Internet companies in the world. However, there still exists a high demand for software quality assessment to achieve high sustainability of business growth and engineering culture in Alibaba. To address this issue, we develop an industrial solution for software quality assessment by following the GQM paradigm in an industrial setting. Moreover, we integrate multiple assessment methods into our solution, ranging from metric selection to rating aggregation. Our solution has been implemented, deployed, and adopted at Alibaba: (1) used by Alibaba's Business Platform Unit to continually monitor the quality for 60+ core software systems; (2) used by Alibaba's R&D Efficiency Unit to support group-wide quality-aware code search and automatic code inspection. This paper presents our proposed industrial solution, including its techniques and industrial adoption, along with the lessons learned during the development and deployment of our solution.","PeriodicalId":325642,"journal":{"name":"2019 26th Asia-Pacific Software Engineering Conference (APSEC)","volume":"80 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126327631","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Since many enterprise systems contain complex business rules, it is important that developers find logical faults during code review. Techniques for extracting specifications help developers understand business rules implemented in source code. The developers can then find logical faults by reviewing the extracted specification. However, when the implemented business rules are complex, it is a problem that the size of the extracted specification is too large for developers to review. To overcome that problem, in the present study, an approach to reduce the size of the extracted specification that has to be reviewed is proposed. This approach focuses on logical faults that can be inferred without having the correct business specification and identifies the part of the specification including those faults as the specification that has to be reviewed. Three patterns that infer such faults in a business specification are defined, and a technique for detecting those patterns in an extracted specification is proposed. To evaluate the proposed technique, it was applied to seven sets of business specifications extracted from an enterprise information system. The results of the evaluation show that the technique successfully reduces the size of the specification that has to be reviewed (by 83% on average), although the reduced specification contains some misdetections. They also show that the technique makes it easier to understand and review a business specification implemented in source code.
{"title":"Inferring Faults in Business Specifications Extracted from Source Code","authors":"Kazuya Yasuda, Shinji Itoh, Ryota Mibe, Yoshinori Jodai, Fumie Nakaya","doi":"10.1109/APSEC48747.2019.00040","DOIUrl":"https://doi.org/10.1109/APSEC48747.2019.00040","url":null,"abstract":"Since many enterprise systems contain complex business rules, it is important that developers find logical faults during code review. Techniques for extracting specifications help developers understand business rules implemented in source code. The developers can then find logical faults by reviewing the extracted specification. However, when the implemented business rules are complex, it is a problem that the size of the extracted specification is too large for developers to review. To overcome that problem, in the present study, an approach to reduce the size of the extracted specification that has to be reviewed is proposed. This approach focuses on logical faults that can be inferred without having the correct business specification and identifies the part of the specification including those faults as the specification that has to be reviewed. Three patterns that infer such faults in a business specification are defined, and a technique for detecting those patterns in an extracted specification is proposed. To evaluate the proposed technique, it was applied to seven sets of business specifications extracted from an enterprise information system. The results of the evaluation show that the technique successfully reduces the size of the specification that has to be reviewed (by 83% on average), although the reduced specification contains some misdetections. They also show that the technique makes it easier to understand and review a business specification implemented in source code.","PeriodicalId":325642,"journal":{"name":"2019 26th Asia-Pacific Software Engineering Conference (APSEC)","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124131568","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-12-01DOI: 10.1109/APSEC48747.2019.00058
Yi Ren, Jianbo Guan, Jun Ma, Yusong Tan, Qingbo Wu, Y. Ding
Open source represents an important way in which today's software is developed. The adoption of open source software continues to accelerate because of the great potential it offers, such as productivity improvement, cost savings and quicker innovation. While the complexity and the size of software composition grow, it becomes difficult to effectively scan and track the code source, especially for software with tremendous scale of code, such as operating systems. So far, existing work on open source components mainly focus on how to mitigate potential license incompliance, to reduce potential security risks introduced by open source vulnerabilities, and to detect and match open source components in the code. To ensure code traceability and manageability for large scale mixed-source operating system, we believe it is beneficial to automatically distinguish sources of the system code in the granularity of software packages and manage them separately. However, according to the literature, there is a lack of relevant work in this area. In this paper, we first classify the packages into three categories in terms of code source from the perspective of OS developers and maintainers. Then we propose CLASC, an efficient code source classification algorithm. With the capability of package info extraction and analysis, CLASC can classify software packages into the defined categories according to their changelog info. And we design and implement KyAnalyzer, a Web-based package management and code source analysis platform. It provides automatic code source analyzing services and is capable of managing OS packages differentially according to their different categories of code source with CLASC incorporated as a component of it. Experimental results show the correctness and efficiency of the Web-enabled package source classifier.
{"title":"CLASC: A Changelog Based Automatic Code Source Classification Method for Operating System Packages","authors":"Yi Ren, Jianbo Guan, Jun Ma, Yusong Tan, Qingbo Wu, Y. Ding","doi":"10.1109/APSEC48747.2019.00058","DOIUrl":"https://doi.org/10.1109/APSEC48747.2019.00058","url":null,"abstract":"Open source represents an important way in which today's software is developed. The adoption of open source software continues to accelerate because of the great potential it offers, such as productivity improvement, cost savings and quicker innovation. While the complexity and the size of software composition grow, it becomes difficult to effectively scan and track the code source, especially for software with tremendous scale of code, such as operating systems. So far, existing work on open source components mainly focus on how to mitigate potential license incompliance, to reduce potential security risks introduced by open source vulnerabilities, and to detect and match open source components in the code. To ensure code traceability and manageability for large scale mixed-source operating system, we believe it is beneficial to automatically distinguish sources of the system code in the granularity of software packages and manage them separately. However, according to the literature, there is a lack of relevant work in this area. In this paper, we first classify the packages into three categories in terms of code source from the perspective of OS developers and maintainers. Then we propose CLASC, an efficient code source classification algorithm. With the capability of package info extraction and analysis, CLASC can classify software packages into the defined categories according to their changelog info. And we design and implement KyAnalyzer, a Web-based package management and code source analysis platform. It provides automatic code source analyzing services and is capable of managing OS packages differentially according to their different categories of code source with CLASC incorporated as a component of it. Experimental results show the correctness and efficiency of the Web-enabled package source classifier.","PeriodicalId":325642,"journal":{"name":"2019 26th Asia-Pacific Software Engineering Conference (APSEC)","volume":"49 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128608987","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Spinlocks have been widely used as a solution for synchronous accesses to shared resources, and their correctness is critical to guarantee the consistency of concurrent processes. This paper presents formal models and machine-checked verification of the correctness of spinlocks at instruction level. We present the formal verification of two spinlocks, which are spinlocks implemented based on the ARM instructions and the x86 instructions, respectively. Our model formalizes the lowlevel instructions that are necessary to capture the execution of spinlocks, characterizes the processor hardware mechanisms related to each instruction, and considers the context switches on processors and two-level scheduling of processors and processes. We specify the correctness property of our models, that is, accesses of a critical section satisfy mutual exclusion, and verify that the models satisfy the property using the theorem prover Isabelle/HOL. With the verification experience, we give some suggestions on how to implement spinlock leveraging the ARM ISA.
{"title":"Formal Modelling and Verification of Spinlocks at Instruction Level","authors":"Leping Zhang, Qianying Zhang, Guohui Wang, Zhiping Shi, Minhua Wu, Yong Guan","doi":"10.1109/APSEC48747.2019.00055","DOIUrl":"https://doi.org/10.1109/APSEC48747.2019.00055","url":null,"abstract":"Spinlocks have been widely used as a solution for synchronous accesses to shared resources, and their correctness is critical to guarantee the consistency of concurrent processes. This paper presents formal models and machine-checked verification of the correctness of spinlocks at instruction level. We present the formal verification of two spinlocks, which are spinlocks implemented based on the ARM instructions and the x86 instructions, respectively. Our model formalizes the lowlevel instructions that are necessary to capture the execution of spinlocks, characterizes the processor hardware mechanisms related to each instruction, and considers the context switches on processors and two-level scheduling of processors and processes. We specify the correctness property of our models, that is, accesses of a critical section satisfy mutual exclusion, and verify that the models satisfy the property using the theorem prover Isabelle/HOL. With the verification experience, we give some suggestions on how to implement spinlock leveraging the ARM ISA.","PeriodicalId":325642,"journal":{"name":"2019 26th Asia-Pacific Software Engineering Conference (APSEC)","volume":"22 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127962523","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 2019-12-01DOI: 10.1109/APSEC48747.2019.00047
Anas Shatnawi, T. Ziadi, Mohamed Yassin Mohamadi
Software developers rely on the clone-and-own approach to rapidly develop software product variants (PVs) that meet variability in market needs. To improve the comprehension of how PVs are evolved and varied, we analyze the clone-and-own practices applied by developers of these PVs. We perform an empirical study on 75 android families to gain insights about observable phenomena related to the commonality and variability between the source code of PVs of these families. In particular, we study three research questions to identify the commonality and variability related to the organization of source code files, cloning Java methods, and configuration parameters of AndroidManifest.xml files. The results show that cloning packages, Java files and Java methods is a common practice used by developers of all android families. Maintainers should put efforts for managing the diverse implementations (bodies) of the modified cloned methods and it is essential to consider the commonality and variability of configuration parameters.
{"title":"Understanding Source Code Variability in Cloned Android Families: An Empirical Study on 75 Families","authors":"Anas Shatnawi, T. Ziadi, Mohamed Yassin Mohamadi","doi":"10.1109/APSEC48747.2019.00047","DOIUrl":"https://doi.org/10.1109/APSEC48747.2019.00047","url":null,"abstract":"Software developers rely on the clone-and-own approach to rapidly develop software product variants (PVs) that meet variability in market needs. To improve the comprehension of how PVs are evolved and varied, we analyze the clone-and-own practices applied by developers of these PVs. We perform an empirical study on 75 android families to gain insights about observable phenomena related to the commonality and variability between the source code of PVs of these families. In particular, we study three research questions to identify the commonality and variability related to the organization of source code files, cloning Java methods, and configuration parameters of AndroidManifest.xml files. The results show that cloning packages, Java files and Java methods is a common practice used by developers of all android families. Maintainers should put efforts for managing the diverse implementations (bodies) of the modified cloned methods and it is essential to consider the commonality and variability of configuration parameters.","PeriodicalId":325642,"journal":{"name":"2019 26th Asia-Pacific Software Engineering Conference (APSEC)","volume":"45 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125617146","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}