Page 19 - c언어를 이용한 체험!자료구조 도서 미리보기
P. 19
CHAPTER 1? 프로그래밍 기초와 소프트웨어 공학 5
1.1?소프트웨어 공학
소프트웨어 제작 과정 전체에서 ‘프로그램 코딩(coding)’ 단계는 10~20%
정도만을 차지하는 단계이다. 즉, 소프트웨어 작성을 위해서는 프로그램
코딩(프로그램 구현) 작업 이외에도 더 많은 다른 작업이 필요하다는 의미
다. 지금부터는 소프트웨어 제작의 모든 단계를 고민하는 ‘소프트웨어 공
학’? 에 대해 알아보자. 소프트웨어 공학(software
engineering)이란 소프트웨
컴퓨터 발전 역사의 초창기, 즉 ENIAC 같은 컴퓨터 시대에는 컴퓨터 외부 어 작성과 관련된 일을 기계
의 선을 연결하는 것 자체가 프로그래밍(hard-wired programming)이었 공학, 건축 공학 등의 ‘공학적
던 때가 있었다. 이때는 소프트웨어라는 개념도 없었고, 프로그램을 저장 인 접근법’으로 좀 더 체계화
하려는 방법이다.
한다는 의미도 있을 수 없었기 때문에, 그때 그때 필요할 때 마다 소규모
의 프로그램 제작이 고작이었을 것이다.
그 이후에, 폰 노이만(von Neumann)의 내장형 프로그램이라는 방식을
사용하면서 소프트웨어라는 개념이 생기고, 점점 소프트웨어의 크기가 커
지게 된다. 또한 기계어 프로그래밍 방식에서 발전하여 고급 언어의 출현
으로 인하여 프로그래밍의 편의성이 증대됨에 따라 점점 더 대규모의 소
프트웨어가 제작되게 된다.
이에 따라 전체 컴퓨터 시스템의 제작 비용에서 점점 소프트웨어가 차지
하는 비율이 높아지게 되는데, 소프트웨어의 크기가 작았을 때에는 소프
트웨어 제작/수정 등에 대한 부담감이 적었지만, 점점 대형화되면서 이를
효과적으로 관리하기 위해서 체계적인 소프트웨어 개발 방법론이 필요하
게 되었다.
이와 같이, 소프트웨어는 점차 복잡해지는 반면, 그것에 대처할 수 있는
소프트웨어 개발 및 관리 기술이 뒤따르지 못하기 때문에 ‘소프트웨어의
위기’라는 말이 생기게 되었는데, 그 원인으로써 전통적인 공학 분야에서
사용되는 기본적인 설계 절차를 밟지 않고 주먹 구구 방식으로 소프트웨
어를 제작하고 있었다는 의견이 제시되고, 소프트웨어의 개발에 구조적