2016년 6월 17일 금요일

SW공학의 변천사


1950년대는 SW공학에 대한 개념이 아직 정립되지 않은 시기로, 그 당시에는 SW개발을 위해 HW 공학적인 접근이 시도되었다. 1950년대 말에 추진되었던 대표적인 프로젝트인 SAGE (Semi-Automated Ground Environment) 프로젝트14)에는 레이더 공학자, 통신전문가, 컴퓨터 공학자, 초기 SW공학자 등이 대거 참여하였으며, 이들은 SW를 개발하는데 있어 기존의 HW공학 적인 개념을 적용한 SW공학을 적용하기 시작하였다. 

 
그림에서 보는 바와 같이 SAGE 프로젝트의 SW개발 프로세스는 연속적 폭포수 유형의 모델을 사 용하였으며, 프로젝트에 참여한 수천 명의 SW개발자들을 지원하기 위해 Lincoln Labs Utility System을 개발하여 라이브러리 및 빌드 관리와 테스트를 지원하기도 하였다.

SW공학 트렌드


이번 장은 Barry Boehm의 A View of 20th and 21th Century Software Engineering을 재 구성하여 SW공학의 도입 배경과 그 간의 시대적 요구에 따른 변화 과정, 그리고 앞으로 다가올 미래 전망에 대한 내용을 실었다. 어느 분야든 마찬가지겠지만 SW공학 분야에서도 가치 있는 과거 의 주요한 경험을 식별하여 향후 20~30년 내에 영향을 줄 수 있는 미래 변화에 발 빠르게 대응하 기 위해 변천사를 이해하는 것은 매우 중요하다. 

1950년대는 SW개발 프로젝트를 위해 HW공학과 유사한 SW공학 개념이 도입되기 시작하였지만 1960년대에 SW에 대한 수요가 급증하고 이를 구현하는 인력들의 경험과 능력, 수적인 부족이 원 인이 되어 SW의 위기(SW Crisis)가 발생하면서 본격적으로 SW공학이 도입되었다. 

이어 1970년대는 SW에 대한 수요가 급증하면서 SW개발인력이 부족하게 되었으며, 이를 해결하기 위해 SW전공자들이 아닌 비전공자들을 대거 투입하게 되고, 이러한 인력들은 SW개발 시 SW가 쉽게 수정될 수 있다는 점으로 인해 선코딩-후수정하는 접근방식을 택하게 되었다. 하지만 선코딩 -후수정에 대한 부작용으로 많은 결함들이 발견되면서 구조적 또는 정형적 기법들이 발생하였으 며, 분석, 설계, 구현 등을 순차적으로 진행하는 폭포수 모델을 개발하여 사용하기 시작하였다. 

하지만 정형적 기법은 일반 SW개발자들이 사용하기에는 사용성이 떨어지며, 폭포수 모델은 비용이 많이 소요되고, 진척도가 떨어진다는 점을 인식한 1980년대에는 재사용성을 높여 효율적으로 SW 를 개발하기 위해 SW개발 생산성을 높이기 위한 방법들을 연구하였다. 

1990년대는 시장에서 경쟁 우위를 점하기 위해 제품의 시장출시 시간을 단축해야 했다. 이로 인해 SW개발 생산성에 대한 연구가 활성화되었으며, 폭포수 모델에서 요구사항, 설계 및 구현 등을 동 시에 진행할 수 있는 동시공학(Concurrent Engineering)13)에 집중한 모델을 활용하였다. 

SW를 둘러싼 기술이나 시장 환경이 급속하게 변화하기 시작한 2000년대는 이러한 급속한 변화에 효과적으로 대응하기 위해 애자일 방법론이 본격적으로 도입되었다. 


SW개발자가 선택할 수 있는 미래의 직군


개발자 미래에 대한 고민SW개발이 좋아서 SW개발자가 된 사람들이 5~7년 개발을 하다 보면 미래에 대해서 생각하게 되고 불확실한 미래를 불안해한다. 대부분의 회사에서 개발자의 경력을 보 장해 주지 않기 때문에 막연히 팀장이 되기도 하고 다른 직종으로 옮기기도 한다. 그러다 보니 전문 성 있고 가치가 높은 개발자의 경험과 지식은 묻혀버리고 회사는 기술력을 축적하지 못하게 된다. 

전사적 관점에서 프로젝트에서 개발자가 선택할 수 있는 미래 모습을 제시하는 것도 SW개발자들이 집중하여 역량을 발휘할 수 있는 계기가 된다. 하지만 현실은 그렇게 아름답지만은 않다.