소프트웨어 공학에서 말하는 소프트웨어
소프트웨어에 대한 정의
구분 | 정의 |
---|---|
좁은 의미에서의 소프트웨어 | 프로그램과 관련 데이터의 묶음 |
포괄적 의므의 소프트웨어 | 좁은 의미의 소프트웨어에 더해, 관련 문서들을 포함한 개념 |
소프트웨어 공학에서 소프트웨어는 프로그램과 그와 관련된 데이터 뿐만 아니라, 소스 코드 및 설계 문서, 설치 파일, 매뉴얼 등을 포함한 모든 관련 문서들을 모두 포함한 개념이다.
소프트웨어의 분류
소프트웨어는 기능
그리고 사용자
라는 기준에서 각각 두 가지로 분류될 수 있다.
(1) 기능에 따른 분류
분류 | 시스템 소프트웨어 | 응용 소프트웨어 |
---|---|---|
영문 | system software | application software |
정의 | -컴퓨터를 동작 시키기 위한 목적의 소프트웨어 - 응용소프트웨어를 실행하기 위한 플랫폼을 제공 - 하드웨어를 동작시키고 제어하는 기능 |
- 사용자의 실제 업무 수행을 돕는 프로그램들 - 특정 용도에 사용되도록 만들어진 것 |
예시 | - 운영체제 - 장치 드라이버- 자원 관리를 위한 유틸리티 - 컴파일러, 링커, 디버거 등도 여기로 분류하기도 함 |
- 워드, 엑셀, 웹브라우저 - 게임 프로그램 등 |
(2) 사용자에 따른 분류
분류 | 일반 소프트웨어** | 맞춤형 소프트웨어** |
---|---|---|
영문 | generic software | customized software bespoke software(주문형 소프트웨어) |
정의 | - 일반적인 상용 소프트웨어 - 요구사항이 매우 일반적이고 안정적임 - 불특정 다수를 대상으로 설계된 소프트웨어 |
- 특정 도메인, 특정 사용환경, 특정 요구사항 특화 - 특별한 고객을 위해 맞춤 개발되는 소프트웨어 - 특정 산업의 고유 업무 프로세스를 위함 |
예시 | - 워드프로세서 - 사무용 소프트웨어 - ERP/CRM - 운영체제 등 |
- 교통관제 시스템 - 병원관리 시스템 |
소프트웨어의 성질
번호 | 성질 |
---|---|
1 | 무형의 인공물이며 물질적인 성질이 없다. |
2 | 기존 컴포넌트를 조립해 만드는 것이 어렵고, 요구사항에 맞춰 새롭게 만들어진다. 다만 최근 개발 경향은 컴포넌트 기반 개발 방법임. |
3 | 설계 과정의 품질 보증 활동이 매우 중요하다. 즉, 설계가 매우 중요하다. 하드웨어에서는 제작 과정이 설계 과정만큼 중요한 것과 대비됨 |
4 | 개발 비용의 대부분이 노동력에 투입된다. |
5 | 하드웨어에 비해 상대적으로 변경이 용이하다.(=순응성) |
6 | 소프트웨어는 마모되지 않는다. 환경 변화로 인해 쓸모 없어지거나 품질이 저하될 뿐. 하드웨어는 마모성이 있으므로 욕조 곡선을 보이는 것과 대비됨 |
7 | 소프트웨어가 유지되려면 주위 환경 변화에 대한 대처가 필요하며 이를 위해 하드웨어와는 달리 많은 경우에 설계에 대한 변경이 요구된다. |
소프트웨어의 응용 분야
응용 분야 | 설명 |
---|---|
시스템 소프트웨어 | 앞서 살펴본 시스템 소프트웨어와 동일. 하드웨어를 동작, 제어시키며 다른 프로그램들이 실행될 수 있는 플랫폼을 만든다. |
실시간 소프트웨어 | 이벤트 발생과 처리가 실시간으로 이루어지는 시스템 은행 업무, 좌석 예약 시스템 등. |
내장형 소프트웨어 | 대형 시스템의 일부로, 보통 하드웨어에 내장된 소프트웨어 주로 장비 제어의 목적으로 자동차, 전자 제품 등에 내장되어있다. |
비즈니스 소프트웨어 | 사업 목적의 업무 처리를 위해 만들어진 소프트웨어 재고 관리 프로그램, 경영 정보 시스템, 회계 업무 프로그램 등 |
개인용 소프트웨어 | 개인적 업무를 지원하는 소프트웨어 워드프로세서, 스프레드시트, 게임, 네트워크 유틸리티 등 |
인공지능 소프트웨어 | 복잡한 문제 해결을 위한 인공지능을 사용한 소프트웨어 로보틱스, 전문가 시스템, 인공 신경망, 화상 및 음성 인식 등 |
웹 기반 소프트웨어 | 웹 브라우저를 통해 표현되거나 실행되는 소프트웨어 |
공학용 및 과학용 SW | 공학이나 과학 분야에서 원리나 공식을 사용해 기능을 수행하는 소프트웨어 |