컴퓨터 시스템이 동작하려면 하드웨어 뿐만 아니라 소프트웨어도 필요하다. 컴퓨터를 구성하는 장치인 하드웨어는 실제의 물체를 의미하며, 컴퓨터에서 사용되는 정보들을 처리, 전송, 저장하며, 전송 통로를 제공한다.

소프트웨어 없이 하드웨어만으로 구성된 시스템은 여러 가지의 디지털 장치와 부품을 서로 연결해서 필요한 기능을 수행한다. 이러한 방식을 하드와이어 프로그램(hardwired program)이라고 하며, 특정 목적으로만 사용된다. 만약 다른 목적을 사용하려면 장치와 부품을 추가하거나 삭제해야 하며 이에 대한 연결도 새로운 방슥으로 바꿔야 한다. 따라서 하드웨어만으로 구성된 컴퓨터 시스템은 융통성과 호환성이 없어 비효율적이다. 결과적으로 이러한 비효율성을 극복하기 위해서 소프트웨어는 반드시 필요하다.

이러한 이유로 컴퓨터의 구성 요소는 가장 큰 범주에서 하드웨어와 소프트웨어로 분류한다. 다양한 목적으로 활용될 수 있는 범용 하드웨어는 장치와 부품을 교체하거나 연결 상태를 변경할 필요 없이, 소프트웨어가 새로운 제어신호들을 제공하면 이 제어신호에 따라 다양한 작업을 처리할 수 있다. 이렇게 하드웨어가 특정 작업을 수행하도록 제어신호들을 제공하는 일련의 부호(codes) 혹은 명령어(instructions)의 집합을 소프트웨어라고 부른다. 그리고 펌웨어(firmware)는 소프트웨어를 하드웨어화한 것으로 하드웨어와 소프트웨어의 중간 단계에 해당되어 미들웨어(middleware)라고도 한다. [ 그림 5-6 ] 은 컴퓨터 구성 요소의 분류를 개념적으로 나타낸 것이다.

[ 그림 5-6 ]

1. 하드웨어