Page 19 - c언어를 이용한 체험!자료구조 도서 미리보기
P. 19

CHAPTER 1? 프로그래밍 기초와 소프트웨어 공학  5

1.1?소프트웨어 공학

소프트웨어 제작 과정 전체에서 ‘프로그램 코딩(coding)’ 단계는 10~20%

정도만을 차지하는 단계이다. 즉, 소프트웨어 작성을 위해서는 프로그램

코딩(프로그램 구현) 작업 이외에도 더 많은 다른 작업이 필요하다는 의미

다. 지금부터는 소프트웨어 제작의 모든 단계를 고민하는 ‘소프트웨어 공

학’? 에 대해 알아보자.                                   소프트웨어 공학(software
                                                 en­gineering)이란 소프트웨
컴퓨터 발전 역사의 초창기, 즉 ENIAC 같은 컴퓨터 시대에는 컴퓨터 외부       어 작성과 관련된 일을 기계
의 선을 연결하는 것 자체가 프로그래밍(hard-wired programming)이었  공학, 건축 공학 등의 ‘공학적
던 때가 있었다. 이때는 소프트웨어라는 개념도 없었고, 프로그램을 저장          인 접근법’으로 좀 더 체계화
                                                 하려는 방법이다.

한다는 의미도 있을 수 없었기 때문에, 그때 그때 필요할 때 마다 소규모

의 프로그램 제작이 고작이었을 것이다.

그 이후에, 폰 노이만(von Neumann)의 내장형 프로그램이라는 방식을
사용하면서 소프트웨어라는 개념이 생기고, 점점 소프트웨어의 크기가 커
지게 된다. 또한 기계어 프로그래밍 방식에서 발전하여 고급 언어의 출현
으로 인하여 프로그래밍의 편의성이 증대됨에 따라 점점 더 대규모의 소
프트웨어가 제작되게 된다.

이에 따라 전체 컴퓨터 시스템의 제작 비용에서 점점 소프트웨어가 차지
하는 비율이 높아지게 되는데, 소프트웨어의 크기가 작았을 때에는 소프
트웨어 제작/수정 등에 대한 부담감이 적었지만, 점점 대형화되면서 이를
효과적으로 관리하기 위해서 체계적인 소프트웨어 개발 방법론이 필요하
게 되었다.

이와 같이, 소프트웨어는 점차 복잡해지는 반면, 그것에 대처할 수 있는
소프트웨어 개발 및 관리 기술이 뒤따르지 못하기 때문에 ‘소프트웨어의
위기’라는 말이 생기게 되었는데, 그 원인으로써 전통적인 공학 분야에서
사용되는 기본적인 설계 절차를 밟지 않고 주먹 구구 방식으로 소프트웨
어를 제작하고 있었다는 의견이 제시되고, 소프트웨어의 개발에 구조적
   14   15   16   17   18   19   20   21   22   23   24