디바이스 소프트웨어 개발이 직면한 어려움현재 휴대전화 업계에서 제조사가 하나의 전화 플랫폼을 성공적으로 출시하기 위해서는 30개 이상의 복잡한 애플리케이션을 개발, 통합, 테스트해야 한다. 또한 셋톱박스 제조업체들은 이제 자사의 플랫폼을 여러 서비스 운영 업체와 고객들에게 어필하기 위해 다양한 소프트웨어 지원 서비스들을 제공하고 있다.이와 같이 소프트웨어가 제조사의 제품 차별화 전략으로 활용됨에 따라 인텔리전트 디바이스용 소프트웨어 개발에 어려움이 증가되고 있다. 시장의 수요를 따라잡기 위해 노력하는 기업에서는 복잡성을 처리하고 혁신을 주도하고자 더 많은 개발자를 투입하고 있음에도 불구하고, 공급 가능한 개발자의 수와 임베디드 시스템의 수 사이 간격이 빠른 속도로 벌어지고 있음을 발견하게 된다(그림 1 참조).임베디드 소프트웨어 개발자의 입장에서 ‘세계적 수준의 성과를 올려야 한다’는 문제는 단순한 생산성의 범주를 벗어나며, 개발팀은 여러 문제점에 직면하게 된다.■하드웨어를 결정함에 있어, 소프트웨어에 미치는 영향을 고려하지 않고 선택하는 경우가 많다. 하드웨어 사양 일부만을 변경한다고 하더라도 소프트웨어 포팅에는 많은 시간이 걸릴 수 있기 때문에 납기 일정이 영향을 받을 수 밖에 없다.■ 마이크로프로세서나 운영체제는 시장 요구를 충족시키기 위해 9~12개월마다 변경된다는 점 역시 포팅 노력을 가중시키는 요인 중 하나다. 그 결과 소프트웨어 팀은 진정한 제품 혁신에 집중할 여력을 가질 수 없게 된다.■ 과도한 생산 일정과 지속적으로 변화하는 고객의 요구가 결합되어 새로운 개발 방법, 모범 사례, 신규 생산성 기술을 실험할 시간적 여유를 가질 수 없게 한다.■ 생산 플랫폼에 신속하게 곧바로 적용할 수 있는 상용 품질의 소프트웨어 모듈을 생산하는 데 필요한 공급자 관리와 기술 통합 전문 기술이 부족하다.이러한 어려움에 직면한 관리팀을 위해 소프트웨어 부서에서는 어려움에 대처할 수 있는 전략을 모색하고 있다. 비즈니스 컴퓨팅 플랫폼이 독립형 메인프레임에서 분산된 고성능 네트워크 시스템으로 이전됨에 따라, 이런 상황은 당연히 기업의 IT 부서가 직면한 어려움과 직면한다.하지만 이와 같은 어려움에도 불구하고 소프트웨어 개발에 있어서 세계적 수준의 성과를 내는 것이 가능하다. 높은 성과를 내기 위한 단계는 업계의 핵심적인 변화 요인을 분석하는 것이며, 두 번째 단계는 이 변화에 대응하여 조직이 새로운 기회를 받아들이도록 촉진하는 것이다.인텔리전트 디바이스 소프트웨어의 변화디바이스 소프트웨어 개발은 변화하고 있다. 인텔리전트 디바이스는 더 이상 연결되지 않은 장치가 아니다. 연결성, 처리 성능의 증가, 센서 기술의 통합 그리고 처리해야 할 데이터 양의 증가 등이 결합되어 고성능 분산 정보/데이터 시스템으로 변화하고 있다. 비록 복잡성이 증가되었지만 절대적인 품질과 안정적으로 동작해야 한다는 요구에는 변함이 없다. 휴대전화, 셋톱박스, 차량용 텔레매틱스 시스템은 복잡한 실생활 정보를 효과적으로 통합하여 새로운 기능, 새로운 서비스, 새로운 사용자 경험을 창출해야 하는 요구를 보여주는 사례의 일부일 뿐이다.이로 인해 디바이스 소프트웨어 애플리케이션의 데이터 사용량은 증가하였고, 대부분의 시간을 다양하고 동적인 실시간 데이터의 수집, 처리, 조치에 할애하고 있다. 엔터프라이즈 컴퓨팅 환경과 매우 흡사해진 인텔리전트 디바이스는 이제 기초 데이터 소스를 바탕으로 작동한다.엔터프라이즈로부터 얻은 교훈-데이터 중심적인 개발의 발전교훈 1: 데이터 중심적 방법론은 신속한 개발의 토대메인프레임 컴퓨터와 배치 프로세스 시대에는 프로그래머가 특정 작업을 처리하도록 맞춤 설계된 독립형 비즈니스 애플리케이션을 개발했다. 개발 노력의 대부분은 자체 데이터 구조의 정의, 기초 데이터를 관리하도록 설계된 프로세스 블록의 설계에 투자되었다. 그리고 서로 독립된 프로세스가 통신할 수 있도록 해주는 복잡한 프로세스 간 통신 메커니즘의 구성에 시간과 노력이 투자되었다. 이로 인해 디버그가 까다롭고, 통합과 발전이 어려운 독립형 애플리케이션이 누적되는 결과가 발생했었다. 이를 도식적으로 보면 그림 2와 같은데, 이 그림이 스파게티와 비슷하다 하여 이런 코드를 ‘스파게티 코드’라 불렀다.이러한 방법론은 조직이 복잡한 실시간 정보를 높은 안정성과 무결성으로 처리할 수 있는 능력을 갖추고 있는지에 따라 크게 좌우된다. 또한 표준 애플리케이션 제품군으로 신속하게 통합할 수 있는 기성품 형태의 소프트웨어 구성 요소 카다로그를 구성할 수 없다.엔터프라이즈 환경이 독립형 메인프레임 컴퓨터에서 분산된 서버로 변화함에 따라, 조직 내에서 이뤄지는 여러 소스와 대상 간의 데이터 이동을 처리하기 위해 데이터 관리 서비스가 도입되었다.개발의 복잡성을 줄이고 더 향상된 상호운영성 및 일관성을 제공함으로써 개발팀의 부담을 줄이기 위한 데이터 추상화 계층도 도입되었다. 데이터 관리 기술을 사용하여 데이터 중심적인 개발 방법론을 활용한 비즈니스 애플리케이션이 빠르고 쉽게 조직 전체에 배포될 수 있도록 맞춤형 패키지화되었다. 그리고 최종 사용자는 데스크톱의 룩앤드필(look and feel)을 최종적으로 정의하게 된다.교훈 2: 생산성 향상을 위한 자동화엔터프라이즈 소프트웨어 개발과 디바이스 소프트웨어 개발 사이의 한 가지 주목할 만한 차이점은, 자동화의 수준이다. 엔터프라이즈 개발자는 데이터 중심적으로 구축된 애플리케이션 프로세스를 단순화하고 속도를 높이기 위해 더 높은 수준의 자동화와 더 높은 수준의 프로그래밍 언어를 도입한다.손으로 코딩하는 고유 데이터 구조와 소프트웨어 액세스 루틴 대신 오라클의 PL/SQL 등과 같은 높은 수준의 데이터 정의 언어를 사용하여 데이터 모델을 정의하고, 기초 데이터와 해당 데이터로 수행할 작업 사이의 관계를 표현한다. 정의된 스키마(schema)는 데이터 중심적 애플리케이션을 자동으로 생성하는 생성기를 통과하게 된다. 이렇게 생성된 코드는 서버로 배포되기 전에 신속한 프로토타이핑 환경에서 분석과 검증 과정을 거치게 된다.자동화는 즉각적인 생산성 향상을 넘어, 모든 소프트웨어 애플리케이션 간의 일관성을 높이고, 통합과 테스트 비용을 절감하고, 실제 플랫폼에 빠르게 결합할 수 있는 고품질 소프트웨어 모듈을 더 쉽게 확보할 수 있도록 해준다.교훈 3: 더 높은 수준의 데이터 중심적 개발 방법의 통합IT 부서는 기초 플랫폼 환경으로부터 더 높은 수준의 추상화를 제공하는 데이터 중심적 언어로 대부분 COBOL을 사용했지만 이제는 거의 사용하지 않는다. 오늘날 가장 많이 사용되는 언어는 단연 SQL의 절차적 언어 버전인 PL/SQL이다. 오라클의 PL/SQL은 엔터프라이즈에 사용되는 데이터 중심적 애플리케이션의 실질적인 공통어로 자리 잡았다.SPR(Software Productivity Research)의 연구에 따르면, 언어는 추상화 수준이 높아질수록 표현력에 차이가 생기게 된다고 한다. 이 표현력은 개발자 생산성 측정에 많이 사용되는, 하나의 기능을 구현하기 위한 코딩된 문장의 수로 측정할 수 있다. 언어의 수준이 높을수록 하나의 기능을 구현하는 데 있어, 작성해야 하는 코드의 라인 수가 적어지게 된다. SPR 분석에 따르면, 기본 어셈블리 언어의 레벨을 1이라고 했을 때 C 언어는 하나의 기능 구성에 128개의 문장이 필요한 레벨 2.5의 언어이다. 이 레벨의 경우 개발자는 5~20개의 기능 포인트를 한 달 정도에 코딩 가능할 것으로 예상할 수 있다.PL/SQL의 경우 레벨 27 언어이다. 즉, 데이터 중심적 작업에서 이 언어는 C 언어보다 표현력이 약 10배 높다. 일반적으로 최고의 C 프로그래머라 하더라도 복잡한 데이터 처리 기능을 코딩하는 데 100개 이상의 소스 문장이 필요하다. 이에 비해 PL/SQL 프로그래머는 6개만 사용하면 된다. 따라서 한 달 기준으로 C 개발자는 5~10개의 기능 포인트를 작성할 수 있는 반면, PL/SQL 개발자는 한 달에 30개 이상의 기능 포인트를 작성할 수 있는 것이다. 개발자는 PL/SQL을 사용하여 복잡한 규칙과 로직을 데이터 중심적 디바이스 애플리케이션에 캡슐화 할 수 있다. 이 언어는 높은 수준의 모듈화와 추상화를 제공한다. 또한 C, C++ 또는 Java에서는 불가능한 강력한 데이터 구조를 제공한다.마지막으로, 이 언어는 개발팀에게 높은 수준의 플랫폼 독립성을 제공한다. 디바이스 소프트웨어 애플리케이션은 다양한 하드웨어 플랫폼과 운영 체제에서 구현되지만 데이터 중심적 애플리케이션의 PL/SQL 소스 코드는 이들 전부에서 동일하다. 데이터 중심적 디바이스 애플리케이션에서는 PL/SQL을 데이터 모듈과 데이터 관리 작업의 정의 수단으로 사용하고, 여기에 자동화된 코드 생성 도구를 함께 활용하면 소스 코드의 품질, 이식성 및 재사용성을 높이는 동시에 개발 시간과 비용은 크게 줄일 수 있다.MP3플레이어 애플리케이션을 예로 들어보자. 이 애플리케이션은 1970년 이전에 유럽에서 발매된 비틀즈(Beatles) 트랙의 노래 목록을 검색하여 이를 MP3 플레이어의 현재 재생 목록에 추가해야 한다. 오른쪽은 기존의 C/C++ 방법이다.C 프로그래머는 데이터가 저장된 위치와 데이터를 읽기 위해 호출해야 하는 액세스 루틴이 무엇인지 자세하게 알고 있어야 한다. 이에 해당하는 검색 알고리즘에는 여러 모듈에 구현된 여러 줄의 소스 코드를 필요로 한다. 이에 비해 PL/SQL 프로그래머는 쿼리를 정의하는 매개 변수를 사용한 하나의 SELECT 문 뒤에 하나의 INSERT 문만 사용하면 된다.교훈 4: 더 높은 생산성과 혁신을 위한 인프라 구축개발 비용을 최소화하고 내부 자원을 혁신에 집중시키기 위한 필요성을 인식하게 된 IT 조직에서는 데이터 중심적 개발 방법론을 표준화하였다. 비즈니스 애플리케이션 개발에는 공통 데이터 형식과 자동화된 프로그래밍 기술이 사용된다. 재무 보고서, 스프레드시트, 워드 프로세서, 프레젠테이션 도구, 이메일 클라이언트 및 메시징 유틸리티 모두가 데이터를 공유하고 교환한다. 기초 데이터 소스는 추상화되기 때문에 개발자의 입장에서 볼 때, 지리적으로 떨어져 있거나 데이터 서버 기술이 다름에도 불구하고 정보는 엔터프라이즈 전체에서 일관된다. 표준 유틸리티는 빠르게 개발 및 패키지화되어 조직 전체에 배포된 애플리케이션 슈트에 쉽게 통합되며, 최종 사용자는 데스크톱에서 룩앤필(look and feel)을 정의할 수 있게 된다. 그 결과 IT 부서에서는 더 빠르고 정확한 비즈니스 의사 결정을 가능하게 하고 조직의 운영 환경에 대한 깊이 있는 이해를 제공하는 애플리케이션이라는 형식을 제공하게 되는 것이다.인텔리전트 디바이스 및 디바이스 소프트웨어 개발 분야에도 이와 동일한 기회가 존재한다. 고객은 가정, 직장, 전 세계의 경계를 넘나드는 기술과 정보의 경험을 요구한다. 고객이 원하는 경험은 단순한 지리적 범위에 맞는 최적화를 넘어 애플리케이션과 데이터의 상호운용성을 경험하는 것이다. 기초 하드웨어 아키텍처가 다르다 할지라도 많은 인텔리전트 장치들이 엔터프라이즈 장치의 확장 형태가 되고 있다. 그 결과 셋톱박스, 휴대 전화, PDA, 고급 텔레매틱스 시스템은 높은 데이터 무결성과 일관성을 유지하면서 여러 애플리케이션과 데이터 소스에서 점점 증가하는 데이터를 처리하고 공유하고 있다. 하지만 비용적인 제약으로 인해 아직까지는 제한된 CPU 사이클, 메모리, 저장 공간 및 소모 전력의 범위 내에서 이런 요구 사항을 모두 충족시켜야 한다.디바이스 소프트웨어 개발팀은 인텔리전트 디바이스에 최적화된 데이터 중심적 개발 솔루션을 채택할 경우 돌파구를 마련할 수 있다. 요즘의 데이터 중심 디바이스에 사용할 복잡한 애플리케이션의 개발에 드는 많은 시간과 노력 그리고 비용을 절감할 수 있기 때문이다. 더 높은 수준의 개발 방법과 코드 생성 도구를 사용하면 개발자는 기초 하드웨어 플랫폼으로부터 자유로워질 수 있기 때문에 시장 요구 사항과 하드웨어 사양의 변화에 대응하는 데 필요한 노력을 줄일 수 있다.데이터 중심적 방법에서는 하드웨어 사양을 추상화하는 데이터 관리 서비스 계층을 사용할 수 있으며, 플랫폼에 최적화된 런타임 서비스가 최소의 자원 사용으로 최대의 성능을 제공하도록 할 수도 있다. 또한 애플리케이션 통합에 필요한 노력을 절감시켜주므로 여러 제품 플랫폼에 빠르게 배포할 수 있고 개발팀의 혁신 가능성과 생산성을 향상시킨다.조직을 미래로 이끄는 힘리더는 조직을 세계적인 수준으로 이끈다. 리더는 경쟁과 혁신을 가능하게 하는 기술의 변화를 포함하여, 시장의 트랜드와 변화를 예민하게 파악한다. 뛰어난 리더는 변화를 파악하는 데서 그치는 것이 아니라, 변화를 예측하고 대응할 수 있으며 이 변화가 제공하는 기회를 조직이 놓치지 않도록 이끈다.리더는 소프트웨어 조직에 대해 획기적인 혁신을 창출할 수 있다. 우선 해당 업계의 변화 요인을 잘 파악해야 하며, 이 기회를 자본화하기 위한 대응 계획을 마련해야 한다. 이제 시장은 더 이상 디바이스 자체에만 한정되어 있지 않다. 데이터는 중요한 자산일 수밖에 없기 때문에 이러한 디바이스가 제공할 수 있는 데이터 중심적 정보, 기능 및 서비스의 중요성은 데이터와 거의 동등하다고 할 수 있다. 인텔리전트 디바이스의 반도체 부품 비중이 커짐에 따라 디바이스 애플리케이션 소프트웨어에 대한 요구도 그 어느 때보다 커지고 복잡해졌다.새로운 세대의 인텔리전트 디바이스는 디바이스 안팎으로 이동하는 데이터를 활용하는 풍부한 기능의 소프트웨어 애플리케이션을 필요로 한다. 이제 엔터프라이즈의 교훈을 통해 살펴본 데이터 관리를 디바이스 애플리케이션 소프트웨어에 적용할 수 있다. 하지만 더 중요한 것은 디바이스 소프트웨어가 경쟁 차별화, 혁신 및 사업 성장의 중요한 분야가 됨에 따라 이러한 교훈을 실천에 옮기는 것이다. 점점 더 크고 복잡한 소프트웨어 애플리케이션을 사용하는 인텔리전트, 데이터 중심적 디바이스 시장에서 기능, 시간과 비용 사이의 충돌에 대한 해결책을 모색하고 있는 리더는 과거 역사를 살펴보고 데이터 중심적 개발로 조직을 변화시켜야 한다. PL/SQL 방법 1개의 SELECT 문과 1개의 INSERT 문 C/C++을 사용한 기존 방법 SELECT Track, Title, Region, Artist, Year - 여러 모듈에 구현된 300줄 이상의 C 또는 C++ 코드 FROM Albums - 프로그래머는 데이터의 저장 위치와 액세스 방법을 자세히 이해하고 있어야 함 WHERE Region.ID = ‘EUROPE’ - 대부분의 코드는 데이터 조작과 관리를 위한 코드 AND Artist = ‘BEATLES’ - 조직 전체의 표준 구현이 없음 AND Genre = ‘Rock’ - 데이터 무결성에 대한 보증이 없음 AND Year <= 1970; - 재사용이 가능하더라도 제한적 INSERT INTO On_The_Go (Track, Title, Artist);
회원가입 후 이용바랍니다.
개의 댓글
0 / 400
댓글 정렬
BEST댓글
BEST 댓글 답글과 추천수를 합산하여 자동으로 노출됩니다.
댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글수정
댓글 수정은 작성 후 1분내에만 가능합니다.
/ 400
내 댓글 모음
저작권자 © 테크월드뉴스 무단전재 및 재배포 금지