2016년 6월 22일 수요일

'SW 위기(SW Crisis)'의 원인과 증상, 그리고 해결책


SW위기의 원인은 전반적으로 SW개발의 복잡성에 따른 것으로 이를 해결하기 위한 SW공학이 전문분야로서 상대적으로 미성숙했던 점과 관련되어 있음
1 SW규모의 대규모화, 복잡화에 따른 개발비용 증대
2 HW비용에 대한 SW가격 상승폭 증가

3 유지보수의 어려움과 개발적체 현상 발생 4 프로젝트 개발 및 소요예산 예측의 어려움 5 신기술에 대한 교육 및 훈련 부족 

위기는 여러 가지 증상으로 나타남
1 프로젝트 예산이 초과됨
2 프로젝트 일정이 지연되거나 SW가 고객의 손에 제대로 전달되지 못함

3 SW품질이 낮음(SW의 비효율성, 요구사항을 만족하지 못함 등)
4 프로젝트 관리가 불가능하고, 코드관리가 어려


SW의 위기를 타계하고자 다양한 방법론이 지난 수십 년간 개발되었지만 널리 공유된 견해는 만병통치약은 없다(No silver bullet)는 것임.

- 프로젝트 실패를 방지하기 위해 모든 경우에 통용될 수 있는 방법론은 없다는 견해가 일반적이며,

프로젝트가 규모가 크고, 복잡하며, 요구조건이 명확하지 않은 경우에는 사실상 예측 불가능한 여러 가지 위험에 노출되어 있음

HW와 SW의 차이점


특히, 1960년대는 대규모 시스템에 대한 수요와 그에 따른 SW에 대한 수요 급증으로 인해 SW 개발자 및 엔지니어가 부족하게 되어 인문학 및 사회과학 전공자 등 타 분야 전공자들을 고용해서 훈련하기 시작하였다. 이는 1950년대에 비해 상대적으로 좋아진 메인프레임 운영체제나 각종 유틸 리티, 특히 제2세대 언어인 포트란이나 코볼이 개발되면서 비전공자들의 SW분야 입문이 쉬워졌기 때문이었다. 하지만 당시 공학적인 개념이 부족한 인력들은 SW개발 시 선코딩-후수정 접근방식을 사용하게 되었으며 이는 창의적이기는 했으나, 수정사항이 과도하게 발생하는 스파게티 코드 (spaghetti code)를 양산하였다

이렇듯 1960년대는 대규모 시스템과 그에 따른 SW에 대한 수요가 급증하기 시작하였으나, 이를 구현하는 인력들의 경험과 능력, 수적인 부족으로 인해 수요와 공급에 커다란 차이가 존재하였다. 이로 인해 NATO 과학위원회가 SW공학 컨퍼런스(1968,1969)에서 SW 위기(SW Crisis)'를 언 급하며 큰 프로젝트나 제품에 적용할 수 있는 보다 체계적인 방법과 원칙들이 필요함을 역설하게 되었으며, 이를 계기로 SW공학에 대한 연구가 본격적으로 시작하게 되었다. 이렇듯 SW공학은 SW 위기를 극복하고자 SW프로그램 개발에 공학적인 관점을 도입한 학제적인 산물로 SW공학의 모든 이슈는 고객의 기대(품질), 비용(예산), 납기(생산성)와 관련된 것이었다. 

21st SW Quality Insight Conference안내 (7/6(수))