Conference Paper

Portability and Reusability: Common Issues and Differences.

Authors:
To read the full-text of this research, you can request a copy directly from the author.

Abstract

Portability is clearly a form of reusability, but the problem of enhancing and supporting portability raises problems which are not often addressed by reuse research. Portability is typically concerned with the reuse of complete applications on new platforms, while reuse research has typically concentrated on building and maintaining collections of reusable components or similar artifacts, and reusing them effectively in new applications. This paper reviews and compares current issues in reuse research and portability research. Although the dominant problems for the two research domains are distinct, the goal is to identify some common areas where both domains may benefit from continuing research. Several common areas are identified. These include classification, specification and measurement, validation and verification, software process issues, and management issues. The problem of integrating portability into the software development process is briefly considered. Benefits may be anticipated from integration of both portability and reuse. It appears, however, that integration of portability may be more easily accomplished, yet harder to justify to management.

No full-text available

Request Full-text Paper PDF

To read the full-text of this research,
you can request a copy directly from the author.

... According to ISO/IEC 25010 [25], portability is the "degree of effectiveness and efficiency with which a system, product or component can be transferred from one hardware, software or other operational or usage environment to another." Additionally, Mooney, J.D described [11,26] portability as a desirable attribute of the software and is typically concerned with reusing complete software (or part of the software) on new platforms. In other words, if the software is written without regard to hardware implementations and other dependencies, the software can be called portable [27]. ...
... In other words, if the software is written without regard to hardware implementations and other dependencies, the software can be called portable [27]. As a view of Mooney, J.D, the primary goal of software portability "is to facilitate the activity of porting" of software from the "environment in which it currently operates to a new or target environment" before allowing "reuse of the complete existing application in the new environment" [11]. ...
... In order software to be portable, the software must satisfy the characteristics mentioned in Section 2. First, the general structure of existing UAV software follows a simple structure that [2,[6][7][8][9][10][11][12][13][14][15][16][17][18][19] consists of common layers. Those common layers include (1) the hardware layer (the main IO device module), (2) the middleware layer that is responsible for connecting the application and hardware layers, and (3) the main flight application layer with different modules that control UAV's movement. ...
Article
Full-text available
To apply UAVs (Unmanned Aerial Vehicle) into different fields, including research and industry, and expand it quickly, reliable but modular software is required. The existing flight control software (FCS) of the UAV consists of various types of modules categorized into different layers, and it is responsible for coordinating, monitoring, and controlling the vehicle during its flight. This paper proposes mpFCS, a structure of UAV flight control software, which provides portability to its modules and is easy to expand. The mpFCS consists of four segments and several modules within the segments. mpFCS provides portability for each module within the segment. Existing software does not provide portability for its modules because of the tight coupling resulting from its different and private interfaces. The mpFCS uses interfaces of the standard airborne software architecture to transfer data between its modules. Moreover, the structure provides portability for its modules to run in the standard airborne software environment. In order to verify the mpFCS, we tested the mpFCS with the conformance test suite of the airborne software that provides the testing environment for the interfaces and modules of the software. The mpFCS passed the test. Test results show that all modules of the mpFCS are portable. Additionally, portable modules can be interoperable with other software, and the structure is expandable with new modules that use standard airborne software interfaces.
... Portability is rarely a standalone software engineering topic, but references can be found in every area of computer science: computer languages, operating systems, parallel programming, and system virtualization, to name a few. An exception is the seminal work of Mooney [1,6,7] which has information about the software engineering aspects of portability, including basic principles, strategies for portability, a portability metric, and a discussion of portability and software lifecycle. We reference two more papers that fit in the generic portability category, including a paper on using cross-platform toolkits [10], and a book on cross-platform practices in the Mozilla project [11]. ...
... The goal of our criteria is to allow comparison between portability methods. We consider several concerns beyond the degree of portability metric proposed by Mooney [1,6]. We consider attributes of the ported software and the effort required by developers and users. ...
... The degree of portability metric from Mooney [1,6] compares the porting effort against the effort which would be required to completely redevelop the application on a new platform. A ratio of <1 implies that the application is to some extent portable, and a ratio of >=1 means that the application is at least as difficult to port as to completely redevelop. ...
Article
Portability is a measure of the ease with which software can be moved between heterogeneous computing platforms. Software with a high degree of portability is valuable because it reaches more users. Commercial developers expend a considerable effort to make software that can run on multiple platforms. Scientific programmers have the same motivation to make their software portable, but their requirements differ in some respects from those of commercial software. Scientists have a unique need for collaboration and the independent replication of results at geographically diverse sites. Scientific algorithms tend to be expensive computationally, so scientific developers are more likely to use parallel computing. The fast pace of evolution for High-Performance Computing (HPC) systems affects scientific organizations inordinately, causing diversity in their computing platforms. These factors combine to make portability a critical issue for scientific computing. In addition, scientific institutions may also lack the resources which are available to commercial developers, and this can influence selection of a portability strategy. In this paper we propose criteria for evaluating the portability of a scientific application and we survey existing portability techniques with respect to those criteria. We identify the set of portability methods which are most applicable to scientific computing, and we identify future research problems. 1. Introduction Modern scientific research depends on computer technology to organize and analyze large data sets. Computers provide the ability to process the complex models that are common in the scientific domain. Scientific inquiry requires that information be shared with other scientists. It follows that software used for scientific purposes should be distributable to the widest possible base of potential users, in other words it should be made portable. In practice, portability is a difficult goal for the scientific developer [4,13]. The great diversity of computer hardware and software poses a fundamental threat to software portability [1,4]. Advances in hardware platforms and operating systems, and the evolution of programming languages and programming standards inhibit portability. Scientific computing imposes unique constraints of its own, including large computational demands which have made parallel programming of critical importance to scientific developers [3,12]. HPC systems used for scientific computing evolve quickly, so scientific organizations often accumulate extremely heterogeneous computing environments [2,3,4,5,8]. These concerns interact to increase the importance of code and performance portability for scientific applications. Many scientific applications are developed using open source environments such as Linux [4,17]. Binary compatibility is not an attribute of Linux, so applications are customarily released as source code packages. Scientific developers often lack the time and resources needed to port and verify their software in multiple environments. As a result, end users can become responsible for making programs run on their own systems. In essence they must take on the task of porting the software. This problem is very well known in the scientific community [4,5,7,8]. Portability is frequently ignored by scientific developers [13]. In the rare case where portability is addressed, it is done in an ad hoc manner, despite the availability of better methods. The lack of information on portability makes the problem worse. The current literature has no comprehensive survey of existing portability techniques, nor is there a systematic comparison of the costs and benefits of the various portability methods. In this paper we make the following contributions: A portability model based on hardware and software configuration spaces. Expanded criteria for evaluating the portability of scientific applications. A comprehensive survey of portability techniques used for cross-platform development. The introduction of the concept of environmental adaptation for software portability. A process for selecting a portability strategy early in the development process. Our paper is organized as follows: Section 2 summarizes our research references and introduces a portability model, Section 3 describes the unique requirements of scientific computing, and Section 4 presents our criteria for evaluating portability. Section 5 surveys existing portability techniques. Section 6 evaluates these techniques against our criteria, and Section 7 discusses the selection of a portability strategy and presents our conclusions. Section 8 explores future research topics. 2. Portability Overview Software which can run on diverse platforms is more valuable because it is available to more users, and portable software has increased longevity because it can migrate from older to newer platforms [1]. We define software portability as the ability to move between computing environments that differ in a significant way. Software with a high degree of portability is transportable to a more diverse set of platforms. The system components with the greatest impact on portability include the hardware platform, operating system, and compilers [7]. Other development tools, system libraries, and build processes have a lesser effect. Portability has been a longstanding goal of software developers, but no single solution has been proposed that comprehensively solves the problem [1].
... Portability is typically concerned with the reuse of complete applications on new platforms and/or environments; it is a form of reuse [14]. Portability is becoming universally recognized as a desirable attribute for most software products, because it enhances the value of a software package both by extending its useful life cycle and by expanding the range of installations in which it can be used [15]. ...
... Choice of a language with limited facilities, like Pascal, would require more attention to isolating these operations if portability is to be maintained. This consideration might require selection of a different language than would be preferred based on other criteria" [15]. ...
... 2. Quantitative specifications which characterize the actual or required degree of portability of an application with respect to a specific environment or class of environments [15]. ...
Conference Paper
Today no formal guidance or standards exist which maximizes the utility of software reuse in any industry. This is especially true in the development of safety-critical software. As a result, the embedded industry has been far from the goal of making reuse a standard practice in software development. A new policy issued by the Federal Aviation Administration (FAA) promises to create a major shift in how software is reused in safety-critical systems. A reusable software components advisory circular published in December 2004, called AC 20-148, details the approach and documentation necessary for systematic reuse of software components that meet the guidelines of RTCA/DO-178B. To fully appreciate the value of a reusable software component (RSC), one must understand the history of safety-critical software standards and development. A brief overview of safety-critical software development and the RTCA/DO-178B standards is given as well as an overview of the Advisory Circular 20-148. A fully time and space partitioned operating system is used as an example in the paper
... Portability refers to a model's ability to be executed in new environments [4]. In LBD context, the new environments are typically different scientific domains (i.e. ...
... The degree of portability denotes the costs involved in portability. A model is portable if its degree of portability is less than its redevelopment costs [4]. In other words, the LBD model is portable if it is transferable across domains and languages without any heavy configurations (i.e. ...
... Practitioners in this study perceived the Portability of code snippets in light of Adaptability -the degree to which a code snippet can effectively and efficiently be adapted for different or evolving hardware, software or other operational or usage environments. Portability is critical because of the variety of common runtime platforms and the requirement for developing genuinely agile and flexible systems that do not lock in their users (Mooney, 1995). However, we did not find any study on code snippet quality investigating this area. ...
Article
Context Over the years, there has been debate about what constitutes software quality and how it should be measured. This controversy has caused uncertainty across the software engineering community, affecting levels of commitment to the many potential determinants of quality among developers. An up-to-date catalogue of software quality views could provide developers with contemporary guidelines and templates. In fact, it is necessary to learn about views on the quality of code on frequently used online collaboration platforms (e.g., Stack Overflow), given that the quality of code snippets can affect the quality of software products developed. If quality models are unsuitable for aiding developers because they lack relevance, developers will hold relaxed or inappropriate views of software quality, thereby lacking awareness and commitment to such practices. Objective We aim to explore differences in interest in quality characteristics across research and practice. We also seek to identify quality characteristics practitioners consider important when judging code snippet quality. First, we examine the literature for quality characteristics used frequently for judging software quality, followed by the quality characteristics commonly used by researchers to study code snippet quality. Finally, we investigate quality characteristics used by practitioners to judge the quality of code snippets. Methods We conducted two systematic literature reviews followed by semi-structured interviews of 50 practitioners to address this gap. Results The outcomes of the semi-structured interviews revealed that most practitioners judged the quality of code snippets using five quality dimensions: Functionality, Readability, Efficiency, Security and Reliability. However, other dimensions were also considered (i.e., Reusability, Maintainability, Usability, Compatibility and Completeness). This outcome differed from how the researchers judged code snippet quality. Conclusion Practitioners today mainly rely on code snippets from online code resources, and specific models or quality characteristics are emphasised based on their need to address distinct concerns (e.g., mobile vs web vs standalone applications, regular vs machine learning applications, or open vs closed source applications). Consequently, software quality models should be adapted for the domain of consideration and not seen as one-size-fits-all. This study will lead to targeted support for various clusters of the software development community.
Article
Subject of Research. The paper presents research of approaches to portable software development at the level of binary and source code. We study such factors affecting portability as compatibility of target platforms at the level of software and binary application interfaces, standardization of programming languages, software architecture, the functionality of software target platforms and software tools. Modern approaches for software portability based on virtual runtimes for Java and the .NET platform are considered. Method. A method is proposed for software portability based on twostage compilation and an architecture description language application for translator configuration. The method gives the possibility to solve the software portability problem at the level of program execution environment. We also present a new approach to self-tuning runtime implementation with such configuration parameters as architecture-dependent metadata — descriptions of target platforms. To generate a binary image of the runtime environment for a target platform, its source code is not required. Image generation is performed based on metadata that is part of an existing image used as a builder utility. Main Results. Implementation requirements for the program execution environment and its architecture at the level of functional components are determined. The novel approach for the runtime implementation is proposed which ensures portability without recompilation from the source code of both user applications and the runtime environment. A script for the runtime environment application has been developed to generate its binary image aimed at a target platform. Practical Relevance. Binary portability of the program execution environment allows reducing labor costs for cross-platform applications.
Conference Paper
p>Novel architectures for massively parallel machines offer better scalability and the prospect of achieving linear speedup for sizable problems in many domains. The development of suitable programming models and accompanying software tools for these architectures remains one of the biggest challenges towards exploiting their full potential. We present a multi-layer software abstraction model to develop combinatorial solvers on massively-parallel machines with regular topologies. The model enables different challenges in the design and optimization of combinatorial solvers to be tackled independently (separation of concerns) while permitting problem-specific tuning and cross-layer optimization. In specific, the model decouples the issues of inter-node communication, node-level scheduling, problem mapping, mesh-level load balancing and expressing problem logic. We present an implementation of the model and use it to profile a Boolean satisfiability solver on simulated massively-parallel machines with different scales and topologies.</p
Conference Paper
Full-text available
This paper is the continuation of the previous Mini-photobot ver.01 which already provided a small scale photo studio for small medium business of handicrafts in Sidoarjo. The Mini-photobot ver.01 could save a time as it was so much faster than using a traditional photo studio, from taking picture until uploading photos to the internet. However, the Mini-photobot ver.01 was complicated to assemble and to carry. It required more than one person and took about 45 minutes to build until and setting-up. The Mini-photobot ver.02 comes with a compact box that consists of webcam, light tent, with the lighting using L.E.D, and mini P.C using pandaboard include the tablet for graphic user interface. Our research aims to redesign the box of mini-photobot v.01 to make it portable and easier to build and setting-up.
Conference Paper
This paper presents an approach to develop new instances of interactive digital TV -- DTV middleware based on reuse and port of existing implementations of these middlewares for other hardware platforms. Design characteristics of DTV middleware and software portability concepts are used to propose a reuse model. A proof of concept using an implementation of the Brazilian DTV middleware (Ginga) showed that the approach can be useful within specific portability contexts.
Conference Paper
The article presents an approach of reusing user interfaces across devices that follow diverging design guidelines and user interface capabilities. The approach is based on a reuse process that applies abstraction on interface components and a mapping algorithm selecting appropriate interface components of the target platform. An assistant framework implements the process and allows developers to customize reused user interfaces afterward.
Conference Paper
The paper explores the support for building portable applications offered by the JAIN SLEE family of standards. The factors that impact application portability are explored and features of JAIN SLEE that minimize the related risks when building portable applications are identified. Finally, it is proposed that in addition to using suitable technology such as JAIN SLEE the application development process needs to include application portability as a requirement throughout the software development lifecycle.
Article
Business process integration and management (BPIM) is a critical element in enterprise business transformation. Small and medium-sized businesses have their own requirements for BPIM solutions: The engagement methodology should be fast and efficient; a reusable and robust framework is required to reduce cost; and the whole platform should be lightweight so that one can easily revise, develop, and execute solutions. We believe that model-driven technologies are the key to solving all of the challenges mentioned above. Model Blue, a set of model-driven business integration and management methods, frameworks, supporting tools, and a runtime environment, was developed by the IBM China Research Laboratory (CRL) in Beijing to study the efficacy of model-driven BPIM. To verify the technology and methodology, Model Blue was deployed with Bank SinoPac, a mid-sized bank headquartered in Taiwan. A lightweight BPIM solution platform was delivered for Bank SinoPac to design, develop, and deploy its business logic and processes. During the eight-month life span of the project, IBM teams developed four major solutions for Bank SinoPac, which also developed one solution independently. In spite of the remote working environment and the outbreak of the Severe Acute Respiratory Syndrome illness, the project was completed successfully on schedule and within budget, with up to 30% efficiency improvement compared with similar projects. Bank SinoPac was satisfied with the technology and methodology, and awarded IBM other projects. In this paper, we illustrate how each key business process integration and solution development phase was carried out and guided by business process modeling, together with major experiences gained. The following technical aspects are discussed in detail: a two-dimensional business process modeling view to integrate flow modeling and data modeling; a lightweight processing logic automation environment with tooling support; and the end-to-end BPIM methodology, wi- - th models and documents successfully integrated as part of (or replacement for) the deliverables defined in the existing servicing methodologies and software engineering approaches.
Article
Software portability is often cited as desirable, but rarely receives systematic attention in the software development process. With the growing diversity of computing platforms, it is increasingly likely that software of all types may need to migrate to a variety of environments and platforms over its lifetime. This tutorial is intended to show the reader how to design portability into software projects, and how to port software when required. Full Text at Springer, may require registration or fee
Conference Paper
A cost effective method for developing complex software systems while managing reliability issues is to port existing applications to new platforms. A number of software products provide development and operational environments to facilitate the porting of UNIX applications to Windows NT. The goal of these products is to minimize the amount of code rewriting for the ported application. To this end these porting tools allow the recompilation of the UNIX code in a UNIX-like development environment on the Windows NT platform. Finally, they provide the necessary UNIX-like system calls to allow execution of the ported applications on Windows NT. We have conducted a series of tests to measure the performance of some standard UNIX applications when operated in conjunction with the different UNIX compatibility layers. For comparison we also executed the applications on the Win32 API, and performed tests with the applications running on Linux
Article
When building an application for a mobile platform, there are many aspects to consider; portability, speed, and the user interface are just a few. Because there are several mobile devices that are capable of running custom applications and the costs associated with software development continue to increase, software portability is often a desired attribute of mobile applications. In addition, mobile devices are typically constrained with respect to memory and processor performance. Unfortunately, the effect of design and implementation decisions relative to these limitations will often conflict with the portability and usability of the software. If an application is easy to move from one device to another, the application is considered portable and less time is needed to create releases for new devices as well as maintaining updates for all devices. However, the design and implementation requirements associated with portability often create conflicts with other desirable attributes of the application. Mobile devices tend to have limited computing power and memory relative to a conventional desktop, which requires developers to become more conscious of the processing and memory efficiency of their application. While limited memory and processing power can be viewed as similar problems between many of the mobile platforms, the user interface creates a new problem for developers. Whereas desktop environments generally have the same de facto layout, user interfaces for mobile devices vary significantly and impose additional constraints on software design and implementation Leveraging from recent experience developing a commercial prototype of a language translation application, this paper will explore options the developer has to choose from in terms of programming language...
ResearchGate has not been able to resolve any references for this publication.