본문 바로가기
Study/Software Engineering

[소프트웨어공학] 소프트웨어(Software)

by dbxxrud 2020. 4. 3.

 

소프트웨어의 정의

 

컴퓨터 프로그램과 관련 데이터의 묶음으로서, 프로그램은 데이터를 입력받아 처리함으로써 원하는 출력을 제공하기 위해 사용되는 명령어들의 집합.

 

포괄적 의미에서 본다면 소스 코드와 모든 관련 문서까지 포함하는데, 실행 파일, 설계 문서, 설치 파일, 시스템 매뉴얼, 설치 매뉴얼, 및 사용자가 소프트웨어를 사용하는데 도움을 주도록 작성된 매뉴얼 또한 포함한다. 

컴퓨터 소프트웨어는 컴퓨터 하드웨어의 반대 의미로, 컴퓨터 하드웨어소프트웨어가 실행되고 저장되는 물리적 장치(물리 구조)이다.

 

 

소프트웨어의 중요성

 

소프트웨어는 정보화 시대에서 사회의 많은 분야를 움직이는 원동력이므로 주요한 역할을 하고 있다. 또한 모든 면에서 영향을 주고 상업, 문화, 일상, 등에 빈번히 쓰이게 되었으므로 그에 대한 소프트웨어의 중요성이 더욱 증가하고 있다.

 

  • 사업체의 의사결정을 지원하는 엔진
  • 현대적 과학 탐구와 공학적 문제 해결을 지원하는 도구
  • 교통, 의료, 군사, 사무용품 등에 사용되는 모든 종류의 컴퓨터 시스템에 내장

 

소프트웨어의 분류

 

기능적 측면에서 두 가지로 분류해볼 수 있는데, 

 

1. 시스템 소프트웨어

컴퓨터를 동작시키기 위한 목적의 소프트웨어(응용 소프트웨어를 실행시키기 위한 플랫폼 제공).

  • 운영체제
  • 컴파일러
  • 유틸 프로그램

2. 응용 소프트웨어

사용자의 실제 업무를 수행하는 소프트웨어.

  • 웹 브라우저
  • 워드프로세서
  • 스프레드시트
  • 게임 프로그램

 

또한 사용자의 따른 분류로도 구분해볼 수 있다.

 

2. 제네릭 소프트웨어

요구사항이  매우 일반적이고 안정적이다.

  • 불특정 다수를 대상으로 설계되는 소프트웨어
  • 상용제품으로 판매 가능
  • 데이터 베이스 관련 제품, 운영체제 등

 

2. 커스텀 소프트웨어

맞춤 소프트웨어.

  • 응용 도메인, 사용 환경, 요구사항이 특별함
  • 프로세스 제어, 병원 관리 시스템 등

 

소프트웨어의 성질

 

  • 무형의 인공물이며 물질적인 성질 없음
  • 컴포넌트들의 조립을 통해 만들기 어려움
  • 설계 과정의 품질 보증 과정이 중요
  • 개발 비용의 대부분이 노동력에 투입
  • 상대적으로 변경 용이
  • 유지보수 작업은 설계의 변경을 요구함
  • 소프트웨어는 마모되지 않음

 

소프트웨어 vs 하드웨어

 

하드웨어(좌)와 소프트웨어(우)의 고장률

 

소프트웨어의 성실중 중요한 것은 '마모되지 않는다'라는 것이다. 이것은 하드웨어와 차이점을 보이는데 왼쪽에 보이는 곡선은

'욕조 곡선'이다.  이것은 하드웨어의 고장률을 시간 함수로 보여주는 그림으로 초기에는 고장률이 높고 수정을 거듭하며 안정기에 접어들었다가 오랜 시간이 지나면 부품이 마모되므로 고장률이 다시 높아진다. 

 

하지만 소프트웨어는 고장 나지 않으므로 오른쪽 그림과 같이 고장률은 더욱 감소한다. 하지만 환경이 변화하면 소프트웨어 또한 쓸모없게 돼버릴 수도 있다.

 

 

소프트웨어 위기 현상

 

'소프트웨어 위기' 는 하드웨어 기술의 발전으로 인해 사용자의 요구사항이 다양해지면서 해결할 문제가 복잡해졌지만, 소프트웨어 기술의 진보는 느림을 일컫는다. 이러한 원인은 전문인력의 부족과 더불어 소프트웨어에 관한 경영진의 인식 부족 때문이라고 볼 수 있다.

 

  • 개발이 계획보다 지연
  • 초과 비용 발생
  • 신뢰도 결여
  • 유지보수의 어려움이 생김

 

 

 

학부에서 공부한 내용들을 정리하며 올립니다.

 

 

참고도서: 소프트웨어공학(김희천 저), 쉽게 배우는 소프트웨어 공학(한빛소프트)