본문 바로가기
Programming/DevOps, Tools

[Software] 소프트웨어란

by kghworks 2023. 3. 8.

목차

  • 소프트웨어란
  • 소프트웨어 공학
  • 소프트웨어 공학 환경
  • 소프트웨어의 신뢰도
  • 참고

2023 시가총액 순위 (출처 : https://top.hibuz.com/)

 2023년 3월 세계 시가총액순위 안에는 소프트웨어 관련 회사가 대부분을 차지하고 있습니다. 이제 소프트웨어는 사업체의 의사결정에 과학(공학)적인 문제해결을 할 수 있는 도구 (key)입니다. 


소프트웨어의 정의

 

 소프트웨어는 좁은 의미에서 프로그램과 관련 데이터들의 집합을 말하고, 포괄적 의미로 관련된 문서들까지 포함합니다.

 현대 사업체들의 의사결정, 문제해결의 필수 도구 (key)로서 모든 산업의 기반기술이 되고 있습니다.


소프트웨어 분류방법

 

기능에 따른 분류

  • 시스템 소프트웨어 : 컴퓨터를 동작시키기위한 목적 (운영체제, 드라이버, 컴파일러, RDBMS 등)
  • 응용 소프트웨어 : 사용자의 실제 업무를 수행 (웹 브라우저, 게임, MIS, ERP 등)

 

사용자에 따른 분류

  • 일반 (generic) 소프트웨어 : 불특정 다수를 대상으로 설계된 패키지 소프트웨어, 일반적인 요구사항으로 상대적으로 안정적, 상용제품으로 판매 가능 (RDBMS, 사무 업무 패키지, 운영체제 등)
  • 맞춤형(custom) 소프트에어 : 특정 고객을 위해 주문제작되어 있는 소프트웨어, 특별한 요구사항을 반영 (교통관제 시스템, 병원 관리 시스템 등)

 

소프트웨어의 성질

  • 무형의 인공물 (물질적인 성질 없음)
  • 컴포넌트들의 조립이 어려움
  • 설계과정의 품질 보증활동이 중요함
  • 개발비용의 대부분이 노동력 (인건비)
  • 변경이 용이함 (소프트웨어의 유연성, 순응성)
  • 마모되지 않음
  • 유지 / 보수 시 설계변경이 요구됨

 

bathtub - curve (hardware) 출처 : https://en.wikipedia.org/wiki/Bathtub_curve#/media/File:Bathtub_curve.svg)

 위 사진은 하드웨어의 bathtub-curve로 소프트웨어와 상반되게 시간(t)이 지나면 고장률 (Failure Rate)이 상승한다. 그러나 소프트웨어는 시간이 지날수록 고장률이 내려간다.

 

소프트웨어 응용 분야

  • 시스템
  • 실시간: 이벤트 발생 and 처리가 실시간으로 이루어짐 (티켓 예약 시스템, 자동제어 시스템, 은행 시스템 등)
  • 내장형 : 시스템의 일부로서 내장되어 있는 소프트웨어 (자동차, 냉장고와 같은 전자제품에 내장된 제어 소프트웨어)
  • 비즈니스 : 산업 (사업)의 업무를 위한 목적 (회계 업무 솔루션, 급여관리, ERP 등)
  • 개인 : 엑셀, 워드, 게임 등
  • 인공지능 : 복잡한 문제를 해결 (로보틱스, 화상/음성 인식 등)
  • 웹 기반 : 브라우저를 통해 요청되고 수행(response)하는 소프트웨어 (웹 서비스, 검색, 쇼핑 등)
  • 공학/과학용 : CAD, 기상분석, 유전자 분석 등

 


소프트웨어 공학

 

 소프트웨어의 위기현상 (산업의 요구사항은 높아지나 인력이 부족함 등)에 대한 해결을 위해 나타난 용어입니다. 이 공학의 정의는 아래와 같이 할 수 있습니다.

 

  • 소프트웨어를 경제적으로 생산하기 위해 건전한 공학적 원리와 방법을 만들고, 사용 (NATO 바우어 교수)
  • 소프트웨어의 개발, 운영, 유지보수에 체계적이고 제어가능하며 경량화된 접근방법을 적요하는 것 (IEEE 소트트웨어 공학 표준 용어집)

 

소프트 웨어 개발 고려사항

  • 소프트웨어는 단순한 코드의 생성이 아님
  • 요구사항 명세, 설계, 프로젝트 관리 등에 대한 통합적이고 거시적인 관점 필요
  • 비용은 낮추고 제품의 품질은 높여야 함 (문서화, 프로젝트 관리, 요구사항 명세, 변경 / 재사용을 염두한 확장성 고려 등)

소프트웨어 공학 환경

 소프트웨어 공학의 대상 중규모 이상의 복잡한 소프트웨어입니다. 따라서 다양한 해결방법을 마련하여 통합적으로 다뤄야 합니다. 

 

 

소프트웨어 공학 환경의 계층

 

소프트웨어 공학 원리

  • 소프트웨어 프로세스와 이상적인 측면을 추상적으로 설명한 것
  • 추상화, 분할정복, 계층적 조직의 원리 등

 

방법과 기술

  • 행위를 통제하는 체계적이고 일반적인 가이드라인
  • 바람직한 속성을 포로세스나 제품에 포함시키기 위해 필요함

 

방법론

  • 방법과 기술들의 조합으로 문제 해결을 위한 프로세스를 안에서 조직화
  • 프로세스, 방법 함께 기술

소프트웨어 프로세스 모델

  • 소프트웨어의 생산, 진화 과정을 추상화하여 요약 표현 (생명 주기 모델 등)
  • 요구사항 정의, 시스템 개념, 구현에 이르는 전이 과정을 표현 (필요한 활동, 결과물, 산출물, 사람 역할 등)
  • 좋은 프로세스 모델은 전이과정에서 발생하는 문제를 최소화, 프레임워크를 공통적으로 제공하여 생산성 향상, 개발자 간의 공통 문화, 기술 제공 한다.

 

소프트웨어의 외부 / 내부 품질

  • 외부 품질 : 사용자가 인지하는 품질 요소 (사용성, 신뢰도, 속도 등)
  • 내부 품질 : 외부 품질에 도움을 주는 요소 (개발자 영역, 요구사항, 설계문서 등)

 


소프트웨어의 신뢰도

사용자가 소프트웨어를 신뢰하는 정도를 말하며 개념은 아래와 같습니다.

 

  • 정확한 결과를 적시에 제공
  • 오랜 시간 작동되고, 필요할 때 사용 가능해야 함
  • 오류발생이 적고, 발생 이후 무난히 복구되며 치명적이지 않음
  • 다양한 측면에서 신뢰도를 측정할 수 있음 (실행 시간, 고장의 빈도, 수명 등)

 

bathtub - curve (hardware) 출처 : https://en.wikipedia.org/wiki/Bathtub_curve#/media/File:Bathtub_curve.svg)

 

다시 위 하드웨어의 욕조 곡선을 보면, 소프트웨어 또한 시간이 지남에 따라 아래와 같은 원인으로 고장률이 올라갈 수 있습니다. 

 

  • 버그 수정 / 기능 개선을 통해 새로운 오류 유입
  • 하드웨어 환경 (운영체제 등) 변경
  • 용량 / 성능 초과 등

 

신뢰도를 나타내는 척도

  • 정확성 : 명세서와 일치하게 작동
  • 성능 : 지정된 (의도한) 시간 안에 시스템이 처리 가능한 작업량, 기능을 빠르게 제공하는 능력
  • 사용성 : 본래 목적대로 사용 가능
  • 상호운영성 : 다른 시스템과 협력하는 능력
  • 유지보수성 : 변경이 용이한 정도 (변경 요인: 기존 기능 개선, 환경 변화, 오류 수정 등 다양)
  • 이식성 : 다른 환경에서도 동작하는 능력 (이식 요인 : 하드웨어, 운영체제, 상호 작용하는 시스템 변경 등)
  • 검사성 : 좋은 소프트웨어의 기준을 검사할 수 있는 속성이 있는가
  • 추적성 : 이해관계자, 요구사항, 설계문서, 코드 간의 관계를 추적할 수 있는가

참고

https://en.wikipedia.org/wiki/Bathtub_curve

 

Bathtub curve - Wikipedia

From Wikipedia, the free encyclopedia Curve for failure rates over time The 'bathtub curve' hazard function (blue, upper solid line) is a combination of a decreasing hazard of early failure (red dotted line) and an increasing hazard of wear-out failure (ye

en.wikipedia.org

 

 

 

 

 

 

 

 

 

댓글