소프트웨어

위키백과, 우리 모두의 백과사전.
(컴퓨터 소프트웨어에서 넘어옴)
이동: 둘러보기, 검색

컴퓨터 소프트웨어(computer software, 혹은 간단히 소프트웨어, 문화어: 쏘프트웨어, 순화 용어: 무른모)는 저장장치에 저장된 특정한 목적의 하나 또는 다수의 컴퓨터 프로그램을 뜻한다. 프로그램 소프트웨어컴퓨터 하드웨어에 직접 명령어를 주거나 다른 소프트웨어에 입력을 제공함으로써, 그것이 수행하도록 구현된 기능을 수행한다.

"소프트웨어"라는 용어는 1957년존 터키(John W. Tukey)가 처음 사용한 용어이다. 일상적으로 이 용어는 응용 소프트웨어의 의미로 자주 쓰인다. 컴퓨터 과학컴퓨터 공학에서 "컴퓨터 소프트웨어"는 컴퓨터 시스템, 프로그램, 데이터에 의해 처리된 모든 정보를 말한다.

컴퓨터 소프트웨어는 컴퓨터 하드웨어의 반대 의미로, 컴퓨터 하드웨어는 소프트웨어가 실행되고 저장되는 물리 구조이다.

사용자가 보는 소프트웨어의 세 층[편집]

사용자들의 시각은 보통 프로그래머의 시각과는 차이가 있다. 현대의 범용 컴퓨터(임베디드 시스템의 반대 의미)를 사용하는 사람들은 보통 소프트웨어를 플랫폼, 응용 프로그램, 사용자 소프트웨어의 세 층으로 분류한다.

플랫폼 소프트웨어 
플랫폼이란 바이오스("소프트웨어" 대신 "펌웨어"라는 용어로 종종 설명되는), 장치 드라이버, 운영 체제, 그리고 대표적으로 그래픽 사용자 인터페이스 등을 총체적으로 포함하는 것으로, 컴퓨터와 주변기기가 서로 소통할 수 있게 만들어 준다. 플랫폼 소프트웨어는 대개 컴퓨터에 꾸러미로 같이 제공되며, 대개의 사용자는 그러한 것이 실제로 있는지, 아니면 선택할 수 있는 다른 플랫폼 소프트웨어가 존재하는지에 대해서 모르는 경우가 많다.
응용 소프트웨어 
응용 프로그램은 사람들이 일반적으로 소프트웨어라고 생각하는 것이다. 대표적인 예로 오피스 제품군, 비디오 게임을 들 수 있다. 응용 소프트웨어는 보통 컴퓨터 하드웨어와는 별도로 구매한다. 어떤 응용 프로그램은 컴퓨터에 꾸러미로 제공되지만, 독립적인 응용 프로그램으로 수행된다는 점에서 차이가 없다. 응용 프로그램은 거의 대개 운영 체제와는 독립적인 프로그램이지만, 보통 특정 플랫폼만을 위해 제작된다. 사용자들은 흔히 컴파일러, 데이터베이스와 같은 "시스템 소프트웨어"를 응용 소프트웨어와 같이 여긴다.
사용자 작성 소프트웨어 
사용자 소프트웨어는 사용자 특화된 요구를 충족시키기 위한 것이다. 사용자 소프트웨어에는 스프레드시트 템플릿, 워드 프로세서 매크로, 과학 시뮬레이션, 그래픽/애니메이션 스크립트 등이 있다. 심지어 전자우편 필터 역시 사용자 소프트웨어의 하나로 볼 수 있다. 사용자들은 이 같은 소프트웨어를 직접 제작하고도 그 중요성을 흔히 간과하곤 한다.

소프트웨어의 수행[편집]

컴퓨터 소프트웨어는 컴퓨터의 저장장치("메모리" 또는 ""으로 알려져 있음)로 "적재"되어야 한다.

소프트웨어를 불러오면 컴퓨터는 소프트웨어를 작동할 수 있다. 컴퓨터는 컴퓨터 프로그램을 "실행"하여 작동시킨다. 여기에는 응용 소프트웨어에서 명령어를 보내는 과정이 포함되는데, 시스템 소프트웨어를 거쳐 궁극적으로 기계어 명령이 하드웨어에 전달된다. 각각의 명령어는 하나의 작업(데이터를 옮기거나, 계산 결과를 저장하거나, 명령의 흐름을 변경하는 등의)을 수행하도록 한다.

소프트웨어 제작[편집]

소프트웨어는 프로그래밍 언어와 관련 유틸리티를 사용하여 제작되는데, 다음과 같은 몇 가지 형태가 있다.

컴퓨터 프로그래밍, 소프트웨어 공학, 소프트웨어 구조, SaaS도 참조하라.

소프트웨어 제작 때는 다음과 같은 컴퓨터 언어가 쓰인다.

그리고 소프트웨어 제작할 때 쓰이는 프로그램은 다음과 같다.

소프트웨어 특허[편집]

소프트웨어 특허에 대해서는 찬반이 엇갈린다. 특허가 "발명자"의 아이디어를 보호하는 반면에, 많은 이들이 이것이 소프트웨어 개발을 방해한다고 믿기 때문이다.

법학적 관점에서의 소프트웨어[편집]

대한민국의 소프트웨어산업진흥법에서는 소프트웨어를 "컴퓨터·통신·자동화 등의 장비와 그 주변장치에 대하여 명령·제어·입력·처리·저장·출력·상호 작용이 가능하도록 만드는 지시·명령(음성이나 영상정보를 포함한다)의 집합과 이를 작성하기 위하여 사용된 기술서 기타 관련 자료를 말한다."라고 정의한다.(법 제2조 1호)

소프트웨어 라이선스[편집]

소프트웨어에는 여러 종류의 라이선스 형태가 있다. 크게는 다음과 같이 나뉜다.

  1. 프리웨어(freeware): 제작자가 사용을 허락한 소프트웨어로 CCL만 지키면 마음껏 사용해도 된다.
  2. 셰어웨어(shareware): 보통 30일 동안 소프트웨어를 정식 버전과 같은 기능을 사용할 수 있다.
    60일이나 90일 동안 사용할 수 있는 셰어웨어도 있다. 데모버전이라고도 한다.
  3. 상용 소프트웨어(Commercial Software): 돈을 지불하고 사용권을 구매해서 사용해야하는 소프트웨어 라이선스의 한 분류이다. 기업에서 제작하는 대부분의 소프트웨어가 사용 소프트웨어에 속한다. 예로는 Microsoft의 Office, Oracle의 Oracle DB등이 있다. 상용 소프트웨어는 다시 Node locked license, floating license, per user license, per machine license와 같이 나뉠 수 있다.


개발 단계에 따른 소프트웨어 분류[편집]

소프트웨어 개발 단계에 따라 분류를 나눌 수 있다. 소프트웨어 배포자에 따라 이 소프트웨어 분류는 바뀔 수 있지만 일반적인 룰은 다음과 같다.

  1. 알파 버전: 개발 주기에서 알파 버전의 경우 내부 테스트용으로 공개하는 경우가 많다. 거의 모든 주요 기능을 포함하고 있지만 많은 버그가 존재하고 실제 사용자가 도입해서 사용하기에는 무리가 있는 버전을 말한다. 베타 버전 이전의 단계이다.
  2. 베타 버전: 베타 버전의 경우 알파에서 나온 문제점들을 수정한 단계이고 외부로 공개 테스트를 시작할 수 있을 정도의 완성도를 가진 소프트웨어를 말한다. 이후로는 새로운 기능보다는 나온 문제점들을 수정하고 UI를 최적화 하는 작업을 진행한다.
  3. RC (Release Candidate): RC는 Microsoft에서 사용하는 소프트웨어 개발 단계로 정식판이 배포되지 직전의 단계로 볼 수 있다. 일반적으로 베타와 정식 배포판의 중간단계에 해당한다.
  4. Nightly build: 매일 발생하는 소프트웨어에 대한 수정사항을 포함하고 있는 소프트웨어 배포버전이다. 소프트웨어는 테스트가 되어 있지 않을 수 있기 때문에 매우 불안정한 상태이다.
  5. 정식 버전:

함께 보기[편집]