닷넷 개발의 다크호스「C#빌더」

일반입력 :2004/10/10 00:33

이갑연 박지훈

마이크로소프트(이하 MS)에 의해 닷넷이 정식 공개된 지 2년이 되어 가지만 본격적인 닷넷 개발 시장이 열리기엔 아직 시기상조인 듯하다. 개발자로서 주위를 둘러보면 예전에 Win32 기반으로 개발되고 있었던 개발 영역들은 대부분 Win32에서 그대로 개발되고 있으며, 또 닷넷이 주 타겟으로 삼았던 자바 개발 시장도 닷넷에 자리를 양보해 주기엔 기세가 너무나 등등하다. 다른 여러 가지 원인들도 있겠지만 닷넷과 관련하여 폐쇄적인 방향으로 펼치고 있는 MS의 기술 정책에도 그 원인이 있을 것이다. 적지 않은 개발자들은 MS의 솔루션들 속에 갇혀 다른 선택을 할 수 없게 되어버리는 상황에 대해 우려하고 있는 것이다.이런 상황을 인식한 듯 MS는 최근 개발 툴 전문 벤더인 볼랜드를 닷넷 시장에서 우군으로 끌어들이려 하고 있다. 볼랜드가 닷넷 시장에 더욱 적극적으로 뛰어듦으로써 MS 솔루션 지향적인 닷넷에 대한 개발자들의 불안감을 감소시키고 개발자들에게 선택의 자유를 제공하려 하는 것이다. MS에게 중요한 것은 비주얼 스튜디오 닷넷이라는 개발 툴의 조그만 시장이 아니라 닷넷 플랫폼이라는 거대한 플랫폼 시장이기 때문이다. 이런 MS-볼랜드간 협력관계의 첫번째 작품이 볼랜드 C#빌더이다. 볼랜드 C#빌더는 이름 그대로 볼랜드에서 개발한 C# 개발 툴이다. C#빌더는 기존의 볼랜드 통합개발환경(IDE)의 모습을 약간 벗어나서 상당히 업그레이드된 모습을 보여주고 있다. C#빌더에 있어 중요한 향상(경쟁 툴인 비주얼 스튜디오 닷넷 혹은 볼랜드의 기존의 개발 툴들에 비해)은 IDE와 모델링, 성능 관리, 소스 컨트롤 등 ALM(Application Lifecycle Management)에 있어 전 단계를 효과적으로 통합한 데 있다. 지금부터 하나씩 차례로 알아보도록 하자.향상된 IDE앞에서도 말했듯이 C#빌더의 IDE는 MS의 비주얼 스튜디오 닷넷과 상당히 비슷하다. IDE에 나타나는 여러 도킹 윈도우들의 위치도 거의 비슷하며 굳이 차이점이라면 비주얼 스튜디오와는 반대로 오브젝트 인스펙터(속성 윈도우)가 왼쪽에, 그리고 툴 팔레트(툴 박스)가 오른쪽 아래에 나타난다는 것뿐이다.

(화면 1) 비주얼 스튜디오 닷넷과 흡사한 C#빌더의 개발환경
이것은 두말할 필요도 없이 비주얼 스튜디오 개발자들을 배려한 것인데, 그렇다고 해서 델파이나 C++빌더 등 기존의 볼랜드 개발 툴을 사용하던 개발자들을 무시한 것은 아니다. 상단의 Desktop 툴바에서 기본적으로 선택된 ‘Default Layout’ 외에 ‘Classic Undocked’를 선택하면 기존의 볼랜드 IDE와 비슷한 SDI 환경으로 셋팅된다. 비주얼 스튜디오를 경험해 본 개발자에게는 기본 데스크톱이 아주 친숙할 텐데, 환경 설정에서 키 맵핑으로 ‘VisualStudio’로 맞추어 주면 단축키까지 완전히 비주얼 스튜디오 스타일로 작업할 수 있게 된다.C#빌더를 실행하면 기본적으로 비주얼 스튜디오와 비슷하게 Welcome 페이지를 보여준다(화면 2). 여기서는 최근의 프로젝트들을 나열하고 있어 편리하게 선택하여 오픈할 수 있으며, 관련 리소스들에 대한 링크도 정리해서 보여준다.
(화면 2) Welcome 페이지
새로운 C# 프로젝트를 시작하기 위해 「File|New|C#Application」을 선택하면 새로운 애플리케이션의 이름과 디스크 위치를 입력한 후에 화면 중앙에 C# 프로젝트에 포함된 기본 윈폼의 디자이너를 볼 수 있다. C#빌더의 폼 디자이너는 기존의 델파이나 C++빌더의 스타일이 아니라 비주얼 스튜디오처럼 MDI 차일드 폼으로 나타난다. 여기서 아래쪽의 Code/Design 탭 중에서 Code를 선택하거나, 키를 누르면 코드 에디터에 현재 폼의 코드가 나타난다. 당연한 얘기지만 생성된 코드는 비주얼 스튜디오에서 생성되는 코드와 완전히 동일하다(심지어는 주석문까지).
(화면 3) VB.NET 컴파일러
C#빌더의 IDE는 볼랜드 디벨로퍼 스튜디오라는 이름의 환경으로, C#빌더만의 것이 아니라 다른 언어 혹은 개발툴을 통합할 수 있도록 설계되어 있다. 이런 면에서 MS의 비주얼 스튜디오의 개념과 아주 유사하다. 더욱이 VB 닷넷 컴파일러를 등록하면 VB.NET 프로젝트를 생성하거나 작업할 수 있다. 여기에는 약간의 제한이 있는데 그것은 VB.NET의 폼을 열지 못한다는 것이다. 눈에 띄는 아웃라이닝 기능자잘한 IDE의 개선 사항도 꽤 많은데, 가장 먼저 눈에 띄는 것은 비주얼 스튜디오와 비슷하게 코드 에디터에 아웃라이닝(Outlining)이 지원된다는 것이다(화면 4). 이것은 코드 에디터에서 함수나 클래스 등의 첫 부분 왼쪽 끝에 +, - 등의 아이콘이 나타나서 해당 함수/클래스를 탐색기의 폴더처럼 접어넣는 기능을 말한다. 함수나 클래스가 복잡해질수록 소스 코드 네비게이션이 번거로워지는데, 이런 경우 아주 매력적인 기능이다.또 한가지 재미있는 것은 키 매크로 기능 버튼들이다. 키 매크로는 델파이나 C++빌더 등 볼랜드의 이전의 IDE에도 있던 기능이지만, 메뉴나 명령 아이콘이 나타나지 않아 많은 개발자들에게 알려지지 않았었다. C#빌더에서는 이 키 매크로 기능을 위한 세 개의 아이콘들(Play/Record/Stop Record)이 IDE의 아래쪽 상태표시줄에 나타나 있어 반복적인 키보드 작업시 편리하게 사용할 수 있다(화면 5).코드 에디터가 활성화되어 있을 때도 툴 팔레트는 사라지지 않고 그대로 있는데, 이때는 컴포넌트들 대신 코드들의 집합인 코드 스니펫(Code Snippet)들이 나타난다. 또한 뒤에서 다룰 ASP.NET 프로젝트에서는 ASP.NET 컴포넌트들과 HTML 요소들이 나타나게 된다(화면 6).
(화면 5) 상태표시줄에 나타나는 아이콘
(화면 6) 툴 팔레트(왼쪽부터 차레로 윈폼 컴포넌트, 코드 스니펫,ASP.NET 컴포넌트 및 HTML 요소들
ASP 닷넷 지원C#빌더는 비주얼 스튜디오 닷넷과 거의 동일한 수준에서 ASP 닷넷 개발을 지원한다(화면 7). 「File|New」 메뉴에서 ‘Others…’를 클릭한 후 ‘C# ASP Projects’ 혹은 ‘C# ASP Files’ 항목에서 선택할 수 있다. 새로운 ASP.NET 프로젝트를 생성하면 HTML 디자이너가 나타난다. 툴바의 버튼들로 HTML을 비주얼하게 디자인할 수 있는 WYSIWYG HTML 디자이너는 비주얼 스튜디오 닷넷에서는 이미 있던 기능이지만 이전의 볼랜드 개발 툴을 사용하던 개발자들에게는 상당히 신선하게 다가올 것이다. 또한 역시 비주얼 스튜디오 닷넷과 비슷하게, ASP.NET에서 HTML 디자이너가 활성화되면 툴 팔레트에 ASP.NET용 컴포넌트들이 나타난다.
(화면 7) ASP 닷넷 지원
비주얼 스튜디오에서 관련된 파일들도 모두 상단에 별도의 탭들로 표시되는 것과는 달리 C#빌더에서는 관련된 파일들, 즉 HTML 태그들을 가진 aspx 파일, C# 소스코드를 가진 aspx.cs 파일, 그리고 HTML 디자이너가 상단에는 하나의 탭으로 나타나고 하단에 세 개의 탭이 나타난다(이것은 델파이나 C++빌더의 6 이상 버전을 쓰던 개발자에게는 익숙한 모습이다). 이것은 별다른 큰 기능이라고 할 수는 없지만 여러 파일들을 동시에 열어놓고 작업해야 하는 실무 개발 작업시에 도움이 될 수 있는 편의 기능이라고 할 수 있다(이것은 윈도우 폼 작업시에도 마찬가지이다).ASP.NET 프로젝트를 오픈한 상태에서는 키를 이용하여 개발중인 ASP 페이지를 브라우저로 직접 실행시키거나 브레이크포인트 등 디버깅이 가능하다. 역시 비주얼 스튜디오 닷넷에서는 이미 도입된 기능이기는 하지만 효율적인 웹 개발을 위해서는 필수적인 기능이다.투게더의 UML 모델러 작년에 볼랜드가 인수한 투게더소프트는 UML 모델링 소프트웨어인 투게더 컨트롤 센터(Together Control Center)를 개발/판매하던 회사로서, 점유율면에서 앞서가고 있던 래쇼날 로즈를 위협하고 있었다. 개발 툴 전문 벤더인 볼랜드가 모델링 툴 업계에 부상하고 있던 투게더를 인수함으로써 IBM이 래쇼날 로즈를 인수하게 하는 직/간접적인 요인을 제공했고 뒤이어 MS가 전용 모델러를 잃어버려 볼랜드에게 손을 내밀어야 하는 처지로 만들었다.애초에 투게더 컨트롤 센터는 자바 전용 모델러였으나(지금도 자바 버전은 시장 점유율 1위의 자바 개발 툴인 J빌더에 번들되는 버전을 판매하고 있다) 닷넷 개발 시장을 노리는 볼랜드는 C#빌더의 출시에 맞추어 투게더의 닷넷 버전을 개발, 그 기능들을 C#빌더에 내장시켰다. C#빌더는 내장된 투게더 기술을 이용하여 코드를 모델로 보여주며 또한 클래스들을 다이어그램으로 보여준다. 테스트에 사용된 FT3 버전에서는 기능이 완성되지 않았으나 6월 초에 출시될 정식 버전에서는 리스트에서 패턴을 선택하여 코드와 다이어그램을 자동으로 생성하는 기능 등 완벽한 모델링 기능을 내장할 전망이다. 이러한 기능들은 간단하게는 개발 난제 중 하나인 도큐먼테이션에 편리할 것이며 나아가서는 모델에 따라 개발하는(Model Driven Development; MDA) 차세대 개발 방법론의 기초가 될 것으로 보인다.
(화면 8) 투게더의 모델 뷰
볼랜드 ECO(Enterprise Core Objects)는 아직 실체가 모두 드러나지 않았으나, 델파이용으로 유명했던 볼드 for 델파이(Bold for Delphi)를 볼랜드가 인수한 후로 더욱 강화시킨 ‘볼드 for 닷넷’으로 알려지고 있으며, 볼랜드에 따르면 OMG의 MDA의 구현이라고 한다. FT3 버전에서는 C# 프로젝트를 생성할 때 ECO 관련의 두가지 소스 파일을 추가로 생성하는 정도만 보여지고 있다. 이 파일들이 어떻게 UML과 연동되는지에 대해서는 아직 구체적으로 나타나 있지 않다. 하지만 엔터프라이즈가 아닌 아키텍처 에디션에서만 지원할 정도로, 적어도 볼랜드가 상당히 공을 들이고 있는 기술인 것만은 틀림없어 보인다.
(화면 9) ECO 프로젝트
팀 작업과 성능 최적화 C#빌더는 팀 작업과 소스 버전 컨트롤을 위해 기본적으로 스타팀을 번들하여 제공한다(화면 10). 스타팀은 투게더와 함께 볼랜드가 작년에 인수했던 스타베이스사의 제품으로, 중앙집중화된 소스컨트롤 기능들을 지원한다. C#빌더는 스타팀 외에도 MS의 비주얼 소스세이프(Visual SourceSafe), 래쇼날 클리어케이스(ClearCase), CVS를 지원하며 IDE 내에서 직접 불러다 쓸 수 있도록 통합되어 있다.
(화면 10) 번들된 스타팀 5.2
또한 C#빌더에는 닷넷 애플리케이션 성능 분석 툴인 옵티마이짓 닷넷(Optimiseit Profiler for .NET)을 번들하고 있는데, 이 옵티마이짓은 실시간으로 닷넷 애플리케이션의 성능 정보를 추적하여 성능상의 병목 등을 빠르게 알아낼 수 있게 하여 닷넷 개발자들이 더욱 효율적으로 작업할 수 있도록 도와준다. 옵티마이짓은 C#빌더와 함께 번들되며 별도의 설치과정을 거쳐야 하나, 일단 설치되면 C#빌더의 IDE 내에서 호출되므로 편리하게 사용할 수 있다.
강력한 데이터베이스 기능전통적으로 볼랜드의 개발 툴은 데이터베이스 개발 지원에 있어서 강력한 기능을 보여왔는데(이 때문에 한때 델파이가 DB 전용 개발툴로 오인받을 정도로), C#빌더에서도 BDP.NET(Borland database 프로바이더)이라는 새로운 아키텍처를 제공하고 있다(그림 1). BDP는 델파이와 C++빌더의 6 이상 버전, 그리고 리눅스용 비주얼 개발 툴인 카일릭스에서 도입된 dbExpress의 아키텍처를 발전시킨 것으로, 데이터베이스 개발 작업을 단순화시켜주고 볼랜드 인터베이스, 오라클 9i, IBM DB2, MS SQL 서버에 대해 손쉽게 전환 가능한 포터블한 코드를 생성하게 해 준다.
(그림 1) BDP.NET 아키텍처
또한 C#빌더에는 다양한 데이터베이스 서버들의 개발자 라이선스 버전이 번들되어 있는데, 앞에서 BDP가 지원한다고 말했던 볼랜드 인터베이스, MS SQL 서버, 오라클 9i, IBM DB2가 그것이다. 이러한 다양한 데이터베이스 서버들을 C#빌더 패키지에 번들함으로써 개발자는 데이터베이스 개발을 더욱 쉽게 할 수 있게 될 것으로 보인다.데이터 익스플로러라고 하는 도킹 가능 윈도우에는 C#빌더에서 기본적으로 지원하는 네가지 데이터베이스가 등록되어 있다. 여기서 테이블을 코드 에디터로 드래그하면 (화면 12)와 같이 해당 테이블의 내용이 보기좋게 그리드로 나타난다.
(화면 12) 데이터 익스플로러에서 자료를 드래그하여 폼을 자동 디자인한다.
닷넷과 자바를 연결하는 자네바자네바(Janeva)는 닷넷환경에서 J2EE 혹은 CORBA 객체를 호출할 수 있게 해주는 것이다(화면 14). 따라서 자네바를 이용하면 기존에 프로젝트를 자바로 진행했을 경우에 별다른 조작 없이 해당 객체들을 닷넷에서 가볍고 직접적으로 연결하여 이용할 수 있다.
(화면 13) CORBA/J2EE 객체 호출을 지원하는 자네바
역컴파일 방지를 위한 demeanor.net 닷넷 MSIL 코드는 순수 바이너리라기보다는 일반적으로 말하는 p코드에 가깝기 때문에 역컴파일이 비교적 쉬운 편이다. 실제로 이미 수없이 많은 역컴파일 유틸리티가 공개, 혹은 상용으로 발표되어 있으며 MSIL 코드의 내부를 속속들이 분석한 자료들도 돌아다니고 있는 실정이다. 이런 상황에서 크리티컬한 코드의 역컴파일 방지는 필수적인 기능이라고 할 수 있을 것이다. C#빌더에는 역컴파일 방지를 위한 demeanor.net이 번들되어 있으며(화면 15), 이 툴을 설치하면 C#빌더의 메뉴에 통합된다.
(화면 14) demeanor.net
크리스털 리포트와 컴포넌트 원C#빌더에는 비주얼 스튜디오 개발자들이 익숙한 크리스털 리포트(화면 15)와 컴포넌트들의 모음인 컴포넌트 원 패키지가 포함되어 있다. 크리스탈 리포트의 경우에는 C#빌더에 기본 설치되며, 컴포넌트 원 패키지는 별도로 설치하면 C#빌더에 컴포넌트로 등록되게 된다.
(화면 15) C#빌더에 기본 설치되는 크리스탈 리포트
닷넷 개발 시장 활성화의 계기기사를 쓰는 시점이 5월이기 때문에 이번 리뷰를 위해 테스트한 C#빌더의 버전은 7.1.4.587이었다. 군데군데 조금씩 오동작을 하는 버그들이 남아있었지만 이런 자잘한 버그는 6월 초 출시될 정식 버전에서는 개선되리라 믿는다. 아쉬운 점으로는 볼랜드의 개발 툴 제품군 전략인 ALM(Application Lifecycle Management)의 중요한 한 축을 형성하는 스타팀이 자바 버전으로 되어 있어 필요 이상으로 비대하고 느린 동작으로 보여주었다는 것이다. 물론 프로젝트를 수행하는 데 있어 큰 문제가 있는 것은 아니지만 투게더가 닷넷 버전으로 포팅되었듯이 스타팀도 곧 윈도우 버전으로 발표되기를 기대해 본다.개발 툴의 핵심을 컴파일러라는 시각에서 바라볼 때 C#빌더는 MS의 비주얼 스튜디오 닷넷에 포함된 비주얼 C#과 다를 것이 없다. 비주얼 스튜디오와 마찬가지로 C#빌더도 닷넷 프레임워크의 커맨드라인 C# 컴파일러(csc.exe)를 호출하여 코드를 컴파일하기 때문이다.하지만 현재의 개발 프로젝트들은 점점 더 크게 비대화되고 있고 그에 따라 복잡도도 더욱 높아지고 있다. 과거에는 성능만을 최고의 명제로 삼아왔으나 이제는 확장성이나 모델 지향성 등 점점 더 복잡 다단한 개발의 단계들이 중시되어가고 있는 추세이다. 이런 관점에서 볼 때 설계에서 배포까지 개발의 전 단계를 단 하나의 제품 패키지로 커버하고 있는 C#빌더는 최근에 출시된 비주얼 스튜디오 닷넷 2003을 위협하는 다크호스가 될 수 있을 것이다. C#빌더의 출현이 닷넷 개발 시장 전체를 더 활성화시키는 계기가 될 것으로 기대한다.@