소프트웨어

소프트웨어(Software)는 컴퓨터와 전자 장치가 특정 기능을 수행하도록 하는 프로그램, 관련 데이터, 설정 및 문서 등의 집합이다. 하드웨어가 명령을 실행하는 물리적 장치를 구성한다면, 소프트웨어는 그 장치가 어떤 작업을 어떤 절차로 수행하는지를 정의한다. 하나의 소프트웨어 제품은...

영문명Software
분류컴퓨팅
주요 구성프로그램, 데이터, 설정, 문서
주요 유형시스템 소프트웨어, 응용 소프트웨어, 개발 도구
관련 분야소프트웨어 공학, 컴퓨터 과학, 프로그래밍

소프트웨어(Software)는 컴퓨터와 전자 장치가 특정 기능을 수행하도록 하는 프로그램, 관련 데이터, 설정 및 문서 등의 집합이다. 하드웨어가 명령을 실행하는 물리적 장치를 구성한다면, 소프트웨어는 그 장치가 어떤 작업을 어떤 절차로 수행하는지를 정의한다. 하나의 소프트웨어 제품은 실행 파일만이 아니라 라이브러리, 설정, 인터페이스, 자원 파일과 업데이트 체계를 함께 포함할 수 있다.

소프트웨어는 하드웨어와 프로그램 실행 환경을 관리하는 시스템 소프트웨어, 사용자의 구체적인 작업을 수행하는 응용 소프트웨어, 프로그램을 제작하고 분석하는 개발 도구 등으로 분류할 수 있다. 운영체제, 게임 엔진, 웹 브라우저, 컴파일러, 그래픽 편집기와 데이터베이스 시스템은 각각 다른 목적으로 개발되지만 공통적으로 소프트웨어에 해당한다. 분야별 구분은 유용한 탐색 기준이지만, 하나의 제품이 여러 범주의 역할을 함께 수행할 수도 있다.

소프트웨어는 소프트웨어 공학의 대상이며, 요구사항 분석부터 설계·구현·시험·배포·운영·유지보수에 이르는 소프트웨어 생명주기를 통해 개발·관리된다. 다른 소프트웨어와의 관계는 사용된 소프트웨어 프레임워크, 라이브러리, 파일 형식, 프로그래밍 언어, 지원 운영체제와 개발 조직을 기준으로도 파악할 수 있다.[1]

역사

초기의 프로그램과 저장 프로그램 방식

소프트웨어 산업의 형성

개인용 컴퓨터와 패키지 소프트웨어

인터넷과 서비스형 소프트웨어

분류

시스템 소프트웨어

응용 소프트웨어

개발 도구

미들웨어와 프레임워크

구성 요소

프로그램과 실행 파일

라이브러리와 런타임

데이터와 파일 형식

사용자 인터페이스

개발과 유지보수

소프트웨어 생명주기

설계와 구현

테스트와 품질 관리

배포와 업데이트

라이선스와 배포 형태

독점 소프트웨어

자유 소프트웨어와 오픈 소스

서비스형 소프트웨어

관련 기술

관련 문서

  1. IEEE Computer Society: Software Engineering Body of Knowledge ↩