2016년 6월 24일 금요일

2010년대 SW공학의 추세


인터넷의 발전으로 인한 글로벌 네트워크의 연결, 더 나아가 지역의 한계를 벗어난 유통과 모바일 서비스는 전 세계적으로 전략적 협업과 동기화를 가능케 하였다. 

이는 해외 아웃소싱을 통한 비용절감의 기회를 제공할 것이며, 의사소통의 어려움과 관리의 어려움 이 존재하겠지만 3시간대 운영을 통한 신속한 개발을 가능하게 된다. 예를 들면, 미국, 유럽, 일본, 중국 및 대만은 제조 및 서비스 조직, 인도는 콜센터, 개발도상국은 데이터 입력 센터, 인도, 중국, 러시아와 개발도상국은 SW개발센터 등을 운영함으로써 각 조직들은 핵심역량에 집중하게 되었으 며, 핵심역량에 적극적인 혁신을 추구하여 가장 낮은 가격에 질 좋은 서비스를 제공하게 된다. 이는 내부적인 경쟁 뿐 아니라 국가 간 경쟁을 치열하게 할 것이다. 

애자일 방법론과 계획 주도 방법론의 5대 주요 요소


애자일 방법론과 계획 주도 방법론의 개념적 비교


2016년 6월 23일 목요일

애자일 방법론의 종류


애자일 방법론의 도입 배경에는 SW개발 자체가 과거와 양상이 바뀌었다는 전제가 있었다. 1990년 대 후반 이전까지의 SW개발은 장기간에 걸쳐 많은 자원과 충분한 비용을 투입하여 진행하였다. 이 당시 SW공학이나 많은 관리 방법론들이 모두 이러한 종류의 프로젝트를 대상으로 하였다. 그러 나 1990년대 후반에 들어서면서 SW 개발기간은 매우 짧지만 SW는 매우 복잡하고 개방적이었다. 또한, 사회상황이나 시장변동에 따라 변화가 심했고 요구사항도 시시각각 변했다. 그래서 이미 고 전적인 SW공학이나 관리기법만으로는 대처할 수 없게 되었던 것이다. 


HP의 제품계열기술 투자에 따른 개발기간 비교


기업들은 시장에서 경쟁우위를 점하기 위해서는 SW에 대한 경쟁력 확보가 중요하며, 자사 제품에 대한 시장 출시시간이 단축되어야 한다는 것을 인식하기 시작하였다. 그래서 요구분석 → 설계 → 구현 → 테스트의 순차적인 프로세스를 강조하는 폭포수 모델에서 요구사항, 설계 및 구현을 동시 에 진행할 수 있는 동시공학에 집중한 모델을 활용하기 시작하였다. 


국가별 소프트웨어공학센터 현황 비교

미 국방성은 DoD-STD-2617과 같은 계약 표준에서 계약이행 시 각 마일스톤마다 관리자 검토, 비용 지불처리 및 보상비용을 서로 연계시키는 폭포수 모델의 사용을 강제함에 따라 능력 있는 SW 개발업체를 선정하는 기준이 필요하였다. 이를 해결하기 위해 미 국방성은 SW개발 조직의 SW프로 세스 성숙도를 평가하기 위한 방법론을 개발하기 시작하였으며, 미 국방성의 지원을 받은 SEI에서 SW-CMM20)을 개발하게 되었다. SW-CMM은 순차적인 폭포수 모델의 요소들을 유지하고 있기 는 하지만 특정 방법론에 독립적으로 구성되었으며, SW개발조직의 능력평가와 개선에 대한 효과적 인 틀을 제공하였다. 

SW-CMM으로 촉발된 SW프로세스 개선 활동은 재작업을 줄임으로써 생산성을 급속히 향상시켰 지만, SW개발 업무에 있어 업무 자체를 줄이게 되면 생산성이 파격적으로 향상될 것이라고 인식하 기 시작하였다. 그래서 미 국방부는 SW생산성 향상을 위해 STARS (Software Technology for Adaptable Reliable System) 프로그램을 추진하였으며, 이 프로그램에서 SW개발 시 불필요한 작업을 없애기 위한 혁신적이고 점진적인 방식을 발표하였다. 

1 혁신적인 방식으로는 1970년대 초반의 자동 프로그래밍연구와 비슷하게 요구사항에서 코딩 까지의 정형적인 명세와 자동 변환 방식을 강조
2 점진적인 방식으로는 인력채용(Staffing), 재사용, 프로세스, 도구 그리고 통합 환경에 의해 지 원되는 관리활동을 강조

이를 본격적으로 연구하기 위해 카네기멜론 대학에 소프트웨어공학센터(SEI/CMU)를 설립 (1984년)하였으며, 유럽과 일본에서도 비슷한 움직임을 보였다. 각국의 주요 소프트웨어공학 센터 현황은 아래와 같다. 


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)는 것임.

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

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