Software/소프트웨어 공학

소프트웨어 공학 소개

안녕하십니까? 씨앤텍시스템즈 유가현 선임연구원입니다.

 

이번 포스팅 주제는 "소프트웨어 공학 소개"입니다.

소프트웨어 공학이 무엇인지, 왜 소프트웨어 공학이 필요한지 소개해드리겠습니다.

 

먼저 소프트웨어 공학의 정의를 먼저 살펴보겠습니다.

 

Software Engineering is the systematic application of engineering approaches to the development of software. (출처 : 위키백과)

위 문장을 그대로 직역하면, "소프트웨어 공학은 소프트웨어 개발에 엔지니어링 접근 방식을 체계적으로 적용하는 것"입니다.

 

소프트웨어 공학의 정의를 살펴보면, 왜 소프트웨어 개발에 엔지니어링 접근 방식이 필요한지 의문이 생길 수 있습니다.

 

먼저, 소프트웨어는 눈에 보이지 않고(비가시성), 개발 과정이 복잡하고(복잡성), 사용자 요구 또는 환경 변화에 따라 변경이 가능하고(순응성), 일부 수정으로 소프트웨어 전체에 영향(견고성)을 줄 수있는 특징을 가지고 있습니다.

 

SWEBOK(Software Engineering Body of Knowledge)이라고 불리는 "소프트웨어 공학 지식 체계"에서는 소프트웨어 공학을 다음과 같이 분류하고 있습니다.

  • 소프트웨어 요구사항
  • 소프트웨어 설계
  • 소프트웨어 개발
  • 소프트웨어 시험
  • 소프트웨어 유지보수
  • 소프트웨어 형상 관리
  • 소프트웨어 공학 관리
  • 소프트웨어 개발 프로세스
  • 소프트웨어 공학 도구
  • 소프트웨어 품질

소프트웨어 공학이라는 용어는 1968년 나토 소프트웨어 공학학회에서 처음 나왔으며, 소프트웨어 위기(Software crisis)에 관해 사람들이 주의를 기울여 생각할 것을 장려하기 위해서 사용하였습니다.

 

소프트웨어 위기의 원인은 전반적인 소프트웨어 프로세스의 복잡성과 소프트웨어 공학의 미성숙함과 관련이 있었고,

  • 소프트웨어 규모의 대규모화, 복잡화에 따른 개발 비용 증대
  • 하드웨어 비용에 대한 소프트웨어 가격 상승폭 증가
  • 유지보수의 어려움과 개발 정체 현상 발생
  • 프로젝트 개발 및 소요 예산 예측의 어려움
  • 신기술에 대한 교육 및 훈련 부족

소프트웨어 위기는 아래와 같은 결과를 야기했습니다.

  • 프로젝트 예산 초과
  • 프로젝트 일정 지연
  • 비효율적인 소프트웨어
  • 소프트웨어 품질 저하
  • 소프트웨어가 요구사항 불충족
  • 프로젝트는 관리 불가능하고 코드 관리 어려움
  • 소프트웨어가 고객의 손에 전달 되지 못함

따라서, 소프트웨어를 단순히 프로그래밍으로만 보지 않고, 소프트웨어의 개발, 운용, 유지보수 등의 생명 주기 전반을 체계적으로 다루기 위해 소프트웨어 공학이 생겨났습니다.

소프트웨어 생명 주기

 

728x90

'Software > 소프트웨어 공학' 카테고리의 다른 글

형상 관리 개요  (0) 2021.11.02
WBS 소개  (0) 2021.09.28
소프트웨어 제품 품질 지표 소개  (0) 2021.08.25
요구사항 정의 및 분류  (0) 2021.07.28
소프트웨어 개발 생명주기 모델 소개  (0) 2021.06.28