35 research outputs found
Recommended from our members
Scenario-based architectural design decisions documentation and evolution
textSoftware architecture is considered as a set of architectural design decisions. Capturing and representing architectural design decisions during the architecting process is necessary for reducing architectural knowledge evaporation. Moreover, managing the evolution of architectural design decisions helps to maintain consistency between requirements and the deployed system. In this thesis, we create the Triple View Model (TVM) as a general architecture framework for documenting architectural design decisions. The TVM clarifies the notion of architectural design decisions in three different views and covers key features of the architecting process. Based on the TVM, we propose a scenario-based methodology (SceMethod) to manage the documentation and the evolution of architectural design decisions. We also conduct a case study on an industrial project to validate the applicability and the effectiveness of the TVM and the SceMethod. The results show they provide complete documentation on architectural design decisions for creating a system architecture, and well support architecture evolution with changing requirements.Electrical and Computer Engineerin
Recommended from our members
Managing architectural design decision documentation and evolution
textSoftware architecture provides a high-level framework for a software system, and plays an important role in achieving functional and non-functional requirements. Since the year 2004, software architecture has been considered as a set of architectural design decisions (ADDs). However, software architecture is implicit and evolves as the software development process moves forward. The implicitness together with continuous evolution leads to many problems such as architecture drift and erosion as well as high cost reconstruction. Without capturing and managing ADDs, most of existing architectural knowledge evaporates, and reusing and evolving architecture can be difficult. These problems are even more serious in global software development (GSD). This dissertation presents a novel methodology for capturing ADDs during the architecting process and managing the evolution of ADDs to reduce architectural knowledge evaporation. This methodology explicitly documents ADDs using a scenario-based approach, which covers three views of a software architecture, to record architectural knowledge, and incorporates evolution-centered characteristics to manage ADD evolution for reducing architectural knowledge evaporation. Furthermore, the dissertation presents ADD management in the context of GSD to analyze typical ADD management paradigms, and to offer insights on, techniques on, and support for sharing and coordinating ADDs in a GSD setting. This dissertation focuses on both the documentation and the evolution needs for ADDs in localized and global software development.Electrical and Computer Engineerin
Detecting android API compatibility issues with API differences
Android application programming interface (API) enables app developers to harness the functionalities of Android devices by interfacing with services and hardware using a Software Development Kit (SDK). However, API frequently evolves together with its associated SDK, and compatibility issues may arise when the API level supported by the underlying device differs from the API level targeted by app developers. These issues can lead to unexpected behaviors, resulting in a bad user experience. This article presents ACID, a novel approach to detecting Android API compatibility issues induced by API evolution. It detects both API invocation compatibility issues and API callback compatibility issues using API differences and static analysis of the app code. Experiments with 20 benchmark apps show that ACID is more accurate and faster than the state-of-the-art techniques in detecting API compatibility issues. The application of ACID on 2965 real-world apps further demonstrates its practical applicability. To eliminate the false positives reported by ACID, this article also presents a simple yet effective method to quickly verify the compatibility issues by selecting and executing the relevant tests from app's test suite, and experimental results demonstrate the verification method can eliminate most false positives when app's test suite has good coverage of the API usages
ACID: An API compatibility issue detector for android apps
Android API is frequently updated, and compatibility issues may be induced when the API level supported by the device differs from the API level targeted by app developers. This paper presents ACID, an API compatibility issue detector for Android apps. ACID utilizes API differences and static analysis of Android apps to detect both API invocation compatibility issues and API callback compatibility issues. Our evaluation on 20 benchmark apps from previous studies shows that ACID is more accurate and faster in detecting compatibility issues than state-of-the-art techniques. We also ran ACID on 35 more real-world apps to demonstrate ACID's practical applicability. ACID is available at https://github.com/TSUMahmud/acid and the demonstration video of ACID is available at https://youtu.be/XUNBPMIx2q4
Android compatibility issue detection using API differences
Android apps are developed using a Software Development Kit (SDK), where the Android application programming interface (API) enables app developers to harness the functionalities of Android devices by interacting with services and hardware. However, API frequently evolves together with its associated SDK. The mismatch between the API level supported by the device where apps are installed and the API level targeted by app developers can induce compatibility issues. These issues can manifest themselves as unexpected behaviors, including runtime crashes, creating a poor user experience. In this paper, we propose ACID, a novel approach to detecting compatibility issues caused by API evolution. We leverage API differences and static analysis of the source code of Android apps to detect both API invocation compatibility issues and API callback compatibility issues. Experiments on 20 benchmark apps from previous studies show that ACID is more accurate and faster in detecting compatibility issues than state-of-the-art. We also analyzed 35 more real-world apps to show the practical applicability of our approach
Analyzing the impact of API changes on Android apps
The continuous evolution of Android mobile operating system leads to regular updates to its APIs, which may compromise the functionality of Android apps. Given the high frequency of Android API updates, analyzing the impact of API changes is vital to ensure the high reliability of Android apps. This paper introduces APICIA, a novel approach to analyzing the impact of API changes on Android apps. APICIA investigates the impact of changing the target API and identifies the affected program elements (i.e., classes, methods, and statements), the affected tests whose executions may exhibit changed behaviors as a result of the API update, as well as the app code that is not covered by the existing tests. We evaluate APICIA on 219 real-world Android apps. According to the results, API changes impact 46.30% of tests per app on average, and regression test selection based on APICIA can be cost effective. Moreover, many affected statements are not covered by existing tests, which indicates APICIA can help with test suite augmentation to achieve better coverage. These findings suggest that APICIA is a promising approach for assisting Android developers with understanding, testing, and debugging Android apps that are subject to rapid API updates
Android API Field Evolution and Its Induced Compatibility Issues
Background: The continuous evolution of the Android operating system necessitates regular API updates, which may affect the functionality of Android apps. Recent studies investigated API evolution to ensure the reliability of Android apps; however, they focused on API methods alone.
Aim: We aim to empirically investigate how Android API fields evolve, and how this evolution affects the compatibility of Android apps.
Method: We conducted a study based on real-world app development history data involving 11098 tags out of 105 popular open-source Android apps.
Results: Our study yields interesting findings, e.g., on average two API field compatibility issues exist per app, different types of checks are preferred when addressing different types of compatibility issues, and fixing compatibility issues induced by API field evolution takes more time than fixing compatibility issues induced by API method evolution.
Conclusion: These findings will help developers and researchers better understand, detect, and handle Android compatibility issues induced by API field evolution.</p