화이트페이퍼 Delphi 7 ~ Delphi 2010 IDE 의새로운기능들 Nick Hodges, 박지훈. 임프 2009 년 11 월 Corporate Headquarters 100 California Street, 12th Floor San Francisco, California 94111 Asia-Pacific Headquarters L7. 313 La Trobe Street Melbourne VIC 3000 Australia DevGear 서울특별시서초구반포동 743-1 4층데브기어
Delphi 7 ~ Delphi 2010 IDE 의새로운기능들 IDE Insight IDE 인사이트는개발자가 IDE 내의모든기능, 즉프로젝트, 컴포넌트, 코드템플릿, 구성세팅등어느기능이든빠르게찾아낼수있도록해줍니다. 간단히 F6 키를누르기만하면 IDE 인사이트가나타나며, 여기서개발자는원하는기능을타이핑하기시작하면가능한기능들의목록이나타납니다. 여기서개발자가특정기능을선택하면해당기능이실행되거나 IDE 에서그위치로이동하게됩니다. IDE 인사이트는키입력만으로전체 IDE 기능들을호출할수있습니다. 클래식모드 IDE 레이아웃 Delphi 7 및이전버전들의 IDE 레이아웃을선호하는개발자들을위해 Delphi 2010 에서는 SDI 환경을완벽하게지원하여이전버전들과동일하게배치할수있게되었습니다. 여기에는클래식스타일의컴포넌트팔레트도다시추가되었으며, 검색이가능하여전보다더편리해졌습니다. 2
Code Formatter 사전에지정된형식으로전체코드를자동으로포매팅하기위한코드포매터기능이추가되었습니다. 간단히 Edit 메뉴의 Format 을선택하거나 CTRL-D 를치면코드가자동으로포맷됩니다. 환경설정에서코드포매터를위한각종설정들을각개발자가원하는형식으로바꿀수도있습니다. 간단히자신만의포맷형식으로바꿀수있어코드를인수, 인계할때아주유용합니다. 백그라운드컴파일 컴파일에상당한시간이걸리는대형프로젝트컴파일작업을위해백그라운드컴파일기능이추가되었습니다. 이기능을이용하면컴파일하는동안코드에디트, 리뷰등다른작업들을계속할수있습니다. 컴파일하기직전의유닛들의메모리스냅샷으로컴파일하므로추가로코드를에디트하더라도영향을받지않습니다. 코드검색기능강화 Search > Find 명령어 (^F) 가재설계되었으며, 이제다이얼로그박스로나타나는대신코드에디터윈도우의아래모서리에작업표시줄과비슷하게나타납니다. 검색바에서점증검색 (Incremental Search) 도가능합니다 : 그냥바로타이핑을하거나, 혹은입력한내용과일치하는이전의검색문자열들에서선택할수있습니다. 3
검색하이라이팅 이제검색한내용과매치되는모든부분들이하이라이트됩니다. 첫번째매치되는위치가하이라이트되고, 화면에보이는다른모든매치부분들은다른색으로하이라이트됩니다. o 하이라이트하는두가지색은 IDE 의 color 설정에서지정되어있습니다. o Tools > Options > Editor Options > Colors 의 Additional search match highlight 항목에서 Background color 와 Foreground color 을선택하여이색들을사용자지정할수있습니다. o 모든검색매치되는부분에서하이라이트되는것을막으려면, Tools > Options > Editor Options 의 Show all search matches 체크박스의체크를빼면됩니다. Find in Files 기능강화 Search > Find in Files 다이얼로그에는 *.pas 나 *.cpp 처럼와일드카드지정을할수있는새로운필드 (Directory) 가추가되었습니다. 또한디렉토리검색을위해 Directories 필드에세미콜론으로디렉토리이름을분리하여입력하거나, 혹은 Folders and Groups 버튼을클릭하여 Select Directories 다이얼로그를열어여러디렉토리를지정할수있습니다. 4
클래스익스플로러 클래스익스플로러는 Delphi 의클래스모델링기능을바탕으로만들어졌으며전체프로젝트내부의클래스구조를볼수있게해줍니다. 개발자는클래스를보는방식으로상향식 (top-down) 또는하향식 (bottom-up) 을선택할수있습니다. 또한클래스익스플로러는기존클래스라이브러리에클래스, 메소드, 프로시저를추가할때에도사용될수있습니다. 프로젝트매니저강화 프로젝트그룹내의여러프로젝트들을원하는대로정렬 (sort) 할수있으며기본정렬순서를지정할수도있습니다. 현재프로젝트와별도로다른디렉토리에위치한파일들을표시하는여러방법들이개선되었습니다. 여러아이템들을멀티셀렉트하여특정작업을할수도있습니다. Build Configuration 빌드컨피규레이션은릴리즈또는디버그모드에따라각종옵션들을별도로설정해두는기능입니다. 기본적으로 Base 로부터상속된 Release, Debug 의컨피규레이션들이있고각모드에맞는컴파일옵션들이설정되어있습니다. 개발자가필요한경우특정상황에서필요한새로운컨피규레이션을추가할수도있으며, 예를들면특정고객사를위한버전을만들기위한컨피규레이션을만들수도있습니다. 5
프로젝트옵션다이얼로그와프로젝트매니저는빌드컨피규레이션에맞게기능이대폭확장되었으며, 한프로젝트에서공들여설정한빌드컨피규레이션을다른프로젝트들에서도재활용할수있도록옵션셋기능도제공합니다. 리소스매니저 이제 RC 파일을작성하고프로젝트에추가하고관리해야하는번거로운작업없이, 델파이프로젝트에직접리소스파일들을추가하고관리할수있게되었습니다. bmp, jpeg, gif, png 등이미지파일들이나폰트파일들을추가할수있습니다. 또한이미지파일들을직접프로젝트매니저로드래그하여프로젝트에추가하는것도가능해졌습니다. 파일익스플로러 이제 IDE 는머신하드드라이브에있는파일들을액세스할수있게해주는파일익스플로러를가지게되었습니다. 파일들은프로젝트에추가되거나코드에디터에서열수있습니다. 파일브라우저는다른도킹가능윈도우들처럼 IDE 에도킹될수있습니다. 6
라이브템플릿 라이브템플릿은템플릿기반의코드삽입기능을제공하여타이핑을빠르게해줍니다. 라이브템플릿은기본적으로단순한 XML 파일이므로, 개발자들은자신의특정필요에따라자신만의코드템플릿을작성하여사용할수있습니다. 아래그림은라이브템플릿을이용하여 try...finally 블럭을생성하는것을보여줍니다. 블록컴플리션 블럭컴플리션은코드블럭이정확하게닫히도록해줍니다. 코드블럭을시작한후리턴키를치면자동으로블럭을닫아줍니다. ( 흔히는 'end;' 로닫습니다 ) 히스토리탭 히스토리탭은간단한소스컨트롤시스템의기능을합니다. 파일이저장될때마다서브디렉토리에백업파일이만들어집니다. IDE 는 diff 엔진을이용하여이런이런변경들을추적하여개발자가이전버전들을살펴볼수있게해줍니다. 파일의이전버전이필요한경우, 그버전으로기존의파일을교체할수있습니다. 그림은히스토리탭이한파일의두이전버전을비교해서보여주고있는모습입니다. 7
쓰레드디버깅강화 다음과같은새로운쓰레드디버깅기능들이추가되었습니다. 1. TThread.NameThreadForDebugging 메소드가추가되었으며이를이용하여 IDE 의 Thread View 에현재디버깅중인각쓰레드들의이름을볼수있습니다. 2. 특정쓰레드만디버깅하기위한 Thread Specific Breakpoint 기능이추가되었습니다. 3. 각쓰레드를일시적으로얼리거나다시녹일수있어원하는쓰레드의디버깅에집중할수있습니다. 디버그비주얼라이저 TDateTime, TStringList 등기존에는디버거에서그값을추적할수없었던타입들을볼수있게해주는 Debug Visualizer 가추가되었습니다. 새로운타입을위한비주얼라이저를개발하여등록할수도있습니다. 8
기타추가된디버깅기능들 VCL 가이드라인 다음과같은새로운디버거기능들이추가되었습니다. 4. CPU 뷰가에디터탭의바깥에독립적으로열릴수있습니다. 5. 디스어셈블리창에 "Show Opcodes" 로컬메뉴항목이추가되었습니다. 6. 디스어셈블리창에 "Show Addresses" 로컬메뉴항목이추가되었습니다. 7. Tools Options Debugger Options Event Log 에 "Scroll new events into view" 옵션이추가되었습니다. 8. Tools Options Debugger Options Embarcadero Debuggers 에 "Ignore non-user breakpoints" 옵션이추가되었습니다. 9. 툴바를커스터마이즈할때 "Notify on language exceptions" 버튼이추가되었습니다. 이버튼은개발자들이 Tools Options Debugger Options Embarcadero Debuggers Language Exceptions 페이지에있는 "Notify on Language Exceptions" 옵션을빠르게토글할수있게해줍니다. 10. Ctrl 키를누르면개발자가에디터의내용을잘볼수있도록 Evaluator 툴팁이투명해집니다. 11. Call Stack 뷰에서해당프레임이디버그정보를포함하고있는지보여주는이미지를보여줍니다. 12. Call Stack 뷰에서지정된스택프레임위치에서개발자들이브레이크포인트를설정할수있습니다. 13. Call Stack 뷰에서한항목을더블클릭하면자동으로로컬뷰를동기화해줍니다. 14. 에디터에서 CTRL-F5 핫키를치면현재라인에설정되어있는브레이크포인트를활성 / 비활성화해줍니다. 15. Project Options Debugger 다이얼로그에서델파이등모든프로젝트타입에대해 "Debug Source Path" 설정을지정할수있습니다. 이전에는이설정을델파이 Win32 에서는 Directories/Conditionals 페이지에서지정할수있었으나, 다른퍼스낼리티에서는불가능했습니다. 16. "Automatically close files implicitly opened while debugging" 옵션설정에 CPU 뷰도적용되게되었습니다. VCL 디자이너는이제컨트롤의배치를대단히쉽게해주는가이드라인을제공합니다. 폼디자이너는컴포넌트들을정렬하기쉽도록컨트롤들이딱맞게정렬되거나크기가조절되었을때가이드라인을보여줍니다. 아래그림은이기능이동작하는모습을보여줍니다. 9
코드폴딩 에디터에서각각의코드섹션들을접어서 (fold) 보이지않게해둘수있습니다. 함수 / 프로시저들은기본적으로접혀질수있습니다. {$REGION} pragma 를이용하면사용자가직접자신의코드영역을접힐수있도록지정할수있습니다. SyncEdit SyncEdit 기능은개발자들이코드에있는같은변수 / 함수등의이름을동시에수정할수있게해줍니다. 첫번째변수 / 함수이름을수정하면, 다른이름들도자동으로동일하게수정됩니다. 코드작성자는탭을눌러코드내의특정이름들을오갈수도있습니다. 10
툴팔레트검색 이제툴팔레트에서검색및필터링이가능합니다. 사용자는컴포넌트의이름이나이름의일부를타이핑하여빠르게컴포넌트를찾을수있습니다. 또한툴팔레트는대단히많이사용자정의가가능합니다. 개발자들은쉽게자신만의카테고리를만들고컴포넌트를한카테고리에서다른카테고리로드래그 & 드롭할수있습니다. 에디터라인넘버 이제에디터에는라인넘버가표시됩니다. 기본적으로는 10 의배수라인이표시되며, 또한현재라인의번호도표시됩니다. 사용자는라인넘버기능을꺼둘수도있고, 반대로모든라인에서넘버가표시되도록할수도있습니다. 라인변경표시 거터에에디터의라인들의상태정보를보여줍니다. 마지막으로저장된후변경된라인은노란색으로표시됩니다. 오픈후변경되고저장된라인들은녹색으로표시됩니다. 11
리팩토링 리팩토링은원래의코드의동작은그대로유지한채로기존코드의구조를재구성하고변경하기위한테크닉입니다. 리팩토링은개발자들이애플리케이션코드의성능과가독성을모두높일수있게해줍니다. 델파이는다음과같은리팩토링동작을제공합니다. Symbol Rename Extract interface Extract Superclass Extract Method Declare Variable / Declare Field Find References Extract Resourcestring Find Unit Change Parameters Introduce Field / Introduce Variable Pull Members Up / Push Members Down Inline Variable Safe Delete Audits &Metrics Audit&Metrics 는각코드가표준안에어느정도부합하는지코드의품질을측정하는표준적인방법입니다. 12
UML 통합 프로젝트로부터직접모델을역공학 (reverse engineering) 할수있습니다. 이렇게하면프로젝트의클래스들이트리구조로보여지는계층적인모델뷰 (Model View) 가생성되며, 또한 UML 클래스다이어그램으로표시할수도있습니다. 이러한모델과다이어그램은프로젝트의도큐먼트를자동으로만들어주는목적으로도사용할수있습니다. 통합된유닛테스팅 델파이 2007 에서부터 DUnit 이통합되었습니다. 이프레임워크는애플리케이션의클래스및메소드들에대한테스트케이스를만드는과정을쉽게해줍니다. 유닛테스팅과함께리팩토링을이용하면애플리케이션의안정성을높일수있습니다. 작은수정들이있을때마다코드전반에대해표준테스트셋을테스트해가면개발사이클에서에러들을좀더빨리잡아낼수있습니다. 델파이 IDE 는개발자들이기존의코드라이브러리에대해빠르고쉽게유닛테스트를할수있게해주는위저드들을제공합니다. 13
Embarcadero Technologies Inc. 는애플리케이션개발자및데이터베이스전문가가자신이선택한환경에서소프트웨어애플리케이션을설계, 빌드및실행하는도구를사용할수있도록합니다. 전세계 3 백만이상의커뮤니티와 Fortune 지선정 100 대기업중 90 개기업이 Embarcadero 의 CodeGear 및 DatabaseGear 제품군을기반으로하여생산성을향상시키고개방적인협업및자유로운혁신을추구하고있습니다. Embarcadero 는 1993 년에설립되어캘리포니아샌프란시스코에본사가있으며전세계에사무소를두고있습니다. Embarcadero 의온라인주소는 www.embarcadero.com 입니다. 데브기어는미국 Embarcadero Technologies Inc. 와기존의코드기어한국지사의협력으로전략적으로설립된엠바카데로솔루션전문공급기업입니다. 데브기어는 Delphi, C++Builder, JBuilder, Delphi Prism 등개발툴제품들과 ER/Studio, PowerSQL, DB Artisan, EA/Studio 등의데이터베이스툴제품들에대한한국시장에공급은물론기술지원및교육을제공합니다. 데브기어웹사이트는 http://www.devgear.co.kr/ 이며제품에대한문의는 ask@embarcadero.kr 로하면됩니다. 14