'Developer's life/Dev Process'에 해당하는 글 6건

Java : http://www.watij.com/

Ruby : http://wtr.rubyforge.org/

TDD관련 개발 사이트인거 같은데-_-;;

자세히 살펴봐야겠군~

WRITTEN BY
hopangbear

TDD
트랙백  0 , 댓글  0개가 달렸습니다.
secret
[C#] 문서화를 자동으로, XML 문서 주석

서우석(카이스트 대학원 박사과정)   2005/11/22
여러분은 얼마나 많은 주석을 작성합니까? 그리고 주석을 어떤 용도로 사용하십니까? 주석을 작성해야 하는지, 또는 말아야 하는지에 대한 논의는 상당히 오랜 시간 동안 지속되어 왔으면서도 여전히 결론이 내려질 가능성이 그렇게 많지 않아 보이다. 그 옛날 소크라테스가 제자들에게 주석을 작성하는 것이 옳은가에 대한 질문을 했을 때, 한 제자는 코드의 유지 보수 측면에서 반드시 필요하다고 주장하고, 또 다른 제자는 코드가 모든 것을 말할 수 있어야 한다고 주장한다.

개인적으로는 매우 어려운 알고리즘이 아닌 이상 주석을 작성할 필요가 거의 없으며, 주석을 작성해야 할 만큼 복잡한 모듈은 리팩토링을 통해서 스스로를 설명할 수 있는(Self-Document) 보다 작은 모듈로 나누어져야 한다고 생각한다. 지금까지 이러한 논의가 끊이지 않았던 이유 중 하나는 주석이 코드 밖으로 나오지 못하고 코드 내에서만 존재한다는 가정이 있었기 때문이다. 만약 주석을 통해서 코드를 직접 살펴보지 않고 이해할 수 있을 정도의 문서화가 가능했다면, 아마도 주석이 그렇게 천대받지는 않았을 것이다.

C#은 개발자에게 주석을 작성할 것을 적극적으로 권장하고 있다. 그리고 개발자의 그러한 수고로움을 문서 파일(document file)이라는 형태로 보답한다. 문서 파일은 XML(Extensible markup Language) 포맷으로 주석을 작성하여 생성할 수 있다. 생성된 문서 파일의 포맷도 XML이기 때문에 사용자가 원하는 다른 형태로 변환이 가능하다. 비록 Visual Studio가 제공하는 IntelliSense 기능의 도움을 받으면 XML 주석을 보다 쉽고 빠르게 작성할 수 있지만, 문서 파일을 생성하는 기능은 C# 컴파일러의 기능(/doc 옵션)이기 때문에 Visual Studio가 없이도 소스 파일을 컴파일하는 것만으로도 생성이 가능하다.

주석 작성
C#에서 주석은 /* ... */ 또는 // 으로 시작한다. 반면에 문서 주석은 /// 또는 /**로 시작한다. 문서 주석은 일반 주석과 달리 사용자 지정 타입(클래스, 델리게이트, 인터페이스)과 멤버(필드, 이벤트, 속성, 메서드)위에 작성되어야 한다. 앞서 설명했듯이, 문서 주석은 XML 포맷(http://www.w3.org/TR/REC-xml)을 따르기 때문에, 정형화된(well-formed) 형태를 유지해야 한다. 우선 간단한 예를 통해서 문서 주석의 실체를 확인해 보겠다.

/// <remarks><c>Point</c> 클래스는 2차원 상의 점(point)을
/// 나타낸다.</remarks>
public class Point
{
/// <remarks><c>draw</c> 메서드는 점을 그린다.</remarks>
void draw() { }
}

이 코드에서 문서 주석을 작성하기 위해서 사용된 태그는 <remarks>와 <c>이다. 잠시 후에 문서 주석에 사용되는 태그들을 소개하겠지만, <remarks> 태그는 타입에 대한 설명을 기술하고, <c>는 코드로 나타낼 텍스트를 가리킨다. Visual Studio에서 문서화 파일을 생성하기 위해서는 다음 그림과 같이 프로젝트 옵션 창의 빌드 탭에서 XML document file 체크 상자를 선택한다.


그리고 Visual Studio는 문서 주석을 지원하므로, 주석을 추가하고자 하는 타입이나 멤버 위에서 ///를 입력하면 자동으로 <summary> 태그를 생성한다. 만약 기존에 작성된 주석에 새로운 태그를 추가하는 경우라면, 다음 그림과 같이 IntelliSense 기능이 활성화되어 상황에 맞는 태그를 선택할 수 있다.


주석을 작성하고 옵션을 설정한 후 빌드에 성공하면 Debug 폴더에 <프로젝트 이름>.xml과 같은 형태의 XML 파일이 생성됩니다. 다음 코드는 생성된 XML 파일 중에서 Point 클래스와 관련된 부분이다.

<member name="T:XMLDocument.Point">
<remarks><c>Point</c> 클래스는 2차원 상의 점(point)을
나타냅니다.</remarks>
</member>
<member name="M:XMLDocument.Point.draw">
<remarks><c>draw</c> 메서드는 점을 그립니다.</remarks>
</member>

<member>라는 새로운 태그가 추가된 점을 제외하면 원래 코드에 있던 태그들을 그대로 작성되었음을 확인할 수 있다. 생성된 XML 문서 주석은 XSLT(Extensible Stylesheet Language Transformation)등을 사용하여 새로운 형태의 문서로 변환이 가능하다.

문서 주석에 대한 권장 태그
문서 주석에 사용되는 태그는 제한이 없습니다(확장성 고려). 개발팀마다 원하는 태그를 만들어서 사용한 후, 생성된 XML을 재가공하여 사용하면 된다. 하지만 MS는 일반적으로 개발자에게 다음과 같은 태그들을 권장하고 있다.

   
태그 용도
<c> 설명에 있는 텍스트를 코드로 표시하는 데 사용합니다.
<code> 여러 줄을 코드로 표시하는 데 사용합니다.
<example> 메서드나 기타 라이브러리 멤버의 사용 방법에 대한 예제를 지정합니다.
<exception> throw할 수 있는 예외를 <exception> 태그에 지정합니다.
<include> 소스 코드의 형식과 멤버를 설명하는 다른 파일의 주석을 참조합니다.
<list> 리스트나 테이블을 생성합니다.
<para> <summary>, <remarks> 또는 <returns> 같은 태그 내에서 사용하여 텍스트에 구문을 추가합니다.
<param> 매개 변수를 설명합니다.
<paramref> 특정 단어가 매개 변수임을 나타냅니다.
<permission> 멤버 액세스를 문서화합니다.
<remarks> 형식에 대한 정보를 추가하여 <summary>에 지정한 정보를 보충하는 데 사용합니다.
<returns> 반환 값을 설명합니다.
<see> 텍스트 내부에서 링크를 지정합니다
<seealso> 참고 항목 부분에 나타나는 텍스트를 지정합니다.
<summary> 형식 또는 형식 멤버를 설명합니다.
<value> 속성을 설명합니다.
<MSDN 라이브러리 참고>

NDoc을 이용한 도움말 파일 생성
지금까지 문서 주석이 무엇이고 문서 주석을 이용하여 XML 파일을 작성하는 방법에 대해서 살펴보았다. 마지막으로 생성된 XML 문서 파일을 이용하여 MSDN 라이브러리와 같은 도움말 파일을 생성하는 방법에 대해서 소개하겠다. XML 문서 파일을 도움말 파일로 변환하기 위해서 NDoc(http://ndoc.sourceforge.net)을 사용할 것이다. NDoc은 .NET 어셈블리와 XML 문서 파일을 사용하여 클래스 라이브러리 문서를 생성하는 툴이다(안타깝게도 .NET 2.0을 지원하지는 않기 때문에, NDoc을 실행하기 위해서 .NET 1.1 이하의 버전이 설치되어 있어야 한다).

NDoc을 설치한 후, 실행시키면 새로운 프로젝트가 생성됩니다. NDoc은 자체 프로젝트 파일을 관리하지만, Visual Studio 솔루션 파일(.sln)을 이용하여 새로운 프로젝트를 생성할 수 있기 때문에, 도움말 파일을 생성하고자 하는 솔루션 파일을 선택한다. 도움말 파일을 생성하기 전에, 여러 가지 옵션을 선택하여 최종 완성될 파일에 표시될 항목들을 선택할 수 있다. 다음 그림은 NDoc에서 XMLDocument 솔루션을 열었을 때의 모습이다.


설정을 완료 한 후, Document 메뉴의 Build 메뉴를 선택하면 도움말 파일을 생성하기 위한 빌드 작업이 시작되고, 최종 완성된 파일은 Document 메뉴의 View 메뉴를 선택하여 확인할 수 있다. 완성된 도움말 파일은 다음 그림과 같습니다. 한글이 지원되지 않아 깨지는 모습을 확인할 수 있다.


필자 서우석님은 Microsoft MVP이며, 현재 카이스트 대학원 재학 중이며, C관련 프로그래밍에 능통하다.

WRITTEN BY
hopangbear

트랙백  0 , 댓글  0개가 달렸습니다.
secret
“소스코드 믿고 맡기세요”
정통부 SW 안정적 사용 보장
개발기업 폐업때도 유지·보수
“소프트웨어(SW)의 소스코드(설계도)와 기술자료를 믿고 맡기세요.”

정보통신부는 SW 개발기업의 지적재산권을 보호하고 사용자가 개발기업의 폐업 등 경우에도 저렴한 비용으로 안정적으로 SW를 사용할 수 있도록 보장하는 ‘SW 임치제도’를 활성화할 방침이라고 20일 밝혔다.

이 제도는 SW 개발기업과 사용권자가 합의해 소스코드와 기술자료 등을 신뢰성 있는 제3의 기관에 보관하는 방식. 미국의 경우 포천지 선정 500대 기업의 75%가 이를 이용하고 있다. 그러나 국내의 SW 임치제도 이용건수는 2005년 82건, 2006년 79건 등 1999년 프로그램심의조정위원회의 SW 임치업무가 시작된 이후 지금까지 285건에 불과할 정도로 이용 실적이 저조하다.

지난해 국내 52개 공공기관을 대상으로 조사한 결과 88.9%가 개발기업의 SW 저작권을 이관받고 있는 것으로 나타났다. 그러나 SW 임치제도는 개발업체에 지적재산권을 부여하고 개발기업이 파산·폐업할 경우에도 유지·보수가 가능할 뿐 아니라 개발금액의 약 35.5%, 발주금액의 22.6%를 절감할 수 있는 효과가 있다고 정통부는 설명했다.

◆GS인증시 수수료 할인도

정통부는 이에 따라 올해 각 부처 및 산하기관의 SW 용역 관련 사업 추진시 소스코드 등 기술자료를 임치하도록 권고하고 교육ㆍ홍보도 강화할 계획이다. 특히 SW 개발사업 추진시 기간 또는 단위사업을 기준으로 임치수수료를 산정, 일괄계약하는 다량임치제도도 도입할 방침이다.

정통부 관계자는 “GS(Good SW) 인증을 받은 경우 해당 기술자료를 임치하도록 하고 현재 건당 30만원의 임치 수수료를 할인해 주는 등의 인센티브를 부여하는 방안을 검토 중”이라고 말했다.
2007-02-21
이국명 kmlee@metroseoul.co.kr

WRITTEN BY
hopangbear

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Charles Petzold

1920년대에
  할리우드는 곤경에 처했습니다. 스캔들로 얼룩지고 영화는 섹스와 폭력이 난무하여 정부가 개입할 수도 있는 위험 수준에 이르렀습니다. 영화관들은 Hays Office를 만들어 자체 감사를 벌이고 실버 스크린을 정리하는 방식으로 대처했습니다. Hays Office는 적합한 언어에서 적절한 감정 표현에 이르기까지 모든 사항을 규제하는 규칙을 제정하고 비정부 영화 감독 기관의 중추적인 역할을 수행했습니다.

1930년대 중반, 영화 작가와 감독들은 창의적인 방식을 찾아냄으로써 이러한 제약에 대처했습니다. 이러한 해결책 중 하나는 로맨스, 희극, 풍자가 결합된 스크루볼 코미디라 불리는 새로운 장르였습니다. 스크루볼 코미디에서는 외설적인 키스 대신 로맨스가 영화의 상당 부분을 차지했으므로 문제되지 않았으며 또 다른 장점은 대화가 너무 빠르고 우회적이어서 감시인이 들을 수 없다는 것이었습니다. 그 결과 작가와 감독이 원하는 외설적인 내용을 자유롭게 표현할 수 있었다면 절대로 나올 수 없었던 It Happened One Night, Twentieth Century, Bringing Up Baby와 같은 고전 영화가 만들어졌습니다.

자유가 무제한 보장되는 상황이 아니라 엄격한 제약이 따르는 상황에서 창의성이 꽃을 피우는 경우가 자주 있습니다. 예술가는 물론 엔지니어도 이러한 상황에 익숙합니다. 아폴로 13호가 달에 가는 도중에 산소 탱크가 폭발했을 때 이 문제를 해결하기 위해 뛰어난 창의성과 천재성이 요구되었으며 결국 이러한 창의성은 수중에 있는 제한된 자료에서 나왔습니다.

필자는 최근에 지금까지 경험한 것 중에서 가장 난해하고 흥미로운 프로그래밍을 수행하면서 이러한 모순을 상기했습니다. 이때는 적합한 프로그래밍 언어를 사용하고 있지도 않았습니다. 나중에 필자는 Microsoft® Windows® Presentation Foundation의 중요한 부분을 차지하는 XAML(Extensible Application Markup Language)로 이 프로그래밍을 진행하게 되었습니다.

XAML을 사용하면 레이아웃을 표현하고 그래픽과 애니메이션을 표시하는 Windows Presentation Foundation의 강력한 클래스에 액세스할 수 있습니다. XAML은 선언적 프로그래밍 언어로 분류될 수도 있습니다. 그러나 XAML은 보다 친숙한 프로그래밍 언어와 비교하면 기본적인 프로그래밍 기능조차 없는 언어임이 사실입니다. 루프와 조건이 없는 것은 그렇다 치고 숫자를 더하거나 곱하는 방법조차 없습니다.

그러나 XAML의 제한된 기능만으로 문제를 해결하고 "XAML 혹성에서 살아남기"위해 필자는 더욱 창의적으로 생각했습니다. 필자는 XAML로 행렬을 곱하는 복합 그래픽 변환을 정의하여 이를 통해 필요한 모든 곱셈 및 덧셈 기능을 제공할 수 있다는 사실을 알게 되었으며 ListBox를 사용하여 여러 요소를 보관한 다음, 데이터 바인딩을 통해 해당 요소를 인덱싱하는 방식으로 XAML에서 배열을 시뮬레이트할 수 있다는 것도 발견했습니다.

필자의 가장 만족스러운 성과는 XAML 시계 응용 프로그램입니다. 시계를 표시하기 위해 원형으로 눈금이 필요했습니다. 일반적으로 시계에는 12개의 큰 눈금과 48개의 작은 눈금이 있지만 for 루프를 사용하지 않을 경우 이러한 눈금을 만들려면 60개의 별도 XAML 요소가 필요합니다. 그러나 이러한 반복 작업을 수행하기 위해 시간을 허비할 수는 없었습니다. 이 문제로 며칠 동안 고심한 결과 드디어 해결책을 찾아냈습니다. 점선을 사용하여 두 개의 원을 그리는 방식으로 눈금을 정교하게 만들 수 있었습니다. 문제를 해결한 것은 물론이고 대부분의 다른 시계 응용 프로그램처럼 60개가 아니라 두 개의 그래픽 개체만 사용하여 작업을 마쳤습니다.

XAML 작성은 재미있지만 난해하며 지적 능력을 확장하기도 합니다. 그러나 몇몇 사람들은 XAML 작성이 정도를 벗어난 것이라고 생각합니다. XAML은 원래 사람이 작성하기 위한 것이 아니기 때문입니다. "XAML은 도구를 위한 것이다"라는 한 Microsoft 블로거의 주장이나 XAML 릴리스 몇 개월에 전에 '도구가 아니라 사람을 위한 것'이라는 이유로 일부 XAML 기능이 제거된 점을 생각하면 이를 쉽게 알 수 있습니다. 물론 Visual Studio®와 Microsoft Expression® Interactive Designer와 같은 XAML 생성 도구도 창의성을 자극할 수 있지만 코드 작성을 위한 창의성에는 도움이 되지 않습니다.

미래의 프로그래머는 XAML 구문을 배우기 위해 더욱 노력할까요? 아니면 단지 Visual Studio가 단추와 콤보 상자의 레이아웃을 저장하기 위해 생성하는 "신기한 XML 기능"으로 취급할까요?

대화식 디자이너와 코드 생성기는 프로그래머의 무기고라 할 수 있습니다. 이러한 기능을 통해 많은 시간을 절약할 수 있기 때문입니다. 그러나 우리가 누구인지는 잊지 맙시다. 우리는 프로그래머입니다. 우리에게는 강력한 코드를 작성할 수 있는 능력이 있습니다. 최소의 코드를 사용하여 최대의 효과를 거둘 수 있어야 합니다. 창의력을 발휘한다면 XAML과 같은 언어를 사용하더라도 애초에 의도된 것과는 전혀 다른 뛰어난 결과를 만들 수 있을 것입니다



WRITTEN BY
hopangbear

트랙백  0 , 댓글  0개가 달렸습니다.
secret
웹 어플리케이션의 테스트 자동화 샘플....

http://msdn.microsoft.com/msdnmag/issues/07/02/TestRun/Default.aspx?loc=ko

QA이 부서가 없으니 -_-;;; 팀원들이 틈틈히 테스트를 하는데...

이걸 한번 응용해 봐야겠군...

WRITTEN BY
hopangbear

트랙백  0 , 댓글  0개가 달렸습니다.
secret

우연히 웹 서핑 하다 찾은 문서화 관련 Tool

Visual Studio 6.0 용 doxygen 

음 평을 보아하니... 아주 쓸만한 듯... 화요일에 출근해서 적용해 봐야지...

VS .NET용도 있다는군요~!!

http://www.codeproject.com/macro/KingsTools.asp 역시 CodeProject!!

다운로드 받는 곳
http://www.codeproject.com/macro/KingsTools/KingsTools.zip
http://www.codeproject.com/macro/KingsTools/KingsTools_src.zip (소스)

Tip. 한글 경로명에는 문제가 있다는군요...


WRITTEN BY
hopangbear

트랙백  0 , 댓글  0개가 달렸습니다.
secret