1. 소프트웨어의 당면 과제


1) 새로운 소프트웨어에 대한 사용자 요구의 증가

  • S/W의 발전 속도가 사용자 요구에 따라가질 못한다.
    해결방안으로 CBD개발 방법론이 제기되었지만 범용화되지 못했다는 걸로 봐서 큰 효과는 없는 듯 하다.

 

2) SW 개발 관리

  • SW 개발에도 관리가 필요하다.
    1. 비용 관리
      주어진 예산 내에서 개발을 해야함
    2. 일정 관리
      정해진 기간 내에 프로젝트를 완료해야함
    3. 개발자 관리
      개발 중에 개발자가 이직을 하거나, 팀원 간의 감정적인 문제가 없어야함

 

 

 

2. 소프트웨어 개발의 어려움


1) 개발 과정이 복잡하다.

  • 무엇이든지 복잡하면 문제가 많이 발생할 수 있는데 SW 개발도 마찬가지. 그래서 소프트웨어 공학에서는 개발의 복잡함을 줄이기 위한 방법과 기술을 제시한다.

 

2) 참여 인력이 많다.

  • 인력이 많으면 의사소통 경로가 많아져 의사 결정 과정도 복잡할 것이다. 또한 협력도 쉽지 않다. 그리고 중간에 이직하는 사람, 새로 투입되는 사람 등 변화도 많이 발생한다. 그래서 소프트웨어 공학에서는 개발에 참여하는 팀을 구성하고 관리하는 효율적인 방법을 제시한다.

 

3) 개발 기간이 길다.

  • 개발 기간이 길면 프로젝트 진행 상황을 파악하기 쉽지 않고 개발 비용 산정도 어렵다. 그래서 소프트웨어 공학에서는 프로젝트를 효율적으로 관리하기 위한 프로젝트관리지식체계(PMBOK)를 소개한다.

 

 

 

3. 소프트웨어 공학의 역사


1) 소프트웨어 공학의 출현 배경

  • 소프트웨어 위기(software crisis)
    여러 가지 원인에 의해 SW 개발 속도가 HW 개발 속도를 따라가지 못해 SW에 대한 사용자들의 요구사항을 처리할 수 없는 문제가 발생함을 의미한다.

 

2) 1968년 : 서독에서 개최된 NATO 주최의 회의

  • "software engineering" 이라는 용어가 최초로 등장
  • SW 생산성의 기본적인 문제 제기

 

3) 1970년 : AFIPS와 IFIP 회의

  • SW 품질과 생산성에 관한 논문 발표
  • 최종적으로 신뢰성 있는 SW 개발을 위해서는 코딩 단계보다 설계 단계에서부터 고려하는 것이 중요하다고 인식되기 시작했고, SW 개발 단계간의 비율 및 비용 분포 등의 실태도 조사되기 시작했다.