소프트웨어 이식성
Software portability컴퓨터 프로그램은 다른 플랫폼에서 실행하는 데 필요한 노력이 매우 적으면 휴대성이 있다고 합니다.휴대성의 전제 조건은 애플리케이션 로직과 시스템인터페이스간의 범용 추상화입니다.여러 컴퓨팅 플랫폼에서 동일한 기능을 가진 소프트웨어를 제작할 경우, 휴대성이 개발 비용 절감의 주요 과제입니다.
휴대성을 위한 전략
소프트웨어의 이식성에는 다음이 포함됩니다.
- 설치된 프로그램 파일을 기본적으로 동일한 아키텍처의 다른 컴퓨터로 전송.
- 기본적으로 동일한 아키텍처의 다른 컴퓨터에 배포 파일에서 프로그램을 재설치합니다.
- 소스 코드와 다른 플랫폼용 실행 가능 프로그램 구축. 보통 "포트"로 이해됩니다.
유사한 시스템
같은 계열의 운영체제를 같은 명령어세트를 가진 프로세서를 탑재한2대의 컴퓨터에 인스톨 하면, 프로그램 파일을 실장하고 있는 파일을 전송 할 수 있는 경우가 많습니다.
가장 간단한 경우, 파일은 한 기계에서 다른 기계로 복사될 수 있습니다.그러나 대부분의 경우 소프트웨어는 하드웨어, 소프트웨어 및 설정에 따라 특정 디바이스용 디바이스 드라이버, 설치된 운영 체제 및 지원 소프트웨어 컴포넌트, 다른 드라이브 또는 디렉토리를 사용하여 컴퓨터에 설치됩니다.
통상, 「휴대용 소프트웨어」라고 불리는 소프트웨어는, 호환성이 있는 operating system과 프로세서를 탑재한 다른 컴퓨터상에서 동작하도록 특별히 설계되어 있는 경우가 있습니다.머신에 의존한 인스톨은 불필요합니다.포팅은 지정된 디렉토리와 그 내용을 전송하는 것에 지나지 않습니다.USB 스틱과 같은 휴대용 대용량 저장 장치에 설치된 소프트웨어는 저장 장치를 연결하기만 하면 호환되는 모든 컴퓨터에서 사용할 수 있으며 모든 구성 정보를 이동식 장치에 저장합니다.하드웨어 및 소프트웨어 고유의 정보는 대부분의 경우 지정된 위치에 있는 구성 파일(Microsoft Windows 를 실행하고 있는 머신의 레지스트리 등)에 저장됩니다.
이러한 의미에서 이식할 수 없는 소프트웨어는 대상 머신의 환경을 지원하도록 수정하여 전송해야 합니다.
다른 프로세서
2011년 현재[update] 데스크톱 및 노트북 컴퓨터의 대부분은 32비트 및 64비트 x86 명령 세트와 호환되는 마이크로프로세서를 사용하고 있습니다.소형 휴대용 장치에서는 ARM과 같은 서로 다른 명령 집합과 호환되지 않는 명령 집합을 가진 프로세서를 사용합니다.큰 디바이스와 작은 디바이스의 차이는 상세한 소프트웨어 조작이 다르다는 것입니다.큰 화면에 적절히 표시되도록 설계된 애플리케이션은 기능이 비슷하더라도 작은 화면을 가진 포켓 크기의 스마트폰에 간단히 이식할 수 없습니다.
웹 애플리케이션은 프로세서에 의존하지 않아야 하므로 웹 프로그래밍 기술을 사용하여 JavaScript로 작성함으로써 이식성을 달성할 수 있습니다.이러한 프로그램은 일반적인 웹 브라우저에서 실행할 수 있습니다.이러한 웹 애플리케이션은 보안상의 이유로 호스트 컴퓨터를 제한적으로 제어해야 하며, 특히 파일 읽기 및 쓰기에 관한 제어가 필요합니다.컴퓨터에 정상적으로 설치되어 있는 비웹 프로그램은 다른 시스템에서 동일한 인터페이스를 제공하는 휴대용 라이브러리에 링크함으로써 보다 많은 제어를 할 수 있지만 시스템 이식성을 달성할 수 있습니다.
소스 코드 이식성
플랫폼용 컴파일을 지원하는 프로그래밍 언어로 작성된 경우 소프트웨어를 다른 운영 체제 및 프로세서의 소스 코드에서 컴파일하고 링크할 수 있습니다.이것은 보통 프로그램 개발자의 작업입니다.일반적인 사용자는 소스 코드나 필요한 스킬에 접근할 수 없습니다.
Linux와 같은 오픈소스 환경에서는 누구나 소스 코드를 사용할 수 있습니다.이전에는 소스 코드가 표준화된 형식으로 배포되는 경우가 많았으며 빌드 중에 오류가 발생하지 않으면 어느 정도의 지식이 있는 사용자가 특정 시스템을 위한 표준 Make 도구를 사용하여 실행 가능한 코드에 내장할 수 있었습니다.일부 Linux 배포판에서는 소프트웨어를 소스 형식으로 사용자에게 배포합니다.이러한 경우 일반적으로 소프트웨어를 시스템에 맞게 세부적으로 적용할 필요가 없습니다. 이 소프트웨어는 시스템에 맞게 컴파일 프로세스를 수정하는 방식으로 배포됩니다.
소스 코드 포트 작업
C나 C++와 같이 휴대성이 있어 보이는 언어에서도 소스 코드를 포트하는 작업은 상당히 다를 수 있습니다.UNIX/32V(1979)의 저자들은 [1]"휴대성이 없다는 단순한 이유로 (본) 셸이 휴대용 프로그램 중 가장 큰 변환 노력을 필요로 한다"고 보고했다.
경우에 따라서는 소스 코드를 다시 컴파일하는 작업이 이루어지기도 하지만 소프트웨어의 주요 부분을 다시 작성해야 할 수도 있습니다.많은 언어 사양은 구현 정의 동작을 기술한다(예: C에서 부호 있는 정수를 오른쪽으로 이동하면 논리적 또는 산술적 이동을 수행할 수 있다).대상 시스템에서 운영 체제 기능 또는 타사 라이브러리를 사용하지 못할 수 있습니다.일부 함수는 대상 시스템에서 사용할 수 있지만 약간 다른 동작을 나타냅니다(예: utime()은 디렉토리를 호출할 때 EACCES를 사용하는 Windows에서 실패합니다).프로그램 코드 자체에는 include 파일의 경로와 같이 이식할 수 없는 것도 포함될 수 있습니다.드라이브 문자와 백슬래시를 경로 구분 기호로 사용할 수 없는 운영 체제도 없습니다.바이트 순서나 int 크기 등의 구현 정의도 포팅 작업을 증가시킬 수 있습니다.실제로 C나 C++와 같은 언어들이 WOCA(write once, compile anywhere)를 가지고 있다는 주장은 논쟁의 여지가 있다.
「 」를 참조해 주세요.
레퍼런스
- ^ 토마스 B.런던과 존 F.라이저(1978)DEC VAX-11/780 컴퓨터용 Unix 운영 체제.벨 연구소 내부 메모 78-1353-4.
원천
- Mooney (1997). "Bringing Portability to the Software Process" (PDF). West Virginia University. Dept. of Statistics and Computer Science. Archived from the original (PDF) on 2008-07-25. Retrieved 2008-03-17.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - Garen (2007). "Software Portability: Weighing Options, Making Choices". The CPA Journal. 77 (11): 3.
- Lehey (1995). "Porting UNIX Software: From Download to Debug" (PDF). Retrieved 2010-05-27.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말)