1. 하드웨어
원래는 쇠붙이라는 뜻인데, 컴퓨터의 중앙처리장치(CPU : Central Processing Unit), 기억장치(Memory Unit), 입출력 장치와 같은 전자, 기계장치의 몸체 그 자체를 가리킬 때에 사용한다.
하드웨어(Hardware)는 컴퓨터를 구성하는 가시적이며 실질적으로 만질 수 있는 모든 물리적 장비의 부품을 의미한다. 입력, 연산, 제어, 기억 및 출력 등과 같은 5가지 기능을 기본적으로 구현한다. 컴퓨터 본체의 주요 부품 및 주변기기들은 모두 하드웨어에 포함된다. 컴퓨터뿐만 아니라 스마트폰(안드로이드폰, 아이폰), 아이패드 등 대부분의 전자제품도 크게는 하드웨어 속한다. 그러나 이와 같은 물리적인 장치인 하드웨어는 단순히 기기에 불과하기 때문에 하드웨어가 특정 작업을 수행하기 위해서는 명령어를 제공하는 등의 기능을 수행하는 소프트웨어가 필수적이다.
참고로 하드웨어와 소프트웨어 특성을 모두 가지고 있는 펌웨어(Firmware)라는 것이 있는데, 특정 하드웨어 장치에 포함된 소프트웨어로서 소프트웨어를 읽어 실행하거나 수정하는 것도 가능한 장치인데, 일종의 하드웨어화된 소프트웨어라고도 볼 수 있다. 즉, 수정이나 변경할 필요가 없이 동일한 목적으로 사용할 수 있는 소프트웨어를 ROM 등에 삽입하여 사용하는 것과 같이 고속 처리와 단순한 회로를 구성하고 있는 특징을 가지고 있다.

2. 소프트웨어
소프트웨어(Software)는 하드웨어에 저장된 특수한 목적의 프로그램을 의미하며 하드웨어에 직접 명령어를 주거나 다른 소프트웨어에 입력을 제공함으로써 그것이 수행하도록 구현된 기능을 수행한다. 컴퓨터에서 주로 사용하는 인터넷 익스플로러 등과 같은 웹 브라우저(Web Browser), 한글 프로그램, 마이크로소프트 워드, 엑셀, 파워포인트 및 게임 등과 같은 프로그램들을 소프트웨어라고 하는데, 소프트웨어는 플랫폼 소프트웨어, 응용 소프트웨어 및 사용자 작성 소프트웨어 등과 같이 3가지로 분류할 수 있다.
플랫폼 소프트웨어
- 플랫폼(Platform) : 바이오스 장치 드라이버, 운영 체제 및 그래픽 사용자 인터페이스 등을 총체적으로 포함하는 것
※ 바이오스(BIOS, Basic Input Output System) : 운영체제 가운데 컴퓨터의 입출력을 담당하는 소프트웨어로서 사용자가 컴퓨터를 켜기 시작하면 동시에 시작되는 프로그램이며 컴퓨터와 주변장치 사이의 데이터 흐름을 관리 - 컴퓨터와 주변기기가 서로 소통
- 대개 컴퓨터에 꾸러미로 같이 제공

응용 소프트웨어
- 사람들이 일반적으로 소프트웨어라고 생각하는 것
- 컴퓨터의 프로그램, 스마트폰의 앱 등
- 한글, 오피스 제품군 및 게임 등
- 컴퓨터 하드웨어와는 별도로 구매
- 어떤 응용 프로그램은 컴퓨터에 꾸러미로 제공
- 운영 체제와는 독립적인 프로그램
- 특정 플랫폼만을 위해 제작
- 워드프로세서 : 문서의 작성, 편집, 인쇄 등의 기능을 수행하는 프로그램으로 한글, 워드 등이 있다.
- 스프레드시트 : 수식을 쉽게 계산해주고 통계 처리 등의 기능을 수행하는 프로그램으로, 엑셀이 대표적이다.
- 프레젠테이션 프로그램 : 도표, 도형, 애니메이션 효과 등을 이용하여 발표 자료를 쉽게 작성하는 프로그램으로, 파워포인트가 대표적이다.
- 데이터베이스 관리 시스템 : 데이터베이스를 관리하며 다른 응용 프로그램들이 데이터베이스를 공유하며 사용할 수 있는 환경을 제공하는 프로그램으로, 오라클, 액세스 등이 있다.
- 그래픽 프로그램 : 원하는 그림을 그리거나 만들어진 이미지를 수정하는 기능을 가진 프로그램으로, 포토샵, 페인트샵 프로, 일러스트레이터 등이 있다.
- 통신 프로그램 : 네트워크를 이용해서 데이터를 주고받는 프로그램으로, 웹 브라우저, FTP, 텔넷 등이 있다.

사용자 작성 소프트웨어
- 사용자 특화된 요구를 충족시키기 위한 것
- 스프레드시트 템플릿, 워드 프로세서 매크로, 과학 시뮬레이션, 그래픽, 애니메이션 스크립트 및 전자우편 필터 등
소프트웨어는 하드웨어 없이 독립적으로 존재할 수 없으며, 하드웨어를 제어하고 사용자에게 다양한 기능을 제공하는 핵심 요소이다. 소프트웨어는 크게 시스템 소프트웨어(System Software)와 응용 소프트웨어(Application Software)로 나누어 볼 수 있는데, 시스템 소프트웨어는 운영체제(OS), 유틸리티 프로그램, 드라이버 등을 포함하여 하드웨어 자원 관리를 담당한다.
운영체제는 컴퓨터 시스템의 기본적인 자원 관리와 사용자 인터페이스를 제공하는 소프트웨어로, 대표적으로 윈도우(Windows), 맥OS(Mac OS), 리눅스(Linux)가 있다. 운영체제는 파일 관리, 메모리 관리, 프로세스 관리, 네트워크 연결 등 다양한 기능을 수행하며, 이를 통해 다양한 응용 소프트웨어가 안정적으로 실행될 수 있도록 지원한다.
드라이버(Driver)는 하드웨어 장치와 운영체제 사이에서 통신을 중재하는 소프트웨어로, 프린터, 그래픽 카드, 사운드 카드, 네트워크 카드 등 각종 하드웨어가 제대로 작동하도록 돕는다. 드라이버가 없으면 운영체제는 하드웨어를 인식하거나 활용할 수 없다.
최근에는 클라우드 컴퓨팅, 모바일 앱, 인공지능(AI) 등의 기술 발전으로 소프트웨어의 범위와 역할이 확대되고 있다. 예를 들어, 클라우드 기반 소프트웨어는 인터넷을 통해 언제 어디서나 접근 가능하며, AI 소프트웨어는 머신러닝과 딥러닝을 통해 데이터를 분석하고 자동화된 의사결정을 지원한다.
소프트웨어 개발은 다양한 프로그래밍 언어와 개발 도구를 활용하여 이루어진다. 주요 프로그래밍 언어로는 자바(Java), 파이썬(Python), C++, 자바스크립트(JavaScript) 등이 있으며, 각 언어는 목적과 환경에 따라 적합한 분야가 다르다. 소프트웨어 개발은 기획, 설계, 코딩, 테스트, 유지보수의 과정을 거쳐 이루어진다.
또한, 오픈소스 소프트웨어(Open Source Software)는 소스 코드를 공개하여 누구나 자유롭게 사용하고 수정할 수 있는 형태의 소프트웨어로, 리눅스 운영체제와 아파치 웹 서버 등이 대표적이다. 반면, 상용 소프트웨어는 기업이 소유하며 사용권을 판매하는 형태로, 마이크로소프트 오피스, 어도비 크리에이티브 스위트 등이 있다.
마지막으로, 소프트웨어의 품질과 보안도 매우 중요한 요소이다. 버그, 취약점, 해킹 공격으로부터 안전하게 보호되어야 하며, 정기적인 업데이트와 패치 관리를 통해 안정성과 기능 개선을 이루어낸다.