[국내논문]재사용 기반의 소프트웨어 개발 체계 구축 : 내장형 소프트웨어 영역의 기업 사례 Enabling reuse driven software development : lessons learned from embedded software industry practice원문보기
본 논문은 CE(Consumer Electronics) 제품을 개발하는 기업에서 소프트웨어 재사용의 향상을 위하여 기업 내에서 추진한 여러 사례들을 기반으로 소프트웨어 재사용에 대한 기반을 구축하고, 이를 개발 조직에 적용하면서 발생한 문제점의 도출과 개선점의 반영에 대해 논한다. 기업내에서의 재사용 기반을 구축하기 위해서는 기술적, 관리적, 개발환경의 측면이 모두 고려된 종합적인 접근 방법이 필요하다. 본 논문에서는 기술적 측면에서 개발 방법론을, 관리적 측면에서 재사용 메트릭을, 그리고 개발환경의 측면에서 재사용 저장소를 개발하고 운영한 사례를 논하며, 각각을 적용하면서 발생한 문제점을 분석하여 기업에서 보다 효과적인 재사용 기반을 구축하는 개선사례를 제시한다. 본 논문에서 다루는 재사용 활동의 대상은 개발대상 측면에서 내장 소프트웨어라는 특성, 조직적 측면에서 다앙한 제품을 다루는 수십 개의 각기 다른 개발영역과 조직구조를 가진 대규모 조직이라는 특성, 그리고 제품 개발 주기가 매우 짧으며 동일 제품에 대한 파생 제품이 동시에 다량으로 개발된다는 개발 환경의 특성에 기반하고 있다. 본 논문은 상기 분야에 대한 소프트웨어 재사용 현황에 대한 보고서로, 또한 이로부터 기업 내 재사용 기반을 개선하는 사례와 그 방안을 제시한다는 측면에서의 활용도가 있겠다.
본 논문은 CE(Consumer Electronics) 제품을 개발하는 기업에서 소프트웨어 재사용의 향상을 위하여 기업 내에서 추진한 여러 사례들을 기반으로 소프트웨어 재사용에 대한 기반을 구축하고, 이를 개발 조직에 적용하면서 발생한 문제점의 도출과 개선점의 반영에 대해 논한다. 기업내에서의 재사용 기반을 구축하기 위해서는 기술적, 관리적, 개발환경의 측면이 모두 고려된 종합적인 접근 방법이 필요하다. 본 논문에서는 기술적 측면에서 개발 방법론을, 관리적 측면에서 재사용 메트릭을, 그리고 개발환경의 측면에서 재사용 저장소를 개발하고 운영한 사례를 논하며, 각각을 적용하면서 발생한 문제점을 분석하여 기업에서 보다 효과적인 재사용 기반을 구축하는 개선사례를 제시한다. 본 논문에서 다루는 재사용 활동의 대상은 개발대상 측면에서 내장 소프트웨어라는 특성, 조직적 측면에서 다앙한 제품을 다루는 수십 개의 각기 다른 개발영역과 조직구조를 가진 대규모 조직이라는 특성, 그리고 제품 개발 주기가 매우 짧으며 동일 제품에 대한 파생 제품이 동시에 다량으로 개발된다는 개발 환경의 특성에 기반하고 있다. 본 논문은 상기 분야에 대한 소프트웨어 재사용 현황에 대한 보고서로, 또한 이로부터 기업 내 재사용 기반을 개선하는 사례와 그 방안을 제시한다는 측면에서의 활용도가 있겠다.
This paper presents industry feedback and a case of improvement trial on enabling reuse driven software development which is one of several activities to improve software quality and productivity in a company which develops software that are embedded into consumer electronic products. Several case s...
This paper presents industry feedback and a case of improvement trial on enabling reuse driven software development which is one of several activities to improve software quality and productivity in a company which develops software that are embedded into consumer electronic products. Several case studies will be introduced that are related to software reuse strategies and practices to show how to establish environment for reuse basis in a company, how to apply it to development team and project and how to improve that through trials and errors. To enable reuse-oriented software development in a huge company, integrated and focused approach is needed among technical, management and environmental point of view. We tried to solve that problem in technical field with reuse method, in management filed with reuse metric and in environment field with reuse repository. The characteristics of our software development environment could be summarized as below. The first, embedded software which would not independent to hardware devices and the second, it is very huge company which develops extremely various products by many different organization with different domain characteristics and the third, development lead time is extremely short and many variation models are stems from basic models. We expect that our study would give contribution to industry struggling to solve similar problem for presenting our experience and could be a reference model for enabling software reuse in a real world practically.
This paper presents industry feedback and a case of improvement trial on enabling reuse driven software development which is one of several activities to improve software quality and productivity in a company which develops software that are embedded into consumer electronic products. Several case studies will be introduced that are related to software reuse strategies and practices to show how to establish environment for reuse basis in a company, how to apply it to development team and project and how to improve that through trials and errors. To enable reuse-oriented software development in a huge company, integrated and focused approach is needed among technical, management and environmental point of view. We tried to solve that problem in technical field with reuse method, in management filed with reuse metric and in environment field with reuse repository. The characteristics of our software development environment could be summarized as below. The first, embedded software which would not independent to hardware devices and the second, it is very huge company which develops extremely various products by many different organization with different domain characteristics and the third, development lead time is extremely short and many variation models are stems from basic models. We expect that our study would give contribution to industry struggling to solve similar problem for presenting our experience and could be a reference model for enabling software reuse in a real world practically.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
개발 및 적용 등을 병행 진행하고 있다[3]. 본 논문은 이러한 접근 방법 중에서 재사용이 가능한 소프트웨어 자산을 생산, 관리, 사용하여 개발의 효율성을 향상시키고, 기 검증된 자산의 재사용을 통한 품질 향상을 목적으로 하는 소프트웨어 재사용을 위해 기술적, 관리적, 환경적 측면에서 기업 내에서 추진한 사례를 통해 보다 효과적인 재사용을 위한 방안을 제시한다.
본 논문은 내장형 소프트웨어 영역이면서 동시에 다품종의 대규모 제품 생산을 하는 대규모의 기업에서 소프트웨어 재사용을 위해 필요한 기술, 환경 및 도구에 대한 종합적인 기업활동을 사례로 참고할 수 있겠으며, 조직적 차원의 재사용 전략 및 기법에 대한 기업체의 피트백으로 볼 수 있을 것이다.
재사용의 목적은 소프트웨어 품질과 생산성을 향상시키는 것이다. 점점 커지고 복잡해지는 소프트웨어를 보다 빨리, 보다 품질 높게 개발하기 위해서 재사용은 필수적이다.
본 절에서는 기업 내 기반환경으로 재사용을 수행하기 위한 세부 활동과 관련 기술을 정의한 재사용 방법론, 재사용 자산의 공유를 위한 재사용 저장소 그리고 조직의 재사용 현황을 파악하고 효과를 분석하기 위한 재사용 지표를 개발하여 운영한 사례에 대해 논한다.
재사용이 미비한 실정이다. 본 논문은 내장형 소프트웨어에 대한 재사용성을 향상시키기 위한 기업 내 여러 사례를 소개하였고 이러한 사례를 기반으로 전사적인 재사용 체계를 정비하여 추진한 내용을 논하였다. 재사용 체계는 방법론 측면의 접근으로 내장형 소프트웨어에 대한 표준화/공용화 방법론 수립 및 적용을 시스템 측면의 접근으로 재사용 시스템을 개발하여 적용하였다.
가설 설정
• 내장 소프트웨어 특성의 반영이 부족하여 일반적인 비즈니스 소프트웨어의 컴포넌트 기반 접근 방법으로 추진하여 HW 플랫폼 및 디바이스에 대한 고민이 부족했다는 것
• 사례를 통한 현실적인 접근 방법을 개발하지 못하고 기존의 방법론을 답습하였다는 것
• 재사용의 측면에서 식별된 재사용 자산과 실제 적용되는 자산 간의 불일치가 발생한다는 것. 특히 동시에 많은 제품이 파생되어 개발되는 CE 소프트웨어 개발 환경 상 재사용 자산의 버전관리와 제품에 적용되는 소프트웨어 부품이 각각 다른 저장소에서 관리되어 이로 인한 불일치가 발생한다는 것
제안 방법
전사 차원의 소프트웨어 재사용을 추진하기 위한 기반으로 재사용 가능한 소프트웨어 컴포넌트를 개발하고, 개발된 재사용 컴포넌트를 기반으로 소프트웨어를 개발하며, 재사용 컴포넌트를 등록/관리하기 위한 일련의 절차 및 관련 기법으로 "편집설계 방법론"을 개발하였다. 편집 설계 프로세스는 기본적으로 일반적인 컴포넌트 기반 개발 방법을 참조하여 개발환경에 맞게 조정하여 개발되었다.
또한 여러 제품들이 동시 다발적으로 병행 개발되기 때문에 기반코드가 복수 파생하여 기반코드와 파생코드가 모두 제대로 관리되지 못하는 문제점이 발생한다. 편집설계 방법론은 이러한 개발 환경에서 상위 레이어는 컴포넌트 기반개발 방법의 접근 방법을 따르고, 하위 레이어는 HAL(Hard-ware Abstraction Layer)이나 OSAL(O/S Abstraction Layer)과 같은 추상화 계층을 개발하는 형태로 접근하였다.
정의하였다. 편집설계 템플리트는 각 단계에서 정의되는 산출물을 하나의 문서로 패키징하였으며, 편집설계 지침은 컴포넌트를 식별하기 위한 컴포넌트 식별 지침, 기반 코드를 재공학(Re-engineering)하여 컴포넌트화의 대상을 선정하는 컴포넌트 선정 지침, 개발된 컴포넌트의 관리를 위한 컴포넌트 네이밍 룰과 컴포넌트 관리 지침, 모델링을 위한 UML 모델링 지침 그리고 편집설계 툴 지침으로 구성된다. (그림 1)은 편집설계 프로세스의 구성요소들을 보인다.
전사의 편집설계 추진 조직에서는 각 시범조직의 시범과제에 직접 기술지원을 수행하였고, 이를 우수사례로 전사에 확대 전파하는 형태로 적용되었다. 또한 소스코드의 재사용 차원을 넘어 모델링 정보의 재사용을 위해 모델링 언어인 UML의 도입과 이를 지원하는 설계 도구의 표준화를 진행하였다.
전사의 편집설계 추진 조직에서는 각 시범조직의 시범과제에 직접 기술지원을 수행하였고, 이를 우수사례로 전사에 확대 전파하는 형태로 적용되었다. 또한 소스코드의 재사용 차원을 넘어 모델링 정보의 재사용을 위해 모델링 언어인 UML의 도입과 이를 지원하는 설계 도구의 표준화를 진행하였다. 이를 통해서 전사 표준 설계 도구가 선정되고 이의 확산활동이 진행되었다.
컴포넌트가 생산되기 시작하였다. 생산된 컴포넌트를 관리하고 이를 기반으로 소프트웨어를 개발하기 위한 기반 환경이 필요하였고 이를 위해 재사용 컴포넌트 저장소인 SCDB(Software Component Database)를 개발하였다. SCDB는 기본적으로 재사용 자산인 컴포넌트 및 그 관련 산출물의 저장소이며, 컴포넌트의 등록, 사용, 심사, 변경, 폐기를 위한 워크 플로우를 갖는 프로세스 도구의 기능을 포함한다.
표준화된 재사용 지표 관리를 통해 전사의 소프트웨어 재사용 현황을 파악하고, 재사용 업무의 활동을 가시화하며, 새로운 재사용 기술의 도입 효과 파악하기 위해 재사용 지표를 수립하고 운영하였다.
변경사항을 보이는 지표로 구성되었다. 재사용 지표를 운영하기 위해서 재사용 지표 수집 지침서와 템플리트를 개발하여 개발조직에서 활용할 수 있도록 하였으며, LOC를측정하기 위한 LOC 측정 도구를 자체 개발하였다.
3장에서 논한 바와 같이 재사용 활동의 활성화를 위해 방법론, 저장소, 지표를 개발하고 적용하였다. 편집설계 방법론을 통해서 개발자가 수행해야 할 컴포넌트 기반의 개발을 위한 프로세스 및 세부 기법을 지침화하였으며, 이를 통해 개발된 재사용 컴포넌트를 사용, 관리할 수 있는 재사용 저장소 및 관리 시스템을 구축하였고, 재사용을 평가하기 위한 지표를 정의하여 운영하였다.
저장소, 지표를 개발하고 적용하였다. 편집설계 방법론을 통해서 개발자가 수행해야 할 컴포넌트 기반의 개발을 위한 프로세스 및 세부 기법을 지침화하였으며, 이를 통해 개발된 재사용 컴포넌트를 사용, 관리할 수 있는 재사용 저장소 및 관리 시스템을 구축하였고, 재사용을 평가하기 위한 지표를 정의하여 운영하였다.
편집설계 프로세스는 기존의 소스 코드의 재사용이 재사용율은 높지만 재사용 효과가 미비하며, 비슷한 시스템을 포팅 혹은 변경하여 개발하는 경우 코딩 기간을 단축 만을 기대할 수 있고, 개발자에 따른 편차와 담당자 변경 시 대응의 어려움 등의 문제점을 해결하기 위해 컴포넌트 패키지(요구사항, 설계, 소스 코드, 시험 케이스)를 개발하고 이를 조립하는 컴포넌트 재사용 기반의 개발 프로세스 및 지침 등을 통해 재사용의 효과를 높여 요구사항에서부터 시험 케이스까지 모든 산출물을 재사용 가능하게 하고, 기 검증된 컴포넌트의 재사용을 통해 신규 소프트웨어의 품질향상을 도모하였다. 그러나 편집설계 방법론의 적용 효과는 3장의 재사용 지표 결과에서 보듯이 효과적이지 못했고 그 원인은 지금까지의 적용 경험과 개발자의 설문을 통해 다음과 같이 정리할 수 있었다.
지금까지의 재사용을 활성화하기 위해 추진한 방법론, 저장소, 지표 운영의 활동과 이의 추진을 통해 도출한 개선점을 통해서 보다 효과적인 재사용 체계를 수립하기 위해 개선된 재사용 방법론과 재사용 시스템을 구축하였다.
또한 방법론을 적용하기 위한 실제적인 활동으로 소프트웨어 재사용을 위한 개발 환경 구축을 포함하여 칩셋의 표준화 및 UI 표준화와 같은 관련 분야 표준화와 소프트웨어 표준화 및 공용화를 추진하기 위한 도구의 개발 및 도입을 주요 활동으로 정의하였다.
본 논문은 내장형 소프트웨어에 대한 재사용성을 향상시키기 위한 기업 내 여러 사례를 소개하였고 이러한 사례를 기반으로 전사적인 재사용 체계를 정비하여 추진한 내용을 논하였다. 재사용 체계는 방법론 측면의 접근으로 내장형 소프트웨어에 대한 표준화/공용화 방법론 수립 및 적용을 시스템 측면의 접근으로 재사용 시스템을 개발하여 적용하였다.
재사용 시스템은 소프트웨어를 부품 및 부품군이라는 관리단위로 나누고 이를 관리하면서 재사용성이 높은 부품들을 재사용 지표를 통해 추출하고 이를 표준부품화 하여 관리할 수 있도록 하였다.
본 논문에서 제시되는 방법론은 CBD를 기반으로 프로덕트 라인 공학 기법을 반영하였다.
대상 데이터
함수 재사용율은 소스 코드 수준에서의 재사용 정도를 나타내는 지표로 전체 소프트웨어 중에서 소스 코드의 재사용된 함수의 크기 비율을 나타낸다. 이를 위해서 수집해야 할 데이터는 전체 LOC(Lines of code)와 재사용된 함수의 LOC이다. 이때 함수의 변경 정도는 고려되지 않는다.
성능/효과
결국 표준형상관리 시스템과 재사용 저장소가 연계되어 컴포넌트 저장을 위한 전용 저장소를 별도 운영하게 되었다. 별도의 저장소 운영으로 개발과제의 저장소로 활용되는 저장소에서 컴포넌트를 식별하게 되어 운영 상의 효율성을 높일 수 있었다.
제공한다. 실제 연 2회에 걸쳐 개발 조직 별로 함수명으로 측정한 재사용율은 매우 높은 수준이었으며 이는 동일제품군 내에서 소프트웨어의 기능은 안정적이어서 전체 소스 코드의 차원에서는 변경량이 매우 적은 것으로 분석되었다.
특정 개발조직을 대상으로 재사용 지표를 수집한 예로 (그림 5)에서 보듯 소스레벨의 재사용율은 평균적으로 79%에 이름을 알 수 있었다. 조직 별로 함수 수준으로 재사용이 활발하였고 함수명은 동일하나 그 내용을 수정하여 재사용하는 함수 비중이 높았다.
이름을 알 수 있었다. 조직 별로 함수 수준으로 재사용이 활발하였고 함수명은 동일하나 그 내용을 수정하여 재사용하는 함수 비중이 높았다. 또한 함수 레벨의 지표는 모든 개발조직에서 산출 가능하였으나 컴포넌트 레벨의 지표는 일부 조직에서만 산출이 가능하였다.
조직 별로 함수 수준으로 재사용이 활발하였고 함수명은 동일하나 그 내용을 수정하여 재사용하는 함수 비중이 높았다. 또한 함수 레벨의 지표는 모든 개발조직에서 산출 가능하였으나 컴포넌트 레벨의 지표는 일부 조직에서만 산출이 가능하였다. 위의 사항으로 판단한 현재의 재사용 현황은 기반 코드를 중심으로 하는 소스 코드 레벨의 재사용은 이루어지고 있으나 컴포넌트 수준의 재사용 미흡하다는 것을 파악할 수 있으며 이는 체계적인 재사용 IP(Intellectual property)의 생성 및 관리가 필요함을 보인다.
즉, 편집 설계 방법론과 재사용 저장소가 개발 보급되었음에도 실질적인 컴포넌트의 재사용이 이루어지지 않는다는 것이다. 또한 소스 코드 수준의 재사용이 활발히 이루어지고 있기 때문에 소스 코드의 구조 개선을 통한 재사용율 향상이 효과적일 것이라는 판단을 할 수 있었다. 결국 재사용 대상에 따른 적절한 재사용 방법이 제시되어야 재사용 활동이 활성화 될 수 있다는 결론을 도출할 수 있었다.
또한 소스 코드 수준의 재사용이 활발히 이루어지고 있기 때문에 소스 코드의 구조 개선을 통한 재사용율 향상이 효과적일 것이라는 판단을 할 수 있었다. 결국 재사용 대상에 따른 적절한 재사용 방법이 제시되어야 재사용 활동이 활성화 될 수 있다는 결론을 도출할 수 있었다.
재사용 저장소(SCDB)는 초기 버전의 시스템적 문제점을 지속적으로 개선하여 1.0 버전에서 3.0까지 개발되어, 초기의 문제점이었던 형상관리 시스템 내 코드와 재사용 저장소 내의 코드 간의 일관성 문제가 해결되었다는 것이 가장 큰 성과였다. 그러나 이 역시 전사적인 차원의 소프트웨어 관리 및 제품 관리의 측면을 고려했을 때 다음과 같은 개선점을 발굴할 수 있었다.
첫째, 방법론에 대한 개선은 프로덕트 라인에 대한 개념, 실행 환경인 프레임워크, 기존 코드에 대한 체계적인 재사용 방법 및 사례 반영이라는 요구사항에 의해 재사용을 표준화 및 공용화의 개념으로 정의하고 이를 구체화하는 방향으로 개선하였다. 소프트웨어 표준화 및 공용화는 소프트웨어 재사용 공학의 측면에서 파생개발에 따른 반복적이고 점증적인 개발에 대응하기 위해 소프트웨어 재사용 단위를 개발하고, 이를 이용하는 것으로 표준화 및 공용화의 재사용 단위에는 제품군에 대응하여 전체 소프트웨어의 구조 및 실행개체를 포함하는 소프트웨어 플랫폼과 기능 단위에 대응하여 특정한 기능 및 기능의 집합을 포함하는 컴포넌트로 나누어 정의한다.
후속연구
이와 같은 활동을 통해 각 항목 별 개선점을 도출하고 이를 개선하는 것이 향후 중요한 연구과제가 될 것이며, 특히 지금까지 수행하지 못했던 각 분야 간 통합적인 효과분석을 추진할 예정이다.
Kangtae kim, Taesik kim, 'Reinforcing the S/W development competence by the SCRM(Samsung's S/W Competence Reinforcement Model)', Proceeding of SERA 05, IEEE, 2005
Ivar Jacobson, 'Software reuse: Architecture, Process and Organization for Business Success, Addison-Wesley, 1997
William B. Frakes, Kyo Kang, 'Software Reuse Research : Status and Future', IEEE Transaction on Software Engineering, Vol.31, No.7, July, 2005
L. Bass, P. Clements, R. Kazman, 'Software Architecture in Practice', second ed. Addison-Wesley, 2003
C. Szyperski, D. Gruntz, S. Murer, 'Component Software: Beyond Object-Oriented Programming', second ed. Addison-Wesley, 2002
P. Clements, L. Northrop, 'Software Product Lines: Practices and Patterns', Addison-Wesley, 2002
D.M. Weiss, C.T.R Lai, 'Software Product-Line Engineering: A Family-Based Software Development Process', Addison-Wesley, 1999
I-Ling Yen; Jayabharath Goluguri; Farokh Bastani; Latifur Khan, 'A component-based approach for Embedded Software Development', Object-Oriented Real-Time Distributed Computing 2002(ISORC 2002) Proceedings, pp.402-410, April, 2002
A. Mili, R. Mili, R. Mittermeir, 'Storing and retrieving software components: A refinement based system,' Proc. Intl. Conf. Software Engineering, pp.91-100, May, 1994
Moormann-Zaremski, J,M. Wing, 'Specification matching of software components,' ACM Trans. Software Engineering and Methodology, Vol.6, No.4, pp.333-369, 1997
Luqi and J., Guo, 'Toward automated retrieval for a software component respository', Proc. IEEE Conf. And Workshop on Engineering of Computer-Based Systems, March, 1999
E. Ostertag, J., Hendler, R. PrietoDiaz, and C. Braun, 'Computing Similarity in a Reuse Library System: an AI-based Approach', ACM Transactions on Software Engineering and Methodology, Vol.1, No.3, pp.205-228, July, 1992
Q. Tran and J. Chung, 'NFR-Assistant: Tool support for achieving quality,' IEEE Symp, Application-Specific Systems and Software Engineering and Technology, Texas, pp.284-289, March, 1999
R.A. Steigerwald, 'Reusable component retrieval for realtime applications,' Proc. IEEE Workshop on Real-Time Applications, pp.118-120, May, 1993
Cordeiro Pires Mascena J,C., Santana de Almeida, E.; de Lemos Meira S.R., 'A comparative study on software reuse metrics and economic models from a traceability perspective', Proceeding of IRI2005(IEEE International Conference on Information Reuse and Integration), pp.72-77, August, 2005
W. Frakes, C. Terry, 'Software Reuse: Metrics and Models', ACM Computing Surveys, Vol.28, pp.415-435, 1996
W. Lim, Managing Software Reuse, 'A Comprehensive Guide to Strategically Reengineering the Organization for Reusable Components', Prentice Hall, July, 1998
※ AI-Helper는 부적절한 답변을 할 수 있습니다.