2016년 1월 19일 화요일

국내 SW공학수준 현황(2014년 조사 기준)

SW프로젝트는 여러 가지 원인에 영향을 받는다. 일반적으로 프로젝트를 수행하는 참여 인력들의 SW공학에 대한 인식 및 현장적용의 경험이 가장 큰 원인으로 볼 수 있다. SW공학수준등급을 3등급(Absent, Average, Advanced)으로 구분하여 성과비교 시 활용하며, 각 등급을 구성하는 항목들은 아래의 표와 같이 정의했다.


SW 공학수준은 체계적이고 효율적인 SW 개발을 위하여 필요한 사항들이 국내 SW 기업 내에서 얼마나 잘 구성되고 적용되고 있는지를 파악하기 위한 것으로, 체계적이고 효율적인 SW 개발이 이루어지기 위해서 SW 기업이 갖추어야 하는 요소로 체계적 업무 방식과 흐름의 정의 및 이에 대한 적용, 필요 조직구성 및 인력 육성, 정의된 업무 방식과 조직 및 인력이 효율적으로 운영되기 위하여 필요한 기반 인프라의 3가지로 정의하였으며, 각각 프로세스(Process), 인력(People), 기술(Technology)로 그 수준을 정의하도록 하였다.

SW 공학수준점수는 체계적이며 효율적인 SW개발을 위하여 갖추어져야 하는 요소에 대한 수준을 점수화한 것으로 프로세스(Process), 인력(People), 기술(Technology) 각각의 3가지 수준의 점수를 반영하여 산정된다. 앞에서 설명한 SW 공학수준과 SW 공학수준을 구성하는 프로세스(Process), 인력(People), 기술(Technology) 측면의 평균 점수를 살펴보면, 프로세스(Process) 수준 점수가 69.6점, 인력(People) 수준 점수가 62.0점, 기술(Technology) 수준 점수가 63.9점이며, 이를 종합한 SW 공학수준점수는 65.7점을 보여주고 있다.




프로세스 수준 및 기술 수준에 비해 인력(People) 수준 점수가 특히 낮은 것은 조직 체계, 사내 전문가 보유, 조직원 역량강화 등 조직의 안정성 개선을 위한 기본적인 준비 없이 프로세스 개선 활동이 이루어지고 있다고 이해할 수도 있다. 이러한 이유로 SW 공학수준 개선의 중장기 성과에 큰 장애가 될 수 있음을 예상할 수 있다.

일의 방식(Process), 일을 위한 조직 구성 및 인력 육성(People), 인프라 및 기술 기반 마련(Technology)이 동시에 균형을 이루며 갖추어져야 실질적인 SW공학 수준의 향상 효과를 볼 수 있다. 하지만 조사 결과는 국내 SW 기업들이 다른 영역에 비하여 프로세스 개선에 보다 치중하고 있으며, 프로세스 개선만을 통해 전반적인 SW 공학수준을 향상시킬 수 있다
는 오해를 가지고 있는 것을 간접적으로 보여주고 있다.

국내 SW 기업들의 SW 공학수준을 실질적으로 향상시키기 위해서는 프로세스(Process) 수준뿐만이 아니라 인력(People) 수준 및 기술(Technology) 측면에 대한 균형적인 개선이 시급하다는 것을 보여주고 있다.

SW개발 방법론, MDA(Model Driven Architecture)와 Agile

SW프로세스란 SW를 개발하기 위해 수행하는 일련의 활동을 의미한다. SW를 만들기 위해 필요한 활동들을 명확히 하고 품질확보와 납기를 지키기 위한 방법으로서 SW프로세스를 정립해야 한다.

효과적인 SW프로세스를 만들기 위해서는 프로세스를 정의하고, 필요한 도구를 결정하여 프로세스를 실행해야 한다. 그리고 지속적인 개선을 통해 SW기술변화를 프로세스에 반영하고 수행자들에게 책임과 교육을 추진하여 결과를 피드백 하는 것이 해당 조직의 SW프로세스를 최적화하는 것이다.

SW프로세스는 일반적으로 요구사항 수집 및 분석, 설계, 구현, 시험의 단계를 가지고 조직의 특성에 따라 활동이 정의된다.

SW프로세스의 구조적 특징, 특성, 역할을 가지고 집합된 형태를 SW생명주기라고 부른다. SW생명주기는 SW개발 단계에 SW개발전략이나 전사적 정책을 통합시킨 것으로 개발방법, 개발환경에 대한 도구, SW 개발의 시작부터 끝까지 효과적으로 관리하기 위해 만들어진다.

SW프로세스 모델의 유형 결정요소는 문제유형, 관점, 개발 방침에 따라 결정되며 일반적으로 SW개발 기본 프로세스 모델(생명주기 모델, ISO 12207)을 많이 참조하고 있다.

SW개발 프로세스가 정립되면 SW개발 방법론과 함께 적용하여 SW개발을 추진하게 된다. SW개발방법론은 과거 고전적 방법론에서 애자일 방법론으로 유행이 전이되는 상황이다.
※ 고전적 방법론: 구조적 방법론 〉 정보공학방법론 〉 객체지향 방법론 〉 CBD 〉 SOA

개발 패러다임의 변화와 과거 미시적 접근방법에서 거시적 방법으로 변화됨에 따라 객체 〉 컴포넌트재사용 〉 아키텍처 재사용 〉 프레임워크 〉 엔터프라이즈 아키텍처(EA)로 변화하고 있다.


근래에는 SW개발 방법론으로 MDA(Model Driven Architecture)Agile이 주목받고 있다. MDA는 새로운 플랫폼과 기술을 도입하거나 환경적 변경요구에 따른 상호운영상 문제를 해결하기 위해 OMG가 제정한 기존의 모델링 표준들을 이용하는 개발적인 SW개발 기술이다. MDA의 특징은 모든 컴포넌트 기술 요소들에 대한 표준 메타모델을 정의하고 표준 메타모델을 기반으로 각 구성요소를 정의함으로 모든 컴포넌트 기술 요소들에 대한 호환성과 상호 운영성을 보장할 수 있다.


Agile 프로세스는 변화하는 비즈니스 가치에 맞는 품질 좋은 SW를 계속해서 전달하는 것으로 1990년대 중반부터 폭포수 모델로 대표되는 전통적인 방식에 반대의 움직임을 보여 왔다. 급변하는 e비지니스 환경에서 SW개발 분야의 다양한 변화를 수용하고 대응할 수 있는 여러 방법론의 통칭이기도 하다.



기존의 고전적 프로세스가 절차와 산출물을 중시하는데 반해 Agile은 협력과 수행 가능한 SW, 현장고객, 테스트 기법을 중시하고 있다.

[SW공학 동영상 12화] Framework Distilled

SW개발현장의 전문가 유민혁 이사로부터 Framework 소개, Framework 정의, Framework 등장배경, Framework 종류, Framework 사례와 적용 시 고려사항을 들어보시기 바랍니다.
소프트웨어공학센터 회원 여러분의 업무에 꿀팁이 되길 기대합니다.