소프트웨어의 정의
응용 프로그램이나 데이터처럼 컴퓨터를 제어하고, 명령을 수행할 수 있게 만들어주는 프로그램이라고 할 수 있다.
원래는 문자 그대로 컴퓨터에서 동작되거나 처리되는 것만을 소프트웨어라고 불렀지만, 현재는 소프트웨어의 범위가 넓어져 수많은 것들이 소프트웨어 취급을 받고 있다. (게임, 네비게이션 지도 등등도 포함된다.)
소프트웨어는 크게 시스템 소프트웨어와 응용 소프트웨어로 나눌 수 있다.
시스템 소프트웨어는 응용 소프트웨어가 작동하는 환경을 만들거나 컴퓨터를 유지, 관리하는데 사용되는 소프트웨어이다. 그 특성때문에 플랫폼이라고도 부른다.
사용자가 컴퓨터 하드웨어의 물리적인 특성이나 구조를 전부 알지 못하더라도 컴퓨터 시스템을 사용할 수 있게 도와주는 역할을 한다.
대표적인 시스템 소프트웨어는 운영체제, 드라이버, 유틸리티, 펌웨어 등이 있다.
응용 소프트웨어는 사용자가 원하는 기능을 수행하기 위해 제작되어 사용자가 직접 사용하는 소프트웨어를 말한다. 기본적으로, 시스템 소프트웨어라는 플랫폼 위에서 구동되는 프로그램이기 때문에, 플랫폼이 없다면 구동할 수 없다.
대표적인 예로 워드프로세서(word proccessor), 스프레드시트(spreadsheet) 등이 있다.
소프트웨어의 특성
소프트웨어의 특징은 다음과 같다.
1. 비가시성
소프트웨어는 하드웨어와 달리 눈에 보이지 않는다는 특징이 있다.
2. 복잡성소프트웨어는 초창기와는 달리 시간이 흐를수록 복잡하게 설계된다는 특징이 있다. 가령 초창기 게임 중 하나인 슈퍼마리오 브라더스의 경우 게임의 스크린샷보다 게임의 용량이 더 작을정도로 용량의 축소가 가능했지만, 현재 나오는 게임들은 10GB가 넘지 않는다면 작다고 할 수 있을정도로 크고 복잡해지고 있다.
3. 복제 가능성소프트웨어는 특별한 방법을 사용하는 것이 아니라면 기본적으로 복사가 가능하다.
4. 비제조성소프트웨어 또한 개발단계를 거쳐야 하는 것은 맞지만, 개발이 끝나고 나면 별개의 생산 시설이 필요가 없다.
5. 변경 가능성소프트웨어는 한번 개발이 끝난 순간 변경이 불가능하지 않고, 출시가 끝나고 나서도 패치등의 방법으로 수정이 가능하다.
6. 비마모성소프트웨어는 소프트웨어를 담고 있는 하드웨어만 멀쩡하다면 사실상 영구적으로 작동할 수 있다.
'Programming > 기타' 카테고리의 다른 글
구조체 패딩 (0) | 2024.12.30 |
---|---|
워치독 타이머(Watchdog Timer) (0) | 2024.12.15 |
인터페이스와 추상클래스 (0) | 2024.12.08 |
TDD(Test- Driven Development)에 대하여 (1) | 2024.12.06 |
동적 연결 라이브러리 (Dynamic Linked Library) (0) | 2024.12.03 |