'POWERUMC'에 해당되는 글 172건

  1. 2012.08.02 MS OFFICE 2013, 그리고 구글은 당신이 지난 여름에 한 일을 알고 있다! (1)
  2. 2012.08.02 개발자도 알아야 할 응용 프로그램 모델링 7/7 - 결론 및 저자 소개 (1)
  3. 2012.08.02 개발자도 알아야 할 응용 프로그램 모델링 6/7 - 모델링 확장 (SDK)
  4. 2012.08.02 개발자도 알아야 할 응용 프로그램 모델링 5/7 - Visualization & Features Pack
  5. 2012.08.02 개발자도 알아야 할 응용 프로그램 모델링 4/7 - 모델링 다이어그램
  6. 2012.08.02 개발자도 알아야 할 응용 프로그램 모델링 3/7 - 모델링의 표기
  7. 2012.08.02 개발자도 알아야 할 응용 프로그램 모델링 2/7 - 왜 모델링인가? (2)
  8. 2012.08.02 개발자도 알아야 할 응용 프로그램 모델링 1/7 - 들어가기에 앞서...
  9. 2012.08.01 [월간 마이크로소프트 5월호 특집기사] Windows 8 시대를 준비하는 Visual Studio 2012를 마치며 (1)
  10. 2012.08.01 [월간 마이크로소프트 5월호 특집기사] C++ 매트로 앱 개발을 위한 C++/CX 언어
  11. 2012.08.01 [월간 마이크로소프트 5월호 특집기사] Windows 8 시대를 준비하는 Visual Studio 2012
  12. 2012.06.06 Windows 8 SDK 에는 이것이 빠져있다? (2)
  13. 2012.05.06 크로스 플랫폼 개발 환경 만들기 - (8/11) Mono 개발 환경 만들기 (4)
  14. 2012.05.06 크로스 플랫폼 개발 환경 만들기 - (7/11) 우분투 OS를 개발자 스타일로 최적화
  15. 2012.05.04 크로스 플랫폼 개발 환경 만들기 - (6/11) 윈도우 Active Directory 가입
  16. 2012.05.03 크로스 플랫폼 개발 환경 만들기 - (5/11) 한글 입력 문제
  17. 2012.05.03 크로스 플랫폼 개발 환경 만들기 - (4/11) 한글 업데이트
  18. 2012.05.03 크로스 플랫폼 개발 환경 만들기 - (3/11) 기본 구성
  19. 2012.05.03 크로스 플랫폼 개발 환경 만들기 - (2/11) 우분투 12 설치 (4)
  20. 2012.05.03 크로스 플랫폼 개발 환경 만들기 - (1/11) 도전하라 개발자여 (2)
  21. 2012.03.25 TFS2010, MSDN Virtual Lab: Team Foundation Server 2010, 가상에 환경의 실습해 보자
  22. 2012.03.15 Visual Studio 11, SOLUTION EXPLORER 스마트하게 사용하기 (1)
  23. 2012.03.05 Visual Studio 11, 릴리즈 VSGesture for Visual Studio 11, 2010
  24. 2012.03.04 [HowTo] Visual Studio 11, VSX 업그레이드
  25. 2012.03.04 Visual Studio 11, 더욱 똑똑해진 코드 에디터 (1)
  26. 2012.03.04 Visual Studio 11, 검색 기능 강화
  27. 2012.03.04 Visual Studio 11, Metro Style App 성능 및 품질 관리
  28. 2012.03.04 Visual Studio 11, 프로젝트 호환성
  29. 2012.03.04 Visual Studio 11, Metro Style App 디버깅
  30. 2012.03.04 Visual Studio 11, Windows 8 Metro 응용 프로그램 템플릿 지원

아마 IT 트랜드에 관심이 많거나 이 분야에서 일하시는 분이라면 관심 있게 볼 수 있는 TV 프로그램이 있다. LIVE SMART SHOW의 "직설 IT 수다" 프로그램이다. 이 프로그램은 IT 트랜드에 대한 주제를 놓고 4명의 고정 게스트가 여러 가지 의견을 나누고 여러 각도로 주제를 재조명하는 재미있는 프로그램 중 하나라고 할 수 있다.











이번 MS OFFICE 2013에 대해 뜨거운 감자로 '과연 MS OFFICE가 시장을 지속적으로 영위할 수 있을 것인가' 에 대한 것이다. Microsoft의 킬러 앱이라고 하면 단연 "Microsoft Office(MS OFFICE)"라고 할 수 있는데, 이 자리를 노리는 많은 웹 서비스가 있고 그것이 대안이 될 수 있다는 것에 잠시 초점이 맞추어졌다.

 

구글 Docs, 에버노트의 웹 서비스가 MS OFFICE 시장을 빼앗을 수 있을까?

필자는 답부터 말하면 "No" 라고 말하고 싶다.

대표적으로 구글 Docs와 MS OFFICE의 가장 큰 차이점이라고 하면, 구글 Docs는 웹 서비스이고, MS OFFICE는 데스크탑 응용 프로그램이다. 그리고 최근 MS OFFICE는 SaaS(Software As a Service) 형태를 띄며 '공유, 모바일' 그리고 클라우드까지 서비스 영역을 확장하는 시도를 하고 있다. (이미 클라우드와 제한적인 연동을 지원한다.)

여기에서 뜨거운 감자로 떠오르는 것이 굳이 MS OFFICE를 대체할 수 있다는 것이다. 구글 Docs를 써보면 충분히 웹 브라우저를 이용하여 웹에서 문서를 편집하고 공유할 수 있다. 웹이라고 하는 용이한 접근성으로 PC에 설치를 해야 하는 MS OFFICE를 구매할 필요성이 점차 낮아지고 있다는 점을 지적하고 있다.

필자는 이 점을 공감하고 있다. MS OFFICE는 라이선스를 구매해야 하며, PC에 설치해야 하며, 로컬 컴퓨터를 주요 스토리지로 사용한다는 점에서 구글 Docs에 비해 단점이라고 할 수 있다. 그리고 간단한 문서를 작성하거나 편집하기 위해서는 구글 Docs의 웹 서비스를 사용하는 것이 훨씬 이득이다. 그리고 온라인상에서 여러 사람과 동시에 문서를 작성/편집하는 등 책이나 출판을 목적으로 구글 Docs를 사용하는 경우도 있다.

MS OFFICE는 이름에서도 알 수 있듯이 사무자동화(OA) 업무에 사용하기 편리하다. OUTLOOK, EXCEL, WORD, POWERPOINT, SHAREPOINT WORKSPACE, ONENOTE 등의 소프트웨어들이 MS OFFICE 제품으로 엮인다. 그리고 SKYDRIVE의 클라우드 저장소와 연동이 되며, SKYDRIVE에서 문서를 열거나 만드는 경우 웹에서 직접 문서를 작성/편집이 가능하다. 웹에서 MS OFFICE 기능을 제공하는 것을 "Web App" 이라고 하는데, SHAREPOINT를 사용하는 경우 인트라넷에서 웹에서 OFFICE의 대부분의 기능을 제공한다. 데스크탑 오피스를 웹으로 고스란히 옮겨놓은 것이라고 보아도 무방할 정도의 퀄리티이다.

아래와 같이 필자는 크롬 브라우저를 이용하여 SKYDRIVE에 저장해 놓은 POWERPOINT 문서를 열어보았다. 완벽하게 애니메이션까지 재생이 된다. WORD, EXCEL 등의 문서 포멧을 지원한다.

 













하지만, 사람들마다 성향이 다르듯이 필자는 구글 Docs를 쓰려고 노력해봐도, 에버노트를 쓰려고 노력해봐도 불편함부터 느껴진다. 단지 언제든지 불의의 사고로 복원이 필요한 경우를 대비하여 아이폰, 아이패드 동기화 용도로만 쓸 뿐이다.

 

"구글은 당신이 지난 여름에 한 일을 알고 있다"

구글은 정말 많은 무료 서비스를 제공한다. 그 중에서 메일 서비스(GMAIL) 또한 구글의 강력한 킬러 서비스 중 하나인데, 예전에 구글 메일과 관련된 일화가 있다. 친구와의 하와이 여행을 위해 구글 메일로 하와이에 대한 이야기를 주고 받았는데, 어느 날 구글 메일 페이지 내의 광고에서 "하와이…" 에 대한 맞춤 광고가 떴다는 것이 주요 골자이다.

그 밖에 일화도 있다. "[영상]"구글 메일이 당신의 사생활을 훔쳐본다"

구글이 내놓은 모든 무료 서비스는 구글에게 가장 가치 있는 "키워드"라는 정보를 수집할 필요가 있다. 이 키워드는 트랜드를 반영하기도 하며, 이슈 또는 비전을 제시할 수 있다. 또 한가지는 구글 메일은 강력한 스팸 차단 기술을 보유하고 있다. 필자가 써본 메일 중에 스팸 차단이 가장 잘 된다고 느낀다. 스팸 차단 기술은 기본적으로 차단된 제목 또는 일부 내용이 차단된 키워드를 포함하고 있는 경우 스팸으로 분류하기도 하고, 특히 구글 메일은 이보다 더 효과적이고 강력한 알고리즘을 사용한다. 그럼에도 불구하고 많은 벤처 기업과 중소 기업은 구글 메일을 기업 메일로 도메인을 연결하여 사용하기도 한다.

구글은 당신의 이메일이나 구글Docs 의 정보를 스캔한다고 보면 된다. 극단적으로 구글이 당신의 정보를 스캔하지 않는다고 해도, 이미 당신의 정보는 더 이상 당신의 정보가 아니다. 왜냐하면 당신이 원하는 만큼 제어할 수 없는 곳인 구글 서버에 당신의 정보가 저장이 되어 있기 때문이다.

이제는 굳이 구글을 해킹을 하지 않더라도 개인정보를 훔치는 것은 생각보다 쉬워졌다. 국내에서는 이미 옥션, 넥슨, 네이트온, KT 에서 우리나라 전체 인구인 약 5천만보다 수 백배가 많은 개인 정보가 노출이 되었고, 이 정보로 타인의 개인정보에 접근이 쉬워졌다. 쉽게 말하면, 만약 우리나라 대통령 "이명박" 각하가 옥션, 네이트온, KT에 가입되었다면 해킹된 정보만으로도 "이명박" 각하의 보안 정보에 접근할 수 있는 정보가 충분히 제공된다.

 

다시 원점으로 돌아가보자. 최신 운영체제는 파일에 강력한 보안을 적용할 수 있는 기능을 제공한다. 무료/유료로 제공되는 인트라넷의 자원을 통합하여 관리할 수 있는 소프트웨어도 있다. (유료 소프트웨어 중 SHAREPOINT가 대표적). 그리고 전사적인 자원을 통합 관리, 보안, 제어할 수 있는 Active Directory와 같은 기술도 있다.

물론 처음부터 모든 구색을 갖추고 시작하는 벤처나 기업이 없는 경우가 더 많다. 하지만, 무료로 제공되는 여러 가지 클라우드 서비스는 서비스 제공자에게 있어 "무료가 아닐 수 있다". 왜냐하면 많은 클라우드 서비스는 "당신이 지난 여름에 한 일을 알고 있기 때문이다." 우리가 무료 웹 서비스를 즐길 수 있는 댓가를 무료 웹 서비스에게 지불한다는 점을 항상 잊어서는 안된다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 아크몬드 2012.08.03 09:50 Address Modify/Delete Reply

    재밌게 읽고 갑니다.

본 아티클은 MSDN 에 eBook으로 공개된 문서를 블로그 아티클로 편집하였습니다. VSTS 팀블로그에 의해 작성된 문서의 원문 및 여러 가지 기술 문서는 아래의 링크에서 PDF로 다운로드 받을 수 있습니다. 그리고 본문의 특정 버전을 지칭하는 개발툴 버전 번호는 모두 Visual Studio로 변경되었음을 참고하십시오. (예- Visual Studio 20xx는 Visual Studio로 표기함 )

VSTS 팀블로그 MSDN 기술 문서 : http://msdn.microsoft.com/ko-kr/gg620748 

필자 소개

Microsoft Visual Studio ALM MVP 엄준일
http://blog.powerumc.kr

 

Visual Studio Korea Team Blog
http://vsts2010.net

감수 : 강성재 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

   

도움주신 분 : 김남영 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

 

[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 1/7 - 들어가기에 앞서...
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 2/7 - 왜 모델링인가?
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 3/7 - 모델링의 표기
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 4/7 - 모델링 다이어그램
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 5/7 - Visualization & Features Pack
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 6/7 - 모델링 확장 (SDK)
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 7/7 - 결론 및 저자 소개

 

8. 결론

백서에서 지금까지 Visual Studio을 활용하여 어플리케이션을 모델링하고 그리고 모델링을 확장하여 잘 이용할 수 있는 여러 가지 기능과 방법을 설명하였습니다. 혹여 이 백서를 읽는 독자가 회사에서 UML 또는 모델링을 하는 업무나 직책을 갖지 않더라도 분명히 모델링은 개발자 사이에도 어느 정도 필요로 합니다.

소위 개발자들은 "코드로 말한다" 라고 강조하기도 합니다. 하지만 코드로 말하기 전에 자신의 의도와 노력을 시각적으로 표현하기 위해 노력하는 방법도 매우 중요합니다. 그것은 코드가 완성이 되기 전에 서로 간의 커뮤니케이션을 할 수 있으므로 이해 관계가 복잡해 질 때 먼저 자신의 의도와 노력을 상대에게 이해시킬 수 있는 좋은 방법이 바로 모델링이기 때문입니다.

이러한 모델링 습관은 매우 좋은 현상입니다. 예전에 값 비싼 도구로 모델링을 할 수 있었지만 이제는 Visual Studio으로 시스템의 설계나 코드의 설계, 그리고 기존 코드를 시각화 함으로써 서로 간에 시스템이나 어플리케이션의 설계 또는 코드를 쉽게 이해하고 접근하는 좋은 방법이기도 합니다.

더불어 Visual Studio의 모델링은 지속적으로 발전하고 있고 다양한 모델링 확장 기능을 Visual Studio Gallery 사이트에서 제공하고 있습니다. 모델링은 통합 개발 도구와 통합하여 보다 기존보다 좀더 생산성 있고 가치 있는 활동을 하나의 도구에서 모두 할 수 있으며, 이러한 여러분의 노력이 한 걸음 더 뻗어 나갈 수 있는 좋은 스킬이 되리라 필자는 확신을 합니다.

 

  • 저자 소개
    현재 필자는 NCSOFT에 재직하지 않음을 참고하기 바랍니다.


  • 오픈 소스 개발

1) MEFGeneric (2010년) - http://mefgeneric.codeplex.com/
.NET Framework 4.0에 포함된 MEF 라이브러리가 제공하지 않는 제네릭(Generic) 타입을 지원하도록 개선한 프로젝트

2) VSGesture for Visual Studio (2010년~) - http://vsgesture.codeplex.com/
Visual Studio에서 마우스 제스처를 통해 빌드, 디버깅, 화면 제어를 하는 확장 도구 프로젝트

3) Umc.Core Enterprise Framework(2012년~) - http://umccore.codeplex.com/
IoC, AOP, Build, Mapping 등의 오픈 소스를 직접 구현하여, 하나의 엔터프라이즈 프레임워크로 제공하는 프로젝트

4) vutpp for Visual Studio (2011년~) - http://vutpp.codeplex.com/
Visual C++ 에서 단위 테스트를 지원하는 확장 도구 프로젝트

5) jQuery DateTimePicker Plugin (2012년) - http://umcdatetimepicker.codeplex.com/
jQuery Plugin 중 DatePicker에 시간 선택 기능을 추가한 jQuery 플러그인 프로젝트

6) 설치형 블로그 (2007년) – http://blog.powerumc.kr/30
ASP.NET 국내 최초로 오픈 소스로 공개된 설치형 블로그 프로젝트

 

  • MSDN (개발자 네트워크) 기술 자료 제공 (PDF)

1) MSDN 게시: Visual Studio 응용 프로그램 모델링 완전 정복 백서
2) MSDN 게시 및 출판 : Visual Studio 2010 을 활용한 ALM(Application Lifecycle Management)
3) MSDN 게시: Team Foundation Server 2010 설치 가이드 (단일 서버)
4) MSDN 게시: Team Foundation Server 2010 설치 가이드 (다중 서버)
5) MSDN 게시: Team Foundation Server 2010 설치 가이드 (Lab 구성)
6) MSDN 게시: Team Foundation Server 2010 활용 가이드 (FQDN 설정)
7) 7) MSDN 게시: VSS 사용자를 위한 Team Foundation Server 2010 시리즈 (WORKGROUP 설치가이드)
8) MSDN 게시: VSS 사용자를 위한 Team Foundation Server 2010 시리즈 (활용가이드)
9) MSDN 게시: VSS 사용자를 위한 Team Foundation Server 2010 시리즈 (마이그레이션가이드)

 

  • 월간 마이크로소프트 비정기 기술 자료 기고

1) 2008년 10월호 : Visual Studio 2008 Service Pack 1 with .NET Framework 3.5 SP1
2) 2009년 08월호 : Visual Studio 2010
3) 2010년 03월호 : 닷넷 길라잡이 | ALM의 정의와 세 가지 요소
4) 2010년 04월호 : 닷넷 길라잡이 | Visual Studio 2010을 활용한 ALM
5) 2010년 05월호 : 닷넷 길라잡이 | 명확한 작업의 관리와 지속적인 통합 - 추적성
6) 2010년 06월호 : 닷넷 길라잡이 | 과거와 현재를 알면 미래가 보인다 - 가시성
7) 2010년 07월호 : 닷넷 길라잡이 | 테스트와 가상화의 만남
8) 2012년 05월호 : 비주얼 스튜디오 11, 윈도우8 시대를 대비하자, C++/CX 이해하기

 

  • ZDNET Korea 비정기 기술 자료 기고

1) 2010년 04월 28일 : 지속적인 통합을 넘어선 ALM의 미래-1
2) 2010년 05월 01일 : 지속적인 통합을 넘어선 ALM의 미래-2

 

  • 세미나

1) Visual Studio Camp #1 : (2010/08/28) 소프트웨어 품질 향상을 위한 다양한 테스트 기법
2) REMIX10 : (2010/06/01) : 혁신적인 프로그램을 만드는 .NET 4 와 비주얼 스튜디오 2010
3) TECHDAYS 2010 : NET Framework 4.0, MEF(Managed Extensibility Framework)
4) TECHDAYS 2009 : Visual Studio Team System 2010 With Agile
5) DEVDAYS 2008 : 개발자가 꼭 알아야 할 .NET 프레임워크 하이라이트 – 2.0에서 3.5 SP1 까지
6) Microsoft MVP 대상 기술 세미나 : (2009/01/14) Visual Studio Team System 2010
7) Visual Studio 팀 세미나 : MEF(Managed Extensibility Framework) within .NET Framework 4.0
8) 첨단 기업 연구소를 위한 무결점 소프트웨어 세미나 : (2012/04/24)

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 1 2013.03.27 20:20 Address Modify/Delete Reply

    프로그래머와 작업의뢰인의 거래사이트 "오투잡"

    오투잡은 현재 하루 접속자 3000명이 접속하는 재능거래 사이트 입니다.
    오픈한지 얼마되지 않았지만 부업분야 전체 점유율 2위, 국가지원을 받고있습니다.

    오투잡에서 판매자 대모집 중입니다.
    카테고리 활성화가 시작 되니, 많은 판매 등록 바랍니다.
    오투잡은 네이버에서 "오투잡" 으로 검색 하세요.

본 아티클은 MSDN 에 eBook으로 공개된 문서를 블로그 아티클로 편집하였습니다. VSTS 팀블로그에 의해 작성된 문서의 원문 및 여러 가지 기술 문서는 아래의 링크에서 PDF로 다운로드 받을 수 있습니다. 그리고 본문의 특정 버전을 지칭하는 개발툴 버전 번호는 모두 Visual Studio로 변경되었음을 참고하십시오. (예- Visual Studio 20xx는 Visual Studio로 표기함 )

VSTS 팀블로그 MSDN 기술 문서 : http://msdn.microsoft.com/ko-kr/gg620748 

필자 소개

Microsoft Visual Studio ALM MVP 엄준일
http://blog.powerumc.kr

 

Visual Studio Korea Team Blog
http://vsts2010.net

감수 : 강성재 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

   

도움주신 분 : 김남영 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

 

[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 1/7 - 들어가기에 앞서...
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 2/7 - 왜 모델링인가?
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 3/7 - 모델링의 표기
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 4/7 - 모델링 다이어그램
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 5/7 - Visualization & Features Pack
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 6/7 - 모델링 확장 (SDK)
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 7/7 - 결론 및 저자 소개

 

7. Visual Studio Modeling SDK

Vual Studio 2010 SDK(Software Development Kit)은 기존의 Visual Studio의 기능을 확장할 수 있는 도구를 지원해 주고 있습니다. 이 내용에 대해 자세한 내용은 필자의 블로그의 다음의 글을 참고 하십시오.

참고

[VSX] 1. Visual Studio Extensibility,, 그 시작

http://blog.powerumc.kr/232

 

7.1. 개발 환경 및 설치 요구 사항

Visual Studio 모델링 프로젝트를 확장하기 위해 먼저 Visual Studio SDK를 설치해야 합니다. Visual Studio SDK 는 아래의 다운로드 주소를 통해 다운로드 받으실 수 있습니다.

 

시스템 요구 사항

  • Supported Operating Systems: Windows 7;Windows Server 2003 R2 (32-Bit x86);Windows Server 2003 R2 x64 editions;Windows Server 2003 Service Pack 2;Windows Server 2008 R2;Windows Server 2008 Service Pack 2;Windows Vista Service Pack 2;Windows XP Service Pack 3
    • Windows XP (x86) with Service Pack 3 - all editions except Starter Edition
    • Windows Vista (x86 & x64) with Service Pack 2 - all editions except Starter Edition
    • Windows 7 (x86 and x64)
    • Windows Server 2003 (x86 & x64) with Service Pack 2 - all editions
    • Users will need to install MSXML6 if not already present
    • Windows Server 2003 R2 (x86 and x64) - all editions
    • Windows Server 2008 (x86 and x64) with Service Pack 2 - all editions
    • Windows Server 2008 R2 (x64) - all editions

 

Visual Studio 2010 요구 사항

  • Visual Studio 2010 Professional or better

 

7.2. Layer Diagrams 확장하기

Visual Studio  SDK와 Visual Studio 2010 Visualization & Modeling Features Pack을 설치하면 Layer Diagrams을 확장할 수 있는 프로젝트 템플릿이 설치가 됩니다.

새 프로젝트 만들기에서 모델링 프로젝트->Extensibility 를 선택하면 세 가지의 새로운 템플릿이 생성이 된 것을 확인할 수 있습니다.

각 템플릿은 Layer Diagrams을 확장하기 위해 아래와 같은 기능을 수행하는 템플릿입니다.

  • Command Extension
    Layer Diagrams에 특정 컨텍스트 메뉴를 통해 명령을 수행할 수 있는 확장 기능을 만들 수 있습니다.

  • Gesture Extension
    Layer Diagrams으로 끌어오기 동작 등의 확장 기능을 만들 수 있습니다.

  • Validation Extension
    Layer Diagrams과 코드의 구조가 유효한지 검사하는 확장 기능을 만들 수 있습니다.

 

7.2.1. 레이어 개수를 세는 Command Extension 만들기

 

7.2.1.1. Layer Diagrams Command Extension 프로젝트 생성

우선 간단한 Command Extension을 만들기 위해 Command Extension 템플릿으로 프로젝트를 생성합니다. 프로젝트의 이름을 CustomLayerCommand (또는 희망하는 이름으로) 프로젝트를 생성합니다.

 

간단히 생성된 프로젝트를 실행 또는 디버깅 하기 위해서 생성된 Command Extension 프로젝트를 선택하여 마우스 오른쪽 버튼을 클릭하여 시작 프로젝트로 설정합니다.

 

그런 다음 F5 키를 눌러 디버깅을 시작합니다. F5키를 눌러 디버깅을 시작하면 Visual Studio 2010은 별도의 레지스트리를 사용하는 Experimental 모드로 실행을 하게 되어 기존의 Visual Studio 2010에 영향이 없도록 동작하게 됩니다.

 

7.2.1.2. Layer Diagrams에 명령 코드 만들기

Visual Studio 의 새로운 확장 기능은 .NET Framework 4.0에 포함되는 MEF(Managed Extensibility Framework)를 사용하여 확장 기능을 만들 수 있습니다. 모델링 확장 기능 또한 MEF를 사용하여 확장할 수 있으며 MEF에 대한 자세한 내용은 필자의 블로그를 참고 하시기 바랍니다.

참고

MEF(Managed Framework Extensibility) 연제
http://blog.powerumc.kr/189

 

우선 클래스의 선언은 다음과 같이 되어 있습니다 아래와 같이 ExportAttribute을 사용하여 ICommandExtension 형식을 Visual Studio 모델링에서 인식할 수 있도록 컴포넌트 계약을 합니다. 그리고 LayerDesignerExtensionAttriburte을 추가하면 Layer Diagrams에서 ICommandExtension 확장 기능을 사용할 수 있도록 합니다.

[Export(typeof(ICommandExtension))]
[LayerDesignerExtension]
public partial class CustomLayerCommandExtension : ICommandExtension 


클래스 내부에 Import된 IDiagramContext는 현재 다이어그램의 컨텍스트 개체로 이 개체를 이용하여 특정 명령을 내릴 때 다양한 작업을 수행할 수 있습니다.

[Export(typeof(ICommandExtension))]
[LayerDesignerExtension]
public partial class CustomLayerCommandExtension : ICommandExtension
{
    [Import(typeof(IDiagramContext))]
    public IDiagramContext DiagramContext { getset; } 


ICommandExtension의 인터페이스는 Text 속성을 구현해야 하는데 이 속성은 다이어그램 컨텍스트 메뉴에서 표시되는 메뉴 이름입니다.

public string Text
{
    get	
    {
        return "레이어 개수";
    } 
} 


ICommandExtension의 인터페이스는 QueryStatus를 구현해야 하는데, 현재 상태에서 컨텍스트에 표시될 수 있는지 여부를 나타내게 됩니다. 조건에 따라 다른 표시/보이기 등의 동작이 필요하다면 아래의 코드를 수정하시면 됩니다.

public void QueryStatus(IMenuCommand command)
{
            command.Visible = true;
            command.Enabled = true} 


마지막으로 ICommandExtension의 Execute 메서드를 구현합니다. 이 메서드는 Layer Diagrams의 레이어 개수를 계산하기 위해 재귀 호출을 통해서 레이어 요소의 개수를 카운트합니다.

public void Execute(IMenuCommand command)
{
    int layerCount = 0;
    this.VisitDiagramElement(this.DiagramContext.CurrentDiagram.Diagram.ChildShapes, ref layerCount);

 

    MessageBox.Show(String.Format("레이어의 개수는 모두 {0}  입니다.", layerCount));            
}

 

private void VisitDiagramElement(IEnumerable<IShape> shapes, ref int layerCount)
{
    foreach (var shape in shapes)
    {
        if (shape != null && shape.GetLayerElement() is ILayer)
        {
            layerCount++;

 

            if( shape.ChildShapes.Count() > 1) 
                this.VisitDiagramElement(shape.ChildShapes.Skip(1), ref layerCount);
        }
    } 
} 


7.2.1.3. Layer Diagrams 코드 실행 결과

먼저 작성된 코드를 실행하기 위해 Visual Studio 에서 Command Extension을 시작 프로젝트로 설정한 후에 F5 키를 눌러 Visual Studio Experimental 모드로 실행을 할 수 있습니다. 만약 디버깅이 필요하지 않다면 Ctrl+F5 키를 눌러 디버깅 없이 실행하여 실행 속도를 높일 수 있습니다.

위의 코드는 다음과 같이 Layer Diagrams에서 마우스 오른쪽 버튼을 눌러서 활성화할 수 있습니다. 다음과 같이 Text 속성의 반환 값이 메뉴의 이름이 되는 것을 확인할 수 있습니다.

 

해당 메뉴를 클릭하면 Execute 메서드가 실행이 되고 메시지 상자에 Layer Diagrams에 포함된 모든 레이어의 개수를 표시해 줍니다.

 


7.2.2. 폴더 구조를 DRAG&DROP 하는 Gestures Extension 만들기

7.2.2.1. Geatures Extension 프로젝트 만들기

새로운 프로젝트를 생성하는 메뉴에서 모델링 프로젝트->Extensibility 항목에서 Layer Designer Gesture Extension 을 선택하고 확인을 클릭합니다.

 

이 후 설정은 Layer Diagrams Command Extension 프로젝트 생성 항목을 참고하십시오.

 

7.2.2.2. 폴더를 Drag&Drop 하는 코드 만들기

Gesture Extension 은 IGestureExtension 인터페이스를 구현합니다. 이 인터페이스를 상속하는 클래스를 만든 후에 ExportAttribute을 통해 Visual Studio 2010의 모델링 Geature Extension과 계약 관계를 형성합니다.

[Export(typeof(IGestureExtension)), LayerDesignerExtensionpublic partial class CustomLayerGestureExtension : IGestureExtension 


폴더를 Drag&Drop 하는 코드 전체는 다음과 같습니다.


[Export(typeof(IGestureExtension)), LayerDesignerExtension]
partial class CustomLayerGestureExtension : IGestureExtension
{

        [Import(typeof(IDiagramContext))]
        public IDiagramContext DiagramContext { getset; }

 

        public void OnDoubleClick(IShape target) { }

 

        public bool CanDragDrop(IShape target, IDataObject data)
        {
            var folders = data.GetData(DataFormats.FileDrop) as String[];
            if (folders == null)
            {
                MessageBox.Show("가져올 데이터가 없습니다.");
            }

 

            var isValidate = true;
            foreach(var folder in folders)
            {
                if( System.IO.Directory.Exists(folder) == false )
                {
                    isValidate = false;
                    break;
                }
            }

 

            return true;
        }

 

        public void OnDragDrop(IShape target, IDataObject data)
        {
            var folders = data.GetData(DataFormats.FileDrop) as String[];

 

            foreach (var folder in folders)

            {                 var dirInfo = new System.IO.DirectoryInfo(folder);                 target.Diagram.GetLayerModel().CreateLayer(dirInfo.Name);             }         } }

 


7.2.2.3. 폴더를 Drag&Drop 하는 Gesture Extension 코드 실행 결과

먼저 테스트로 진행할 모델링 프로젝트를 생성한 후에 Layer Diagrams 항목을 추가 합니다.

그리고 윈도우 탐색기를 열어 드래그할 폴더를 다음과 같이 선택합니다.

 

선택할 폴더 항목을 Visual Studio 2010의 다이어그램 디자이너에 Drag하여 Drop합니다.

 

Drop 결과 해당하는 폴더의 이름대로 Layer Diagrams의 레이어 요소가 생성이 되는 결과를 확인할 수 있습니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

본 아티클은 MSDN 에 eBook으로 공개된 문서를 블로그 아티클로 편집하였습니다. VSTS 팀블로그에 의해 작성된 문서의 원문 및 여러 가지 기술 문서는 아래의 링크에서 PDF로 다운로드 받을 수 있습니다. 그리고 본문의 특정 버전을 지칭하는 개발툴 버전 번호는 모두 Visual Studio로 변경되었음을 참고하십시오. (예- Visual Studio 20xx는 Visual Studio로 표기함 )

VSTS 팀블로그 MSDN 기술 문서 : http://msdn.microsoft.com/ko-kr/gg620748 

필자 소개

Microsoft Visual Studio ALM MVP 엄준일
http://blog.powerumc.kr

 

Visual Studio Korea Team Blog
http://vsts2010.net

감수 : 강성재 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

   

도움주신 분 : 김남영 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

 

[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 1/7 - 들어가기에 앞서...
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 2/7 - 왜 모델링인가?
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 3/7 - 모델링의 표기
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 4/7 - 모델링 다이어그램
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 5/7 - Visualization & Features Pack
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 6/7 - 모델링 확장 (SDK)
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 7/7 - 결론 및 저자 소개

 

6. Visual Studio Visualization & Modeling Features pack

Visual Studio Visualization & Modeling Features Pack(이하 Modeling Features Pack)은 2010년 12월 4일 MSDN 구독자에게 공개가 되었습니다. 이 Modeling Features Pack은 기존의 모델링 프로젝트에서 지원하지 않았던 몇 가지 기능을 보강하는 도구로써 Modeling Features Pack과 Modeling Features Pack Runtime을 제공해 줍니다.

 

6.1. Modeling Features Pack 개요

Visual Studio의 Modeling Features Pack은 다음과 같은 기능을 제공해 줍니다.

  • C++ 및 ASP.NET 프로젝트의 종속성 그래프 지원
  • C++ 코드에서 Layer Diagrams의 아키텍처 유효성 지원
  • UML Class Diagrams을 코드로 변환하거나 코드를 UML 다이어그램으로 변환
  • XMI 2.1 파일로 내보내기 기능
  • 다이어그램의 요소와 Team Foundation Server의 작업 항목 연동 강화
  • Layer Diagrams 확장

 

6.2. ASP.NET 웹 프로젝트의 종속성 그래프 분석

기존에 종속성 그래프 분석은 닷넷의 어셈블리나 클래스를 기준으로 분석이 되어 웹 프로젝트의 경우 ASPX 파일이나 그에 해당하는 종속성을 분석하기란 사실상 불가능 하였습니다. 다만 웹 프로젝트를 클래스나 어셈블리 수준에서 분석이 가능하였으나 웹 프로젝트 특성을 잘 반영한 종속성을 분석하기는 어려움이 많았습니다.

이번 ASP.NET 종속성 그래프는 웹 프로젝트라는 특성을 잘 반영하여 페이지 파일이나 공통되는 마스터 페이지 등 종속성 분석이 한결 자연스러워졌습니다.

ASP.NET 종속성 그래프 생성은 다음과 같은 웹 프로젝트 형식을 지원합니다.

  • ASP.NET 웹 사이트
  • ASP.NET 웹 프로젝트
  • ASP.NET MVC 웹 프로젝트

 

6.2.1. 웹 프로젝트 종속성 그래프를 만들려면?

  1. 종속성 그래프를 분석할 웹 프로젝트를 로드 합니다.
  2. 아키텍처->종속성 그래프 생성에 By Web Site 외 모두 두 가지 항목이 새로 생겼습니다. 코드 종속성과 함께 ASP.NET 웹 프로젝트를 분석하려면 By Web Site with Code Dependencies 를 선택합니다.


  3. 솔루션에서 웹 프로젝트의 종속성을 분석합니다.

     

  4. 다음은 웹 프로젝트의 전체를 코드 종속성 분석과 함께 분석된 결과 입니다.

     

 

6.2.2. 종속성 그래프를 분석하려면?

다음과 같이 종속성 그래프를 확대하면 각 페이지 간의 종속성을 보여줍니다.

이 종속성 그래프는 DGML(Directed Graph Markup Language)로써 웹 프로젝트 뿐만 아니라 Visual Studio의 전반적인 분석에 사용되는 전용 마크업 언어이기도 합니다.

만약 특정 페이지가 어떤 모듈이나 페이지간에 종속성을 미치는지 확인하기 위해서 해당 노드를 선택하면 됩니다. 예를 들어 아래의 AccountController 클래스가 가지는 종속적인 관계는 ChangePassword.aspx, ChangePasswordSuccess.aspx 등의 각 페이지들과 인증과 관련된 FormAuthenticationService, ChangePasswordModel 클래스 등에 종속적인 관계를 갖는 것을 확인할 수 있습니다.

 

이 AccountController 클래스의 내부를 좀더 자세히 보기 위해서는 AccountController 노드의 오른쪽 상단의 화면표 아이콘을 선택합니다.

 

그럼 AccountController가 구현하는 메서드나 프로퍼티 정보를 표시합니다.

 

만약 이 메서드들이 어떤 종속성을 갖는지 알기 위해서 메서드의 하나의 노드를 선택하면 됩니다. 예를 들어 아래의 get_MembershipService (원래는 속성(Property)임)은 다양한 메서드에서 호출되는 속성인 것을 확인할 수 있습니다.

 

이러한 종속성 정보는 얼마나 복잡하게 서로간에 영향력을 미치는지 알 수 있습니다. 예를 들어, 화살표를 많이 받으면 받을수록 그 코드의 변경이 주는 전파력은 상당히 높아지며, 코드에 버그가 있다면 그 버그의 전파력은 종속성이 갖는 크기만큼인 것이 될 것이라 예상할 수 있습니다.

 

종속성 그래프에서 화살표를 더블 클릭하여 분석할 종속성의 레벨을 지정할 수 있습니다.

 

만약 웹 프로젝트를 코드 레벨에서 분석을 하길 원한다면 종속성 그래프의 컨텍스트에서 마우스 오른쪽 버튼을 클릭하여 Get Code Dependencies 를 선택합니다.

 

그럼 웹 프로젝트의 노드를 확장하면 웹 프로젝트의 페이지 등의 종속성의 분석이 아닌 코드 레벨에서 종속성을 분석해 줍니다.

 

코드 레벨의 종속성을 분석하면 다음 그림과 같이 해당 노드와 종속되는 페이지를 확인할 수 있습니다.

 

 

6.3. UML 다이어그램과 코드 간의 상호 변환

 

6.3.1. Class Diagrams을 코드로 변환하기

Class Diagrams을 코드로 변환하기 위해서 모델링 프로젝트에서 UML Class Diagrams을 새로 추가 합니다.

 

  1. 간단하게 다음과 같이 클래스 모델링을 해 봅시다. 각각 Member, Phone, Address 클래스 요소를 추가 합니다.


  2. Member 클래스 요소를 Phone, Address 클래스 요소와 연결(Association) 관계로 만듭니다. 연결 관계로 만들기 위해서 Member 클래스 요소를 마우스 오른쪽 버튼으로 클릭한 후 추가->연결(Association) 항목을 클릭하여 각각 Phone, Address 클래스 요소와 연결합니다.


  3. 다음의 그림은 연결(Association) 을 Phone, Address 클래스 요소와 연결한 그림입니다.


  4. 모든 작업이 완료 되었으면 Class Diagrams의 컨텍스트 메뉴에서 Generate Code 를 클릭합니다.


  5. 다음과 같이 새로운 프로젝트가 생성이 되고, GenerateCode 폴더에 Class Diagrams의 클래스 요소들이 코드로 변환이 됩니다.


  6. Member.cs 클래스 파일은 다음과 같이 Phone, Address 클래스와 연결 관계가 속성으로 변환이 된 것을 확인할 수 있습니다.

 

 

6.3.2. 코드를 Class Diagrams으로 변환하기

마찬가지로 Visual Studio Modeling Features Pack은 기존에 존재하는 코드를 UML Class Diagrams으로 변환할 수 있습니다.

 

  1. 아래와 같이 간단하게 코드를 작성합니다. 기존 코드가 있으시면 기존 코드를 사용하셔도 무방합니다.

     

  2. 만약 모델링 프로젝트가 현재 솔루션에 없다면 모델링 프로젝트를 생성합니다. 아키텍처->새 다이어그램을 선택하여 UML Class Diagrams을 생성합니다.

  3. 아키텍처->창->아키텍처 탐색기를 선택합니다.



  4. 아키텍처 탐색기에서 UML Class Diagrams으로 변환할 코드를 찾아 선택합니다.


  5. 선택한 클래스 또는 코드 파일을 UML Class Diagrams 디자이너로 드래그&드랍 합니다.


  6. 그럼 기존의 코드가 아래와 같이 UML Class Diagrams으로 변환이 완성되었습니다.

 

 

6.4. XMI 가져오기

XMI(XML Metadata Interchange)는 메타데이터를 통해 정보를 교환하기 위한 표준으로 XML 형식의 데이터를 사용합니다. 다양한 모델링 프레임워크나 도구에서 독자적인 포멧을 사용하지만 XMI 내보내기 등의 기능으로 다양한 모델링 도구에서 모델링 정보를 교환하거나 공유할 수 있습니다. (참고 http://en.wikipedia.org/wiki/.xmi)

이 표준 모델링 다이어그램의 XMI 를 Visual Studio에서 불러올 수 있는 기능을 제공합니다. XMI 파일을 가져오려면 다음과 같이 진행하시면 됩니다.

만약 사용할 수 있는 .XMI 파일이 없다면 다음의 전자정부 표준 프레임워크 사이트에서 샘플을 다운로드 받으실 수 있습니다. (http://open.egovframe.go.kr/scm/viewvc.php/trunk/DEV_IDE_PLUGIN/egovframework.dev.imp.codegen.modeltest/xmi_sample/sample.xmi?diff_format=s&logsort=cvs&sortby=log&view=markup&root=egovframedev)

 

  1. 아키텍처->Import XMI… 을 선택합니다.



  2. 확장명이 .XMI 인 파일을 찾아 선택한 후 확인을 클릭합니다.


  3. 가져온 XMI 요소의 형식을 확인하려면 아키텍처->창->UML 모델 탐색기를 선택합니다.


  4. UML 모델 탐색기에 XMI 파일에서 가져온 요소가 나타납니다.

 

 

6.5. Team Foundation 2010 연동

기존의 Visual Studio 모델링 프로젝트는 Team Foundation Server 작업 항목과의 연동을 이미 지원했습니다. 하지만 UML 다이어그램의 요소와 작업 항목과의 연결이나 관리 작업 부분에서 불편한 점이 있었습니다.

이번 Modeling Features Pack 은 Team Foundation Server와 연동하면서 바로 작업을 연결하거나 만들고, 또는 추적할 수 있는 부분이 강화되어 다이어그램과 작업 간의 관리가 훨씬 용이해 졌습니다.

 

6.5.1. 다이어그램의 요소와 작업 연결

모델링 프로젝트의 다이어그램의 모든 요소는 Team Foundation Server에 작업을 만들거나 연결할 수 있습니다. 가령, 모델리한 컴포넌트를 특정 개발자에게 작업을 할당하거나 그 작업의 진척율을 확인하고 보고를 받을 수 있습니다.

 

6.5.1.1. 모델링 프로젝트에서 작업을 만들려면?

  1. 먼저 작업과 연결할 모델링 다이어그램을 엽니다. 작업과 연결할 요소에 마우스 오른쪽 버튼을 클릭하여 작업 항목 만들기-><작업항목형식> 을 선택합니다.



  2. 작업 항목 만들기 화면에서 필요한 항목을 입력한 후 작업 항목 저장 버튼을 클릭합니다.



  3. Class Diagrams의 요소에 작업 항목이 연결되었음을 의미하는 아이콘이 표시되고, 요소의 속성 창에 1개의 작업 항목이 연결된 표시가 나타납니다.

 

6.5.1.2. 다이어그램 요소에 연결된 작업 항목을 보려면?

요소에 작업 항목이 연결이 되면 요소의 오른쪽 상단에 작업 항목이 연결되었음을 의미하는 아이콘이 표시됩니다. 이 아이콘이 표시된 다이어그램의 요소는 어떤 작업 항목이 연결되었는지 확인할 수 있습니다.

  1. 다이어그램 요소와 작업 항목이 연결된 요소에 마우스 오른쪽 버튼을 클릭하여 작업 항목 보기를 선택합니다.



  2. 다이어그램 요소와 연결된 작업 항목 목록이 나타납니다.

 

6.5.1.3. 다이어그램의 요소와 연결된 작업 항목을 제거하려면?

다이어그램의 요소와 연결된 작업 항목을 삭제하기 위해서 다음의 순서로 진행하십시오.

  1. 다이어그램 요소와 작업 항목이 연결된 요소에 마우스 오른쪽 버튼을 클릭하여 작업 항목 제거를 선택합니다.



  2. 작업 항목 제거 대화 상자에서 연결을 해제할 작업 항목의 체크 박스를 해지합니다. 체크 박스 해지 작업이 완료되면 확인을 클릭합니다.

     

  3. 다이어그램의 요소가 작업 항목에서 제거되어 작업 항목 연결을 의미하는 아이콘이 삭제된 것을 확인합니다.

 

6.6. Visual Studio Layer Diagram Extension

Visual Studio Modeling Features Pack은 Layer Diagrams의 유효성을 검사하거나 아키텍처 유효성을 검증하는 기능이 포함되어 있습니다. 이 Layer Diagrams의 유효성 검증과 명령 등을 확장하기 위해서 추가적인 Visual Studio SDK가 필요합니다.

이 단원은 [Visual Studio Modeling SDK] 단원을 참고 하십시오.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

본 아티클은 MSDN 에 eBook으로 공개된 문서를 블로그 아티클로 편집하였습니다. VSTS 팀블로그에 의해 작성된 문서의 원문 및 여러 가지 기술 문서는 아래의 링크에서 PDF로 다운로드 받을 수 있습니다. 그리고 본문의 특정 버전을 지칭하는 개발툴 버전 번호는 모두 Visual Studio로 변경되었음을 참고하십시오. (예- Visual Studio 20xx는 Visual Studio로 표기함 )

VSTS 팀블로그 MSDN 기술 문서 : http://msdn.microsoft.com/ko-kr/gg620748 

필자 소개

Microsoft Visual Studio ALM MVP 엄준일
http://blog.powerumc.kr

 

Visual Studio Korea Team Blog
http://vsts2010.net

감수 : 강성재 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

   

도움주신 분 : 김남영 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

   

[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 1/7 - 들어가기에 앞서...
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 2/7 - 왜 모델링인가?
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 3/7 - 모델링의 표기
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 4/7 - 모델링 다이어그램
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 5/7 - Visualization & Features Pack
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 6/7 - 모델링 확장 (SDK)
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 7/7 - 결론 및 저자 소개

 

5. Visual Studio Modeling

Visual Studio의 모델링 다이어그램은 여러 가지 요구 사항 및 코드를 이해하고 명확하게 의견을 교환하는데 도움을 줍니다. 예를 들면, 사용자의 요구 사항을 Use Case Diagram이나 Sequence Diagram은 개발자에게 매우 유용합니다. 또한 시스템적으로는 Component Diagram, Activity Diagram, Layer Diagrams을 사용합니다.

이러한 여러 가지 다이어그램은 이해 관계자를 이해하고 큰 틀을 표현하는데 매우 효과적이지만, 가장 중요한 것은 이것들을 코드로 표현하는 것이며, 특히 Visual Studio Modeling은 개발자가 올바르게 모델을 구현할 수 있는 수단이 됩니다. 애자일에서 소스 코드가 산출물이라는 잘못된 강박관념에서 벗어나, 오히려 적절한 시점에 초기에 모델링을 하는 것은 매우 효과적이기도 합니다.

 

위의 그림에 정말로 아름다운 보름달이 있습니다. 하늘에 구름 한 점 없는 추석에 볼 수 있는 보름달이죠. 지금 독자 여러분은 모두 이 보름달을 바라보고 있지만, 사실 현실세계에서는 반드시 저 보름달을 모두 함께 바라보리라는 보장을 할 수 없을 겁니다.

필자와 독자 여러분들과 함께 저 보름달에 가기 위해서 여러 가지 이야기를 나누면서 제가 저 보름달을 손가락으로 가리키고 있습니다. 전자인 경우 몇몇의 대부분은 저 보름달에 가기 위한 목표로 즐거운 대화를 나눌 수 있지만, 어떤 누군가는 전혀 그렇지 않을 수도 있습니다. 아쉽게도 후자의 몇몇의 사람들은 보름달을 가리키고 있는 제 손가락 끝의 손톱 때를 보면서 잡담을 나누기도 합니다.

이런 현상은 개발하는 조직에서 특히 쉽게 찾아볼 수 있는 현상입니다. 우리 팀이 나아갈 방향과 목표, 그리고 개발해야 할 이상적인 구조를 이야기 할 때, 어떤 누군가는 어떻게 구현할지 머리 속으로 코드만 생각하는 사람들도 있습니다. 반대로 올바른 코드를 작성하고 적절한 리팩토링에 대해 이야기를 할 때, 발전적인 개선할 점에 대한 내용이 아닌 그 이상의 무언가가 잘못됐다고 불평을 하는 사람들도 있습니다. 왜 그럴까요? 서로가 주제에 대한 문제점에 대해서 인식을 하고 있지만, 그것을 바라보는 시각은 전혀 다르기 때문입니다.

분명 필자가 보름달을 가리키면서 야망에 사로잡혀 허황된 꿈을 꾸는 것처럼 보일 수 있지만, 만약 위와 같은 목표를 이룰 수 있는 우주선 설계 도면과 같은 계획을 한다면 필자의 손가락 끝의 손톱 때가 아닌 더 발전적인 방향의 이야기가 될 가능성이 충분하다는 것입니다. (물론 처음부터 완벽한 설계 도면을 만들기란 어렵겠지요.)

분명 개발자와 개발자 또는 개발자와 관리자 간에 발생할 수 있는 이러한 커뮤니케이션의 실수 가운데 모델링을 통하여 서로 공감대를 이루기 쉬운 커뮤니케이션을 할 수 있는 수단이 됩니다. 머릿속에 있는 자신만의 생각을 뚝딱 뚝딱 코드로 완성하여 "짜잔~" 하고 보여주더라도, 완벽한 코드가 아닐 수 있으며 얼마든지 리팩토링 대상이 될 수 있습니다. 자신의 생각을 코드로만 표현할 수 있는 개발자는 안타깝지만 현재의 시대가 원하는 개발자가 아니라고 필자는 생각이 듭니다.

최근의 대부분 개발 도구는 통합 개발 환경을 제공하고 있으며, 특히 Visual Studio부터는 UML 다이어그램도 지원을 해 주고 있습니다. 다음 단원부터 이런 UML을 통해 독자 여러분들이 어떻게 활용할 수 있을지도 함께 생각하면서 보시면 더욱 이 백서가 빛을 발휘할 것이라고 생각합니다.

 

5.1. UML Activity Diagrams (동작 다이어그램)

Activity Diagrams은 소프트웨어의 일련의 프로세스나 업무/비즈니스 프로세스에 대한 일련의 워크플로우를 나타냅니다. 이런 프로세스나 워크플로우의 흐름을 제어하거나 분기, 조인 등의 프로세스를 기술할 수 있습니다. 또한 소프트웨어에서 사용되는 프로토콜을 정의하거나 컴포넌트 상호간에 상호작용을 이해하거나 기술하는데 사용할 수 있습니다.

이러한 Activity Diagrams을 사용하면 여러 가지 이점이 있습니다.

  • 시스템 내부 동작과는 별개로 외부 동작에 집중할 수 있습니다.
  • 자연어를 사용하는 것에 의한 모호성을 줄일 수 있습니다.
  • 사용자/개발자/테스트 등 일관적인 용어를 정의할 수 있습니다.
  • 요구 사항의 차이점의 불일치를 줄일 수 있습니다.
  • 요구 사항 변경을 처리하는 시간을 줄일 수 있습니다.

 

5.1.1. Activity Diagrams 만들기

Activity Diagrams은 모델링 프로젝트에서 새로운 항목을 추가하여 생성할 수 있습니다.

  1. 솔루션 탐색기에서 모델링 프로젝트에서 마우스 오른쪽 버튼을 클릭하여 추가-> 새 항목을 클릭합니다.

     

  2. 새 항목 추가 창에서 "UML Activity Diagrams"을 선택하고 추가 버튼을 클릭하여 완료합니다.

     

  3. Activity Diagrams이 완성되었습니다.


5.1.2. 간단한 흐름 제어

Activity Diagrams에서 하나의 요소는 하나의 작업을 의미하게 됩니다. 그리고 요소를 연결선으로 연결함으로써 흐름의 제어를 구성할 수 있습니다.

 

 

도구 상자에 여러 가지 요소가 포함이 되어 있고, 이 요소를 Activity Diagrams의 디자인 화면에 추가하기 위해서 도구 상자에서 요소를 선택하고 디자인 화면으로 드래그&드랍 동작을 수행합니다.

아래의 간단한 제어 흐름 예제는 한 동작에서 다음 동작의 흐름을 나타냅니다. 순차적으로 흐름이 전달되는 방식으로 일반적으로 이전 동작이 완료된 후에 다음 동작을 수행합니다. Activity Diagrams은 동작에 대한 흐름을 기술하지만 동작이 실행되거나 동작 사이의 제어가 전달되는 방식은 기술하지 않습니다.

위의 간단한 제어 흐름에서 초기 노드를 시작하여 동작 최종 노드까지 하나의 비즈니스 프로세스가 완료되는 것을 알 수 있습니다. 그 중 의사 결정 요소를 통해 조건에 대한 흐름이 분기가 되며, 병합 노드는 분기된 흐름을 병합하는 역할을 수행합니다.

 

5.1.3. 동시 흐름

동시 흐름은 동시에 동작하는 요소를 기술할 수 있습니다. 다음은 동시 흐름을 기술하는 다이어그램의 예 입니다.

 

처음의 분기 노드는 분기되는 요소에 대해 각 토큰을 생성하여 마지막 병합 노드에서 들어오는 각 토큰에 대해 동시 흐름을 단일 흐름으로 병합하게 됩니다.

"주문서"에 해당하는 신호 보내기 동작은 메시지의 신호를 보냅니다. "금액 지불" 이베트 적용 동작은 다음 동작을 계속하기 전에 메시지나 신호를 기다리는 동작을 수행합니다.

 

5.1.4. 데이터 흐름

데이터 흐름은 각 동작간에 데이터 흐름을 기술하게 됩니다. 다음은 데이터 흐름의 예 입니다.

 

 

위의 개체 노드는 흐름에 따라 전달되는 데이터를 의미 합니다. 이 개체 노드는 입력 핀과 출력 핀을 통해 데이터를 입력 받거나 작업의 처리에 대해 출력을 나타내며, 동작 매개 변수 노드는 동작에 의해 데이터를 생성하거나 받을 때 사용합니다.

 

5.2. UML Use Case Diagrams (사용 사례 다이어그램)

Activity Diagrams에 정의되는 시스템 내부적인 워크플로우나 업무/비즈니스 등을 정의하는 것이 초점이라면, Use Case Diagrams은 시스템이 구현할 업무/비즈니스 프로세스를 다루는 것이 다릅니다.

Use Case Diagrams은 어플리케이션 또는 사용자가 어플리케이션의 시스템으로 수행할 수 있는 작업에 대해 요약합니다. 특히 Use Case Diagrams은 사용자의 요구 사항을 기술하기 위한 중심 역할을 하게 됩니다. 하지만 이러한 요소 사항은 너무 자세하게 기술하지 않으며 별도의 다이어그램으로 세부적인 내용을 기술할 수 있습니다.

Use Case Diagrams을 사용하면 다음과 같은 이점이 있습니다.

  • 시스템이나 어플리케이션이 사용자/조직 또는 외부 시스템과 상호 작용하는 흐름의 이해가 쉽습니다.
  • 해당 행위자가 달성해야 하는 목표를 쉽게 이해할 수 있습니다.
  • 시스템의 범위를 이해할 수 있습니다.

 

5.2.1. Use Case Diagrams 만들기

 

  1. 메뉴의 아키텍처->새 다이어그램을 클릭합니다.

     

  2. 새 다이어그램 추가 창에서 "UML Use Case Diagrams"을 선택하고 확인 버튼을 클릭합니다.

 

Use Case Diagrams이 제공하는 도구 모음은 다음과 같습니다.

 

5.2.2. 행위자, 사용 사례, 하위 시스템

행위자, 사용 사례, 하위 시스템은 행위자가 하위 시스템에 참여하여 사용 사례를 만드는 예제입니다.

각 행위자인 고객, 레스토랑 중 고객은 레스토랑이 제공하는 음식점 시스템에 참여하게 됩니다. 레스토랑 행위자 또한 음식점 시스템에 참여하여 메뉴를 주문 받고, 고객 행위자에게 적절한 서비스를 제공한다는 사용 사례를 나타냅니다.

 

5.2.3. 사용 사례 구성

사용 사례 구성은 사용 사례 요소 간에 흐름이 연결되거나 상속, 포함, 아티펙트에 대한 예를 보여 줍니다.

 

일반 고객과 VIP 고객은 "일반화" 요소를 이용하여 상속을 구성합니다. 음식 주문은 음식 주문과 연관되는 사용 사례를 포함하도록 구성하였고, 메뉴 필터는 메뉴 선택 사례를 확장하고 메뉴 필터는 각 요리 필수사항과 요리법을 상속하게 됩니다.

그리고 사용 사례의 아티팩트는 다른 다이어그램이나 외부 링크를 제공합니다. 또는 솔루션 폴더에서 솔루션 항목을 드래그&드랍하게 되면 그 문서에 대한 아티팩트가 자동으로 생성합니다.

이러한 형태로 시스템을 작동하는 방법과 이 시스템과 교류하는 흐름을 나타내며, 구현 레벨의 좀 더 상위 고수준의 관계를 이해하는데 도움이 됩니다.

 

5.2.4. 시스템의 버전 정보 기술하기

시스템의 버전 정보를 기술하기 위해 단계적으로 기능 또는 사용자 측면의 사례를 기술할 수 있습니다.

아래와 같이 Release 1에서는 메뉴 주문 기능을 구현한다는 것으로 이해할 수 있습니다. 음식 주문을 위해 메뉴를 선택하고 주문을 완료하는 단순한 기능의 범위만 제공한다는 것을 알 수 있으며, 이는 설계자 외에 사용자도 명확하게 Release 1의 시스템을 이해할 수 있을 것입니다.

 

아래와 같이 Release 2에서는 기존의 메뉴 주문 기능을 포함하도록 기능을 확장한다는 내용이 포함이 됩니다. 점주에 의해 레스토랑의 메뉴와 레스토랑 관리 기능을 포함시켜 레스토랑의 시스템을 이용하여 메뉴를 선택하고 금액을 지불하거나 메뉴를 관리하는 범위임을 이해할 수 있습니다.

 

아래와 같이 Release 3에서는 기본적인 기능을 확장하고 모바일 디바이스를 통해 메뉴를 제공하는 시스템의 기능을 범위로 한다는 것을 알 수 있습니다.

이렇게 Use Case Diagrams을 이용하여 시스템의 버전 정보를 기술하기 위한 용도로 사용이 가능하며 이렇게 함으로써 점진적인 시스템 구축의 전체 윤곽을 이해 관계자 간에 이해하는데 많은 도움을 줄 수 있습니다.

 

5.2.5. 아티펙트의 문서를 열기 및 연결

아티펙트는 다양한 방법으로 연계되는 다이어그램 및 문서, 그리고 웹 문서 등을 포함시킬 수 있습니다. 다음은 여러 가지 방법으로 아티펙트를 연결하거나 추가하는 방법입니다.

  1. 아티팩트의 연결된 문서를 열려면?
    아티펙트의 요소에서 마우스를 두 번 클릭합니다.

  2. 솔루션에 포함된 문서를 아티펙트로 추가하려면?
    솔루션에 포함된 항목을 Use Case Diagrams으로 드래그&드랍합니다.

  3. Word 및 PowerPoint 문서를 추가하려면?
    아티펙트를 선택하여 속성 창에서 하이퍼링크 항목을 클릭하여 추가하고자 하는 문서를 찾아 선택합니다.


  4. HTTP/HTTPS 또는 공유 문서를 열려면?
  1. 아티펙트를 선택하여 속성 창에서 하이퍼링크를 선택합니다. "URL 또는 파일에 링크" 창에서 링크하고자 하는 HTTP/HTTPS 링크를 입력합니다. 만약 OneNote 의 공유 문서에 링크를 원하면 onenote:// 의 링크를 입력하면 됩니다.

 

5.3. UML Component Diagrams (구성 요소 다이어그램)

Component Diagrams은 소프트웨어 시스템의 각 구성 요소를 디자인할 수 있습니다. 시스템 구조에 따른 컴포넌트와 인터페이스를 확인하고 이들 컴포넌트간에 서비스의 동작을 이해하는데 중요한 역할을 합니다.

Component Diagrams을 이용하면 다음과 같은 이점이 있습니다.

  • 기존 디자인을 이해하거나 새로운 디자인을 하는데 용이합니다.
  • 시스템이 제공하는 인터페이스와 필요한 인터페이스가 잘 정의되면 구성 요소를 분리하여 개선하거나 변경에 쉽게 대처할 수 있습니다.

 

5.3.1. Component Diagrams 만들기

  1. 모델링 프로젝트에서 마우스 오른쪽 버튼을 클릭한 후, 추가->새 항목을 클릭합니다.

    2. 새 항목 추가 대화 상자에서 UML Component Diagrams을 선택하고 추가를 클릭합니다.
  1.  

Component Diagrams이 제공하는 도구 상자의 요소는 다음과 같습니다.

 

5.3.2. 음식점 Component Diagrams 만들기

간단하게 어떤 구성 요소가 필요한지 간단하게 다음과 같이 구성 요소를 배치 합니다. 주방 서버는 파트로 구성되어있습니다.

파트 구성 요소를 만들려면?

도구 상자에서 구성 요소를 클릭하고 디자인에 포함된 구성 요소 하나를 클릭합니다. 그러면 구성 요소 안에 파트가 아래와 같이 파트가 추가됩니다.

 

각 구성 요소간에 인터페이스 포트가 필요한데, 이 인터페이스 포트는 다른 구성 요소간의 흐름과 데이터를 표현하는데 사용합니다.

웹 브라우저 구성 요소는 필요한 인터페이스로 HTTP 인터페이스를 생성하였습니다. 음식점 웹사이트와 고객 웹 서비스의 제공된 인터페이스를 통해 웹 브라우저가 음식점 웹서비스에 접근할 수 있도록 구성합니다.

 

고객 웹 서비스는 필요한 인터페이스가 필요하며, 이 컴포넌트를 외부 시스템과 연결하기 위해 음식점 웹서비스도 지불 인증에 대한 필요한 인터페이스가 존재합니다. 고객 웹 서비스는 이 필요한 인터페이스를 통해 외부에서 결제 시스템을 제공하는 인터페이스로 연결하기 위해 이 필요한 인터페이스간에 위임을 통해 연결합니다.

 

고객 웹 서비스는 주방 서버가 제공하는 인터페이스가 필요합니다. 고객 웹 서비스에 필요한 인터페이스를 추가하고, 주방 서버는 제공된 인터페이스를 추가하여 이 둘 간에 파트 어셈블리를 이용하여 연결합니다. 연결된 파트 어셈블리는 구성 요소에 따라 다르게 구현될 수 있음을 의미하지만, 이 연결된 파트는 동일한 부모 구성 요소를 필요로 합니다.

주방 서버는 필요한 인터페이스로 주방작업 큐를 추가하여 주방 웹 사이트의 제공된 인터페이스를 위임을 통해 연결하여 주방 서버의 작업을 완료합니다.

 

5.4. UML Class Diagrams (클래스 다이어그램)

Class Diagrams은 컴포넌트 또는 어플리케이션의 내부적으로 사용하는 개체 정보에 대한 구조를 기술합니다. 데이터베이스 테이블이나 XML, 또는 개체의 관계를 표현할 수 있습니다. Class Diagrams은 데이터의 형식이나 관계를 구현 및 분리할 수 있습니다. Class Diagrams은 주로 논리적인 측면에 중점을 두어 정의합니다.

Class Diagrams을 이용하면 다음과 같은 이점이 있습니다.

  • 시스템 간에 전달되는 요소에 대한 구현과 독립적인 설명을 제공
  • 어플리케이션과 사용자 간의 통신에 사용되는 용어를 명확하게 정의

 

5.4.1. Class Diagrams 만들기


      1. 모델링 프로젝트에서 마우스 오른쪽 버튼을 클릭한 후, 추가->새 항목을 선택합니다.

      2. 새 항목 추가 대화 상자에서 "UML Class Diagrams"을 선택한 후 추가를 클릭합니다.

 

다음은 Class Diagrams의 도구 상자에서 지원하는 요소입니다.

 

5.4.2. 메뉴 및 주문 Class Diagrams

메뉴와 주문에 필요한 클래스를 도구 상자에서 끌어와 각 클래스를 만듭니다.

 

그리고 Menu와 MenuItem은 집합체로 구성하기 위해 Menu를 선택하고 에서 추가->집합체를 선택합니다.

 

집합체의 MenuItem을 Menu의 1:* 관계를 만들기 위해 MenuItem을 선택한 후 속성 창에서 "복합성"을 * 로 선택합니다. 그리고 탐색 가능을 False 로 설정하여 단방향 탐색이 가능하도록 합니다.

 

 

Menu와 Order 클래스간의 연결 관계를 만듭니다.

 

Order클래스는 연결 요소의 속성 창에서 복합성을 * 로 선택하고 탐색 가능을 False 로 설정합니다.

 

Menu클래스도 연결 요소의 속성 창에서 탐색 가능을 False 로 설정합니다.

 

다음은 위와 같은 방법으로 관계를 완성한 Class Diagrams 입니다.

 

이제 각 클래스에 속성과 메서드 등의 작업을 추가합니다. 메서드(작업)에 아래와 같이 임의로 정의한 매개 변수를 추가를 할 수 있습니다.

 

Order클래스의 DeleteItem을 선택한 후 속성 창에서 매개 변수를 클릭하여 대화 상자를 엽니다.

 

작업 매개 변수 컬렉션 편집기 대화 상자에서 매개 변수의 이름을 입력한 후 형식에서 MenuItem 형식을 선택하여 확인을 클릭합니다.

 

그럼 다음과 같이 MenuItem 형식의 매개 변수를 갖는 메서드를 추가할 수 있습니다.

 

다음은 완성된 메뉴 및 주문 Class Diagrams입니다.

 

5.5. UML Sequence Diagrams (시퀸스 다이어그램)

Sequence Diagrams은 클래스나 구성 요소, 인스턴스, 시스템 간의 메시지 동작의 순서를 나타내는 다이어그램입니다. 일반적으로 Sequence Diagrams은 위에서 아래로 시간적인 흐름을 갖고 있습니다. Sequence Diagrams의 수평선의 상호 작용 참가자 간의 이벤트를 나타냅니다.

Sequence Diagrams을 사용하면 다음과 같은 이점이 있습니다.

  • 구성 요소간의 작업이 진행되는 흐름을 쉽게 확인할 수 있습니다.
  • 어플리케이션에서 상호 작용을 어렵게 하는 패턴을 식별할 수 있습니다.

 

5.5.1. Sequence Diagrams 만들기

      1. 모델링 프로젝트의 항목에서 마우스 오른쪽 버튼을 클릭하여 추가->새 항목을 선택합니다.

      2. 새 항목 추가 대화 상자에서 "UML Sequence Diagrams"을 선택하고 추가를 클릭합니다.

 

다음은 Sequence Diagrams이 제공하는 대화 상자의 요소입니다.

 

5.5.2. 음식 제공 서비스 Sequence Diagrams

우선 각 메시지 이벤트를 송수신하는 주체인 참가자를 추가해야 합니다. 도구 상자의 수평선을 이용하여 세 개의 참가자를 추가합니다.

비동기 요소를 이용하여 알 수 없는 특정 메시지를 고객 타임라인에 추가 합니다.

손님이 주문을 하기 위해 주문 타임라인에 주문에 대한 메시지를 보내야 합니다.

비동기 메시지를 통해 주문 타임라인에 주문한 내용을 추가하는 메시지를 보냅니다.

주문을 받으면 메뉴 관리자에게 주문 내역이 요리 가능한지 확인을 하는 동기 메시지를 보내고, 메뉴 관리자는 메시지의 응답을 기다리는 호출자에게 어떤 메시지를 콜백합니다. 그럼 주문 타임라인은 그 주문에 대해 최종적으로 정리 작업을 진행하고 주문을 하기 위한 모든 작업을 완료 합니다.

여러 개의 주문에 대해 처리를 할 경우 주문 추가 비동기 메시지부터 루프 코드를 감싸도록 합니다.

 

그리고 루프 코드의 가드를 이용하여 루프가 벗어나게 되는 조건을 기술해 줍니다.

 

주문에 대한 루프 작업이 완료되었다면, 루프가 완료되는 시점의 상호 작용 요소를 추가합니다.

 

상호 작용 요소는 다른 다이어그램과 연결할 수 있는 요소입니다. 현재 Sequence Diagrams과 연결된 새로운 시퀸스를 만들려면 "새 시퀸스 만들기"를 선택합니다. 새로운 시퀸스 만들기를 선택하면 새로운 Sequence Diagrams 파일이 생성이 됩니다.

또는 시퀸스에 연결을 선택하면 이미 존재하는 Sequence Diagrams과 연결을 할 수 있습니다.

 

마지막으로 비동기 메시지를 이용하여 재고 및 매출 업데이트 메시지를 보내고, 시퀸스는 종료됩니다.

 

 

5.6. Layer Diagrams (레이어 다이어그램)

Layer Diagrams은 시스템의 논리적인 아키텍처를 시각화할 수 있습니다. Layer Diagrams은 물리적인 아티펙트를 논리적인 추상 그룹으로 구성합니다.

Layer Diagrams은 논리적인 아키텍처를 시각화하는 것 이외에, 실제 Visual Studio에서는 동작하는 코드와 논리적 아키텍처간의 충돌을 검사하기도 합니다. 시스템을 리팩토링하거나 업데이트 시에 변경에 미치는 영향을 분석하며 체크인 또는 빌드 작업에 충돌에 대한 유효성을 검사하도록 하여 기존의 계획을 강화할 수 있는 방법으로 사용할 수 있습니다.

 

5.6.1. Layer Diagrams 만들기

      1. 솔루션 탐색기의 모델링 프로젝트에서 마우스 오른쪽 버튼을 클릭하여 추가->새 항목을 선택합니다.

      2. 새 항목 추가 대화상자에서 Layer Diagrams을 선택하고 추가를 클릭합니다. 


Layer Diagrams은 도구 상자에 다음과 같은 요소를 제공합니다.

 

5.6.2. Layer Diagrams

Layer Diagrams으로 논리적인 3-tier 어플리케이션을 다음과 같이 구성할 수 있습니다.

 

각 레이어에 종속되는 레이어를 추가 하기 위해서 레이어를 선택하여 마우스 오른쪽 버튼을 클릭한 후 추가->레이어를 선택하여 종속된 레이어를 추가할 수 있습니다.

 

다음은 완성된 Layer Diagrams의 예입니다.

 

5.6.3. 코드와 Layer Diagrams 연동

실제 물리적인 코드와 Layer Diagrams 간의 연관 관계를 만들어 아키텍처를 분석하고 유효성을 검사할 수 있습니다.

  1. 솔루션 안에 간단한 논리적인 3 tier 를 구현한 프로젝트를 각 레이어에 맞게 드래그&드랍 합니다.

     

  2. 각 레이어에 추가된 프로젝트의 개수가 표시되는지 확인합니다.

     

  3. 레이어 탐색기에 추가된 프로젝트가 존재하는 것을 확인할 수 있습니다.

     

  4. 레이어 디자이너에서 마우스 오른쪽 버튼을 클릭하여 "아키텍처 유효성 검사"를 클릭합니다.


    5. 출력 창에 아키텍처 유효성 검사 결과가 표시됩니다.

     

5.6.4. 네임스페이스로 실제 코드의 유효성 검사

  1. 레이어를 선택하여 속성 창을 확인합니다.

     

  2. 사용할 수 없는 네임스페이스 또는 사용할 수 없는 네임스페이스 종속성에 적절한 네임스페이스를 입력합니다.

  3. Layer Diagrams에서 마우스 오른쪽 버튼을 클릭하여 아키텍처 유효성 검사를 클릭합니다.

     

  4. 출력 창에 아키텍처 유효성 검사 결과가 표시됩니다.

 

5.6.5. 명령 프롬프트로 유효성을 검사

Visual Studio에서 명령 프롬프트를 이용하여 빌드를 수행할 때 Layer Diagrams의 아키텍처 유효성을 검사할 수 있습니다.

이 방법을 이용하면 개발 도구가 없는 경우, 그리고 Team Foundation의 Team Build 시 아키텍처 유효성을 검사할 때 유용하게 사용할 수 있습니다.

 

5.6.5.1. MSBUILD 명령 프롬프트로 아키텍처 유효성을 검사하려면?

Visual Studio명령 프롬프트를 실행한 수 다음과 같이 MSBUILD 명령 옵션으로 모델링 프로젝트의 아키텍처 유효성을 검사합니다.

C:\> msbuild <FilePath+ModelProjectFileName>.modelproj /p:ValidateArchitecture=true

 

또는 전체 솔루션 중 모델링 프로젝트의 아키텍처 유효성을 검사하려면 다음과 같이 솔루션 파일을 입력한 후 옵션을 지정합니다.

C:\> msbuild <FilePath+SolutionName>.sln /p:ValidateArchitecture=true

 

 

5.6.5.2. Team Foundation 의 Team Build로 아키텍처 유효성을 검사하려면?

Team Foundation 의 Team Build에서 아키텍처 유효성을 검사하려면 다음과 같은 방법으로 MSBUILD 옵션을 지정해 줄 수 있습니다.

  1. 팀 프로젝트를 연결하고 아키텍처 유효성을 검사할 빌드 항목을 선택한 후 빌드 정의 편집을 선택합니다.

     

  2. 프로세스 탭으로 이동한 후 3. 고급 탭으로 이동한 후 MSBUILD 인수 항목에 /p:ValidateArchitecture=true 인수를 입력한 후 저장합니다.


Posted by 땡초 POWERUMC

댓글을 달아 주세요

본 아티클은 MSDN 에 eBook으로 공개된 문서를 블로그 아티클로 편집하였습니다. VSTS 팀블로그에 의해 작성된 문서의 원문 및 여러 가지 기술 문서는 아래의 링크에서 PDF로 다운로드 받을 수 있습니다. 그리고 본문의 특정 버전을 지칭하는 개발툴 버전 번호는 모두 Visual Studio로 변경되었음을 참고하십시오. (예- Visual Studio 20xx는 Visual Studio로 표기함 )

VSTS 팀블로그 MSDN 기술 문서 : http://msdn.microsoft.com/ko-kr/gg620748 

필자 소개

Microsoft Visual Studio ALM MVP 엄준일
http://blog.powerumc.kr

 

Visual Studio Korea Team Blog
http://vsts2010.net

감수 : 강성재 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

   

도움주신 분 : 김남영 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

   

[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 1/7 - 들어가기에 앞서...
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 2/7 - 왜 모델링인가?
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 3/7 - 모델링의 표기
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 4/7 - 모델링 다이어그램
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 5/7 - Visualization & Features Pack
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 6/7 - 모델링 확장 (SDK)
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 7/7 - 결론 및 저자 소개

 

4. 모델링을 하기 앞서

다음 회차에서 Visual Studio 모델링을 배우기 앞서, 많은 개발자들은 모델링을 어떻게 시작하면 좋은지에 대해 고민을 하시는 분들도 많습니다. 모델링의 목적이 복잡하고 추상적인 것으로부터 명확하게 요소를 구분하여 표현하는 것이긴 하지만, 무엇을 명확하게 표현해야 할 지도 고민해야 할 부분 입니다.

예를 들어, 구현을 하기 위해 모델링을 하는 것인지… 아니면 그 상위 시스템과 비즈니스 워크플로우를 명확하게 하고자 하는 것인지… 모델링이라는 도구를 잡는 사람들마다 그 목적이 다르고 사용하는 방법도 다를 것이라고 생각합니다.

한 가지 UML에 대해 잠깐 동안 되집어 생각해 볼 것이 있습니다. 왜 UML 이 성공했는가? 라는 물음입니다. UML이 추구하고자 했던 것은 UML 을 이용하여 소프트웨어를 설계하거나 객체지향적인 설계에 등의 어떠한 노하우도 포함시키지 않았습니다. 다시 말해, UML은 [모델의 표기 방법]만을 규정하였습니다.

어떠한 소프트웨어를 만들던지 그 소프트웨어에 포함되는 구성요소나 설계가 완전히 틀릴 수 있지만, UML을 이용하여 표기법이 통일 된다면 이해 관계자간에 의사소통은 쉬워질 것입니다.

다음 회차에서 다룰 모델링의 표현 방법 등은 잠시 뒤로 미루고 무엇을 모델링할 것인지에 대해 먼저 함께 고민해야 할 것 같습니다.

 

4.1. 모델링의 관점 및 측면

모델러(모델링의 하는 주체)는 어떤 관점과 어느 측면을 바라보고 다양한 방법으로 모델링을 할 수 있습니다. 이런 모델러의 관점과 측면을 이해할 수 있다면 정확하게 정보를 전달할 수 없을지도 모릅니다.

 

모델러가 생각하는 관점과 측면으로 올바르게 모델링의 정보가 전달되지 않는다면, 위와 같은 그림을 해석은 매우 달라질 수 있을 것입니다. 마치 착시현상을 일으키는 것처럼, 오히려 잘못된 정보로 논쟁의 대상이 될 수 도 있기 때문입니다. 그렇기 때문에 모델러는 자신의 의도를 명확하게 모델링 하는 것이 좋습니다.

 

모델링은 다양한 측면으로 나뉠 수 있지만, 아래와 같이 4개로 정의하기도 합니다.

  • 정적인 측면
    단지 오브젝트들의 구조적인 관계를 나타냅니다. 정적인 측면은 이름에서도 알 수 있듯이 시간적인 흐름은 전혀 포함되지 않습니다.

  • 기능적인 측면
    시스템이 할 수 있는 행동적인 것을 표현하고자 합니다.

  • 동적인 측면
    오브젝트가 시간의 흐름이나 이벤트에 의해 어떻게 상태가 변화해 가는지에 대해 나타냅니다.

  • 물리적인 측면
    시스템이 동작하기 위해 필요한 물리적인 것들을 나타냅니다. 서버나 데이터베이스 간의 관계를 어떻게 기술 할지에 대해 나타내기도 합니다.

 

그리고 모델링을 하려는 관점이 있을 수 있습니다. 이는 보통 "관점(Perspective)" 또는 "레벨(Level)" 이라고 부르기도 합니다. 이러한 관점은 추상화 정도에 따라서 3가지로 구분을 합니다.

  • 개념적 관점
    개념적인 관점은 구현 등의 영역을 전혀 고민하지 않은 채, 실질적인 큰 범위의 영역을 해석하는 관점입니다. 범위에 포함되는 여러 가지 문제를 깊이 있게 이해하는 것이 목적입니다.

  • 사양적 관점
    사양적 관점은 문제를 해결하여 완성시키기 위해 필요한 기능 등을 효과적으로 이행할 수 있는 방안을 찾기 위한 관점입니다.

  • 구현적 관점
    구현적 관점은 사양적 관점에서 고안된 방안을 실질적으로 구현하기 위한 관점에서 작성합니다.

 

이러한 관점은 완벽히 독립적인 것은 아닙니다. 필요에 따라 사양적 관점/구현적 관점이 동시에 진행될 수 있습니다.

위와 같은 모델링의 관점과 측면은 개개인에 따라서, 또는 모델링에 참여하는 사람에 따라서 전혀 목적이 일치하지 않을 수 있는 문제가 있습니다. 그렇기 때문에 모델링 이전에 정확하게 목적을 설정하고 개념적 관점의 모델을 작성하는 것이 올바른 시작이라고 할 수 있습니다.

 

4.2. 모델의 표기 방법

기본적으로 모델링을 하기 위해 모델을 표현하는 공통적인 표기법을 알아보겠습니다. 매우 기본적이고 공통적인 표기 방법이므로 모델링에 들어가기 앞서 가장 중요한 부분이기도 합니다. 기본적인 모델링의 표기 방법을 알아야 모델을 통해 전달하고자 하는 메시지를 최소한 이해할 수 있을 것입니다.

4.2.1. 공통적인 표기 방법

공통적인 표기 방법의 기본적인 도형은 4가지 입니다. 즉, 이 4가지만 알면 UML 다이어그램을 읽는 것이 한결 쉽겠지요.

  1. 주석(Comment)

    제약 조건이나 주석이나 정보를 표시하는데 사용하는 기호입니다. 이 기호는 한쪽 귀퉁이가 접혀진 직사각형을 사용합니다. 특정한 모델의 요소와 연관이 되는 주석인 경우 점선으로 연결 됩니다.

     

  2. 패키지

    모델 요소들을 하나로 묶어주는 것으로 폴더 아이콘과 유사하게 표시됩니다. 비슷한 요소의 집합이나 연관성이 있는 요소들을 묶어주는 역할로 주로 사용하기도 하지만, Use Case Diagram 등에서 하위 패키지나 하위 시스템 등을 표현할 때 사용하기도 합니다.

     


    3. 의존 관계

  3. 모델 요소간의 의존 관계를 표기하는 방법으로 사용이 됩니다. 모델 요소가 다른 모델의 내부를 알고 있다거나 의존의 방향을 나타내는데 사용합니다.

    아래와 같은 속이 비었는지 색이 채워졌는지에 따라서 Aggregation(집합체) 인지 Composition(합성) 관계인지 알 수 있습니다. 예를 들어, Composition(합성) 관계는 Class1의 정보가 소멸될 때 Class2의 정보도 함께 소멸되는 것을 미리 짐작할 수 있습니다.

     

4.2.2. 표기 방법의 확장

UML에서는 표기 방법을 확장할 수 있는 많은 장치들이 존재합니다. 이런 표기 방법의 확장은 모델링을 좀 더 정확하게 세세하게 정의할 수 있으며, 확장 표기 방법을 통해 유효성을 검증할 수 있는 수단이 될 수 있습니다.

그 중 가장 많이 사용되는 한 가지를 소개할 예정이며, 이것을 아느냐 모르느냐는 모델링의 퀄리티에 큰 차이가 있을 수 있습니다. 그 밖에 Constrains(제약) 도 모델 요소 간의 성립 관계를 나타낼 수 있습니다.

  1. Stereotype(스테레오 타입)

    모델 기호의 의미를 새롭게 재정의 하는 방법으로 Stereotype을 사용할 수 있습니다. 기존적인 Stereotype 은 <<type>>, <<interface>>, <<implementation>> 등이 있으며, 이런 Stereotype을 요구사항에 따라 새롭게 정의할 수 있습니다.

 

Posted by 땡초 POWERUMC

댓글을 달아 주세요

본 아티클은 MSDN 에 eBook으로 공개된 문서를 블로그 아티클로 편집하였습니다. VSTS 팀블로그에 의해 작성된 문서의 원문 및 여러 가지 기술 문서는 아래의 링크에서 PDF로 다운로드 받을 수 있습니다. 그리고 본문의 특정 버전을 지칭하는 개발툴 버전 번호는 모두 Visual Studio로 변경되었음을 참고하십시오. (예- Visual Studio 20xx는 Visual Studio로 표기함 )

VSTS 팀블로그 MSDN 기술 문서 : http://msdn.microsoft.com/ko-kr/gg620748 

 

필자 소개

Microsoft Visual Studio ALM MVP 엄준일
http://blog.powerumc.kr

 

Visual Studio Korea Team Blog
http://vsts2010.net

감수 : 강성재 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

   

도움주신 분 : 김남영 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

 

[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 1/7 - 들어가기에 앞서...
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 2/7 - 왜 모델링인가?
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 3/7 - 모델링의 표기
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 4/7 - 모델링 다이어그램
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 5/7 - Visualization & Features Pack
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 6/7 - 모델링 확장 (SDK)
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 7/7 - 결론 및 저자 소개


3. 모델링 시작하기

 

3.1. 모델링인가?

일반적으로 UML이라고 하면 Unified Modeling Language(통합 모델링 언어)라고 부르는 소프트웨어 공학의 표준화된 언어를 일컫는 용어입니다. 과거 1980년과 1990대 사이에 많은 객체 지향 모델링 기법이 생겨났었지만, 여러 사람들에 의해 다양한 모델링 기법과 표기법을 사용하였으며 어플리케이션을 위한 모델링, 또는 데이터베이스만을 위한 모델링 등 특정한 목표에 의해 사용되어 왔습니다.

1990년대 중반 Rational Software에서 여러 가지 노력 끝에 모델링 방법(Unified Method) 버전 0.8을 내놓았고 그 이후 컨소시엄 형태로 여러 기업이 합류하게 되었습니다. 이들은 1997년에 UML(Unified Modeling Language)로 이름을 바꾼 버전 1.0을 OMG 에 제출하면서 지속적으로 UML을 이끌어 왔습니다.

 

 

참고 : http://en.wikipedia.org/wiki/Unified_Modeling_Language

 

이전에는 여러 가지 독립적인 표기법을 사용했던 것과 달리, UML은 많은 업체 전문가들, 소프트웨어 개발 회사 등이 함께 만들어 오면서 소프트웨어 개발을 위한 전세계적인 표준 언어 모델링 역사가 시작된 것입니다.

모델링은 어떤 다이어그램을 선택하느냐에 따라서 그 내용과 추상화 정도가 달라지게 되지만, 일반적으로 어떤 특정한 개체를 나타내고자 할 때, 그리고 어떤 디자인(목표)를 정의할 때, 목표에 대한 예시(예제)등을 표현할 때 매우 적절하기도 합니다.

 

일상생활에서도 이러한 모델링 속에 우리가 살고 있다고 해도 과언이 아닙니다. 지하철 운행 정보와 지하철 노선도, 자동차 운전시에 네비게이션, 체계적으로 교통을 통제하는 신호등 같은 것들이 대표적이기도 합니다. 이런 생활 속의 모델링은 직접적으로 나에게 어떤 작용을 하는 것은 아니지만, 이러한 모델들은 나에게 의사 소통을 도와주고, 복잡한 것들은 단순화 시켜줍니다.

 

 

3.2. 모델링을 해야 하는가?

아래와 같이 초등학교 교과서에 나올법한 전기 도면이 있습니다. 스위치를 누르면 불이 들어오는 도면입니다.

사실 위와 같은 간단한 전기 도면은 도면 자체로써 크게 가치가 없을지도 모릅니다. 하지만 더 복잡한 전기 도면은 실제로 도면을 통해 시뮬레이션을 하여 큰 오류를 미리 알아낼 수 있기도 합니다. 아래와 같은 표기법 등은 공통된 이해 관계자간에 어떻게 회로가 설계 되었는지, 어떻게 작동하는지 쉽게 이해할 수 있는 것입니다.


다음과 같은 악보도 마찬가지 입니다. 이 악보는 음악을 어떻게 표현하는지에 대한 표기법으로 구성되어 있습니다. 음악의 느낌과 연주 방법을 말로 하는 것보다 아래의 악보를 통해 연주자는 어떻게 연주를 해야 하는지 일관성 있게 알려줄 수 있는 표기법입니다.


 

우리가 모델링을 해야 하는 것도 이런 이유들과 크게 다르지 않습니다. 단순한 기능, 요구 사항의 구현에서는 이와 같은 모델링이 필요하지 않을 수 있겠지만, 이런 기능 명세나 요구 사항, 그리고 시스템, 아키텍처적인 측면에서는 완성되기 이전에 올바르게 그 목표를 정의하고 이해하는지 소통할 수 있는 방법은 모델링이라는 것입니다.

이러한 모델링은 여러 이해 관계자나 업무의 형태에 따라 매우 효과적으로 이용될 수 있습니다.

업무적인 측면에서 모델링은 업무의 프로세스를 표현하거나 이해하는데 매우 도움이 됩니다. 업무의 흐름에서 각 작업의 흐름을 파악할 수 있으며, 전체적으로 나와 관련되는 조직 체계를 이해하는데 효과적입니다.

아키텍처 측면에서 모델링은 구축하고자 하는 시스템의 추상화된 이해와 다른 연계 시스템과의 데이터나 연계적인 흐름을 정의하여 시스템 관리자 및 설계자, 개발자 간에 의사 소통에 용이합니다.

어플리케이션 측면에서 모델링은 시스템 자체에서 동작되는 방식을 정의하여 추상화된 아키텍처를 저수준에서 이해하는데 효과적입니다.

데이터베이스 측면에서 모델링은 데이터베이스에서 데이터의 구조를 정의하고 어플리케이션과 어떻게 교류하는지에 대해 이해하는데 효과적입니다.

 

 

3.3. 모델링을 위해 어떤 다이어그램이 있는가?

UML은 구조 다이어그램(structure diagram)과 행동 다이어그램(behavior diagram) 이라는 두 가지의 기본적인 다이어그램을 포함합니다. 구조 다이어그램은 시스템의 정적인 구조를 나타냅니다. 다양한 구조 다이어그램들은 다음과 같습니다.

  • Class diagram(클래스 다이어그램)은 UML 모델링에서 사용되는 가장 일반적인 다이어그램으로 시스템, 그 구조 그리고 그들의 상호 관계 내에 존재하는 정적인 것을 나타냅니다. 시스템의 논리적 및 물리적 설계를 나타내는 데 주로 사용됩니다.
  • Component Diagram(컴포넌트 다이어그램)은 컴포넌트집합 내의구성과 의존관계를 보여줍니다. 구현되는 시스템과 시스템 내에서 부품들이 어떻게 상호 작용하는지를 보여줍니다.
  • Object Diagram(개체 다이어그램)은 시스템 내의일련의 개체들 사이의 관계를 보여 주는데, 특정시점에 시스템의 스냅샷을 보여줍니다
  • Deployment Diagram(배치 다이어그램)은 물리적 시스템의 실행 시점의 아키텍처를 보여줍니다. 배치 다이어그램은 하드웨어와 이 하드웨어 내에 있는 소프트웨어의 설명을 포함할 수 있습니다.

 

UML 2.0은다음과 같은 구조 다이어그램을 추가되었습니다.

  • Composite Structure Diagram(복합체 구조 다이어그램)은 모델링 요소들의 내부적 구조를 보여줍니다.
  • Package Diagram(패키지 다이어그램)은 패키지 사이의 의존 관계를 나타냅니다. (패키지는 다른 모델 요소들을 그룹화하는데 사용되는 모델 요소입니다).

Behavior Diagram (행동 다이어그램)은 시스템 내 요소들의 동적인 행동을 나타냅니다. 다양한 행동 다이어그램들은 다음과 같습니다.

  • Activity Diagram(활동 다이어그램)은 시스템 내의 활동들의 흐름을 보여준다. 여러 업무 프로세스들을 설명하는데 자주 사용됩니다.
  • Use Case Diagram(사용 사례 다이어그램)은 시스템이 구현할 업무 프로세스를 다룹니다. Use Case Diagram은 시스템이 작동하는 방법과 시스템과 교류하는 사람들을 나타냅니다.
  • Statechart Diagram(상태 다이어그램)은 개체의 상태와, 이 개체가 상태들 사이를 어떻게 전이하는지 보여줍니다. 상태 다이어그램은 상태, 전이, 이벤트, 그리고 활동을 포함할 수 있습니다. 상태 다이어그램은 동적 뷰를 제공하며, 이벤트 중심의 행동을 모델링할 때 매우 중요하죠. 예를 들어, 전화 교환 시스템 내의 스위치를 나타내기 위해 상태 다이어그램을 사용할 수 있습니다. 이 스위치는 여러 이벤트들에 기초하여 상태를 바꾸며, 어떻게 이 스위치가 작동하는지를 이해하기 위해 상태 다이어그램에서 이 이벤트들을 모델링할 수 있습니다. UML 2.0에서는 State Machine Diagram(상태 기계 다이어그램)이라고 합니다.
  • Collaboration Diagram(협력 다이어그램)은 Sequence Diagram(순차 다이어그램) 처럼 Interaction Diagram(교류 다이어그램)의 일종입니다. 협력 다이어그램은 개체들이 어떻게 협력하고 교류하는지를 강조합니다. UML 2.0 에서 협력 다이어그램과 대등한 것은 Communication Diagram(통신 다이어그램)입니다.
  • Sequence Diagram(순차 다이어그램)은 또 다른 종류의 교류 다이어그램입니다. Sequence Diagram은 시스템의 다른 요소들 사이의 메시지들의 시간 순서를 강조합니다.

UML 2.0은 다음과 같은 행동 다이어그램을 추가합니다.

  • Timing Diagram(타이밍 다이어그램)은 또 다른 종류의 교류 다이어그램이다. 세부 타이밍 정보와, 교류하는 요소들의 상태 또는 조건 정보에 대한 변경 사항을 나타냅니다.
  • Interaction Overview Diagram(교류 개요 다이어그램)은 Interaction Sequences(교류 순차)들 사이의 제어 흐름에 대한 개요를 보여주는 데 사용되는 고수준의 다이어그램입니다.

 

3.4. Visual Studio 모델링 지원

Visual Studio부터 지원하는 모델링은 다음과 같은 제품에서 지원합니다. 더 자세한 내용은 Visual Studio 제품 페이지를 참고하십시오. (http://www.microsoft.com/visualstudio/ko-kr/products)

Visual Studio버전의 모델링은 현재 UML 2.0 기준의 13가지의 모든 다이어그램을 제공하지 않습니다. Visual Studio에서 제공하는 다이어그램은 다음과 같습니다.

  • UML Activity Diagrams
  • UML Use Case Diagrams
  • UML Sequence Diagrams
  • UML Class Diagrams
  • Layer Diagrams

 

제품 기능

Professional
(MSDN Essentials
포함)

Professional
(MSDN
포함)

Premium
(MSDN
포함)

Ultimate
(MSDN
포함)

Test Professional
(MSDN
포함)

아키텍처 모델링

아키텍처 탐색기

   

 

UML® 2.0 규격 다이어그램(활동, 사용 사례, 시퀀스, 클래스, 구성 요소)

   

 

Layer Diagrams 종속성 유효성 검사

   

 

읽기 전용 다이어그램(UML, 레이어, DGML 그래프)

  

  

 

 

3.5. 모델링 프로젝트 생성

Visual Studio에서는 모델링을 위한 프로젝트 형식을 지원해 줍니다. 모델링 프로젝트 형식은 여러 가지 다이어그램을 만들 수 있는 아이템 템플릿을 제공을 해줍니다. 우리가 다이어그램을 만들기 전에 먼저 모델링 프로젝트를 어떻게 만드는지 아래의 단계를 따라 하면서 살펴봅시다.

 

모델링 프로젝트를 생성하기 위해 Visual Studio을 실행합니다.

  1. 파일->새로 만들기-> 프로젝트를 선택합니다.

     

  2. 프로젝트 템플릿에서 "모델링 프로젝트"를 선택하고, 프로젝트의 이름과 솔루션 이름을 입력하고 확인 버튼을 클릭합니다.

     

  3. 솔루션 탐색기에 모델링 프로젝트가 생성된 것을 확인합니다.

 

모델링 프로젝트를 정상적으로 생성이 완료가 되었다면 이제부터 모델링을 할 수 있는 환경이 모두 완료되었습니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 박대식 2012.08.02 14:29 Address Modify/Delete Reply

    좋은 글 잘 읽었습니다.
    한 가지 아는 척 좀 할게요. ^^
    UML에는 Layer Diagram이 없죠. 그래서, 글 중에 VS 2010이 제공하는 UML 다이어그램 목록에서 Layer Diagram 대신 UML Component Diagram이 들어가야 할 것 같습니다.
    앞으로도 좋은 글 부탁 드립니다.

    • 땡초 POWERUMC 2012.08.03 00:08 신고 Address Modify/Delete

      아하 좋은 지적 감사합니다.
      다만, 제가 Layer Diagram의 접두어에 UML을 붙이지 않은 이유가 박대식 수석님께서 말씀하신 이유 때문이랍니다.
      오해의 소지가 있었네요 ^^

본 아티클은 MSDN 에 eBook으로 공개된 문서를 블로그 아티클로 편집하였습니다. VSTS 팀블로그에 의해 작성된 문서의 원문 및 여러 가지 기술 문서는 아래의 링크에서 PDF로 다운로드 받을 수 있습니다. 그리고 본문의 특정 버전을 지칭하는 개발툴 버전 번호는 모두 Visual Studio로 변경되었음을 참고하십시오. (예-Visual Studio 20xx는 Visual Studio로 표기함)

VSTS 팀블로그 MSDN 기술 문서http://msdn.microsoft.com/ko-kr/gg620748 


필자 소개

Microsoft Visual Studio ALM MVP 엄준일
http://blog.powerumc.kr


Visual Studio Korea Team Blog
http://vsts2010.net

감수 : 강성재 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

 

도움주신 분 : 김남영 부장
한국마이크로소프트 개발자 및 플랫폼 사업 총괄

  

[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 1/7 - 들어가기에 앞서...
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 2/7 - 왜 모델링인가?
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 3/7 - 모델링의 표기
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 4/7 - 모델링 다이어그램
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 5/7 - Visualization & Features Pack
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 6/7 - 모델링 확장 (SDK)
[Enterprise Architecture/Architecture] - 개발자도 알아야 할 응용 프로그램 모델링 7/7 - 결론 및 저자 소개

 


1. 들어가기에 앞서…

문서는 모델링의 기본적인 이해와 더 나아가 어플리케이션이나 기능을 Visual Studio 통합 개발 도구로 어떻게 만들어 나가는지 여러분들에게 보여주며 개발자를 대상으로 하는 문서입니다. 모델링이 어렵거나 모델링 작업이 매우 비효율적인 작업이라고 느끼셨던 분들은 문서에서 각 UML 다이어그램의 완성된 모델링을 통해 얼마나 더 이해하기 쉬운지 관전 포인트를 두는 것도 나쁘지 않을 것입니다. 더 나아가 명세서라는 글로 표현되는 모든 것들은 주로 사용하는 용어나 지식, 문장의 흐름에 따라 이해하기 힘들기도 하지만, UML 다이어그램을 통해 여러 사람들과 오해의 소지 없이 올바른 소통이 가능한지도 관전 포인트를 두는 것도 좋습니다.

Visual Studio 통합 개발 도구는 여러분이 개발하기 쉬운 환경을 제공해 주지만, UML 다이어그램 기능으로 여러분들의 개발/설계 능력과 생각의 폭을 한껏 높여줄 것이라 믿어 의심치 않습니다. 혹시 독자 여러분들이, '모델링은 나와 거리가 멀어!', '모델링은 관심 없어' 라고 느끼시는 분들은 특히 관심 있게 보시길 부탁 드리며, 좀 더 개발을 잘 하기 위해 안내해 드리는 백서임을 다시 한번 강조 드립니다.

자! 이제 Visual Studio 응용 프로그램 모델링 완전 정복 백서를 함께 시작해 봅시다.

 

2. Visual Studio Visualization & Modeling 개요

 

2.1. 통합 개발 환경

일반적으로 Visual Studio와 같은 도구를 일컬어 통합 개발 환경(IDE-Integrated Development Environment)이라고 부르며, 최근에는 대부분의 언어적/플랫폼적인 환경에서 이러한 통합 개발 환경의 도구를 지원해 주고 있습니다. 이것은 단순히 개발을 하기 위한 도구가 필요한 것을 넘어 개발자 친숙한 도구와 다양한 어플리케이션의 개발에 필수적인 요소라고 할 수 있습니다.

최근 Visual Studio은 통합 개발 환경을 넘어 어떻게 초기에 설계를 잘 할 것이며, 테스트와 릴리즈를 잘 할 수 있도록 많은 부분을 지원해 주기도 합니다. 개발 영역뿐만 아니라 그 외적인 생산성/협업성/품질관리 등 Visual Studio는 다른 통합 개발 도구에 비해 굉장히 진보하였으며, 점차적으로 개발 도구는 이러한 추세로 더욱 발전하리라 의심치 않습니다.

 

2.2. 개발 프로세스 속의 모델링

어떤 프로젝트를 할 때 얼마나 설계에 비중을 둘 것인지는 매우 중요한 문제입니다. 전체 일정이 6개월일 때 에서 요구사항과 현황을 분석하고 설계를 하는 기간을 3개월로 잡는다면, 실제로 구현을 할 기간은 나머지 3개월 밖에 없습니다. 하지만, 초기에 좀 더 잘 설계를 하는 것이 구현에 이점이 되기도 하지만, 실제로 구현과 테스트, 릴리즈, 그리고 인수인계(또는 서비스 되는 시점) 등 초기 설계에 많은 시간을 투자하여 정작 제대로 동작하는 소스 코드 산출물이 제때 나오지 못할 수 있습니다. 반대로, 초기 요구사항과 현황 분석 및 설계를 1개월의 일정으로 잡는다면 막상 구현은 제대로 설계가 되지 않은 문제로 원하는 어플리케이션의 결과를 얻기 힘들 수 있으며, 그 개발 과정은 제대로 컨텍스트 공유가 되지 않아 많은 불화음이 발생할 수 있을 것입니다.

특히 분석-설계-개발의 과정 동안 설계되는 다양한 문서와 모델링은 실제로 각 단계별로 생산적으로 도움이 되는 경우는 매우 드물기도 합니다. 우리 나라의 SI 와 같은 프로젝트의 특성상 인력의 이동이 매우 빈번하게 일어나기도 하며, SI 프로젝트가 아니더라도 분석/설계 인원이 개발까지 적극적으로 참여하여 올바른 어플리케이션의 개발에 도움이 되는 경우도 드물기도 합니다.

즉, 소프트웨어는 설계-분석도 중요하지만 어떻게 잘 개발할지에 대한 고민도 필요합니다. 설계자는 개발자가 잘 이해하고 설계를 이행할 수 있는 모델이 필요하며, 개발자는 모델을 올바르게 이해하고 직/간접적으로 개발에 도움이 되는 그런 모델을 추구합니다. 기존의 많은 통합 개발 도구는 개발에 필요한 기능을 통합하였을 뿐, 이러한 각 역할간의 통합이 매우 부족했던 것이 사실입니다.

Visual Studio의 모델링 기능은 이런 여러 가지 괴리감을 상당히 좁혔습니다. 모델링을 통해 서로가 이해할 수 있는 다양한 형태의 UML 다이어그램을 제공하고 있으며, 여러 가지 UML 다이어그램은 그저 감상용이 아닌, 개발자가 사용할 수 있는 코드로 변환이 되거나, 의도대로 코드를 작성하는데 도움이 됩니다.


Posted by 땡초 POWERUMC

댓글을 달아 주세요

본 글을 월간 마이크로소프트 2012년 5월호 특집 기사로 다루어진 내용입니다. Visual Studio 11이 Visual Studio 2012로 변경됨에 따라 본문의 내용을 일부 수정하였습니다. 


[월간 마이크로소프트 5월호 특집기사] Windows 8 시대를 준비하는 Visual Studio 2012
[월간 마이크로소프트 5월호 특집기사] C++ 매트로 앱 개발을 위한 C++/CX 언어
[월간 마이크로소프트 5월호 특집기사] Windows 8 시대를 준비하는 Visual Studio 2012를 마치며


본 글 이외에 Visual Studio 팀 블로그를 함께 운영하는 강보람 MVP님의 "Welcome to Metro User Interface" 컬럼과 남정현 MVP님의 "Windows Server 8 미리 보기" 컬럼은 필자의 블로그에 기재하지 않은 점 또한 참고하기 바라며, 저작자의 동의하에 추후에 공개가 될 수 있습니다.



시대가 바뀌면서 Windows도 전통적인 모습에서 벗어나서 새로운 흐름을 만들고자 하는 노력이 시작된 것 같다. 물론 기존의 데스크 탑은 여전히 널리 사용될 것이다. 일상적인 업무에서 사용하는 응용 프로그램이 굳이 메트로 사용자 인터페이스 형태를 띌 필요는 전혀 없을 테니 말이다. 그리고 앞으로도 계속해서 기존의 데스크 탑을 타겟으로 하는 윈폼이나, WPF의 개발도 지속될 것이다. 하지만, 새로운 기회는 작은 틈에서 나오는 것이니 이 틈새를 잘 이해하기 위해서는 Windows 8의 메트로 환경을 잘 이해할 필요가 있다.

 

Windows 8과 Visual Studio 2012은 그야말로 N스크린에 감히 필수적인 환경이라고 말하고 싶다. 그 어떤 플랫폼도 데스크 탑과 테블릿, 모바일 등의 모든 기기와 환경 모두를 지원하는 것은 매우 어려운 일이다. 일반 사용자가 기기마다 사용하는 용도와 스타일이 다르고, 모바일 기기마다 해상도와 특징이 다르기 때문이기도 하지만, 하나의 개발 도구로 모든 상황을 대응할 수 있는 통합 개발 도구가 없는 것도 한 몫을 한다. 아니라고 말하는 독자도 있겠지만, 필자는 데스크 탑 환경까지 확장하는 N스크린을 말하는 것이고, 모든 N개의 스크린에서 똑같은 사용자 경험을 제공하는 것을 말한다. 이런 관점에서 Windows 8과 Visual Studio 2012은 그 해답을 제시하고 있으며, 충분히 가치 있고, 도전해 볼만하다. 이런 이유로 벌써부터 필자는 매우 흥분이 된다.

 

그리고 이 글에서 모두 소개하기는 어려웠지만, Windows Server 8은 그 동안의 Windows 운영 체제가 보여주었던 정적인 모습을 탈피하여 대규모 데이터 센터가 아닌 비용 문제 때문에 고민이 많은 수 많은 중소 규모의 IT 인프라에서도 효율적으로 시스템을 운영하고 애플리케이션 개발자들이 핵심에만 접근할 수 있도록 도와줄 방법을 제공하고 있다. 또한 메트로 스타일의 앱은 단순히 사용자 인터페이스에 관한 새로운 접근일 뿐만 아니라 데스크톱 가상화나 서버 관리자를 위한 새로운 종류의 서비스로 자리잡을 수 있다. 여전히 Charm Bar의 기능은 유용하게 사용할 수 있으며, Application Contract를 정확하게 지원하는 서버용 메트로 앱을 만들어 서버 관리자의 일을 덜어내거나 전혀 새로운 경험의 터치 기반 KIOSK를 손쉽게 만들 수도 있을 것이다. 이것은 전적으로 여러분의 선택에 달려있는 일이 될 것이다. 더 나아가서, Windows Server 8의 여러 기술들이 각종 호스팅 환경은 물론 Windows Azure나 Amazon과 같은 Public Cloud Computing 환경에도 전면적으로 도입이 된다면 더 멋지고 유용한 서비스들이 대거 등장하지 않겠는가 하는 것이 개인적인 생각이다.

 

참고 자료


Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 아크몬드 2012.08.02 10:05 Address Modify/Delete Reply

    재밌게 읽고 갑니다.

본 글을 월간 마이크로소프트 2012년 5월호 특집 기사로 다루어진 내용입니다. Visual Studio 11이 Visual Studio 2012로 변경됨에 따라 본문의 내용을 일부 수정하였습니다. 그리고 현재 필자는 NCSOFT에 재직하지 않음을 참고하기 바랍니다.


[월간 마이크로소프트 5월호 특집기사] Windows 8 시대를 준비하는 Visual Studio 2012
[월간 마이크로소프트 5월호 특집기사] C++ 매트로 앱 개발을 위한 C++/CX 언어
[월간 마이크로소프트 5월호 특집기사] Windows 8 시대를 준비하는 Visual Studio 2012를 마치며


엄준일 – 현재 NCSOFT에 재직 중이며, Microsoft ALM MVP와 한국 Visual Studio 팀과 블로그를 운영하고 있다.. 주로 .NET 기술을 전파하고 있고, 마이크로소프트가 지향하는 소프트웨어 개발 프로세스와 통합 및 테스팅 분야를 4년 동안 공부해왔다. 그 외에 CodePlex 오픈 소스 사이트를 통해 프레임워크, 툴 그리고 라이브러리 등을 공개하여 운영 중이다.

 

 


C++ 매트로 앱 개발 준비 사항

C++ 매트로 앱을 개발하기 위해 C++ 개발자는 당장 개발하기 앞서 몇 가지 숙지해야 할 지식과 개념들이 있다. 그리 어려운 것들은 아니지만, 이것을 모르고 접근하려고 하면 어디서부터 시작해야 할지 매우 혼란스러울 것이다. 필자는 과거에 C와 PASCAL을 주로 사용하였고, PC통신이라는 커뮤니케이션을 통해 여러 가지 액션 게임과 대전 게임, 어드벤처 게임을 개발하여 공개해 본 적은 있으나, 최근에 사용되는 C++과 DirectX로 개발해 본 경험은 전무하다. 대신 C라는 언어와 윈도우8이라는 공통 분모를 바탕으로 최대한 C++ 개발자에게 매트로 앱을 쉽게 개발하기 위해 설명할 것이다.

 

C++/CX 란?

첫 번째 준비사항은, C++ 매트로 앱 개발의 위해 C++/CX를 이해해야 한다. C++/CX는 C++ Components Extension(C++ 컴포넌트 확장)이라는 의미로 그 문법은 C++/CLI와 매우 흡사하다. C++/CLI의 대부분은 .NET의 MSIL 형태의 목적 파일로 컴파일 되기 때문에, C++/CLI 응용 프로그램이 동작하기 위해서는 .NET Framework가 설치가 되어야 했었다. 이는 곧, C++/CLI의 gcnew 객체는 .NET 가비지컬렉션의 대상이 되기 때문에 .NET에 매우 가까운 구조였다. 반면, C++/CX은 간단하게 정의하자면 간결한 COM 프로그래밍 언어이다. 그 문법이 C++/CLI와 같지만, 완벽하게 네이티브 형태로 컴파일 된다. 이 말은 즉, .NET Framework이 필요가 없고, .NET 가비지컬렉션의 대상이 되지도 않는다.

앱 개발에 필수 런타임인 WinRT(Windows Runtime)를 이용하여 구현을 하기 위해선 IInspectable 인터페이스를 구현해야 한다. COM 프로그래밍에 직간접적으로 IUnknown 인터페이스를 구현하는 것과 같다. 왜냐하면 IInspectable 인터페이스는 IUnknwon 인터페이스를 상속하기 때문이다.

IInspectable 인터페이스는 곧 COM 개념과 같다. 컴포넌트를 다양한 언어와 공유하고 통합할 수 있는데 WinRT 프로그래밍에서 C#, VB.NET, 그리고 JavaScript에서 IInspectable을 구현하는 객체를 사용할 수 있게 된다. (단, IInspectable 인터페이스는 컴파일러에 의해 구현될 수 있다)

MIDL_INTERFACE("AF86E2E0-B12D-4c6a-9C5A-D7AA65101E90")

IInspectable : public IUnknown    

{

public:

virtual HRESULT STDMETHODCALLTYPE GetIids(

/* [out] */ __RPC__out ULONG *iidCount,

/* [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*iidCount) IID **iids) = 0;

 

virtual HRESULT STDMETHODCALLTYPE GetRuntimeClassName(

/* [out] */ __RPC__deref_out_opt HSTRING *className) = 0;

 

virtual HRESULT STDMETHODCALLTYPE GetTrustLevel(

/* [out] */ __RPC__out TrustLevel *trustLevel) = 0;

 

};

Code 1 IInspectable 인터페이스 정의

COM 프로그래밍 중 가장 빈번하게 사용되는 것 중 하나가 참조 카운팅인데, ^ 기호로 참조 카운팅을 관리하는 개체를 ref new로 인스턴스를 생성하면 더 이상 귀찮은 AddRef와 Release메서드를 호출해 줄 필요가 없다. 예를 들어, Platform::WeakReference 등을 이용하여 생성된 객체에 대해 수명 관리를 위임할 수 있는 방법들이 제공된다.

정리해보면, WRL(Windows Runtime Library)가 C#, VB.NET, JavaScript로 개발할 수 있는 환경을 제공하는 것이 바로 COM이며, 이를 쉽게 개발할 수 있는 언어가 C++/CX인 것이다.

 

프로퍼티(Property) 사용

C++/CX는 프로퍼티를 사용할 수 있는 키워드를 제공한다. C++/CX 프로퍼티는 .NET 프로퍼티와 내부적으로 똑같이 동작한다. 이 프로퍼티는 컴파일 시에 get/set 메서드를 자동으로 생성해 준다. 프로퍼티는 읽기 전용/쓰기 전용, 그리고 이 두 가지 모두를 지원하도록 구현할 수 있다.

이 프로퍼티는 매트로 앱을 개발하면서 상당히 자주 만나게 될 것이다. 왜냐하면 XAML과 함께 앱을 구현하면서 바인딩(Binding) 개념에 프로퍼티 구현이 필수적이기 때문이다. 그래서 XAML 바인딩에서 INotifyPropertyChanged 인터페이스를 구현하여 데이터 모델과 바인딩된 데이터간에 데이터 변경에 대해 알려줌으로써 1-way 또는 2-ways 바인딩을 사용한다.

#include "pch.h"

 

public ref class Person sealed

{

private:

    Platform::String^ name;

    int age;

 

public:

    Person(Platform::String^ name)

    {

        this->name = name;

    }

 

    // 읽기 전용 프로퍼티

    property Platform::String^ Name

    {

        Platform::String^ get() { return this->name; }

    }

 

    // 읽기 쓰기 프로퍼티

    property int Age

    {

        int get() { return this->age; }

        void set(int age)

        {

            if( age <=0 ) throw ref new Platform::InvalidArgumentException();

 

            this->age = age;

        }

    }

};

Code 2 C++/CX 프로퍼티

이 프로퍼티는 내부적으로 생성되는 get/set 매서드를 사용하는 것이 아니라 선언된 프로퍼티를 마치 맴버 변수처럼 사용이 가능하다. 일반적인 C++ 에서는 get/set 메서드를 구현하는 방식으로 person->setName(L"Junil Um"); 이런 코드를 이상 사용하지 않는다.

아래의 코드와 같이 프로퍼티로 선언한 이름으로 직접 엑세스할 수 있다.

Person^ person = ref new Person("Junil Um");

person->Age = 20;

 

필자는 매크로를 사용하여 좀 더 빠르고 쉽게 프로퍼티를 선언하여 사용하는 방식을 권하고 싶다. 아래의 코드는 프로퍼티의 get 또는 set, get/set 을 매크로로 대체한 것이다.

#define __PROPERTY_GET_FUNC(TYPE, NAME) TYPE get() { return m_##NAME; }

#define __PROPERTY_SET_FUNC(TYPE, NAME) void set(TYPE value) { m_##NAME = value; }

#define DEFINE_PROPERTY(TYPE, TYPENAME) property TYPE TYPENAME

#define __PROPERTY(TYPE, NAME, IMPL) \

private: \

    TYPE m_##NAME; \

public: \

    DEFINE_PROPERTY(TYPE, NAME) \

    { \

    IMPL \

    } \

 

#define PROPERTY_GET(TYPE, NAME) __PROPERTY(TYPE, NAME, __PROPERTY_GET_FUNC(TYPE, NAME))

#define PROPERTY_SET(TYPE, NAME) __PROPERTY(TYPE, NAME, __PROPERTY_SET_FUNC(TYPE, NAME))

#define PROPERTY(TYPE, NAME) __PROPERTY(TYPE, NAME, __PROPERTY_GET_FUNC(TYPE, NAME) __PROPERTY_SET_FUNC(TYPE, NAME))

 

 

안전한 포인터 사용, 대리자(Delegate)

포인터 함수는 C++에서 흔히 사용되지만, WinRT 프로그래밍에서는 직접적인 포인터 연산이 그리 좋은 코드는 아닐 수 있다. 이유는 간단하다. WinRT APIs (내장 라이브러리)들이 인자 값으로 포인터가 아닌 대리자(Delegate)를 즐겨 전달 받는다. 그리고 이벤트(Events) 프로그래밍에서 대리자를 공통적으로 사용한다.

void ShowMessageBox(Platform::String^ str)

{

    auto dialog = ref new Windows::UI::Popups::MessageDialog(str);

    dialog->ShowAsync();

}

 

 

void App::OnLaunched(LaunchActivatedEventArgs^ pArgs)

{

    auto ptr = &ShowMessageBox;

 

    ptr("Hello Metro App with C++");

}

Code 3 함수 포인터

.NET 에서는 대리자(Delegate)를 안전한 포인터 함수라고 정의한다. 포인터 함수를 사용하든, 대리자를 사용하든 결과는 똑같지만 이왕이면 안전하게 제어할 수 있는 대리자를 사용하라는 것이다. 사실, .NET 에서 대리자는 일반적인 클래스(Class)와 똑같이 취급한다. 대리자는 컴파일이 되면 일반적인 클래스로 정의되기 때문이다.

어쨌든 위의 포인터 함수를 대리자로 바꾸어보면 다음과 같다.

delegate void ShowMessageBoxHandler(Platform::String^ str);

void ShowMessageBox(Platform::String^ str)

{

    auto dialog = ref new Windows::UI::Popups::MessageDialog(str);

    dialog->ShowAsync();

}

 

void BlankPage::OnNavigatedTo(NavigationEventArgs^ e)

{

    auto msghandler = ref new ShowMessageBoxHandler(&ShowMessageBox);

    msghandler("Hello Metro App with C++");

}

Code 4 C++/CX 대리자

C++/CX 매트로 만들기 첫 걸음

이제 매트로 앱 코드를 작성하고 이해하기 위한 어느 정도의 준비는 된 것 같다. 매트로 앱은 처음 앱의 처음 진입점이 App클래스의 OnLaunched 메서드이다.

void App::OnLaunched(LaunchActivatedEventArgs^ pArgs)

{

    auto sampleData = ref new SampleDataSource();

 

    auto rootFrame = ref new Frame();

    TypeName pageType = { GroupedItemsPage::typeid->FullName, TypeKind::Metadata };

    rootFrame->Navigate(pageType, sampleData->ItemGroups);

 

    Window::Current->Content = rootFrame;

    Window::Current->Activate();

}

Code 5 앱 진입점인 App 클래스

 

위의 코드의 LaunchActivatedEventArgs 인자는 main 함수의 인자 값이라고 생각해도 좋다. 단지 다른 점을 찾는다면 LaunchActivatedEventArgs 객체는 COM Proxy 개체로써, 앱 실행시 인자 값 등을 전달 받을 수 있다. .

이곳에서 앱의 초기화를 수행한 후에 Frame->Navigate 메서드로 사용자 인터페이스를 가지고 있는 화면으로 이동한다. C#,VB.NET 그리고 C++ 매트로 앱은 XAML(Extensible Application Markup Language)을 이용한다. 처음 .NET Framework 3.0에서 WPF 응용 프로그램에서 XAML을 주로 사용하였으나, .NET Framework 4.0에 와서는 별도의 구성요소로 분리가 되었고, 현 버전에서는 완전히 독립된 컴포넌트로 구성되었다. XML은 언어의 분류상 객체지향언어로 구분하게 되는데 XAML은 객체지향언어와 상호작용이 가능하여 그 확장의 가능성이 무한대로 볼 수 있다.

매트로 앱과 친해지기 위해서는 C++/CX도 이해해야겠지만, XAML도 항상 벗처럼 삼아야 한다. XML 프로그래밍에 익숙한 독자라면 XAML이 어렵지 않을 것이다. XML 프로그래밍은 책 몇 권의 분량으로도 모두 담지 못할 것이다. 그리고 XAML 또한 책 한 권 분량 이상으로 그 내용이 방대하므로 더 자세한 내용은 MSDN을 통해 천천히 익히길 바란다.

Figure 1 Blend for Visual Studio 2012

 

XAML을 처음부터 거부감을 느낄 필요는 없다. 당장은 앱을 만들기 위해 디자인을 해야 하는데, Blend for Visual Studio 2012 (과거 Expression Blend) 라는 디자인 도구가 있다. XAML은 이 도구를 이용하여 디자인을 하면 개발자도 쉽게 사용자 인터페이스를 완성할 수 있다.

지면으로 모든 것을 설명하지 못하니, 다음의 링크를 반드시 확인하기 바란다.

http://msdn.microsoft.com/en-us/windows/apps/br229516

이 링크에서 매트로 앱을 만들기 위한 개발 도구 및 SDK와 샘플 앱을 C#, C++, JavaScript로 구현해 놓았고, 마이크로소프트가 제공하는 품질 좋은 디자인 파일도 있다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

본 글을 월간 마이크로소프트 2012년 5월호 특집 기사로 다루어진 내용입니다. Visual Studio 11이 Visual Studio 2012로 변경됨에 따라 본문의 내용을 일부 수정하였습니다. 그리고 현재 필자는 NCSOFT에 재직하지 않음을 참고하기 바랍니다.


[월간 마이크로소프트 5월호 특집기사] Windows 8 시대를 준비하는 Visual Studio 2012
[월간 마이크로소프트 5월호 특집기사] C++ 매트로 앱 개발을 위한 C++/CX 언어
[월간 마이크로소프트 5월호 특집기사] Windows 8 시대를 준비하는 Visual Studio 2012를 마치며

 

엄준일 – 현재 NCSOFT에 재직 중이며, Microsoft ALM MVP와 한국 Visual Studio 팀과 블로그를 운영하고 있다.. 주로 .NET 기술을 전파하고 있고, 마이크로소프트가 지향하는 소프트웨어 개발 프로세스와 통합 및 테스팅 분야를 4년 동안 공부해왔다. 그 외에 CodePlex 오픈 소스 사이트를 통해 프레임워크, 툴 그리고 라이브러리 등을 공개하여 운영 중이다.



 

성큼 다가온 Visual Studio 2012

Microsoft의 대표적인 통합 개발 도구인 Visual Studio 2012의 성장세가 무척 빠르다. 지난 10년전 .NET 플랫폼과 함께 대표적인 개발 도구인 Visual Studio.NET (2003버전)를 내놓았다. 그 때의 시간이 바로 엊그제 같은데 그 이후 Visual Studio 2005, 2008, 2010을 지나 Visual Studio 2012베타 버전을 필자가 사용하고 있으니, 짧은 10년동안 Microsoft를 비롯하여 개발 언어, 개발 툴, 이 모든 것이 굉장히 많이 변해 왔음을 새삼 다시 느껴진다. 이제 Windows 8라는 새로운 운영체제가 기다리고 있다. 그리고 이를 빛내줄 Visual Studio 2012.

 

성큼 다가온 Visual Studio 2012과 그 발자취

Visual Studio 2012를 먼저 논하기 전에 Visual Studio가 어떤 발자취를 남기며 발전해 왔는지 간단하게 살펴보는 것도 독자들이 Visual Studio 2012를 이해할 수 있는 좋은 방법이라고 생각한다. 물론 짧고 간단하게 모든 것을 설명할 수는 없지만, 전반적인 특징만으로 그 동안 개발 트랜드가 어떻게 바뀌었고, 시장의 요구 사항이 어떻게 변화하여 왔는지 한 눈에 알 수 있는 가장 좋은 방법이라고 생각한다.

 

Microsoft의 첫 번째 진정한 통합 제품으로 평가 받는 제품이 Visual Studio.NET (2003버전)이다. Microsoft의 전략적인 언어인 C# 1.0과 VB.NET(v7.0)이 .NET 개발의 대표적인 언어가 되었다. 기존의 VB를 세련된 객체지향 언어로 탈바꿈하면서 이전의 VB개발자들에게 .NET 개발의 문턱을 낮출 수 있는 매우 좋은 사례이기도 하다. (단, Visual Studio 2002는 논외로 하겠다)

이 이전의 개발도구는 하나의 도구에서는 하나의 언어로만 개발을 할 수 있었고, 개발 툴 역시 그 언어에 매우 종속적이고, 다른 언어로 전환하려면 이전의 개발 도구와 개발 경험 역시 많은 부분을 새로 습득해야 했다. 특히 J# 이라고 하는 Java 언어와 라이브러리를 제공하였는데, Java 개발자들을 .NET 플랫폼 안으로 끌어안기 위한 매우 독특한 사례이기도 하다. 실제로 J#은 웬만한 Java 소스 코드를 변경 없이 .NET 목적 파일로 컴파일 할 수 있었다.

Visual Studio는 하나의 개발 도구를 통해 여러 가지 언어를 선택하여 웹 응용 프로그램, 윈도우 응용 프로그램, 모바일 개발, XML, XML 웹 서비스를 개발을 통합하고, 여기에 포함되는 .NET Framework 1.0은 응용 프로그램을 빌드하고 실행하는 구성요소로서, ADO.NET, ASP.NET, Windows Forms 등을 포함하는 .NET Framework 클래스 라이브러리와 CLR(Common Language Runtime-공용 언어 런타임)을 제공, 이 CLR 을 통해 공통된 API 집합을 만들어 다양한 언어간의 상속, 오류 처리, 디버깅이 가능하며 개발자들은 사용하려는 언어를 자유롭게 선택할 수 있게 되었다.

이 후, Windows Server 2003 제품에 표준으로 탑재하여 .NET Framework의 확산에 큰 공을 이루게 되었고, 실제로 엔터프라이즈 시장에서 이 버전을 기준으로 많은 기업용 시스템에 도입이 되었다. 현재까지도 이 버전을 기준으로 운영이 되는 기업용 시스템이 상당수 존재하고 있을 정도이다.

 

때는 2005년. Visual Studio 2005버전은 파격 그 자체다. 여기에 포함된 런타임인 ..NET Framework 2.0은 이전 .NET Framework 1.x에 사용된 코드를 대부분 갈아 엎었을 정도이다. .NET Framework의 뼛속까지 변신한 것이다. ASP.NET 2.0, ADO.NET 2.0, Windows Forms 2.0, C# 2.0 과 같이 '~2.0' 이라는 버전 번호를 붙였고, 많은 기능이 보완되고 확장되었다. .NET Framework 2.0 의 주요 컴포넌트들은 더 이상 .NET Framework 1.1 에 의존하지 않게 되었으며, .NET Framework 2.0 은 .NET Framework 3.5 SP1 까지 .NET Framework의 모태가 된다.

모든 것이 생소할 정도로 많은 변신이 있었는데, 그 중에서 C#과 VB.NET 언어가 대표적이다. Boxing(박싱), Unboxing(언박싱)의 반복적인 캐스팅(Casting) 의 비효율을 개선하고, 보다 객체지향적인 코드 품질을 생산할 수 있는 제네릭(Generic)이 등장하였다. 이와 함께 .NET Framework 클래스 라이브러리에 다수의 제네릭(Generic) 클래스가 추가되었다. 개발 툴도 많은 변화가 있었는데, IDE 자체의 외관도 많이 변했고, 개발 툴의 내부적인 코드에서 변화가 왔고 다양한 내부 인터페이스가 추가되었다. Visual Studio의 솔루션 탐색기에서 흔히 사용하는 '솔루션 폴더'도 이때 등장하였다.

그리고, 이 제품의 버전부터 Visual Studio Team Suite + Team Foundation Server 의 제품을 조합하여 Visual Studio Team System(VSTS) 라는 새로운 개발 패러다임을 .NET 에서도 지원하게 되었다. VSTS 를 통해 ALM(Application Lifecycle Management-애플케이션 수명 주기 관리) 을 수행할 수 있게 되었으며, IT 조직의 비지니스 전반의 생산성을 향상 시키고, 사람과 개발 조직의 변화를 가져다 주는 시초가 되었다.

 

.NET Framework 3.0은 새로운 개발 도구와 출시되지 않았다. 2005년 중순 Windows Vista 운영체제가 출시되면서 이에 대응하는 라이브러리가 포함이 되었다. 함께 새로운 기술도 대거 포함이 되었는데, 그 중에서 대표적으로 꼽으라고 하면 WPF와 WCF이다. XAML(Extensible Application Markup Language) 과 함께 WPF 의 출연으로 UX(User Experience) 의 시대 흐름에 진입하게 되었다. 또한, WCF는 여러 가지의 분산 통신 기술이 통합되었다. 이전의 Remoting, XML Web Services, MSMQ 등이 하나의 WCF 컴포넌트에서 제공하게 됨으로써 Messaging Model 기반으로 통합할 수 있게 되었다.

 


 

 

때는 2007년, 또 한번의 메이저 급 업데이트였다 언어적으로 LINQ라는 새로운 녀석 때문이다. LINQ(Language Integrated Query) 라는 이름에서 알 수 있듯이 익숙한 SQL Query 문법과 유사하여 객체 탐색에 있어 효율성이 매우 높아졌고, 그 성능도 일일이 손으로 짠 코드보다 더 빠른 경우가 있다. 이 LINQ의 기반이 되는 람다식(Lambda Expression), 익명 타입(Anonymous Type), 확장 메서드(Extension Methods)의 언어적인 새로운 스팩이 한데 아우러져 LINQ를 구성한다. XML객체, DataSet, 파일 시스템, 컬렉션 등 모든 대상이 LINQ 쿼리식의 대상이 된다. 이에 영향을 받아 JavaScript와 Java 언어에 영향을 주어 LINQ와 유사한 프레임워크가 등장하였지만, .NET 과 같이 언어적으로 통합이 되지 않았다. 마치 Method Chaining 패턴을 이용한 라이브러리로 분류된다.

이 밖에 정말 헤아릴 수 없을 정도의 많은 진보가 있었다. 개발 도구와 개발 언어, 그리고 .NET 플랫폼의 기술이 발전한다는 것은 분명 매우 좋은 일이겠지만 아마 이 시기부터 많은 .NET 개발자들이 Microsoft의 기술 발전을 따라가기 벅차했었다.

 


2010년에 이르러, Visual Studio 2010버전이 출시되었다. 너무 빠른 .NET 기술의 발전의 탓일까, 이 때는 언어와 .NET Framework보다는 Visual Studio라는 개발 툴에 가장 초점이 맞추어졌다. 그 중 핵심 키워드라고 할 수 있는 것 3가지는 "시각화", "디버깅", "프로세스" 일 것이다. (필자의 의견이므로 Microsoft가 추구했던 것과는 다를 수 있다.) 이 세 가지의 핵심 키워드는 시각화, 협업에 있어 코드의 이해를 좀 더 쉽게, 그리고 복잡한 데이터를 한 눈에 알 기 쉽게… 디버깅-디버깅 시 데이터의 수집이 혁신적으로 발전하였고, 물리적으로 분리된 티어(Tier)간에 데이터 수집… 프로세스, 애자일을 강조하고 애자일한 통합 프로세스를 개발 툴에 제공.

.NET Framework 4.0은 .NET Framework 2.0기반이 아닌 새로운 프레임워크로 구성되었고, 멀티코어 처리를 위해 강력한 병렬 처리 라이브러리(Parallel Libraries)가 있다. 또, 동적 언어 런타임(Dynamic Language Runtime)으로 정적 형식과 동적 형식의 경계를 허물었으며, 루비(Ruby), Lisp, JavaScript, 파이썬(Phython), PHP와 같은 동적 언어와 상호 운용이 가능하다. 예를 들자면, C# 언어로 파이썬 개체와 상호 연동이 가능하다는 것이다.

 

  

제품의 버전 / 특징

2002년

  • Visual Studio .NET 2002 / .NET Framework 1.0 
    첫 통합 개발 환경 
    발매 당초의 제품명은 ' Visual Studio .NET 
  • C# 1.0 / Visual Basic .NET (7.0) 
    C# 은 마이크로소프트의 새로운 객체 지향 언어 
    Visual Basic 도 객체지향 언어

2003년

  • Visual Studio .NET 2003 / .NET Framework 1.1 (5월) 
  • C# 1.1 / Visual Basic .NET (7.1) 
    모두 버전 업 
  • Windows Server 2003 
    .NET Framework 1.1 표준 탑재

2005년

  • Visual Studio 2005 / .NET Framework 2.0 (12월) 
    ClickOnce 배포 
    제네릭 클래스 도입 
    ASP.NET 2.0, ADO.NET 2.0, Windows Form 2.0 
    리팩토링 기능 / 코드 스니펫 
    무료 Express Edition (C#, VB, C++) 
  • C# 2.0 / Visual Basic 2005 (8.0) 
    제네릭 대응 
  • Visual Studio 2005 Team System 
  • SQL Server 2005 지원

2006년

  • .NET Framework 3.0 (11월) 
    코어 부분은 .NET Framework 2.0 그대로 
    WPF(Windows Presentation Foundation) 
    WCF(Windows Communication Foundation) 
    WF(Windows Workflow Foundation) 
    CardSpace 
  • Windows Vista 
    .NET Framework 3.0 기본 탑재

2007년

  • Visual Studio 2005 Service Pack 1 (6월) 
  • ASP.NET AJAX 1.0 (추가 모듈) 
    AJAX Web Application 개발이 용이 
  • Expression Blend 
    Expression Studio 첫 제품 
    WPF 어플케이션의 GUI 구축
  • Visual Studio 2008 / .NET Framework 3.5 (11월 경) 
    개발 코드명 'Orcas' 
    WPF 의 GUI 설계 가능 
    Javascript 디버그 기능 및 IntelliSense 
    ASP.NET AJAX 표준 탑재 
    .NET Framework 2.0, 3.0, 3.5 선택 가능 
  • C# 3.0 / Visual Basic 2008 (9.0) 
    LINQ 기능 
  • SQL Server 2008 
  • Windows Server 2008 
  • Visual Studio Team System 2008

2008년

  • Visual Studio 2008 SP1 / .NET Framework SP1 
    ASP.NET Dynamic Data 
    ADO.NET Entity Framework / Data Services (Astoria) 
    WCF Atom Pub Services 
    클라이언트 프로파일(Client Profile) 
  • VSTS 
    Windows Server 2008 지원 
    SQL Server 2008 지원 
    성능 향상 및 개선 
  • Visual Studio SDK 1.1 (SP1) 
    Visual Studio Shell 재배포 패키지 경량화 
    DSL 출력 미리보기 등… 
  • Visual C++ 2008 
    오피스 리본 스타일 Interface 
    고급 GUI 컨트롤 등…

2010년

  • 사용자 친화적인 Visual Studio IDE
  • 코드 탐색 강화
  • 개발 툴에서 다양한 .NET Framework 개발 환경 제공
  • JavaScript 언어 개발 환경 강화
  • 다양한 플랫폼 지원
    • 64 Bit Mixed-Mode 디버깅
    • Managed 와 Mixed-Mode 의 Minidump 디버깅
  • Historical Debugger
    • 디버그 내용을 기록, 재생
  • 프로젝트 관리 및 프로세스 통합

 

 

Visual Studio 2012와 함께 매트로 앱 개발

Visual Studio 2012의 가장 큰 핵심은 바로 Windows 8 운영체제이다. Windows 8은 매트로 응용프로그램이라는 새로운 환경과 WinRT(Windows Runtime)인 새로운 런타임을 제공한다 그리고 Visual Studio 2012는 Windows 8 운영체제에 가장 최적화된 개발 툴이다. 독자들은 또 새로운 것을 배워야 하나라고 한숨을 쉴 수도 있을 것이다. 하지만 섣부른 독자들의 판단은 잠시 후에 하기 바란다. 왜냐하면 Windows 8 개발은 새로운 환경이면서도 새로운 환경이 아닐 수도 있다. Windows 8 운영체제를 사용하고 WinRT APIs 집합을 사용하는 것 이외에는 아무것도 변한 것이 없기 때문이다. 단지 바뀐 것은 여기에서 개발된 응용 프로그램은 데스크탑 컴퓨터, 테블릿, 모바일 환경 모두 실행되고 배포할 수 있다는 것이다.

최근 개발 환경을 엿보자면 C++을 사용하는 네이티브 개발과, NET에서 지원하는 C#과 같은 관리 언어, 그리고 웹 개발에 필요한 HTML과 JavaScript, 이 중에 단 한가지 기술 영역만 있으면 Windows 8 매트로 응용 프로그램 개발 준비는 끝이라는 것이다. 우리가 흔히 사용하는 스마트 폰을 보면 알 수 있듯이, 개발자는 단지 '위치 정보', '화면의 표현 방법', '데이터 연동', 그리고 스마트 폰을 가로로 볼 때와 세로로 볼 때와 같은 일상적인 기능을 제공하는 APIs를 익히기만 하면 된다. 기존에 Visual Studio를 사용하여 개발해 본 독자라면 그 만큼 진입 장벽이 낮다.

윈도우 폰7 개발처럼 테블릿 시뮬레이터가 제공이 된다. Windows 8 테블릿이 지원하는 대부분의 모든 기능을 이 시뮬레이터에서 테스트를 해 볼 수 있다. 윈도우 폰7 개발처럼 반드시 시뮬레이터가 필요한 것은 아니다. 실제 시뮬레이션이 필요 없다면 곧바로 로컬 데스크 탑에서 매트로 앱을 실행해 볼 수 있다.

Figure 1 Visual Studio 2012 매트로 앱 실행 및 디버깅

 

Figure 2 시뮬레이터 실행 환경

 

더불어 Visual Studio에서 제공하던 성능 측정 도구와 코드 정적 검사를 매트로 앱 개발 환경에서도 그대로 이용할 수 있다. 이는 곧 Visual Studio 2012이 Windows 8 개발에 가장 최적화가 되었다는 의미가 된다.

 

Figure 3 매트로 앱 성능 측정 및 진단

 

간략하게 나마 Visual Studio 2012과 Windows 8 개발에 대해 살펴보았다. 필자가 얘기한 것처럼 개발자에게 있어 새로운 환경이지만, 반대로 전혀 새롭지 않기도 하다. Visual Studio로 간단한 앱을 만들 수 있는 실력이라면 곧바로 Windows 8 매트로 앱을 개발할 수 있을 정도로 진입 장벽이 낮다. 물론, 좀 더 기술적이거나 독창적이고 예쁜 앱을 만드는 것은 더 많은 노력이 필요하다. 단지, 앱 개발자는 자신만의 앱 개발에만 집중하면 된다.

 

Figure 4 Windows 8 개발에서 배포까지

 

Visual Studio 2012과 함께 매트로 환경의 게임 개발

데스크 탑과 테블릿, 그리고 모바일 앱 중에서 단연 게임이 빠질 수 없다. 매트로 환경에서 게임 개발은 아직 시장이 포화되지 않은 장르이다. 그 만큼 게임 개발자에게 있어 매트로 환경에서 게임 개발은 매우 유혹적이기도 하다. 더 반가운 소식은 매트로 게임 개발에 필요한 지식은 게임 개발자에게 익숙한 C++언어와 DirectX다. DirectX를 이용하여 2D, 3D 게임을 개발할 수 있다.

얼마 전까지만 해도 Microsoft가 전략적으로 게임 개발을 지원하던 프레임워크인 XNA를 매트로 게임 개발에 지원하지 않는다. 대신 기존 게임 개발자에게 기존 개발 환경을 그대로 이어갈 수 있는 DirectX를 선택한 것이다.

Figure 5 DirectX 3D 샘플

Figure 6 DirectX 2D 샘플

 

 

Posted by 땡초 POWERUMC

댓글을 달아 주세요

협정 세계시(UTC) 시간으로 2012/06/01, Windows 8 Release Preview와 Visual Studio 2012 Release Candidate 버전이 MSDN Subscription을 통해 공개가 되었다. 이번 버전에는 Windows 8 Consumer Preview(CP) 버전과 Visual Studio 11 Beta 버전에 비해 잔존하는 버그가 상당히 줄어들었다. Windows 8 CP 버전을 쓰면서 가장 사용하기 불편했던 점은 데스크톱 응용 프로그램들이 이유 없이 멈추고, Visual Studio 11 Beta 의 IDE가 자주 뻗어 버리는 현상이 눈에 띄게 사라졌다. 더불어 이 두 가지 Release의 성능도 눈에 띄게 향상되었다. 마이크로소프트의 많은 노고에 박수를 보내고 싶다.

   

Windows 8 Release Preview와 Visual Studio 2012 Release Candidate 피드백

Windows 8 Release Preview에서 조금 변화를 원한다면, Metro 시작화면에는 Metro 응용 프로그램만 나열되었으면 한다. 그리고 폴더 기능이나 같은 카테고리 앱끼리 정렬할 수 있으면 더 좋겠다. 데스크톱 응용 프로그램과 Metro 앱이 마구 섞여 있으니 검색 기능 없이 찾기가 힘들다.

   

Visual Studio 2012 Release Candidate 버전에서는 아이콘의 컬러를 흑백에서 컬러로 바꾸었다고는 하지만, 필자 개인적으로는 솔루션 탐색기부터 산만해진 것은 변함이 없다. 컬러를 넣으려면 넣고 빼려면 빼지 말이다. 아이콘 컬러를 넣어달라는 수많은 사용자 피드백에도 불구하고 또 이렇게 산만해진 컬러링은 정말 최악이다.

결론은 둘 중 하나인 것 같다 사용자 피드백을 씹는다거나, 사용자 피드백이 좀 약했다던가...

   

   

Windows 8 SDK, 이빨 빠진 호랑이 격!

자! 이제 본론으로 들어가서 Windows 8 SDK(Software Development Kit)과 Visual Studio 2012에 매우 중요한 것이 변경되었다. 이미 pcworld.com 에서 Release 제품이 나오기 이전에 예고를 했다. Windows 8 SDK 에는 Command-Line 과 관련된 대부분의 실행 파일들이 포함되지 않는다. Windows 8 SDK는 이 링크에서 다운로드 받을 수 있다.

   

위의 Windows 8 SDK 링크를 참고하면 다음과 같은 문구를 찾을 수 있다. 이번 SDK가 DirectX SDK와 통합된 것은 그다지 관심이 없다. 다만, 빌드와 관련된 모든 Command-Line(명령줄)을 제거했다는 것이 중요하다.

   

Windows 8 SDK를 이용하여 단독으로 아무것도 할 수 없다. 일반적으로 마이크로소프트에서 제공하는 Software Development Kit(SDK)에는 개발에 필요한 대부분의 기능들이 포함되어 있다. 가장 중요한 것이 SDK 에 포함되어 있는 Compiler(컴파일러)이다. Visual C++, Visual C#, Visual Basic.NET 으로 작성된 소스 코드를 컴파일하기 위해서는 Compiler가 필요한데, Windows 8 SDK 에서는 제공해 주지 않는다. 그리고, 복잡한 워크플로우로 빌드되는 최근의 개발 환경에서 MSBuild.exe가 필요하다. MSBuild.exe는 인증 작업, 링크 작업, 리소스 병합 등 복잡한 작업을 순차적으로 처리해주는 매우 훌륭한 도구이다. Windows 8 SDK 에서는 이것도 빠져있다.

   

이제 좀 현실감이 올 것이다. 가장 먼저 타격을 받는 것이 바로 통합 빌드 시스템이다. 빌드 서버에 Visual Studio 2012를 설치하지 않으면 Windows 8 Metro App이나 .NET Framework 4.5, 그리고 최신 버전의 Visual C++ 소스 코드를 컴파일하거나 배포할 수 없다. 이는 좀 더 복잡해지는 라이선스 정책과도 교묘해진다. 일반적으로 Visual Studio의 라이선스는 개발자당 1 Copy의 Per User 라이선스이다. 그렇다면 빌드 서버에서 빌드를 하기 위해 Visual Studio를 설치했다면, 이는 Per User 라이선스를 적용 받는 것일까?

   

물론, 무료로 사용할 수 있는 Visual Studio 2012 Express 버전이 있다. 무료이고 상용으로 사용해도 제약이 없는 버전이지만, 제품 자체가 매우 최소한의 기능만 제공한다. Visual Studio Gallery 웹 사이트와 Visual Studio Extension Manager(확장 관리자)에서 제공하는 확장 기능을 사용할 수 없다. (단, Templates(템플릿), ToolBox(툴박스)와 관련된 것들만 수동으로 설치가 가능하다). 협업이나 형상 관리를 위해 SVN Source Control Provider(SVN 소스 제어 기능)나 Team Explorer(팀 탐색기)도 설치되지 않는다. 교육용으로는 적합할 지 모르겠으나, 실제로 기업 현장의 필드에서 사용하기엔 있으나 마나...

   

다시 원점으로 돌아가서 Visual Studio 2012과 .NET Framework 4.5의 새로운 기능을 살펴보자.

   

필자가 어림 잡아 새롭다거나 눈에 띄는 Features를 아래와 같이 아주 간단하게 정리해보았고, 나름대로 간략한 소감을 적어본다.

  • Visual Studio 2012
    • 매트로 앱 개발 - Visual Studio 2012는 매트로 앱 개발을 위한 툴 그 이상 이하도 아니다.
    • C++ Editor 개선 - 개선이 되었더라도 3rd-party 제품인 Visual Assist 를 $99 에 사서 쓰는 것이 더 좋다.
    • Graphics Tools - AutoDesk, Pixel Shader를 만들고 수정하기 편리해졌다. 그런데 이런 기능은 사용하기 늘 부족하기 때문에 NVIDIA Parallel Nsight 2.1 같은걸 쓰는 것이 이로울 것이다. 항상 느끼는 것이지만, 만들다가 만 Features가 Visual Studio에는 너무 많다.
  • .NET Framework 4.5
    • Portable Class Libraries - 마이크로소프트 BCL Team이 Visual Studio 2010 버전으로 공개했다. 그다지 새롭지 않다.
    • Parallel Computing - 가려웠던 부분을 상당부분 긁어줄 것 같다. Parallel 라이브러리에는 찬사를 보내고 싶다.

   

이 외에는 대부분이 성능적인 개선과 기능적으로 보강한 것들이 대부분이다.

   

   

이제 대략적인 결론이 나온다. 매트로 앱만 개발하기 위해서 굳이 Visual Studio 2012를 사용하는 것은 비용적으로 비효율적일지도 모른다. 매트로 앱은 Visual Studio 2012 Express for Windows 8 을 쓰고, 그 외의 시스템적으로 변경사항을 최소화하기 위해 Visual Studio 2010이나 Visual Studio 2008을 사용하고, 더불어 Windows 7 SDK and .NET Framework 4 또는 Windows 7 SDK and .NET Framework 3.5 SP1 을 사용하는 것이 좋겠다. 그리고 필자는 이번 SDK 에 Compiler 배포를 모두 제거한 것을 이해하기 힘들다. 사실상 .NET 환경의 개발자 또는 기업을 대상으로 돈 내놓으라는 것과 다를 바 없다. 그리고 마이크로소프트의 기술은 점점 발전하는데, 기술 이외의 것들은 퇴보적인 경향을 보인다.

   

참고로 다시 한번 상기하자면, 아래는 Windows 7 SDK for .NET Framework 4의 설치 화면이다. 이번 Windows 8 SDK 에는 아래의 대부분이 빠진다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 네모 2012.06.07 00:19 Address Modify/Delete Reply

    컬러부분은. 계속 수정중이라 하니 좀더 지켜봐야 할 듯 합니다.
    기본테마는 더 밝아졌으면 좋겠고 다크는 괜찮더군요. 하지만 사용하는 시간이 줄어드니 무료로 버텨보고 그 돈으로 맥이나 알아봐야 겠네요.

  2. 네모 2012.06.07 00:20 Address Modify/Delete Reply

    컬러부분은. 계속 수정중이라 하니 좀더 지켜봐야 할 듯 합니다.
    기본테마는 더 밝아졌으면 좋겠고 다크는 괜찮더군요. 하지만 사용하는 시간이 줄어드니 무료로 버텨보고 그 돈으로 맥이나 알아봐야 겠네요.

이제 이 정도면 우분투에서 개발하기 위한 환경으로 쓰기에 큰 부족함은 없을 겁니다. 단지 부족한 면이 있다만 LibreOffice로 오피스 작업은 어느 정도 가능하지만, OutLook과 같은 강력한 오피스 소프트웨어가 없는 것이 아쉽네요.

이제 Mono개발 도구인 MonoDevelop과 몇 가지 유용한 소프트웨어를 찾아서 설치해 봅시다. 이번에는 우분투의 "우분투 소프트웨어 센터"를 통해 설치하려고 합니다. 지금까지 터미널로 작업했던 소프트웨어 설치 작업은 이 우분투 소프트웨어 센터를 통해 가능합니다만, 터미널은 리눅스 사용에 있어서 꼭 익숙해져야 하기에 좀 고생해서 터미널로 작업을 한 것이니, 이 전의 터미널 작업들은 꼭 반복해서 외우시기 바래요.

   

먼저 아래와 같이 프로그램에서 우분투 소프트웨어 센터를 실행합니다.

   

우분투 소프트웨어 센터의 검색에서 "mono"라고 검색해 보세요. 많은 Mono와 관련된 소프트웨어가 검색이 됩니다.

   

오호! 저 아래에 MonoDevelop이 보이는군요. 자자! 잠시 바로 설치를 누르시 마시고, "더 많은 정보" 버튼을 클릭해 보세요.

   

설치 작업은 관리자의 권한이 필요하므로 암호를 입력해 줍시다.

   

그럼 아래와 같이 "확장 기능"이 보이는데요. 걍 모두 선택해서 설치하세요. 모두 피가 되고 살이 되거나, 어쩌다가 한번씩 필요한 기능들입니다.

   

그리고 "우분투 소프트웨어 센터에서" 아래의 몇 가지 추가적인 소프트웨어도 설치해 줍시다.

  • Mono IL Contract
  • Mono Runtime
  • Mono Documentation
  • Mono Runtime (Terminal)
  • gsharp
  • Monodoc (Http)

   

이쁘게 Mono Develop이 설치가 되었네요.

   

실행시켜보시면 아래와 같이 MonoDevelop이 실행이 됩니다. 깔쌈한 화면이 금방이라고 코드를 짜고 싶어지네요. 이것 저것 한번씩 만져보시고 Visual Studio와 비교해 보시면서 좋은 점, 나쁜점을 찾아보시면 더 재미있겠죠?

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. helpme 2013.04.17 17:48 Address Modify/Delete Reply

    안녕하세요 강좌 잘 읽어보았고

    전부 설치하였습니다.

    감사합니다.

    그런데...

    다음 강좌는 없나요..

    우분투에서 mono로 개발하는 방법을 더 알고 싶고 크로스 플랫폼을 어떻게 지원하는지도 알고 싶네요

    강좌 좀 부탁드리겠습니다.

    • 땡초 POWERUMC 2013.04.18 10:05 신고 Address Modify/Delete

      관심 갖어 주셔서 감사합니다.

      원래는 완결판을 작성해 놓긴 했지만,
      MS MVP가 리눅스+Mono 한다고 눈총을 받은 적이 있어서
      올리다가 말았습니다.

      이제 쩝.. MVP가 아니니 천천히 준비해서 올릴께요 ^^*

  2. 김찬무 2013.07.02 19:57 Address Modify/Delete Reply

    안녕하세요~ 최근에 모바일앱을 개발하기 위해 크로스플랫폼을 연구하고 있습니다.

    올려주신 강좌가 정말 많이 도움이 되었네요 ^^ 우선 감사의 말씀을..

    몇가지만 질문드리고 싶은게 있어서 글남겨 봅니다.

    1. mono는 리눅스 환경이 최선인 건가요?

    2. 제가 모바일앱을 개발준비중인데 ios와 안드로이드 모두 개발하려면 mono로 개발을 하는게 맞는지 발을 잘못 들여놓고있는건 아닌지 궁금하네요

    마지막으로 강좌 계속 연재해주세요!! 항상 도움이 많이 되고 있습니다. ^^

    • 땡초 POWERUMC 2013.07.03 01:33 신고 Address Modify/Delete

      안녕하세요.
      저도 질문주신 내용에 많은 고민을 했었고 아직도 확실한 답을 내리지는 못했습니다.

      다만, 모든 것이 현재 진행형임을 가정하여 답변을 드리겠습니다.

      1. Mono는 크로스플랫폼을 지원하므로, 리눅스 뿐만 아니라 맥과 윈도우에서도 잘 돌아갑니다.
      다만, 퍼포먼스와 같은 얘민한 것들이 검증이 되었느냐 안되었느냐 호불호가 갈리기도 합니다.
      미션 크리티컬한 프로젝트가 아니라면 MONO는 충분히 가치가 있을 것입니다.

      2. MonoTouch/MonoDroid 처럼 Mono 기반으로 iOS/Android 앱을 개발할 수 있긴 합니다. (소위 Xamarin )
      다만, Xamarin 사이트를 가시면 아직 해결해야할 난관과 특히 버그가 매우 많습니다.
      그리고 iOS/Android SDK들을 랩핑한 수준이므로, 결국은 따로 따로 개발하셔야 하고요.
      마지막으로, 기존에 나와있는 iOS/Android 오픈소스나 라이브러리를 재활용할 수 없다는 점. 이 문제가 Xamarin을 선택하기에 걸림돌입니다.

여기까지 따라오시면서 우분투의 사용자 인터페이스와 몇 가지 명령어가 어느 정도 자연스러워 지셨는지요? 몇 번 우분투를 사용해 보시면 알겠지만, "우분투 소프트웨어 센터"에서 필요하신 소프트웨어를 편하게 모두 다운로드 받으실 수 있답니다. 급하신 분들은 먼저 개발 도구와 툴 들을 설치하셔도 됩니다. ^^*

어제 오늘 할 것은 우분투의 테마를 좀 바꾸어볼까 합니다. 기본 테마가 나쁘지는 않지만, 제가 주로 사용하는 개발 툴은 아이콘을 크기를 줄이고, 더 넓은 화면으로 쓰고 싶습니다. 이럴 때 유용한 소프트웨어가 있으니, 다음의 링크를 참고하시기 바랍니다.

   

Gnaom Classic 테마입니다. 다음의 링크에 자세한 내용을 소개하고 있습니다.

http://ioriy2k.pe.kr/archives/4357

   

   

자! 그럼 설치 후 재 부팅을 하면 로그인 화면이 나타납니다. 여기에서 아래의 그림과 같이 사용자 이름 오른쪽의 아이콘을 클릭해 보세요.

   

Gnome Classic 테마를 선택하시고 로그인을 합니다.

   

   

호호~! 아래와 같이 예쁘게 테마가 바뀌었습니다. 약간 MAC OS와 같은 스타일 비슷하네요.

좌측 상단의 영역은 윈도우의 "시작" 과 비슷한 기능으로 소프트웨어의 목록을 볼 수 있습니다.

오른쪽 상단은 뭐 그 전과 지금과 마찬가지고요.

좌측 하단에 아이콘을 DRAG&DROP 하시면 빠른 아이콘으로 등록하실 수 있습니다. 아이콘을 우측 하단쪽으로 등록하시면 좌측/우측으로 정렬하여 빠른 아이콘을 등록할 수 있답니다.

그리고 마지막으로 오른쪽 하단은 4개의 네모 상자가 보이는데요. 이것은 가상 윈도우로 윈도우 화면을 너 넓게 쓸 수 있답니다. 단축키를 쓰는게 더 빠르겠죠? CTRL+ALT+상/하/좌/우 로 빠르게 쓸 수 있습니다.

Posted by 땡초 POWERUMC

댓글을 달아 주세요

윈도우 서버의 Active Directory로 전사적인 리소스를 관리하는 회사가 많이 있을 겁니다. 그래서 로그인을 도메인 계정으로 로그인을 해야 할 필요가 있는데, 우분투에서는 likewise 로 도메인 서비스에 가입하여 로그인을 할 수 있답니다.

도메인 계정으로 로그인해야 하는 환경이 아니라면 패스!!

   

도메인 가입

우선 도메인을 가입하기 위해 필요한 likewise-open 패키지를 다운로드 받아 설치합시다.

다음과 같이 입력하세요. sudo apt-get install likewise-open

   

이제 도메인에 가입할 도메인 주소와 도메인 계정을 알고 있으면 됩니다. 저는 저희 집에 Active Directory가 POWERUMC.KR 주소로 되어있습니다. FQDN 은 대소문자를 구분하니 정확히 입력하셔야 합니다.

   

다음과 같이 입력합니다. sudo domainjoin-cli join POWERUMC.KR umc

=> sudo domainjoin-cli join 도메인주소 도메인계정

   

그리고 도메인 계정의 비밀번호를 입력하면 도메인 가입이 완료가 됩니다.

다음과 같이 입력합니다. sudo /etc/init.d/likewise start

   

   

관리자 권한으로 변경

일단 현재 머신으로 도메인에 가입하였고, 현재 머신에 해당 도메인 계정을 관리자 계정으로 줍시다. 이건 뭐 윈도우에서도 마찬가지죠? ^^

   

다음과 같이 입력합니다. sudo adduser POWERUMC.KR\\umc admin 또는 administrator

 

   

SUDO 권한 주기

말씀 드렸던 최고 관리자 권한으로 명령을 실행하기 위해 sudo 라는 명령을 쓴다고 말씀 드린바 있습니다. 이 sudo 도 이를 사용할 수 있는 계정을 구분해 주는데, 도메인 계정으로 sudo 를 사용할 수 있게 해야 합니다.

먼저 root 권한으로 로그인을 해볼까요? 굳이 로그 오프하지 마시고, su 명령으로 다른 계정의 권한으로 변경할 수 있습니다.

   

다음과 같이 입력하세요. sudo su root

   

sudo 명령을 사용할 수 있는 권한들은 sudoers 라는 파일에 텍스트로 기록이 됩니다. 이 파일을 편집할 수 있는 사람은 최고 관리자 권한인 root 밖에 없답니다.

다음과 같이 입력합니다. sudo gedit /etc/sudoers


여기까지 오시는데 조금 지치지는 않으셨나요? 그래도 리눅스의 몇 가지 시스템에 대해서 알아가는 과정이니 빠득 빠득 따라오시기 바랍니다. 뭐 윈도우에서도 개발 환경 세팅 하려면 어느 정도 시간을 투자해야 하니까용~

 

   

자 이제 다 되었습니다. sudo clear를 입력하여 오류가 나지 않으면 설정이 올바르게 된 겁니다. clear 명령은 화면을 깨끗하게 지우고 커서를 최상위로 옮기는 명령인데, 윈도우에서는 cls 랑 맘먹는 놈입니다.

다음과 같이 입력하세요. sudo clear

   

   

   

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

이 부분은 우분투의 한글 드라이버인 ibus가 좀 오동작을 합니다. 쩝.. (한글 입력기라고 부르는군요.).

안 불편하시면 걍 쓰시고, 전 불편해서 다른 한글 입력기로 바꿀겁니다.

   

다음과 같이 입력해서 앱 스토어에서 nabi 한글 입력기를 다운로드 받습니다. (앱 스토어는 그냥 친숙한 의미로 부르는 것이니, 또 이런 문장 문장 하나에 죽자고 덤비지 마시길)

   

다음과 같이 입력하여 nabi를 설치합니다. sudo apt-get install nabi

   

   

    


혹시 노트북을 쓰신다면,

한글 키보드 101/104 가 ALT L과 한/영 키를 구분 못하는 경우가 있습니다. 그래서 ALT L 단축키를 다른 키로 변경할겁니다. 그래야 한/영 키가 올바로 먹습니다.

   

   

윈도우 키 + Space 로 변경

Posted by 땡초 POWERUMC

댓글을 달아 주세요

영어 울렁증이 있으시다면 한글 우분투로 변신시켜 봅시다. 영어 버전도 충분하시면 패스!!

   

   

   

   

   

   

   

   

   

   

재 부팅 후

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

이제 우분투에 로그인이 되셨습니까? 그럼 우분투에서 매우 자주 쓰는 몇 가지 명령어를 터미널을 이용해서 작업을 할겁니다. 우분투는 X-Windows 환경도 좋지만, 리눅스답게 터미널을 못쓰면 리눅스답게 쓰기가 힘들 수 있습니다.

터미널 작업은 매우 강력하고, GUI 기반+마우스 작업으로 하는 것보다 훨씬 빨라서 터미널이 점점 재미있어질 겁니다. 윈도우의 커맨드 라인 작업은 왠지 지루한 감이 있지만, 리눅스의 터미널 작업은 왠지 즐기게 되는… 음… 그 기분… 아마 써보지 않은 분들은 못 느끼실 겁니다.

   

   

터미널 실행하기

아래의 마우스 위치가 바로 "Dash Home" 아이콘 입니다. 그곳을 클릭해서 terminal을 검색하시면 됩니다. 근데 CTRL+ALT+T 키를 누르면 바로 터미널 뜬답니다.

   

   

ROOT 계정 비밀번호 설정

   

우선 root 계정의 비밀번호부터 변경해 봅시다. root 계정은 윈도우의 administrator(관리자), 우분투의 admin 보다 더 계급이 높은 계정입니다. 원래 우분투에서는 root 계정은 사용하지 않는 것이 관례인데, 필자가 뭔가 작업을 잘못해서 이를 되돌리려니 root 권한을 얻지 못해서 큰 코 다친 적이 있습니다. 그래서 그 후 부터는 root 계정을 살려놓죠 ^^; 우분투를 써보신 분들은 아실만한 내용인데, sudoers 파일에 오타를 넣어 저장을 해버려서, sudo 를 실행하지 못해 완죵 고생했었죠.



sudo, 수도 꼭지의 수도가 아닙니다. sudo 는 우분투를 쓰면서 가장 많이 쓸 명령어인데, 이 명령어는 보안과 관련된 부분에서 최고 관리자 권한(root)의 을 얻는 명령입니다. 이와 비슷한 윈도우의 명령어는 runas.exe 가 있지요.

   

리눅스 : sudo cp * /usr/local/umc <--- 최고 권한으로 모든 파일을 umc 디렉토리로 복사하라!

   

이 명령어를 윈도우와 유사하게 사용하면 이렇게 됩니다.
윈도우 : runas /user:administrator copy * C:\user\umc\documents

   

다음과 같이 입력하세요. sudo passwd root

   

   

RPM 과 APT-GET

RPM! 이건 또 머꼬! RPM(Redhat Package Manager) 로 레드헷(유형의 회사나 단체)에서 만든 리눅스인데, 좀 먹어주는 리눅스 버전입니다. 레드헷 계열은 대부분 상용적인 서비스를 목표로 만든다고 하네요. 이 RPM으로 뭔가의 패키지를 자동으로 설치해 줍니다. 윈도우에 비교하자면 MSIEXEC 와 비슷하지만, GUI 기반이 아니라는 점이 다르지요.

그리고 apt-get 이 있습니다. apt-get(Advanced Packaging Tool)은 인터넷을 기반으로 패키지를 설치하는 방법입니다.

   

자! 정리하면 RPM은 로컬 실행용 패키지! APT-GET은 인터넷 앱 스토어(?)에서 다운받아 설치하는 방식!

이 apt-get 은 먼저 update 를 해주어야 합니다. apt-get 은 소스 서버에 있는 소프트웨어 목록 등을 인덱싱하여 캐싱합니다.

다음과 같이 입력합니다. sudo apt-get update

   

그리고 RPM 을 설치합니다. 다음과 같이 입력합니다. sudo apt-get install rpm

   

   

   

apt-get 소스 서버 변경

이건 해도 되고 안해도 됩니다. 다만 소스 서버를 좀 더 빠른 곳으로 바꾸면 apt-get 설치가 좀더 빨라지겠죠.

   

   

   

역시 우리나라의 소프트웨어 회사인 다음 서버군요. 멋집니다. 다음!

   

소스 서버가 변경되었습니다. 다시 캐시를 업데이트 해야겠지요?

다음과 같이 입력합니다. sudo apt-get update

Posted by 땡초 POWERUMC

댓글을 달아 주세요

첫 회부터 너무 쌘건가? 독자 분들도 제목에서 볼 수 있듯이 "크로스 플랫폼 개발 환경 만들기"라는 주제인데, 혹여 뭔가 대단한 것을 만들려고 하는 것은 아니니 너무 큰 기대는 하지 않길 바랍니다. 이 글은 필자가 크로스 플랫폼 개발 환경을 만들면서 여러 번 수행 착오를 겪은 부분을 공유하기 위함입니다.  

일단, 크로스 플랫폼 개발 환경을 만들기 위해 필자가 선택한 운영체제는 우분투 12 LTS 버전입니다. 맥OS는 리눅스 기반이면서 맥에서만 100% 설치 성공 가능한 운영체제입니다. 뭐 해적판도 있겠지만, 그런 고생은 불법적인 방법이므로 피하는게 좋겟지요.  

우분투12를 선택한 김에 우분투 운영체제에 대한 소개 좀 해봅니다. 우분투는 리눅스라고 하는 수 십 년 전 멀티 테스킹(멀티 쓰레딩)을 지원하는 운영체제 입니다.

   

필자가 리눅스를 접했던 때는 초등학교 때였는데, 그 때는 플로피디스크 4장으로 설치를 하던 까만 바탕화면의 그런 운영체제 였습니다. 초롱불 같은 좀 허접한 사설 BBS를 날로 뚫었던, 난 "크래커야!" 라는 뿌듯한 자부심으로 사용하던 것이 바로 리눅스였습니다. 더불어 리눅스는 소스 코드가 공개가 되어 있어서 상당한 보안 취약점이 존재했습니다. 그 중에서도 vi 와 같은 것들은 해커들이 가장 좋아하던 공격 대상이었지요. 그러면서 리눅스에 X-Windows 라고 하는 GUI 그래픽 인터페이스이 탑재가 되었고, 쭉쭉 발전해서 현재와 같은 모습이 되었습니다.

   

우분투데비안 계열에서 파생된 운영체제 입니다. 또 데비안은 머꼬?? 이 데비안 리눅스는 굉장히 많은 CPU의 아키텍처를 지원하기 때문에, 서버 용도로 안성맞춤이었죠. 심지어 ARM 코어도 지원하고, 듣도 보지도 못했던 아키텍처들도 지원을 하네요.  

데비안에서 파생된 우분투는 이러 저러 잡다한 것들 다 빼고, 사용자가 친숙하게 사용하기 위한 용도로 설계가 되었고, 데스크 탑 용도로는 안성 맞춤이지요. 이 우분투는 서버와 데스크 탑 용이 별도로 존재하는데, 그 중 데스크 탑 우분투는 가장 널리 사용되는 X86과 AMD64 아키텍처를 지원합니다. 쩝.. 그러니까 여러 분이 가진 PC나 노트북에서는 다 돌아 가겠고요. ARM 코어 컴퓨터가 있으면 당장이라도 ARM 코어를 지원하는 우분투 서버 버전을 이용하시면 되겠습니다. 아무튼 쥑이는군요.

   

  

사설은 여기서 마치고, 일단 설치부터 해보아야겠지요? 우분투는 2가지 방식의 설치를 지원합니다. 매우 중요한 부분이지요.

   

첫 번째, 설치 방식은 별도 파티션을 나누지 않고도 멀티 부팅이 가능한 우비(wubi) 버전입니다. 우비는 NTFS 파일 시스템(일반적으로 윈도우에서 쓰는)을 마치 물리적인 파티션으로 인식하도록 하여, 설치를 합니다. 가령, C:\ubuntu 폴더가 하나의 파티션이 되는 것이지요. 그냥 짬짬히 쓸 생각이라면 우비 버전으로 설치하시면 되겠습니다.

두 번째, 가장 일반적인 파티션을 분할하여 설치하는 방법입니다.

   

아참… 여기서 아마 VirtualBox나 HYPER-V에 설치하려고 하는 분 계실 겁니다. 제가 정말 장담하건데 개인용 컴퓨터에서 가상화하여 설치하면 얼마 못가서 지울 겁니다. 그리고 제 성능도 안나옵니다. 영화를 아이폰으로 보는 것과 iMAX 로 보는 것과의 차이입니다. 꼭 한번쯤은 우비나 파티션을 나누어서 설치해 보세요. 후회하지 않을 겁니다.

   

   

   

   

첫 번째, 우비(wubi) 버전으로 설치해 봅시다. (구경만 해보실 분)

먼저 http://www.ubuntu.com/download 링크로 가봅시다. 아래에 우분투 데스크탑 버전으로 클릭합니다.

   

그리고 화면 스크롤은 반 쯤 내려보세요. 그럼 "Windows Installer" 설치 다운로드가 보입니다. 요거 그냥 따블 클릭해서 실행 파일을 실행하면 됩니다. 아까 얘기한대로 이것을 설치하면 가상 파티션이 생성되어 멀티 부팅이 가능합니다. 그리고 "소프트웨어 설치/제거"에서 wubi 를 삭제하시면 우분투도 금방 삭제가 됩니다. 정말 획기적입니다.

   

아래와 같이 설치할 드라이브와 적당한 가상 파티션의 크기를 지정해 주세요. 왠만하면 30GB 선택해 주시면 되겠습니다. 그리고 설치하기를 선택하시고 그 이후의 일은 여러분에게 맡기겠습니다….

   

   

   

   

두 번째, 진정한 리눅스의 성능을 느끼시려면, 파티션을 나누어 설치를 해야겠지요.

먼저 http://www.ubuntu.com/download 링크로 가서 설치하고자 하는 우분투 버전을 선택하면 됩니다. (32bit, 64bit 택일). 32bit 가 추천으로 되어있지만, 필자는 추천 항목은 안씁니다^^. 그래서 저는 64bit 버전을 선택해서 ISO 파일을 다운로드 받았답니다.

   

   

이 ISO 를 USB나 CD로 구우시면 되겠습니다만, USB로 구우실 거면 이 http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/ 링크에서 USB로 금방 구워주는 소프트웨어를 사용해 봅시다. 이 소프트웨어는 아래처럼 생긴 물건입니다.

   

그리고 설치할 파티션을 미리 확보하시기 바랍니다. 용량이 모자라시면 파티션 축소하셔서 남은 용량을 짜 내시면 됩니다. 물론 파티션은 "주 파티션"으로 만들어야겠지요?

그리고 아래의 스크린 샷을 쭉쭉 보시면서 설치하시면 됩니다. 쭉쭉 보시다가 중요한 부분에서 다시 말씀 드리겠습니다.

   

   

   

   

   

   

자 여기에서 당황하지 마시고, 아래와 같이 멀티 부팅이 가능하도록 첫 번째 항목을 유지한 채 다음으로 넘어가면 됩니다.

   

그러면 아래와 같이 칸막이 조절 막대가 있는데, 참 애매해 보이네요. 파티션 이름이나 파티션 주체에 대한 내용이 나오지 않아 혼란스럽습니다. 아래에 "고급 파티션 도구" 보이시죠? 그냥 고급 파티션 도구를 써서 설치해 봅시다.

   

설치를 시작하기 전에 파티션을 마련해 놓으라고 했는데, 여기에서 그 파티션을 선택하면 되겠군요. "주 파티션"으로 설치하면 멀티 부팅이 됩니다. 그리고 리눅스에서 즐겨 쓰는 EXT4 파일 시스템을 선택하고, 마운트 위치를 / 로 잡아줍니다.

   

여기서 잠깐 파일 시스템에 대해서 얘기하자면, 윈도우에서는 NTFS 파일 시스템을 사용하죠. 과거 FAT 파일 시스템은 최대 디스크 용량과 파일 길이에 제한이 있었고, 점점 파일들의 크기가 증가하면서 파일당 할당되는 블록이 점점 높아졌습니다. FAT16, FAT32가 대표적이죠. 쉽게 말해 MS-DOS 에서 주로 기반한 파일 시스템이었죠. FAT16 시절에는 파일명 최대 8, 확장자 최대 3… 8.3 법칙이랍니다.

이후 윈도우에서 NTFS 파일 시스템이 나왔습니다. NTFS 파일 시스템으로 암호화를 한다던가, 복구를 한다던가 하는 작업이 가능합니다.

반면, 우분투에서는 EXT 파일 시스템을 주로 사용하는데, EXT4 파일 시스템으로 포멧하시고 설치하시면 됩니다. 혹시 구형 하드 디스크인 경우 EXT2 를 선택하시면 되겠고요.

아참… 중요한 마운트라는게 있는데, 이는 디렉토리 단위로 관리되는 디바이스라고 보시면 됩니다. 윈도우에서는 C드라이브, D드라이브로 구분이 됩니다. 하지만 리눅스에서는 마운트라고 하여 물리적인 디바이스 단위를 논리적으로 트리 형태의 디렉토리로 관리됩니다. 쉬운 예를 들면, / 는 첫 번째 하드 디스크이고요, /dev/NewDrive 는 새로 산 하드 디스크를 붙였습니다. CD-ROM 도 붙여 볼까요? /dev/cdrom 위치에 놓을 수 있습니다. 원하는 위치에 마운트 시킬 수 있다는 것이죠.

   

   

자 그럼 이제 설치합시다. 그 전에 아래의 붉은 동그라미에 설치가 되므로, 올바르게 멀티 부팅이 되기 위해서 주 파티션을 제대로 선택했는지 재차 확인 합시다.

   

   

키보드는 별탈 없으면 101/104로 선택하세요. 차후에 정신건강에 이롭습니다.

   

사용자 이름과 컴퓨터 이름은 원하는대로 입력하고 후닥 넘어가시죠.

   

   

   

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. ky 2014.10.10 16:49 Address Modify/Delete Reply

    왜케 뻥을 치세요..
    맥OS는 LINUX기반이 아니라 BSD기반이고...
    나이가 어떻게 되는지 모르겠지만...
    슬렉웨어 초기버전도 플로피디스켓 4장으로는 설치불가였습니다.
    그 이전에 SLS는 용량이 적었지만 그것도 플로피 4장으로 설치하기에는
    역부족이었을꺼 같은데요????

    • 땡초 POWERUMC 2014.10.10 23:23 신고 Address Modify/Delete

      이 글을 쓴 당시에는 제가 무식해서 이렇게 썼습니다만... ^^;
      뻥 치려고 한 것은 아니랍니다.

      그리고 플로피디스켓으로 XT 컴퓨터에 설치해서 사용했었는데...
      이것도 뻥인가요?

      그런데 뉘신지 이렇게 성의없이 댓글을...?

  2. ky 2014.10.12 09:31 Address Modify/Delete Reply

    리눅스는 첫버전부터 386머신에서 돌아가는 운영체제였고,
    1.x버전이 확산되던시기에 쓸모없는 XT머신을 라우터로 활용해보고자 하는 취지에서
    XT용 리눅스 프로젝트가 있었던 적은 있었지만 공식으로 XT를 지원한 적은 없는데요...??
    도스랑 리눅스랑 헷갈리는게 아닌지...@.@

    • 땡초 POWERUMC 2014.10.12 21:31 신고 Address Modify/Delete

      이렇게 친절히 설명해 주시면 좋았을텐데요.
      제 기억이 틀리지 않았다면 8086 프로세서를 지원하는 리눅스가 있었네요.
      그리고 지적을 해 주시려면 정확한 정보를 제시해서 해 주세요.

      나이 운운하면서 무시하는 댓글 뉘양스를 보아하니
      초딩인 것 같은데...

 2012년 4월 26일, 고대하던 우분투 12 LTS 가 릴리즈 되었습니다. 우분투는 데비안 계열에서 파생된 사용자에게 친숙한 데스크탑 운영체제입니다. (더 자세한 내용은 이 링크를 참고하세요) 왜 갑자기 쌩뚱맞게 우분투 얘기가 나오는 것인가라고 의아할 수 있을 겁니다. 이유는 우분투에서 Mono를 이용하여 크로스 플랫폼을 지원하는 소프트웨어를 만들자는 것에 의미가 있습니다.

 

  

 

 

그 중, Mono는 .NET 플랫폼과 .NET Framework를 충실하게 구현한 오픈 소스이며, 크로스플랫폼을 위한 내부적인 기술 및 지원은 오히려 .NET 보다 앞섭니다. .NET의 복제품이 아닌, .NET의 확장판으로 보시기 바랍니다. .NET 플랫폼이라는 어떤 무형/유형의 구현체는 ECMA라는 비영리 표준화 기구와 ISO인 국제 표준화 기구에서 표준으로 정의되고 있습니다. 즉, Mono는 표준화 기구에서 인정한 표준을 구현한 것일 뿐이며, Microsoft 와는 어떠한 라이선스 관계도 맺지 않는 자유 소프트웨어 진영입니다.
(정확히 비표준 및 표준에 등재된 것들은 언어 스팩과 CIL 스팩입니다. 그 외적인 CLR 부분은 Mono가 크로스 플랫폼을 위해 자체적으로 구현한 레벨이 되겠지요. 전반적인 내용의 의도만 이해하시기 바랍니다.)


   

자체적으로 .NET Framework과 CLR(Common Language Runtime), CIL(Common Immutable Langauge), JIT(Just in Time) 등을 크로스 플랫폼에서 동작하도록 매우 심혈을 기울여 탄생한 독자적인 플랫폼입니다.

더불어 Mono가 혼자서 모든 것을 한 것이 아닙니다. 자유 소프트웨어 진영의 GTK(그래픽 툴 킷)을 이용하여 데스크탑 응용 프로그램을 리눅스, 윈도우, 맥, 모바일에서 돌릴 수 있습니다. 또한, ASP.NET 웹 응용 프로그램을 Apache Tomcat, FastCGI, 또 최근에 높은 성능으로 주목을 받고 있는 Nginx 와 같은 WAS(Web Application Server)에서 돌릴 수 있습니다.

 

  자유 소프트웨어 진영의 훌륭한 운영체제와 어디에서나 돌아가는 개발 환경 및 서버 운영 환경의 크로스 플랫폼 인프라.. 그 동안 Microsoft가 제공하는 편안한 윈도우 운영체제와 IIS(Internet Information Service) 이 두 가지에 의존하며 개발하던 우물안의 개구리에서 이제는 더 큰 곳을 바라보아야 할 때인 것 같습니다. 그것을 시작하는 첫 걸음이 바로 Mono 입니다.

 

이 쯤에서 Mono 플랫폼과 그 인프라의 장점을 한번 살펴봅시다.

1. Mono 플랫폼 전체가 오픈 소스이며, 그 구현체는 매우 수준이 높고 확장 가능합니다. (.NET 플랫폼과 비교하여)

2. MonoDevelop라는 통합 개발툴(IDE)은 무료이며, 리눅스, 윈도우, 맥 등에서 설치하여 쓸 수 있습니다.

3. 운영체제 구매 비용이 없고, 웹 서버 구매 비용이 없습니다. 4. 호스팅 업체에서 우분투와 같은 리눅스(Linux) 호스팅 vs 윈도우 호스팅의 가격 = 1개월당 각각 1,000원 : 20,000원입니다. Linux는 쓸수록 금전절약입니다.

5. 가볍습니다. 운영체제 용량과 개발 환경 구성을 모두 다 해서 7.4GB 입니다.
(현재 설치된 것들이 우분투 12 LTS, Gnome시리즈 유틸, Mono Runtime, MonoDevelop, JDK6, JDK7, OpenJDK6, OpenJDK7, Eclipse, STS(SpringSource Tool Suite), IntelliJ, NetBeans, KDevelop, Qdevelop 등등 )

6. 윈도우 기반의 .NET 응용 프로그램은 체감적으로 모든 것이 느립니다. 하지만 리눅스에서는 체감 실행 속도가 더 빠른 것 같습니다. (윈도우용 MonoDevelop보다 리눅스용 MonoDevelop 실행 속도가 나은 것 같습니다.-컴파일, 실행속도 등등)

   

 

이쯤에서 한 가지 알기 힘든 궁금증이 생깁니다. "왜 마이크로소프트는 충분히 기술력이 있음에도 크로스 플랫폼을 포기할까?". 정말 왜일까요? 언뜻 생각해보면 당연히 자사 운영체제에 특화되어야 혁신적인 기능이나 기술이 빠르게 추가될 수 있습니다. .NET Framework만 보아도 WINAPIs와 COM로 도배되어 있고, WCF만 보아도 IIS나 윈도우 서비스에서 편하게 쓸 수 있도록 하였으며, 알 수 없는 NetTcp, NetNamed, NetMsmq, MsmqIntegration 비표준 웹서비스 프로토콜을 사용하지요. 물론 이런 것들이 필요에 의해서 나오긴 했지만, 윈도우라는 족쇄에 묶어둘 수 있는 좋은 기술이기도 합니다.

   

   

그리고 오픈 소스 진영의 라이선스 정책이 마이크로소프트가 크로스 플랫폼을 지원하지 못하게 되는 장벽이 될 수도 있습니다. GPL이냐 LGPL이냐, 또는 정적 링크냐 동적 링크냐, 무료 배포이냐 상용 배포이냐에 따라 마이크로소프트의 제품의 상표권이 문제가 될 수도 있고, PDB 심볼에 원작자의 요구 문건이 포함될 수 있고, 최악의 경우에는 상용 소프트웨어의 소스 코드를 공개해야 할 수도 있을 겁니다. 물론 잘 알아보고 써야겠지만, 언젠가는 라이선스 정책은 변경이 될 수 있지요. 그런 오픈 소스 진영의 라이선스 정책 등으로 휘말리지 않는 방법이 독자 플랫폼으로만 살아가는 것일 겁니다.

하지만, 이제는 세상이 변해가고 있습니다. 초기에 아이폰의 iOS와 안드로이드 앱을 서로 다른 기술로 구현을 해야 했지만, 이제는 그런 개고생은 하지 않아도 되었습니다. C#이라는 언어만 알고 있으면, Mono for Android로 안드로이드 앱을 만들고, 이 코드를 재사용하여 MonoTouch for iOS로 아이폰 앱도 만들 수 있겠지요. 이 코드를 재사용하여 Windows Phone 앱도 만들 수 있겠죠.

   

필자는 BASIC, QBASIC, Turbo BASIC을 죽도록 해 본적이 있습니다. 그리고 Turbo C를 죽도록 해 본적이 있습니다. 그리고 Turbo Pascal을 죽도록 해 본적이 있습니다. 그리고 거의 7년 동안 .NET과 C#, ALM, Testing을 죽도록 한적이 있습니다. 그리고 최근에는 JAVA, Python, C++ COM 을 죽을 만큼은 아니고 적당히 공부하고 있습니다. 그 전에는 즐겨 사용하던 C#이라는 언어의 철학을 이해한다고 했지만, 이해하지 못했습니다. 다만, 이제서야 조금은 이해가 갑니다.

   

아주 작은 예를 들면,

왜 C# 언어의 람다식이 JAVA 언어의 람다식보다 좋은가?
왜 C# 언어의 Attribute이 JAVA 언어의 Annotation보다 좋은가?
왜 C# 언어의 익명 메소드가 JAVA 언어의 익명 메소드보다 좋은가?
왜 .NET의 보안 모델이 JAVA의 보안 모델보다 좋은가?

물론 JAVA가 더 좋은 것도 많답니다. 오해 마시길…

   

가장 큰 주제의 질문으로써, 왜 윈도우보다 크로스 플랫폼이 좋은가?

   

우리가 사용하는 .NET 플랫폼이 생산성이 좋고, 성능이 좋고…를 우물 안에서 외치며 섣불리 판단하는 노예 아닌 노예가 되지 맙시다. 이제야 저도 느끼는 것이지만, 그런 바보 같은 사람이 되지 않기를 바랍니다. 자신의 종교만이 유일한 신이니까, 다른 종교를 무시하면 그 사람만큼 불쌍해 보이는 사람도 없습니다. 진정 과학이 발달하여 "신 같은 것은 없어!! 우리는 외계인의 후예!!" 라면… 완전 반전이죠^^; (과학적으로는 이런 얘기들의 이론이 뒷받침 되고 있습니다.)

   

현재 스스로 개발자라면 스스로에게 무언가의 질문을 던져볼 시기인 것 같습니다.

저와 함께 우분투 운영체제에 MonoDevelop을 써보느냐!! 아니면 윈도우에 Visual Studio를 쭉 쓰느냐!!

   

앞으로 총 11회의 연재를 통해 당신을 우분투와 MonoDevelop를 주무르는 멋진 개발자로 만들어 드리겠습니다.

기대해 주세요….

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 산소나무 2012.05.03 06:25 Address Modify/Delete Reply

    우분투 다운로드 하는중 !!
    어제의 경험이 정말로 충격 !!

  2. 산소나무 2012.05.03 06:25 Address Modify/Delete Reply

    우분투 다운로드 하는중 !!
    어제의 경험이 정말로 충격 !!

MSDN Virtual Lab에서는 Microsoft Team Foundation Server 2010 제품을 온라인으로 트레이닝 받을 수 있는 서비스가 있습니다. Team Foundation Server 2010 을 설치할 여력이 되지 않거나, 제품을 직접 시연하고 싶은 사용자에게 가상 환경을 제공해 주고, 가상 환경에서 여러 시나리오를 따라해 볼 수 있습니다.

이 MSDN Virtual Lab 환경은 Internet Explorer 만 있으면 곧바로 서비스를 체험할 수 있습니다. 다만, 이 서비스는 가상의 환경으로 제공이 되기 때문에 가상 환경에서 실습이 끝난 이후에는 생성된 팀 프로젝트와 데이터는 모두 삭제가 됩니다.

실습은 모두 3가지의 모듈로 제공이 됩니다.

   

먼저 실습을 하고자 하는 모듈의 주소를 Internet Explorer 를 통해 접속을 합니다.

   

Launch Virtual Lab을 선택하면 아래와 같은 팝업이 뜨는데, 실습 환경의 가상 환경을 제공하기 위한 준비를 합니다. 아마도 실습을 하기 위한 스냅샷으로 돌아가고 있겠지요..?

   

이 가상 환경 실습은 원격 데스크톱 연결을 이용하는데, Connect 버튼을 클릭하면 곧바로 가상 환경을 원격 데스크톱 세션을 통해 접속이 됩니다.

   

접속이 되면 가상 환경 접속에 접속할 수 있는데, 마치 Hyper-V 관리 콘솔과 같은 화면이 나타납니다. 물론 단 하나의 VS2010CTP 라는 가상환경에만 접근할 수 있습니다.

   

아래오 같이 가상 환경이 접속이 되면, 텅 빈 윈도우 바탕 화면이 나타나는데, Start 버튼을 클릭하면 우리가 실습에 필요한 모든 소프트웨어가 설치가 되어 있습니다. 우측의 패널에는 실습 단계를 차례대로 진행할 수 있고, 상단에 HTML과 PDF 문서를 다운로드 받을 수 있습니다.

   

사실 Team Foundation Server 2010의 MSDN Virtual Lab 서비스가 나온지는 좀 되었지만, 아직 많이 알려지지는 않은 듯 합니다. 소프트웨어 패키지를 구매하고 설치하고 MSDN을 통해 기능을 익힐 수 있지만, 이렇게 가상화 서비스를 이용해 부담 없이 하드웨어나 환경적인 제약 없이 실습 공간을 제공해 주는 것을 보면 Before Services 가 짱 이네요.

(BE란 ? 고객들이 제품 구매에 앞서 제품을 직접 써보거나 충분히 경험해 본 다음 구매를 결정할 수 있도록 하는 다양한 체험 프로그램 서비스를 말한다. 기존 서비스 방식인 애프터서비스(AS)는 고객들이 제품을 구매한 후 제품에 대한 차후 서비스를 받을 수 있다. )

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Visual Studio 11의 솔루션 탐색기는 이전 버전에 비해 매우 독특한 구조를 가지게 되었습니다. 그 중에서 Visual Studio 11에서 솔루션 탐색기 기능을 최대한 활용하는 방법을 살펴볼텐데요, 그냥 가볍게 보시면 될 것 같습니다.

1. 다중 인스턴스로 사용하기

다중 인스턴스는 솔루션 탐색기를 하나가 아닌 여러 개로 띄울 수 있는데요. 단, 현재 로드된 솔루션의 솔루션 탐색기 인스턴스를 생성할 수 있습니다. 만약, Visual Studio 11에서 여러 솔루션을 하나의 Visual Studio 11 인스턴스에서 실행할 수 있다면 다중 인스턴스의 솔루션 탐색기가 더욱 편리할 거라는 아쉬움이 있네요.

아래의 그림과 같이 우측 끝에 있는 아이콘을 클릭하면 똑같은 인스턴스를 생성한답니다.

여러 솔루션 탐색기의 인스턴스를 사용하여 프로그래을 작성하는 프로젝트에 스크롤을 위치시키고, 또 하나는 단위 테스트 프로젝트에… 또 하나는 전체 솔루션이 훤히 보이도록 띄어놓았습니다.

이제 하나의 솔루션 탐색기에서 마우스 스크롤 쫙쫙~ 올리고 내리고 할 필요가 없어졌네요. 더불어 멀티 모니터를 사용한다면 효과가 금상첨화겠지요?

   

2. 코드 파일 미리보기

중간에 보이는 아이콘의 이름 "Preview Selected Items"은 말 그대로 코드 파일을 미리 보는 기능이랍니다. 이 옵션은 Visual Studio 11을 설치하면 기본적으로 선택되는 옵션입니다.

이 기능은 솔루션 탐색기에 파일을 한 번 클릭할 때마다 에디터 창이 열립니다. 좌측의 빨간색 탭은 솔루션 탐색기에서 코드 파일을 더블 클릭하거나 F7을 누를 때 일반적으로 좌측부터 정렬되는 에디터입니다.

오른쪽의 노란색의 탭 하나가 바로 한 번 클릭할 때마다 열리는 미리 보기 탭입니다. (필자는 개인적으로 이 옵션을 껐답니다 ^^;)

   

3. 솔루션 탐색기를 격리시키기

솔루션 탐색기를 격리시키는 방법(용어는 필자가 나름대로 칭하였습니다)입니다. 이 방법이 꽤나 쓸만한 기능인데, 솔루션 탐색기의 선택된 항목이 솔루션 탐색기의 최상위 루트가 되는 기능입니다. 예를 들어, 아래와 같이 Core 프로젝트를 펼치면 굉장히 길어지는데요, 단위 테스트도 같이 하려면 Core.Tests 프로젝트도 펼쳐져 있어야 합니다. 이러다가 대부분 솔루션 탐색기가 위아래 정신 없이 스크롤하게 됩니다.

   

그럼 솔루션 탐색기 다중 인스턴스를 이용해서 좀 더 스마트하게 사용해 볼까요? 바로 "Scope to This" 기능입니다.

   

이 기능을 이용해서 아래와 같이 스마트하게 솔루션 탐색기를 배치할 수 있습니다. 자주 코딩하는 Core 프로젝트랑 Core.Tests 프로젝트랑 각각 최상위 루트에 배치해서 귀찮은 스크롤도 없어지고 하위 여러 자식의 트리구조를 없애서 보기에 깔끔해 졌네요.

   

이런 경우는 인터페이스 프로그래밍을 할 때도 매우 유용합니다. 인터페이스를 선언하고 이를 구현하면 서로간에 왔다 갔다 하는 경우가 매우 많거든요. "Scope to This" 기능으로 좌측에 인터페이스 파일 하나만 배치시키고, 우측에서는 인터페이스를 구현하고 파생되는 구현 클래스가 뭉쳐있는 폴더만 격리시켰습니다.

 

어때요? 이제 솔루션 탐색기를 스마트하게 사용할 수 있겠지요?

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 희정 2012.03.26 17:31 Address Modify/Delete Reply

    아. Scope to This 기능은 정말 좋네요. :D

Visual Studio 2005버전부터 만들어온 VSGesture 확장 도구가 Visual Studio 2008, Visual Studio 2010, 그리고 Visual Studio 11버전까지 나왔습니다. VSGesture는 Visual Studio에서 마우스 오른쪽 버튼을 이용하여 제스쳐를 하면 여러 가지 동작을 하는 확장 도구 입니다.

   

   

   

현재 이 확장 도구는 이미 오픈 소스로 공개를 하였답니다.

http://vsgesture.codeplex.com

   

그 밖에 오픈 소스로 공개한 다른 것들도 구경해 보시고요.

Umc.Core Framework http://umccore.codeplex.com/

jQuery DateTimePicker http://umcdatetimepicker.codeplex.com/

MEFGeneric http://mefgeneric.codeplex.com/

vutpp for VS2010 http://vutpp.codeplex.com/

   

기타 무료 확장 도구 및 Visual Studio 백서

http://www.powerumc.kr/ko-kr/products.aspx

   

   

웹을 통해 이 버전을 다운로드 받으려면 다음의 링크를 참고하세요.

Visual Studio 11, 2010 - http://visualstudiogallery.msdn.microsoft.com/e03c91ff-e20d-4dcc-822b-172a68c40f5b

Visual Studio 2005, 2008 - http://visualstudiogallery.msdn.microsoft.com/F5007932-0720-492B-8A51-631D5265F6B7

   

   

Visual Studio 2010, 11 에서는 Tools(도구) -> Extension Manager(확장 관리자)를 이용하여 바로 설치할 수 있습니다.

   



Posted by 땡초 POWERUMC

댓글을 달아 주세요

Visual Studio Extensibility 라고 부르는 VSX를 Visual Studio 2010에서 Visual Studio 11로 업그레이드를 해야 하는데, Visual Studio 11버전부터 그리 어려운 작업이 아닙니다.

과거 VSX 프로젝트를 Visual Studio 2008에서 Visual Studio 2010으로 업그레이드하려면 좀 골치가 아팠습니다. 기존에는 코드 에디터 제어를 Visual Studio Native에서 제공하는 Interface를 사용했지만, Visual Studio 2010부터 코드 에디터가 WPF로 바뀌면서 이 부분은 모조리 변경해야 했거든요.

  

  

아시다시피 Visual Studio Gallery에 공개한 VSGesture for VS2008버전과 VSGesture for VS2010의 구현이 완전 달라졌을 정도니까요. 물론 이 확장 기능은 필자가 VSGESTURE.CODEPLEX.COM에 공개해 놓았으니 소스 코드도 받으실 수 있습니다.

  

Visual Studio 11로 VSX 업그레이드에 대한 더 자세한 내용은 다음의 문서를 참고하시기 바랍니다.

http://msdn.microsoft.com/en-us/library/hh567449(v=vs.110).aspx

  

일단 Visual Studio 11에서 프로젝트를 엽니다.

Visual Studio 11에서 프로젝트를 열어보니, 알아서 몇몇 파일들은 알아서 체크아웃이 되네요. 아마도 Resources 파일과 관련해서 뭔가가 바뀌었나 봅니다.

  

Source.Extension.VsixManifest 파일을 엽니다.

이 메니페스트 파일은 배포에 필요한 정보를 담고 있습니다. 확장 기능의 고유 GUID와 확장 기능 이름, 버전, 컨텐트 정보 등이 담겨져 있습니다.

그런데 그냥 XML 파일이 열리네요. Visual Studio 2010 SDK를 설치하면 그나마 GUI가 제공이 되었는데, 아직 Visual Studio 11 Beta SDK 라서 제공이 안되나 봅니다.

  

[Visual Studio 2010 SDK 의 GUI Manifest 구성 에디터]

  

어쨌든 XML 파일이 열리더라도 그리 어려운 작업은 아닙니다. 그냥 몇 가지 구성만 추가해 주면 됩니다.

  

SupportedProducts 구성 추가

XML 내용의 SupportedProducts 섹션에 다음과 같이 Visual Studio 11버전과 지원할 Edition 목록을 추가하면 됩니다.

  

  

어셈블리 참조를 추가해 줍니다.

이 어셈블리들은 Visual Studio 11 SDK 를 설치하시고, 다음의 경로에서 찾을 수 있습니다.

%ProgramFiles(x86)%\Microsoft Visual Studio 11.0\VSSDK\VisualStudioIntegration\Common\Assemblies\v4.0

  

  • Microsoft.VisualStudio.Editor.dll
  • Microsoft.VisualStudio.Language.Intellisense.dll
  • Microsoft.VisualStudio.Shell.10.0.immutable.dll
  • Microsoft.VisualStudio.Shell.11.0.immutable.dll
  • Microsoft.VisualStudio.Shell.11.0.dll

  

  

그 외에…

실제로 VSX의 기능에 따라 변경해 주어야 할 부분이 더 많더군요. 그 부분은 VSX 개발하시는 분들이 알아서 하시리라 믿습니다.^^

Posted by 땡초 POWERUMC

댓글을 달아 주세요

개발자에게 Visual Studio 11의 가장 큰 장점 중에 하나가 될 바로 코드 에디터 입니다. 특히 C++ 개발자에게 원성을 샀던 부실했던 C++ 코드 에디터는 기존의 C,#, VB.NET 과 동등할 정도로 코드 에디터의 구현에 충실해 다른 확장 도구의 도움 없이도 충분히 사용이 가능합니다. (Visual C++ 의 코드 에디터는 그 흔한 코드 컬러링도 기대 이하의 수준이었거든요)

   

C++ 코드 에디터

C++ 개발자에게는 C++ 코드 편집기의 컬러링과 인텔리센스는 정말 희소식일 것 같습니다. C++ 개발자는 기본적인 코드 작성에 Visual Assist 툴에 많이 의존하였었지만, 이제 외부 도구의 도움이 없이도 코드 작성에 어려움은 없을 것 같습니다. 

아래의 Visual Studio 2010과 Visual Studio 11의 C++ 코드 에디터를 그냥 눈으로 쓱 훑어보시기 바랍니다.

   

Visual Studio 2010의 C++ 코드 에디터

   

Visual Studio 11의 C++ 코드 에디터

   

   

   

C++/CLI 코드 에디터

특히 C++/CLI 를 자주 쓰는 분들에게는 더욱 특별할 수 있을 겁니다. C++/CLI 는 이전버전까지 예쁜 컬러링은 물론이거니와 인텔리센스도 작동하지 않는 암울한 환경에서 코드를 작성해야 했었습니다. 특히 C++/CLI 를 이용하여 C++ 코드를 단위 테스트할 때 무척 유용하였는데, 이번 컬러링과 인텔리센스 기능으로 더욱 활용도가 높아질 것 같습니다.

마찬가지로 Visual Studio 2010의 C++/CLI와 Visual Studio 11의 C++/CLI의 코드 에디터를 한번 보시죠.

   

Visual Studio 2010 C++/CLI 코드 에디터

   

Visual studio 11 C++/CLI 코드 에디터

C#, VB.NET 과 동급한 레벨로 인텔리센스와 코드 컬러링을 제공합니다. 그리고 Code Snippet도 제공되니 코딩이 한껏 즐거워지겠네요.

   

   

   

JavaScript 코드 에디터

JavaScript 는 웹 개발 환경에서 필수 언어로써, 개발 툴에서 JavaScript 인텔리센스 지원이 점점 좋아지고 있네요. Visual Studio 11 Beta 에서는 JavaScript 인텔리센스의 성능이 향상이 되거나 HTML5 등을 지원하는데요.

그 중, Lazy Initialize와 Lazy Loading 부분에서 상당히 만족할만한 수준으로 인텔리센스 기능이 좋아졌습니다.

   

JavaScript 코드 에디터에 대한 더 자세한 내용은 다음의 링크를 참고하십시오.

http://msdn.microsoft.com/en-us/library/bb385682(v=vs.110).aspx

   

JavaScript 코드 에디터의 인텔리센스가 얼마나 똑똑해 졌는지 아래의 예시를 보면서 비교해 보시기 바랍니다.

   

Visual Studio 2010 JavaScript 인텔리센스

인텔리센스가 C#, VB.NET 과 다르게 인텔리센스의 범위가 축소가 되지 않고 그냥 다~~~ 보여주지요.

   

   

Visual Studio 11 JavaScript 인텔리센스

JavaScript 인텔리센스가 C#, VB.NET 에서 사용하는 것과 똑같이 입력하는 문자에 따라 점점 인텔리센스 범위가 축소가 됩니다. 그리고 인텔리센스 상자 오른쪽에 시그너처도 함께 표시해 주네요.

   

   

JavaScript OOP 프로그래밍 인텔리센스

특히 JavaScript OOP 프로그래밍을 할 때는 인텔리센스의 도움을 많이 받게 되지요. Visual Studio 11 의 JavaScript 구문을 제대로 분석하여 인텔리센스를 제공해 주는 것 또한 막강한 Visual Studio 11 기능이라고 할 수 있습니다.

특히 Visual Studio 2010을 사용할 때 필자는 JavaScript OOP 프로그래밍을 절대 Visual Studio 2010에서 하지 않았답니다. 왜냐하면 제대로 인텔리센스를 보여주지 못하거나 올바른 인텔리센스 목록이 제공이 되지 않으면, 아차 하는 순간 코드가 동작을 안하거든요.

   

마찬가지로 Visual Studio 2010과 Visual Studio 11의 JavaScript OOP 인텔리센스를 비교해보시죠.

   

Visual Studio 2010 JavaScript OOP 인텔리센스

아주 간단한 JavaScript Initialize 패턴과 Simple Factory 패턴의 New() 메서드를 인식하지 못합니다. 물론 아래의 코드는 잘못된 코드가 아니겠지요.

   

Visual Studio 11 Beta JavaScript OOP 인텔리센스

Visual Studio 2010 JavaScript 인텔리센스에 비해 Visual Studio 11 Beta 는 Lazy Initialize 패턴과 Simple Factory 패턴 구문을 정확하게 분석하여 인텔리센스 목록에 New() 메서드를 깔끔하게 보여주고 있습니다.

   

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

  1. 미냉이 2012.03.14 15:45 Address Modify/Delete Reply

    와우 정말 희소식입니다 ㅡㅠ

솔루션 탐색기의 코드 미리 보기

솔루션 탐색기에서 코드 파일의 클래스나 메서드, 필드 정보를 TreeView에서 확장하여 바로 볼 수 있게 되었군요. 물론 하위 정보들을 더블 클릭하면 바로 코드의 위치로 이동하겠죠.

   

설마 다른 개발 도구를 사용하는 분들이 보시면 여태 그런 기능도 제공이 안되었냐고 오해할 수 있을 수 있겠군요. 아래의 모든 기능들은 Microsoft에서 개발하여 배포한 Visual Studio 확장 도구를 통해 사용이 가능했었고, Visual Studio 11에 와서 Product Features로 들어가게 된 것들입니다.

   

이전 버전인 Visual Studio 2010에서 필수 앱이었죠.

PowerCommands for Visual Studio 2010, Productivity Power Tools

   

   

   

코드 윈도우 고정 핀

자주 사용하는 코드 파일을 아예 핀을 이용하여 좌측으로 고정할 수 있습니다. 필자는 구현 클래스나 참조 클래스들의 탭 위치가 뒤죽박죽이 되면 열 받아서 'Close All Windows' 를 해버리고 다시 정리하는 습관이 있었는데, 이 고정 핀 덕분에 효과를 톡톡히 보고 있습니다.

   

솔루션 탐색기 창의 다중 인스턴스

이번 Visual Studio 11에서는 솔루션 탐색기를 다중 인스턴스로 열어서 사용이 가능합니다. 아래의 그림과 같이 솔루션 탐색기가 여러 개가 열려 있지요.

필자도 이런 기능이 꼭 필요했답니다. 왜냐하면 솔루션의 폴더 구조가 복잡하거나 프로젝트 양이 많아지게 되면 솔루션 탐색기에서 마우스 휠을 올렸다 내렸다 하면서 파일을 찾느라 정신이 없거든요. 솔루션 탐색기를 한 두어개 열어놓고 미리 자주 탐색하는 위치에 스크롤을 해놓으면 훨씬 편리하겠지요…?

   

   

   

여러 툴 윈도우에 검색 기능 제공

여러 툴 윈도우에 검색 기능이 강화가 되었습니다. 자칫 "모두 똑같은 검색 아니야?" 라고 하실 수 있겠지만, 각각 검색의 기능은 다르게 작동합니다. 예를 들면, TEAM EXPLORER인 경우 원하는 Work Item을 찾거나 SharePoint 문서를 찾는데 활용할 수 있고, SOLUTION EXPLORER에서는 파일의 내용이나 파일 이름으로 검색을 할 수 있겠지요.

다음은 툴 윈도우에서 제공하는 검색 기능들 입니다.

   

솔루션 탐색기 검색

   

단위 테스트 검색

   

팀 탐색기 검색

   

도구 상자 검색

Posted by 땡초 POWERUMC

댓글을 달아 주세요

Metro Style App 성능 및 품질 관리

Visual Studio 2005부터 최상위 버전에서 제공하는 기능 중에 하나가 바로 Profile 기능입니다. Visual Studio Profile 기능은 Performance, Memory, Thread 와 같이 눈으로 보거나 사람이 오감을 이용하여 측정할 수 없는 부분을 정교하게 측정할 수 있습니다. Metro Style App 도 이런 Performance 를 측정하고 Code Analysis 로 코드의 품질을 관리할 수 있게 되었네요.

   

Metro Style App을 Profile하기 위해서는 디버깅 상태를 Local Machine으로 변경을 해야 합니다. 그리고 Analyze 메뉴에서 Launch Performance Wizard 를 선택하여 단계별로 원하는 Profile 단계를 선택하면 됩니다. Visual Studio를 이용하여 .NET 응용 프로그램 Profile을 해보신 분이라면 편하신 대로 Profile Windows에서 시작하셔도 됩니다.

   

Metro Style App의 어떤 Performance를 측정할지 정하였다면 아래의 Profile 방법을 하나 선택하시면 됩니다. 다만, Metro Style App 의 Profile 을 몇 가지 제한이 있네요.

CPU Sampling 의 경우 C#, C++, JavaScript Metro Style App 모두 Profile이 가능합니다. 다만, Instrumentation의 계측 형태의 Profile은 JavaScript Metro Style App만 지원을 합니다. 물론 .NET 응용 프로그램인 경우 모든 Profile을 모두 지원해 줍니다.

   

CPU Sampling 을 할 Metro Style App을 선택하고, 쭉 쭉 다음 단계로 이동하면 바로 Profile 을 시작할 수 있습니다. CPU Sampling 을 하려는 응용 프로그램의 모든 기능을 동작시키면 됩니다. 만들어 놓은 기능을 선택도 해보고, 쿡쿡 클릭도 해보고 하신 후, Stop Profile을 클릭하여 성능 측정을 마무리 합니다.

   

그럼, Profile 보고서가 완성이 되면 CPU Sampling 결과를 보여줍니다. 아래와 같은 보고서는 의외로 성능 지표를 분석할 때 중요한 정보를 줍니다. 아래의 Inclusive, Exclusive 등 성능 지표 결과를 보시기 어려우시다면, 꼭 Visual Studio 2010 의 성능 프로파일 MSDN 문서를 확인해보세요.

꾸준히 성능 관리를 하여 샘플링을 떠 놓으면 나중에 얼마나 성능이 좋아지고, CPU 리소스를 덜 차지하는지 비교도 해보고 하시면 Visual Studio 의 막강한 기능에 대해 다시 한번 놀라실 겁니다.

   

Visual Studio Profile 에 대한 자세한 내용은 다음의 링크를 참고 하십시오.

http://msdn.microsoft.com/ko-kr/library/z9z62c29.aspx

   

   

Metro Style App의 Profile이 완료가 되면, 아래의 그림과 같이 성능 보고서를 보여줍니다. 상단의 영역은 CPU Sampling 결과를 그래프로 보여주며, 하단은 구간별로 CPU에 가장 많이 부하를 주는 구간을 리스트업 합니다.

   

CPU Sampling 결과를 다차원으로 분석하기 위해 Current View 영역에서 항목을 선택하시면 됩니다. 프로세스별로 분석하거나 모듈, 클래스, 메서드 등의 단위로 세밀하게 분석할 수 있는 지표를 제공해 줍니다.

   

덧붙여 Metro Style App의 Profile 기능은 Visual Studio가 설치된 환경 뿐만 아니라, Visual Studio 가 설치되지 않은 환경에서도 Profile 기능을 제공 합니다. 다음의 문서에서 자세한 내용을 확인해보세요.

http://msdn.microsoft.com/en-us/library/hh696636(v=vs.110).aspx

   

   

Metro Style App 의 코드 분석

Visual Studio의 Code Analysis를 효과적으로 사용하신 분이라면 좋아할 듯 합니다. Metro Style App에서도 Code Analysis기능을 그대로 적용할 수 있습니다. 개발 초기부터 Globalization, Performance를 염두 해두신다면 Code Analysis가 큰 도움이 될 겁니다.

   

Code Analysis에 대한 자세한 내용은 다음의 링크에서 확인하십시오.

[Better Code]Visual Studio 2010 Code Analysis Enhancements - 1.개요 http://vsts2010.net/39

[Better Code]Visual Studio 2010 Code Analysis Enhancements - 2. Rule Sets Feature http://vsts2010.net/41

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

프로젝트 호환성

Visual Studio 11 에서 바로 와 닿는 편리함 중의 하나가 기존의 솔루션 파일과 프로젝트 파일을 어떤 변경 없이 그대로 열 수 있는 점입니다. 이전까지는 솔루션 파일의 구조와 프로젝트 파일의 일부 속성이 변경되어 새로운 개발 툴이 나올 때 마다 손이 갔었습니다. Visual Studio 가 해주는 자동 업그레이드를 그렇게 신뢰하지 않기 때문에 상위/하위 버전과 호환이 되도록 솔루션 파일과 프로젝트 파일을 변경했기 때문입니다. 과거에 Visual Studio 솔루션/프로젝트를 자동으로 업그레이드해 줄 경우 컴파일이 되지 않는 경우가 많았거든요.

   

   

이번 Visual Studio 11은 대부분의 솔루션/프로젝트의 구조를 변경 없이 그대로 상위 버전인 Visual Studio 11에서 사용할 수 있습니다. 재미있는 것은 예전에는 솔루션/프로젝트 업그레이드 마법사가 업그레이드를 진행하였는데, 이번 Visual Studio 11에서는 안전한 업그레이드인 경우 그냥 알아서 업그레이드하는 듯 합니다.

   

하지만, 모두 다 호환되는 것은 아닙니다. 우리가 평상시에 자주 쓰는 프로젝트 형식들은 아무 변경 없이 호환이 되지만, 일부 호환이 되지 않는 프로젝트 형식도 몇 가지 됩니다. 그리고 프로젝트 형식이 호환은 되지 않지만, 아주 사소한 변경이라면 Visual Studio 11이 그냥 알아서 업그레이드를 합니다. 여기에 대한 정보는 다음의 링크에서 확인할 수 있습니다. (

http://msdn.microsoft.com/en-us/library/hh266747(v=vs.110).aspx )

   

그 중에서 대표적으로 호환이 되지 않는 것들만 볼까요?

   

프로젝트 형식

  • Visual Studio 11 에서 열 수 없는 것들
    • Cloud tools
    • MSI setup (설치 프로젝트) - VS11 에서 없어졌지요.
    • Visual Studio Macro - VS11 에서 없어졌지요.
    • Windows Mobile - 프로젝트 형식이 없어졌지요.
    • Windows Phone - 프로젝트 형식이 없어졌지요.

   

   

  • Visual Studio 11 형식으로 업그레이드가 필요하고, 그 이후 Visual Studio 11 에서만 열리는 것들
    • F#
    • LightSwitch
    • Rich Internet Applications - 실버라이트를 의미하는 것일까요? ^^;
    • Visual Studio SDK/VSIX

         

         

  • 그 외 특수한 경우
    • Visual C++ 10.0 - 로컬 컴퓨터에 Visual Studio 2010과 Visual Studio 11 Beta 둘 다 설치되어 있어야 VC++ 10.0 프로젝트를 Visual Studio 11에서 열 수 있습니다.
    • Visual Studio 2010 Database (.dbproj) - 컨버전을 하면 열 수 있는데, 지원 안 되는 기능이 많네요. 꼭 문서 참고 하세요.

         

         

파일

  • BizTalk Flat file schemas - 파일을 추가 못함
  • Profile Reports File : 성능 프로파일 보고서 중 .vspx 파일만 열지 못함
  • Solution File : 솔루션 파일 중 .sou 파일이 있는데, 여기에 Break Point 등의 정보가 있는데 VS11 로 업그레이드 되고 나면 VS2010 에서 설정 정보를 잃어버릴 수 있다고 하네요.
Posted by 땡초 POWERUMC

댓글을 달아 주세요

Metro Style App 디버깅

C#이나 C++, VB.NET 으로 한번쯤 디버깅을 해본 분이라면 Metro Style App 디버깅도 같은 방식으로 디버깅이 가능합니다. 기존의 .NET 응용 프로그램 디버깅 방식과 별 차이가 없기 때문에, 디버깅 경험 그대로 사용하셔도 됩니다.

   

   

Simulator 로 디버깅

Visual Studio 11에서는 WinRT 디버깅 환경은 일반적으로 Local Machine 디버깅과 Simulator 디버깅, Remote Machine 디버깅이 있습니다. 그 중 Simulator 디버깅 부분의 디버깅 환경이 굉장히 잘 되어있네요. 마치 ARM 코어가 탑재된 테블릿을 조작하는 느낌까지 듭니다. Simulator 디버깅은 시스템이 부팅된 후 Windows 8 구동에서 사용자 로그인까지 그대로 재현이 됩니다.

아래의 그림과 같이 디버깅 툴바 영역에서 Simulator 디버깅을 선택하고 디버깅을 시작하면 Simulator 가 구동이 됩니다.

Simulator 디버깅에 대해 더 자세한 내용은 다음의 링크를 참고하십시오.
http://msdn.microsoft.com/en-us/library/hh441475(v=vs.110).aspx

   

   

Simulator를 선택한 후 디버깅을 시작하면 아래의 그림과 같이 테블릿을 연상케 하는 Simulator 창이 뜹니다. 필자의 집 네트워크 환경은 Active Directory로 묶여 도메인으로 관리를 하고 있는데, Simulator의 사용자 로그인도 마찬가지로 도메인 로그인 되는 것을 확인할 수 있습니다.


Simulator를 통해 WinRT 샘플이 잘 동작하는 것이 확인되는군요.

   

혹시나 싶어 Simulator 디버깅 중에 Metro 바탕 화면에서 데스크탑 바탕화면으로 이동해 보았습니다. 제 로컬 컴퓨터 환경이 그대로 재현이 되네요.

Simulator 우측 패널에 터치 방식을 선택하거나 해상도를 조절하거나 테블릿을 회전시키는 조작을 하는 아이콘들이 있습니다.

   


Metro Style App 배포

Metro Style App 템플릿을 사용하여 프로젝트를 생성하면 모든 형태의 Metro 응용 프로그램의 프로젝트에는 Package.appmanafest 파일이 존재합니다. 이 파일은 Windows Store 에 앱을 배포할 때 앱 정보를 가지고 있는 파일입니다.

자세한 Metro Style App 의 배포에 대한 내용은 다음의 링크를 참고하십시오.
http://msdn.microsoft.com/en-us/library/hh454036(v=vs.110).aspx  

   

   

Metro Style App 프로젝트의 속성 페이지로 이동하면 아래의 그림과 같이 속성 페이지로 이동합니다. 이곳에서 앱의 이름과 Rotaions 타입, 전경색과 배경색 및 Splash 이미지, 그리고 앱의 호환 정보, 장치 정보를 설정하면 됩니다.

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요

지난 2012년 02월 29일, Windows 8 Consumer Preview 와 Visual Studio 11 Beta 버전이 공개가 되었습니다. 그 중 Windows 8 의 가장 큰 특징이라고 하면 WinRT(Windows Runtime)을 이용하여 Metro 응용 프로그램을 만들 수 있는 것이죠. 이전 Windows 7까지 Win32 API 를 이용하여 데스크탑 응용 프로그램을 만들었습니다만, Windows 8 에 와서는 이전 Win32 환경과 새로운 WinRT 환경에서 개발을 할 수 있습니다.

   

더 자세한 정보를 원하시면 다음의 MSDN 링크를 통해 확인하시기 바랍니다.

http://msdn.microsoft.com/en-us/library/bb386063(v=vs.110).aspx

   

쉽게 WinRT는 Metro Style App를 구동하기 위한 API 집합들이며, Win32의 Function APIs 가 아닌, 좀 더 세련되고 객체지향적으로 다듬은 차세대 윈도우 런타임이라고 생각하셔도 됩니다.

   

   

Visual Studio 11 은 Windows 8 의 Metro Style App 을 개발하기 위해 개발 템플릿을 지원해 줍니다. (프로젝트 템플릿 같은 그런 것들이죠). 그럼 Visual Studio 11 에서 제공하는 Metro Style App 의 템플릿은 어떤 것을 지원하는지 한번 볼까요?

   

분할 응용 프로그램

분할 응용 프로그램 템플릿은 사용자 지정하여 2열 보기에서 항목과 항목 세부 정보로 된 목록을 보기 위한 앱을 만들 수 있는 Metro 스타일 앱의 주요 기반이 됩니다. 이 보기에서 사용자는 항목 간에 빠르게 전환할 수 있으며 목록을 동적으로 업데이트할 수도 있습니다. 예를 들어 뉴스 읽기 프로그램, 스포츠 득점 앱, 전자 메일 앱 등이 있습니다. 이 프로젝트 템플릿은 Metro 스타일 앱에 권장되는 탐색 모델을 사용합니다.

표 형태 응용 프로그램

표 형태 응용 프로그램 템플릿을 사용하여 Metro 스타일 앱을 만드는 것이 좋습니다. 이 템플릿을 사용자 지정하여 사용자가 범주 검색을 통해 완전히 빠져드는 콘텐츠를 찾는 앱을 만들 수 있습니다. 예를 들면 쇼핑 앱, 뉴스 앱, 사진 또는 동영상 앱이 있습니다. 이 프로젝트 템플릿은 Metro 스타일 앱에 권장되는 탐색 모델을 사용합니다.

탐색 응용 프로그램

이 JavaScript 템플릿에는 기본 탐색, 앱 바탕 화면 도구 모음(앱 바) 및 표 형태 응용 프로그램과 분할 응용 프로그램 템플릿에서 사용되는 미디어 모드 기반 레이아웃이 제공됩니다. 탐색 템플릿에는 최소 페이지 조각 하나만 포함되어 있으며, 페이지 조각을 손쉽게 추가할 수 있습니다. 그런 다음 콘텐츠를 추가할 수 있습니다. 이 프로젝트 템플릿은 Metro 스타일 앱에 권장되는 탐색 모델을 사용합니다.

고정 레이아웃 응용 프로그램

이 JavaScript 템플릿은 콘텐츠가 고정 뷰포트에 맞게 되어 있다는 점을 제외하고 빈 응용 프로그램 템플릿과 동일한 최소한의 Metro 스타일 앱을 제공합니다. JavaScript에서 개발하는 대부분의 게임 앱에 이 프로젝트 템플릿을 권장합니다

DirectX 응용 프로그램

이 C++ 템플릿은 Metro 스타일 게임 개발에 사용할 수 있습니다.

   

Visual Studio 11 C# 언어에서 제공하는 Metro Style App 템플릿

   

Visual Studio 11 JavaScript 언어로 제공되는 Metro Style App 템플릿

특이하게도 JavaScript 언어로 제공되는 템플릿에만 고정 레이아웃(Fixed Layout) 템플릿을 지원하는군요.

   

Visual Studio 11 C++ 언어에서 제공하는 Metro Style App 템플릿

   

   

템플릿 샘플

각각 템플릿이 어떻게 구성되었는지 보기로 한 참에, 각 언어별로 제공되는 템플릿을 생성하여 Windows 8 에서 실행해 보았습니다.

   

JavaScript 템플릿으로 만든 Metro Style App Sample

   

   

C# 템플릿으로 만든 Metro Style App Sample

   

   

C++ 템플릿으로 만든 Metro Style App Sample

   

Posted by 땡초 POWERUMC

댓글을 달아 주세요