의견.png

소프트웨어

위키원
jingayoun (토론 | 기여)님의 2021년 1월 12일 (화) 13:41 판
이동: 둘러보기, 검색

소프트웨어(software)란 컴퓨터 프로그램 및 그와 관련된 문서들을 총칭하는 말이다. 간략히 S/W 또는 SW라고도 쓴다. 크게 시스템 소프트웨어와 응용 소프트웨어로 나뉜다. 컴퓨터 기계장치부를 말하는 하드웨어와 대응되는 개념으로, 펌웨어(firmware)는 하드웨어와 소프트웨어의 특성을 모두 가지고 있다.

개요

저장장치에 저장된 특정한목적의 하나 또는 다수의 컴퓨터 프로그램으로, 프로그램 소프트웨어는 컴퓨터 하드웨어에 직접 명령어를 주거나 다른 소프트웨어에 입력을 제공함으로써 그것이 수행하도록 구현된 기능을 수행한다. 일상적으로 응용 소프트웨어의 의미로 자주 쓰인다.[1] 법률상 정의는 소프트웨어산업 진흥법 제 2조 제 1호에 따르면 “컴퓨터, 통신, 자동화 등의 장비와 그 주변장치에 대하여 명령, 제어, 입력, 처리, 저장, 출력, 상호작용이 가능하게 하는 지시, 명령(음성이나 영상정보 등을 포함)의 집합과 이를 작성하기 위하여 사용된 기술서나 그 밖의 관련자료”이다. 간혹 소프트웨어와 하드웨어가 반대되는 말이라고 생각하는 사람들이 있지만, 둘 다 컴퓨터 시스템을 구성하는 요소로 상호 보완적인 기능을 하는 것 뿐 반대되는 말은 아니다.[2]

특징

원래는 문자 그대로의 컴퓨터, 즉 메인프레임, 미니 컴퓨터, 마이크로 컴퓨터, 퍼스털 컴퓨터에서 동작하거나 처리되는 것(프로그램, 데이터 등)만을 소프트웨어라고 불렀지만, 전화를 필두로 손목시계, 자동차, 냉장고 등 많은 것들이 컴퓨터화하는 현대에는 소프트웨어의 의미가 계속해서 넓어지고 있다. 동영상이나 음원, 전자책 등은 물론 내비게이션에 탑재되는 지도 역시 소프트웨어로 간주된다. 가장 대표적인 소프트웨어는 인터넷으로 인류가 만든 것 중 가장 거대하고 널리 이용되는 소프트웨어이다.[2] 소프트웨어는 특정 목적을 가지고 개발되어 수행하는 일이 명백하게 지정되어 있다. 시대와 환경의 변화에 민감하여 시간이 지날수록 그 쓰임새가 급속도로 감소한다는 단점을 가지고 있다.[3]

역사

소프트웨어의 최초의 장소가 되는 윤곽(알고리즘)은 19세기 에이다 러브레이스가 계획된 해석기관을 위해 작성하였지만, 실제로 만들어진 것은 없었다. 오늘날 우리가 인식하는 컴퓨터의 발명 이전의 소프트웨어에 대한 최초의 이론은 앨런 튜링이 1935년에 쓴 수필 《Computable numbers with an application to the Entscheidungsproblem》에서 제안되었다. 그러나 우리가 알고 있는 소프트웨어 즉, 저장식 프로그램 디지털 컴퓨터의 메모리에 저장되는 프로그램들은 1946년 이후에 만들어졌다.[1]

1954년 Paul Niquette가 만들어 냈던 신조어로, 하드웨어는 본래 냄비나 망치 따위의 물건처럼 단단한 물건을 의미하는 단어였는데, 컴퓨터를 구성하는 기계 부분을 일컫는 단어로 의미가 확장되면서, 컴퓨터 내부에서 구동되는 프로그램을 가리켜 소프트웨어라는 단어가 생겼다. 1975년 존 터키(John W. Tukey)가 처음 사용한 용어다.

구분

소프트웨어는 프로그램과 데이터로 구분된다. 디지털 컴퓨터에 탑재되는 프로그램과 데이터는 모두 비트(0과 1)로 구성되어 있는데, 이를 하드웨어에 입력하고, 탑재시켜야만 구동(프로그램)이나 처리(데이터)가 가능하다.

  • 프로그램은 컴퓨터를 구동시켜주는 운영체제 및 컴퓨터에서 구동되는 애플리케이션, 유틸리티, 악성 코드 등이 포함된다. 옛날에는 프로그램을 시스템 소프트웨어, 응용 소프트웨어, 유틸리티의 3가지로 구분했는데, 유틸리티라는 개념이 점차 사라지면서, 프로그램을 시스템 소프트웨어, 응용 소프트웨어, 악성코드(멀웨어)로 분류한다.
  • 데이터는 소프트웨어에서 프로그램을 제외한 가리킨다. 프로그램을 실행하는데 필요한 데이터는 mp3 음원, 사진, 동영상 파일, 문서 등 매우 다양한 유형이 있다. 이런 데이터 중 사용자(소비자)에게 가치를 제공하는 데이터를 콘텐츠라고 따로 지칭하기도 한다. 대부분의 데이터는 알맞은 프로그램이 있어야만 열람과 처리가 가능하며, 데이터는 이런 응용 프로그램을 이용해 처리하기 위해 특정 형식(포맷)으로 짜여져 있다. 컴퓨터 시스템의 보조기억장치(하드 디스크 등)에서 가장 많은 용량을 차지하고 있는 것이 데이터다. 시스템을 사용하다 보면 데이터는 계속해서 축적되기 때문에, 오늘날 대부분의 PC 사용자들이 시스템 안에 백만개 단위의 데이터 파일들을 쌓아놓고 산다.[2]

시스템 소프트웨어

시스템 소프트웨어(system software)는 시스템 운영에 필요한 기본 환경을 제공하는 소프트웨어로 컴퓨터 시스템을 근본적으로 구동시키고 효율적으로 운용해 주는 기능을 가진 프로그램들의 모임을 뜻한다. 대표적인 시스템 소프트웨어는 마이크로소프트 윈도우, 맥 OS, 리눅스 등의 운영체제, 컴파일러, 데이터베이스, 네트워크 외에도 Java, .NET 등 런타임이나 언리얼 엔진, 이드텍 엔진 등 다양한 유형의 시스템 소프트웨어들이 있다. 응용 소프트웨어로 구분되는 웹 브라우저도 시스템 소프트웨어로 볼 수 있는데 이는 웹 사이트가 소프트웨어의 구동 플랫폼이기 때문이다. 실제로 웹 기술을 기반으로 만든 응용 프로그램이 많다. 시스템 소프트웨어는 다른 소프트웨어들이 구동 또는 처리될 수 있는 환경을 만들어주는 플랫폼의 역할을 하는 소프트웨어이기 때문에 때문에 플랫폼 소프트웨어라고도 부른다. 시스템 소프트웨어 아래에는 컴퓨터 하드웨어나 운영체제 등의 하위 단계가 있고, 위로는 으용 소프트웨어(프로그램)라는 상위 단계가 있다. 시스템 소프트웨어의 아래에 또 다른 시스템 소프트웨어가 있거나 시스템 소프트웨어 위에 또 다른 시스템 소프트웨어가 있는 경우도 있을 수 있다.

운영 체제

  • MS-DOS
마이크로소프트 윈도는 전세계적으로 점유율 90%에 육박하는 사실상 독과점인 운영체제이다. 때문에 악성코드와 해킹 방법이 가장 집중적으로 개발되고 있어 보안이 취약한 플랫폼이다. 때문에 반드시 보안 솔루션을 이용해야 한다는 등 단점이 많지만, 압도적인 보급률 때문에 거대한 소프트웨어 라이브러리를 자랑하며, 윈도 버전만 있고 맥이나 리눅스로는 출시되지 않는 소프트웨어 등 대체재가 없는 경우도 종종 있다.
  • 유닉스 계열

유닉스 계열 운영체제의 원조인 유닉스는 벨 연구소에서 개발되었다. 리눅스는 리누스 토발즈가 커널을 기반으로 개발한 운영체제로 자유 소프트웨어 진영 중심으로 수많은 배포판을 쏟아내며 여러 사람들의 사랑을 받고 있다. 사용자들이 접속하는 웹 사이트 서버의 대부분이 리눅스 기반이고, 요새 스마트폰에서 쓰이는 안드로이드 또한 리눅스를 기반으로 하고 있다. mac 운영체제는 마하(Mach) 커널을 기반으로 만들어진 애플의 운영체제로 애플의 데스크탑, 노트북 제품은 mac 운영체제를 사용한다. 공식 개조판으로 아이폰에서 쓰이는 iOS가 있고, IBM 계열의 컴퓨터에서 사용하기 위해 일부 사용자들이 변형해서 만든 해킨토시도 있다.

  • 안드로이드는 주로 모바일 기기(스마트폰 등)를 운영하기 위해 만들어진 운영체제로 비교적 가벼우며 범용성이 높다. 21세기에 급격히 확산되며 세계에서 가장 많이 쓰이는 운영체제의 자리를 넘보고 있다.

드라이버

주변 기기의 입출력을 통제하는 소프트웨어로 마우스, 키보드, 모니터 등을 컴퓨터 본체와 연결시키는 소프트웨어이다. 하는 일이 펌웨어와 비슷하지만, 펌웨어와는 달리 드라이버는 컴퓨터의 CP에서 처리된다. 물론 펌웨어 자체에 기본적인 주변장치 드라이버가 들어있는 경우도 많아 펌웨어와 드라이버를 확실하게 구분하기는 어렵다. 예를 들어 거의 모든 컴퓨터의 바이오스(펌웨어)에는 기본적인 키보드와 마우스 드라이버가 내장되어 있어, 운영체제조차 탑재되지 않은 빈껍데기 컴퓨터에서도 바이오스 셋업을 할 수 있다. 다만 이런 내장 드라이버는 정말 기본적인 기능만을 갖고 있고, 주변기기의 성능을 모두 활용하려면 전용 드라이버를 설치해야하는데, 전용 드라이버는 CPU에서 처리된다.

유틸리티

컴퓨터 사용 효율을 올려주는 소프트웨어로, 우리가 컴퓨터를 보다 편리하고 안전하게 사용할 수 있도록 돕고, 컴퓨터를 사용하는데 있어 일어날 수 있는 문제들을 예방하거나 해결하는 역할을 하는 프로그램들이다. 대표적으로 디스크 정리, 파일 압축, 네트워크 구축, 방화벽 등이 있다. 유틸리티와 응용 소프트웨어를 구분하는 기준은 “이 프로그램을 구동할 목적으로 컴퓨터를 장만했다”라고 할 수 있느냐 하는 것인데, 그렇다면 응용 소프트웨어고, 그렇지 않으면 유틸리티다. 20세기까지만 해도 프로그램을 시스템 소프트웨어, 응용 소프트웨어, 유틸리티로 엄격하게 구분했지만, 오늘날 가장 널리 이용되는 시스템 소프트웨어 마이크로소프트 윈도가 각종 유틸리티를 포함하고 있어 유틸리티를 독립된 제품으로 접하기 어렵다. 또한 넓은 관점에서 보면 운영체제의 계정 권한 관리나 자동적인 메모리 관리 등도 있기 때문에 유틸리티를 독립된 범주로 보는 관점은 점차 줄어들고 있다.[2]

응용 소프트웨어

응용 소프트웨어(application software)란 시스템 소프트웨어라는 플랫폼 위에 구동되는 프로그램으로, 사용자가 원하는 각종 기능을 제공한다. 홈페이지 운영이나 업무관리 등 특정한 기능을 수행하기 위해 개별적으로 개발한 소프트웨어로, 시스템 소프트웨어를 사용하여 실제 사회에서 일어나는 문제들을 풀어주는데 그 종류가 사무 자동화, 수치연산, 게임 등 다양하다. 응용이 영어로 애플리케이션(application)이기 때문에 그냥 애플리케이션 혹은 앱이라고도 한다. 또는 응용 프로그램(application program)이라고도 하며, 줄여서 'AP'라고 쓰기도 한다. 응용 소프트웨어는 앞에서 말한 것처럼 워드 프로세서, 스프레드시트, 인터넷 브라우저, 동영상 플레이어, 비디오 게임 등 다양한 응용 소프트웨어를 특징짓는 공통점은 이들이 우리가 컴퓨터를 사용하는 목적이 되는 프로그램들로, 컴퓨터를 사는 목적이 될 수 있는 프로그램들이다.[2]

악성 코드

제작자가 악의를 가지고 만든 소프트웨어로 컴퓨터 바이러스, 웜, 트로얀, 랜섬웨어 등 일명 나쁜 소프트웨어이다 대부분 프로그램(응용 소프트웨어)이지만, 데이터로만 이루어진 악성 코드도 있다. 그 예로 특정 프로그램에서 정해진 동작을 실시하는 일종의 스크립트인 매크로만으로 구성된 악성 코드가 있다. 간혹 취약점(vulnerability)과 혼동하는 경우가 있는데 취약점은 말 그대로 소프트웨어가 갖고 있는 결함이 악의적으로 이용될 수 있는 결함을 말한다. 옛날에는 소프트웨어 개발자가 이런저런 목적으로 설치해 둔 뒷문이 해커에게 발견되어 취약점으로 이용되는 경우가 많았다면, 현재는 소프트웨어가 고도로 복잡해졌기 때문에 개발자가 전혀 의도하지 않은 소프트웨어적 결함이 취약점으로 발견되는 경우가 점점 늘어나고 있다.[2]

분류

사용자 작성 소프트웨어

상용 소프트웨어

상용 소프트웨어(commercial software)란 상업용으로 판매하는 소프트웨어를 말한다. 간략히 '상용 S/W'라고 한다. 대부분의 상용 S/W는 소스 코드는 제공하지 않고 최종 실행 코드만 패키지 제품으로 제공하기 때문에 일부 기능의 변경이나 추가 등 커스터마이징이 불가능하다. 상용 S/W에는 리포팅 툴, 백업 솔루션, 보안 솔루션, GIS 솔루션 등이 있다. 셰어웨어(Shareware), 애드웨어(Adware), 프리웨어(Freeware) 등도 넓은 의미에서 상용 소프트웨어에 속한다.

각주

  1. 1.0 1.1 〈소프트웨어〉, 《위키백과》
  2. 2.0 2.1 2.2 2.3 2.4 2.5 〈소프트웨어〉, 《나무위키》
  3. 청년학술회, 〈소프트웨어란 무엇인가〉, 《네이버 블로그》, 2016-03-27

참고자료

  • 〈소프트웨어〉, 《위키백과》
  • 〈소프트웨어〉, 《나무위키》
  • 청년학술회, 〈소프트웨어란 무엇인가〉, 《네이버 블로그》, 2016-03-27

같이 보기


  의견.png 이 소프트웨어 문서는 소프트웨어에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.