소프트웨어 공학에서 말하는 소프트웨어

소프트웨어에 대한 정의

구분 정의
좁은 의미에서의 소프트웨어 프로그램과 관련 데이터의 묶음
포괄적 의므의 소프트웨어 좁은 의미의 소프트웨어에 더해, 관련 문서들을 포함한 개념

소프트웨어 공학에서 소프트웨어는 프로그램과 그와 관련된 데이터 뿐만 아니라, 소스 코드 및 설계 문서, 설치 파일, 매뉴얼 등을 포함한 모든 관련 문서들을 모두 포함한 개념이다.

소프트웨어의 분류

소프트웨어는 기능 그리고 사용자 라는 기준에서 각각 두 가지로 분류될 수 있다.

(1) 기능에 따른 분류

분류 시스템 소프트웨어 응용 소프트웨어
영문 system software application software
정의 -컴퓨터를 동작 시키기 위한 목적의 소프트웨어
- 응용소프트웨어를 실행하기 위한 플랫폼을 제공
- 하드웨어를 동작시키고 제어하는 기능
- 사용자의 실제 업무 수행을 돕는 프로그램들
- 특정 용도에 사용되도록 만들어진 것
예시 - 운영체제
- 장치 드라이버- 자원 관리를 위한 유틸리티
- 컴파일러, 링커, 디버거 등도 여기로 분류하기도 함
- 워드, 엑셀, 웹브라우저
- 게임 프로그램 등

(2) 사용자에 따른 분류

분류 일반 소프트웨어** 맞춤형 소프트웨어**
영문 generic software customized software
bespoke software(주문형 소프트웨어)
정의 - 일반적인 상용 소프트웨어
- 요구사항이 매우 일반적이고 안정적임
- 불특정 다수를 대상으로 설계된 소프트웨어
- 특정 도메인, 특정 사용환경, 특정 요구사항 특화
- 특별한 고객을 위해 맞춤 개발되는 소프트웨어
- 특정 산업의 고유 업무 프로세스를 위함
예시 - 워드프로세서
- 사무용 소프트웨어
- ERP/CRM
- 운영체제 등
- 교통관제 시스템
- 병원관리 시스템

소프트웨어의 성질

번호 성질
1 무형의 인공물이며 물질적인 성질이 없다.
2 기존 컴포넌트를 조립해 만드는 것이 어렵고, 요구사항에 맞춰 새롭게 만들어진다.
다만 최근 개발 경향은 컴포넌트 기반 개발 방법임.
3 설계 과정의 품질 보증 활동이 매우 중요하다. 즉, 설계가 매우 중요하다.
하드웨어에서는 제작 과정이 설계 과정만큼 중요한 것과 대비됨
4 개발 비용의 대부분이 노동력에 투입된다.
5 하드웨어에 비해 상대적으로 변경이 용이하다.(=순응성)
6 소프트웨어는 마모되지 않는다. 환경 변화로 인해 쓸모 없어지거나 품질이 저하될 뿐.
하드웨어는 마모성이 있으므로 욕조 곡선을 보이는 것과 대비됨
7 소프트웨어가 유지되려면 주위 환경 변화에 대한 대처가 필요하며
이를 위해 하드웨어와는 달리 많은 경우에 설계에 대한 변경이 요구된다.

소프트웨어의 응용 분야

응용 분야 설명
시스템 소프트웨어 앞서 살펴본 시스템 소프트웨어와 동일.
하드웨어를 동작, 제어시키며 다른 프로그램들이 실행될 수 있는 플랫폼을 만든다.
실시간 소프트웨어 이벤트 발생과 처리가 실시간으로 이루어지는 시스템
은행 업무, 좌석 예약 시스템 등.
내장형 소프트웨어 대형 시스템의 일부로, 보통 하드웨어에 내장된 소프트웨어
주로 장비 제어의 목적으로 자동차, 전자 제품 등에 내장되어있다.
비즈니스 소프트웨어 사업 목적의 업무 처리를 위해 만들어진 소프트웨어
재고 관리 프로그램, 경영 정보 시스템, 회계 업무 프로그램 등
개인용 소프트웨어 개인적 업무를 지원하는 소프트웨어
워드프로세서, 스프레드시트, 게임, 네트워크 유틸리티 등
인공지능 소프트웨어 복잡한 문제 해결을 위한 인공지능을 사용한 소프트웨어
로보틱스, 전문가 시스템, 인공 신경망, 화상 및 음성 인식 등
웹 기반 소프트웨어 웹 브라우저를 통해 표현되거나 실행되는 소프트웨어
공학용 및 과학용 SW 공학이나 과학 분야에서 원리나 공식을 사용해 기능을 수행하는 소프트웨어

Reference

소프트웨어공학 - 김희천 저