1.1 소프트웨어
1 소프트웨어의 정의
- 소프트웨어란 컴퓨터 프로그램과 관련 데이터의 묶음으로서, 여기서 프로그램은 데이터를 입력받아 처리함으로써 원하는 출력을 제공하기 위해 사용되는 명령어들의 집합이다.
- 포괄적 의미에서 소프트웨어란 소스코드는 물론 모든 관련 문서까지 포함한다.
2 소프트웨어의 중요성
- 역할
- 사업체의 의사결정을 지원하는 엔진
- 현대적 과학 탐구와 공학적 문제 해결을 지원하는 도구
- 교통, 의료, 원거리 통신 등에 사용되는 모든 종류의 컴퓨터 시스템에 내장
3 소프트웨어의 분류
- 기능에 따른 분류
- 시스템 소프트웨어
- 컴퓨터를 운영하기 위한 목적의 소프트웨어
- 운영체제, 장치드라이버 및 자원 관리를 위한 유틸리티 프로그램이 속한다. 컴파일러, 링커 및 디버거 등과 같은 소프트웨어 개발 도구나 DB 관리 시스템이 속함
- 응용 소프트웨어
- 사용자의 실제 업무를 수행하는 프로그램 (ex: 워드프로세서, 스프레드시트)
- 고객에 따른 분류
- 일반 소프트웨어
- 요구사항이 매우 일반적이고 안정적
- 불특정 다수를 대상으로 설계된 소프트웨어 (= 상용소프트웨어)
- 맞춤형 소프트웨어
- 특별한 고객을 위해 개발되는 맞춤 소프트웨어 (= 주문형 소프트웨어)
4 소프트웨어의 성질
- 무형의 인공물로 마모되지 않으며, 다른 공학 제품에 비해 변경이 용이하다.
- 기존 컴포넌트들의 조립을 통해 만들어지지 않음. 요구사항에 맞추어 새롭게 만들어진다.
- 설계 과정의 품질 보증 활동이 결정적인 요소가 된다.
- 개발 비용은 대부분 노동력에 투입된다.
- 상대적으로 변경이 용이하다.
- 요구사항이나 환경의 변화에 따라 적절히 변경될 수 있는데 이것을 소프트웨어의 유연성 또는 순응성이라고 한다.
- 소프트웨어는 마모되지 않는다.
- 소프트웨어 유지보수는 하드웨어와 달리 많은 경우에 설계의 변경이 요구된다.
5 소프트웨어의 응용 분야
- 시스템 소프트웨어
- 다른 소프트웨어를 지원할 목적으로 시스템상에서 실행되는 프로그램
- 실시간 소프트웨어
- 시스템 내/외부에서 이벤트가 발생했을 때, 이벤트 발생과 처리가 실시간으로 이루어지는 시스템
- ex: 은행 업무 시스템, 좌석 예약 시스템
- 내장형 소프트웨어
- 대형 시스템의 일부로 하드웨어에 내장되어 특정 조건하에서 고유의 기능을 수행하도록 작성된 소프트웨어
- 자동차, 세탁기, 전자레인지, 주유기, 인공위성 및 많은 자동 제어 시스템에 내장된 소프트웨어는 입력된 데이터를 분석하고 상태를 파악하여 정해진 조치를 취하도록 설계되어 있다.
- 비즈니스 소프트웨어
- 사업 목적의 업무를 처리하기 위해 설계
- ex: 회계 업무 패키지, 경영 정보 시스템
- 개인용 소프트웨어
- 인공지능 소프트웨어
- 단순한 수치계산이나 정형적인 프로시쥬어를 사용하지 못하는 복잡한 문제를 해결하기 위한 것
- ex: 로보틱스, 전문가 시스템, 화상/음성인식
- 웹 기반 소프트웨어
- HTML, Java 등으로 작성되어 웹 브라우저에서 표현되거나 실행되는 소프트웨어
- 공학용/과학용 소프트웨어
- 공학이나 과학 분야의 특정 원리나 공식을 사용하여 해당 분야의 특정 기능을 수행하도록 설계된 소프트웨어