위키득계정 ↗
기술

소프트웨어

소프트웨어기술
영문명
Software
주요 구분
시스템 소프트웨어와 응용 소프트웨어
실행 기반
하드웨어와 실행 환경
개발 과정
설계, 구현, 검증, 배포, 유지보수
소프트웨어는 컴퓨터에서 수행할 동작을 규정하는 프로그램과 관련 자료를 말한다. 물리적 장치인 하드웨어 위에서 실행되며, 같은 장치를 여러 용도로 사용할 수 있게 한다.

보이는 화면 뒤의 프로그램

메모 앱의 입력 창은 소프트웨어가 제공하는 인터페이스다. 글자를 저장하고 다시 불러오는 처리, 파일 접근 권한 확인, 화면에 글자를 그리는 작업에는 여러 프로그램과 시스템 기능이 함께 관여한다.

사용자가 직접 여는 응용 프로그램 외에도 운영 체제, 장치 드라이버, 개발 도구처럼 다른 소프트웨어의 실행을 지원하는 프로그램이 있다. 이런 구분은 역할을 설명하기 위한 것이며 실제 제품은 여러 기능을 묶어 제공하기도 한다.

소스 코드에서 실행까지

개발자는 프로그래밍 언어로 처리 규칙을 표현한다. 이 소스 코드는 컴파일이나 해석 등의 과정을 거쳐 실행된다. 일부 환경은 중간 코드와 실행 중 컴파일을 함께 사용하므로 모든 소프트웨어가 한 가지 방식으로 동작하는 것은 아니다.

같은 소스 코드라도 운영 체제, CPU 구조, 필요한 라이브러리에 따라 실행 가능 여부가 달라질 수 있다. 웹 브라우저나 가상 머신은 이러한 차이 일부를 감추는 실행 환경을 제공한다.

배포 이후에도 바뀌는 이유

프로그램이 실행된다는 사실과 모든 상황에서 올바르게 동작한다는 사실은 다르다. 입력의 범위, 네트워크 장애, 동시에 접속하는 사용자 수 등 조건이 달라지면 예상하지 못한 문제가 드러날 수 있다.

유지보수에는 오류 수정뿐 아니라 보안 취약점 대응, 바뀐 운영 환경 지원, 기능 개선이 포함된다. 업데이트는 이러한 변경을 사용자에게 전달하는 과정이다.

공개 여부와 사용 조건

소스 코드를 볼 수 있는지, 수정과 재배포가 허용되는지, 이용료가 있는지는 각각 구분해야 한다. 무료로 내려받는 프로그램도 재배포가 제한될 수 있고, 오픈 소스 프로그램도 유료 서비스나 제품에 사용될 수 있다.

관련 문서

컴퓨터 / 프로그래밍 언어 / 오픈 소스