CS/Software Engineering

[소프트웨어공학/Software Engineering] 소프트웨어란?

binaryroot 2026. 4. 2. 17:42
728x90

이번 글에서는 소프트웨어에 대해서 알아보고자 한다.

 

소프트웨어는 아래의 세 가지를 포함한다.

  • computer programs (컴퓨터 프로그램)
  • system documentation (시스템 문서)
  • user documentation (사용자 문서)

소프트웨어 제품은 다음과 같이 나뉜다.

  • Generic (범용 소프트웨어)
    • 누구나 구매할 수 있도록 개발된 소프트웨어
    • 예) Excel, Word, CAD 소프트웨어 등
  • Customized (맞춤형 소프트웨어)
    • 특정 고객의 요구에 맞게 개발된 소프트웨어
    • 예) 전자상거래 소프트웨어, 실시간 운송 추적 소프트웨어 등
  • 소프트웨어 명세는 범용 소프트웨어 개발자가, 맞춤형 소프트웨어는 고객이 결정한다.(Generic+Customized)
    • 예) ERP 소프트웨어
728x90
그렇다면 소프트웨어 공학이란 무엇일까?
  • 소프트웨어 공학이란 소프트웨어 생산의 모든 측면을 다루며, 전문 소프트웨어 개발을 위한 이론, 방법, 도구를 포함한다
  • 비용 효율적인 소프트웨어 개발에 중점을 둔다.

소프트웨어 공학의 요구사항

  • 거의 모든 국가의 경제가 소프트웨어에 의존한다.
    • 사회와 개인이 소프트웨어 제어 시스템에 점점 더 의존한다.
  • 컴퓨터 기술 발전에 따라 소프트웨어 복잡성이 증가하고 있다.
    • 더 크고 복잡한 소프트웨어를 더 빠르게 개발해야 한다.

소프트웨어 공학의 중요성

  • 장기적으로 소프트웨어 공학 기법을 사용하는 것이 더 저렴하고 빠르다.
    • 단순히 프로그램만 작성하는 것은 쉽지만, 비용이 더 들고 신뢰성이 떨어진다.

소프트웨어 공학컴퓨터 과학차이점

  • 컴퓨터 과학 : 이론과 기본 원리에 집중
  • 소프트웨어 공학 : 실제 소프트웨어 생산 문제에 집중
  • 컴퓨터 과학 이론만으로는 소프트웨어 공학을 완전히 뒷받침하기에 부족하다.

소프트웨어 프로세스란?

  • 소프트웨어 개발 또는 진화(evolution)를 목표로 하는 일련의 활동이다.
  • 모든 소프트웨어 프로세스의 일반적인 활동
    • Specification (명세) : 무엇을 해야하는지와 제약사항
    • Design and implementation (Development) (개발)
    • Validation (Testing) (테스트)
    • Evolution (Maintenance) (유지보수)

소트프웨어 공학의 비용

  • 약 60% 가 개발(명세, 설계, 구현) 비용
  • 40% 가 테스트 비용
  • 구현 비용은 약 20% 에 불과하다.
  • 장수명 시스템은 유지보수 비용이 개발 비용의 몇 배가 될 수도 있다.
  • 시스템 유형, 속성(성능, 신뢰성 등)에 따라 비용이 달라진다.

아래의 그림은 소프트웨어 개발 모델에서의 비용 분포 비교 표이다.

 

소프트웨어 공학의 다양성과 기본 원칙

  • 다양한 소프트웨어 시스템이 존재하며, 모든 시스템에 적용 가능한 보편적인 기법은 없다.
  • 이미 개발된 소프트웨어를 재사용(ad hoc approaches) 하는 것이 중요하다.
  • 요구사항 설계를 이해하고, 관리된 소프트웨어 프로세스를 사용하는 것이 중요하다.

좋은 소프트웨어의 속성

  • Maintainability (유지보수성) : 변화하는 요구에 맞게 진화할 수 있어야 한다.
  • Efficiency (효율성) : 시스템에 자원을 낭비하지 않아야 한다.
  • Dependability (신뢰성) : 가용성, 신뢰성, 보안, 안전, 무결성을 제공해야 한다.
  • Acceptability (수용성) : 설계된 사용자가 받아들일 수 있어야 한다.

다음 글에서는 소프트웨어 프로세스에 대해 자세히 알아보고 정리해 보고자 한다.

728x90