Knowledge

Software portability

Source 📝

789: 43: 140: 796: 307:
must, for security reasons, have limited control over the host computer, especially regarding reading and writing files. Non-web programs, installed upon a computer in the normal manner, can have more control, and yet achieve system portability by linking to portable libraries providing the same
293:. The difference between larger and smaller devices is such that detailed software operation is different; an application designed to display suitably on a large screen cannot simply be ported to a pocket-sized smartphone with a tiny screen even if the functionality is similar. 320:
from source code for different operating systems and processors if written in a programming language supporting compilation for the platforms. This is usually a task for the program developers; typical users have neither access to the source code nor the required skills.
249:", is specifically designed to run on different computers with compatible operating systems and processors, without any machine-dependent installation. Porting is no more than transferring specified directories and their contents. Software installed on portable 367:
Sometimes the effort consists of recompiling the source code, but sometimes it is necessary to rewrite major parts of the software. Many language specifications describe implementation defined behaviour (e.g. right shifting a signed integer in C can do a
381:
fails under Windows with EACCES, when it is called for a directory). The program code can contain unportable things, like the paths of include files, drive letters, or the backslash. Implementation defined things like
257:
can be used on any compatible computer on simply plugging the storage device in, and stores all configuration information on the removable device. Hardware- and software-specific information is often stored in
376:
shift). Operating system functions or third party libraries might not be available on the target system. Some functions can be available on a target system, but exhibit slightly different behavior such as
328:
environments such as Linux the source code is available to all. In earlier days source code was often distributed in a standardised format, and could be built into executable code with a standard
336:
distribute software to users in source form. In these cases there is usually no need for detailed adaptation of the software for the system; it is distributed in a way which
519: 489: 582: 226:
In the simplest case, the file or files may simply be copied from one machine to the other. However, in many cases, the software is
107: 364:
required by far the largest conversion effort of any supposedly portable program, for the simple reason that it is not portable."
79: 273:
Software which is not portable in this sense must be modified much more to support the environment on the destination machine.
60: 86: 299:
are required to be processor independent, so portability can be achieved by using web programming techniques, writing in
637: 93: 799: 748: 126: 289:
instruction sets. Smaller portable devices use processors with different and incompatible instruction sets, such as
227: 234:
for particular devices, using installed operating system and supporting software components, and using different
75: 743: 693: 575: 159: 64: 713: 708: 399: 163: 31: 764: 662: 426: 332:
for any particular system by moderately knowledgeable users if no errors occurred during the build. Some
774: 531: 387: 617: 500: 185:
Reinstalling a program from distribution files on another computer of basically the same architecture.
820: 622: 568: 451: 436: 769: 411: 391: 349: 239: 100: 26:
This article is about portability in itself. For the work required to make software portable, see
683: 416: 337: 53: 20: 718: 703: 698: 471: 182:
Transferring installed program files to another computer of basically the same architecture.
647: 325: 246: 230:
on a computer in a way which depends upon its detailed hardware, software, and setup, with
143:
Software portability can be exemplified with multiple devices running the same video game.
8: 441: 333: 317: 259: 167: 155: 652: 267: 499:. West Virginia University. Dept. of Statistics and Computer Science. Archived from 223:
it is often possible to transfer the files implementing program files between them.
591: 431: 421: 373: 296: 290: 263: 212: 612: 329: 304: 220: 657: 540: 282: 814: 369: 235: 231: 390:
can also raise the porting effort. In practice the claim of languages, like
738: 688: 361: 250: 642: 632: 195: 151: 16:
Ability of a program to run on different platforms with little alteration
383: 356:, the effort to port source code can vary considerably. The authors of 300: 191: 678: 254: 166:. When software with the same functionality is produced for several 42: 560: 357: 188: 446: 199: 27: 139: 170:, portability is the key issue for development cost reduction. 395: 353: 281:
As of 2011 the majority of desktop and laptop computers used
286: 216: 520:"Software Portability: Weighing Options, Making Choices" 472:
A Unix operating system for the DEC VAX-11/780 computer
303:. Such a program can run in a common web browser. Such 215:
of the same family are installed on two computers with
338:
modifies the compilation process to match the system
67:. Unsourced material may be challenged and removed. 812: 541:"Porting UNIX Software: From Download to Debug" 245:In some cases, software, usually described as " 490:"Bringing Portability to the Software Process" 576: 343: 470:Thomas B. London and John F. Reiser (1978). 348:Even with seemingly portable languages like 158:. An aid to portability is the generalized 583: 569: 311: 198:; this is what is usually understood by " 127:Learn how and when to remove this message 138: 276: 813: 487: 194:programs for different platforms from 154:to be easily made to run on different 564: 538: 517: 795: 590: 474:. Bell Labs internal memo 78-1353-4. 65:adding citations to reliable sources 36: 285:compatible with the 32- and 64-bit 262:in specified locations such as the 13: 206: 178:Software portability may involve: 162:between the application logic and 14: 832: 749:List of system quality attributes 794: 788: 787: 308:interface on different systems. 41: 378: 52:needs additional citations for 464: 1: 457: 316:Software can be compiled and 173: 400:write once, compile anywhere 7: 765:Software quality management 744:Non-functional requirements 427:Hardware-dependent software 405: 10: 837: 775:Software quality assurance 481: 344:Effort to port source code 150:is a design objective for 25: 18: 783: 757: 731: 671: 605: 598: 452:Source-to-source compiler 437:Language interoperability 360:(1979) reported that "he 770:Software quality control 412:C (programming language) 19:Not to be confused with 530:(11): 3. Archived from 417:Cross-platform software 312:Source code portability 21:application portability 144: 76:"Software portability" 30:. For other uses, see 142: 398:, to have the WOCA ( 277:Different processors 148:Software portability 61:improve this article 732:Standards and lists 442:Portability testing 386:and the size of an 334:Linux distributions 260:configuration files 168:computing platforms 145: 808: 807: 727: 726: 653:Understandability 247:portable software 213:operating systems 164:system interfaces 137: 136: 129: 111: 828: 821:Software quality 798: 797: 791: 790: 603: 602: 592:Software quality 585: 578: 571: 562: 561: 557: 555: 554: 545: 535: 514: 512: 511: 505: 494: 475: 468: 432:Interoperability 422:Data portability 380: 305:web applications 297:Web applications 253:devices such as 221:instruction sets 132: 125: 121: 118: 112: 110: 69: 45: 37: 836: 835: 831: 830: 829: 827: 826: 825: 811: 810: 809: 804: 779: 753: 723: 667: 618:Maintainability 594: 589: 552: 550: 543: 524:The CPA Journal 509: 507: 503: 492: 488:Mooney (1997). 484: 479: 478: 469: 465: 460: 408: 402:) is arguable. 346: 314: 283:microprocessors 279: 209: 207:Similar systems 176: 133: 122: 116: 113: 70: 68: 58: 46: 35: 24: 17: 12: 11: 5: 834: 824: 823: 806: 805: 803: 802: 792: 784: 781: 780: 778: 777: 772: 767: 761: 759: 755: 754: 752: 751: 746: 741: 735: 733: 729: 728: 725: 724: 722: 721: 716: 711: 706: 701: 696: 691: 686: 681: 675: 673: 669: 668: 666: 665: 660: 658:Loose coupling 655: 650: 645: 640: 635: 630: 625: 620: 615: 609: 607: 600: 596: 595: 588: 587: 580: 573: 565: 559: 558: 539:Lehey (1995). 536: 534:on 2010-07-08. 518:Garen (2007). 515: 483: 480: 477: 476: 462: 461: 459: 456: 455: 454: 449: 444: 439: 434: 429: 424: 419: 414: 407: 404: 362:(Bourne) shell 345: 342: 313: 310: 278: 275: 232:device drivers 208: 205: 204: 203: 186: 183: 175: 172: 135: 134: 49: 47: 40: 15: 9: 6: 4: 3: 2: 833: 822: 819: 818: 816: 801: 793: 786: 785: 782: 776: 773: 771: 768: 766: 763: 762: 760: 756: 750: 747: 745: 742: 740: 737: 736: 734: 730: 720: 717: 715: 712: 710: 707: 705: 702: 700: 697: 695: 692: 690: 687: 685: 682: 680: 677: 676: 674: 670: 664: 663:Orthogonality 661: 659: 656: 654: 651: 649: 646: 644: 641: 639: 636: 634: 631: 629: 626: 624: 621: 619: 616: 614: 611: 610: 608: 604: 601: 597: 593: 586: 581: 579: 574: 572: 567: 566: 563: 549: 542: 537: 533: 529: 525: 521: 516: 506:on 2008-07-25 502: 498: 491: 486: 485: 473: 467: 463: 453: 450: 448: 445: 443: 440: 438: 435: 433: 430: 428: 425: 423: 420: 418: 415: 413: 410: 409: 403: 401: 397: 393: 389: 385: 375: 371: 365: 363: 359: 355: 351: 341: 339: 335: 331: 327: 322: 319: 309: 306: 302: 298: 294: 292: 288: 284: 274: 271: 269: 265: 261: 256: 252: 248: 243: 241: 237: 233: 229: 224: 222: 219:with similar 218: 214: 201: 197: 193: 190: 187: 184: 181: 180: 179: 171: 169: 165: 161: 157: 153: 149: 141: 131: 128: 120: 117:November 2011 109: 106: 102: 99: 95: 92: 88: 85: 81: 78: –  77: 73: 72:Find sources: 66: 62: 56: 55: 50:This article 48: 44: 39: 38: 33: 29: 22: 739:ISO/IEC 9126 689:Adaptability 627: 551:. Retrieved 547: 532:the original 527: 523: 508:. Retrieved 501:the original 496: 466: 366: 347: 323: 315: 295: 280: 272: 251:mass storage 244: 225: 210: 177: 147: 146: 123: 114: 104: 97: 90: 83: 71: 59:Please help 54:verification 51: 694:Correctness 684:Reliability 648:Testability 643:Scalability 638:Readability 633:Reusability 628:Portability 623:Flexibility 326:open-source 240:directories 196:source code 160:abstraction 152:source code 32:portability 709:Robustness 704:Efficiency 553:2010-05-27 510:2008-03-17 458:References 384:byte order 374:arithmetic 301:JavaScript 255:USB sticks 217:processors 192:executable 174:Strategies 87:newspapers 758:Processes 679:Usability 599:Qualities 330:Make tool 228:installed 156:platforms 815:Category 714:Security 699:Accuracy 672:External 606:Internal 406:See also 358:UNIX/32V 264:registry 189:Building 800:Commons 482:Sources 447:Porting 379:utime() 370:logical 268:Windows 200:porting 101:scholar 28:porting 719:Safety 548:(help) 497:(help) 372:or an 318:linked 236:drives 103:  96:  89:  82:  74:  544:(PDF) 504:(PDF) 493:(PDF) 211:When 108:JSTOR 94:books 613:Size 394:and 352:and 80:news 396:C++ 388:int 354:C++ 324:In 291:ARM 287:x86 270:). 266:on 238:or 63:by 817:: 546:. 528:77 526:. 522:. 495:. 340:. 242:. 202:". 584:e 577:t 570:v 556:. 513:. 392:C 350:C 130:) 124:( 119:) 115:( 105:· 98:· 91:· 84:· 57:. 34:. 23:.

Index

application portability
porting
portability

verification
improve this article
adding citations to reliable sources
"Software portability"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message

source code
platforms
abstraction
system interfaces
computing platforms
Building
executable
source code
porting
operating systems
processors
instruction sets
installed
device drivers
drives

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.