소프트웨어 공학 개요

1강. 소프트웨어 공학 개요

소프트웨어 공학의 개요에 대해 알아보자.

주요 용어

  • 소프트웨어: 포괄적 의미에서 프로그램과 데이터 및 관련 문서들의 묶음
  • 소프트웨어 공학: 소프트웨어 생산과 관련된 모든 부분에 공학적 원리와 방법을 적용시키려는 연구 분야 또는 전문 작업 분야
  • 소프트웨어 개발 방법론: 소프트웨어 개발을 위한 구조적 방법을 말하는 것으로 따라야할 행위들
  • ex) 결과의 표기법 및 규칙 등을 포함
  • 소프트웨어 개발 프로세스: 소프트웨어 개발이나 유지보수 목적으로 수행되는 일련의 활동

연습 문제

Q. 포괄적 의미에서 소프트웨어의 정의

  • 프로그램과 데이터 및 설계 문서나 매뉴얼 등의 관련 문서
1
2
해설: 포괄적 의미의 소프트웨어는 소스 코드와 데이터 외에도
실행 파일, 설계 문서, 설치 파일, 시스템 매뉴얼과 사용자 매뉴얼 등을 포함하는 개념이다.

Q. 소프트웨어 공학의 목표에 해당되지 않는 것은?

  1. 품질 좋은 소프트웨어
  2. 소프트웨어의 경제적 생산
    3. 자원을 최대한 사용
  3. 계획된 일정에 맞게 소프트웨어를 생산
1
2
정답: 3)
해설: 자원은 보통 제한적으로 제공되므로 효율적으로 이용해야 한다.

Q. 소프트웨어 개발 프로세스(what)와 개발 방법(how)을 결합한 개념은?

  1. 기술(technique)
    2. 소프트웨어 개발 방법론(methodology)
  2. 소프트웨어 생명 주기(life cycle)
  3. 소프트웨어 공학 원리(principle)
1
2
3
정답: 2)
해설: 소프트웨어 생명 주기는 탄생에서 폐기까지의 변화 과정을 의미하는 개념
기술은 방법에 비해 기계적이며 '제한적인 적용'을 내포하는 용어이다.

Q. 다음이 설명하는 좋은 소프트웨어의 기준은?

소프트웨어가 탑재되어 실행될 하드웨어나 운영체제가 달라져도,
소프트웨어가 쉽게 수정될 수 있어서 계속 동작할 수 있다.

  1. 소프트웨어의 검사성
    2. 소프트웨어의 이식성
  2. 소프트웨어의 유지보수성
  3. 소프트웨어의 정확성
1
2
3
4
정답: 2)
해설: 소프트웨어의 이식성이란 소프트웨어의 환경이 바뀌어도
쉽게 수정되어 동작하는 능력을 의미한다.
이때, 환경은 하드웨어, 운영체제 및 상호작용하는 다른 시스템을 말한다.

정리하기

  • 소프트웨어는 무형의 인공물로 다른 공학 제품에 비해 변경이 용이하다.
  • 소프트웨어 위기 현상은 소프트웨어 공학 기술의 후진성에 기인한다.
  • 소프트웨어 공학의 정의는 소프트웨어의 개발, 운영, 유지보수에 체계적이고 숙달되고 정량화된 접근 방법을 적용하는 것이다.
  • 소프트웨어 공학 환경은 최하위 층부터 소프트웨어 공학 원리, 방법과 기술, 방법론, 그리고 도구로 구성된다.
  • 소프트웨어 개발 방법론이랑 문제 해결을 위해 여러 방법들과 기술들이 정해진 프로세스 안에서 함께 묶인 것이다.
  • 좋은 소프트웨어인가를 판단하는 기준으로는 신뢰도, 정확성, 성능, 사용성, 상호운용성, 유지보수성, 이식성, 검증성, 추적성 등이 있다.

참고 자료

  • 새로 쓴 소프트웨어 공학, 최은만, 2014, 정익사