2010-07-29 3 views
12

우리 프로젝트 (Spring, Struts, iBatis 등)에서 사용하는 오픈 소스 프로젝트/API/라이브러리는 거의 없으며 그들의 디자인과 그들이 작동하는 방식을 이해하고 싶습니다. 내부적으로는입니다.오픈 소스 프로젝트/라이브러리를 이해하는 방법?

이 프로젝트를 이해하는 가장 좋은 방법은 무엇입니까? 프로젝트에서 이미이 라이브러리를 사용하고 있습니다. 그리고 이러한 라이브러리의 입/출력 상호 작용/구성을 알고 있습니다. 내가 이해할 수없는 것은 이러한 API/라이브러리가 내부적으로 어떻게 작동하는지입니다. 내가 직면

문제점은 다음과 같습니다

  1. 라이브러리의 항목 클래스를 찾기. 라이브러리에 대한 엔트리 클래스를 알 수있는 방법이 있습니까? 전체 API를 실행하는 것인가요?
  2. 라이브러리 디자인 개요를 보려면 Eclipse에서 사용할 툴/플러그인. 라이브러리의 모든 클래스를 거치면서 매우 어려운 작업이 될 수 있습니다. 이클립스에서 API의 클래스 다이어그램을 생성 할 수있는 도구를 권하고 싶습니다.

미리 감사드립니다.


UPDATE : 나는

+3

; 코드를 문서화하면 정기적으로 사용하게됩니다. 리누스 토발즈 (Linus Torvalds)는 코더의 지옥입니다 ... 또한 전도자와 작가의 지옥입니다. 이것이 세계에 리눅스가있는 이유입니다. –

+0

아래에서 언급했듯이 모든 프레임 워크/라이브러리에 실제로 메인 클래스가있는 것은 아닙니다. 때로는 lib의 본질과 때로는 단순히 나쁜 디자인 (썩어가는 아키텍처)에 기인합니다. OS 프로젝트를위한 최선의 방법은 일반적으로 문서 및 포럼, 보통 때로는 책입니다. (예) Hibernate와 같은 혼란 한 프레임 워크에서 도구를 실행하려고하면 아무 것도 얻을 수 없습니다. –

+0

@Eran, 메인 클래스가 아닌 엔트리 클래스를 의미합니다. 그에 따라 내 질문을 수정했습니다. 감사. – peakit

답변

7

저는 항상이 같은 전략을 사용합니다 : 나는 코드베이스를 전체적으로 "이해"하려고 시도하지 않으며 일반적으로 요청 흐름을 따르려고합니다. 응용 프로그램을 사용하는 데 필요한 것을 결정하기에 충분한 설명서를 읽었으며 코드 (IDE에 모든 소스 코드로드)를 읽습니다.

예를 들어, struts에서 web.xml에 서블릿 필터를 설치하게됩니다. 필터 읽기를 시작하고 단일 요청이 스택을 통과하는 경로를 따르십시오.

스프링과 마찬가지로, 두 개의 주요 진입 점인 필터와 "getBean"이 있으며, 둘 다 설명서의 초기에 언급되어 있습니다. 그 둘을 읽으십시오.

두 경우 모두 프레임 워크의 "핵심"을 신속하게 나타내는 하나 또는 두 개의 클래스를 찾을 수 있습니다. 실제 사용법을 잘 읽고 실제 사용 사례가 & 필요하면 더 많은 탐색을해야합니다.

오픈 소스 라이브러리 (또는 그 문제의 다른 코드베이스)를 "이해하는 것"은 모든 것을 찾기 위해 접근하는 것이 일반적으로 이러한 접근에 매우 좋은 방법은 아니지만 일반적으로 이 많은 것들은 너무 많은 코드를 포함하고 있습니다. 요청 흐름을 따라갈 때 다이어그램을 만드는 것이 매우 산만해질 수 있음을 알게되면 이해에서 벗어나 집중하는 경향이 있습니다. (내 이해가 급속하게 증가하기 때문에 대부분 프린터가 프린터에 도달하기 전에 구식이됩니다.)

4

좋은 질문!, 내가 무슨 짓을했는지, 특별히에서 라이브러리의 개요/클래스 다이어그램을 받고에서 나를 도울 수 이클립스 플러그인에 대한 몇 가지 입력이 필요합니다 Spring의 경우, 문서 및 API의 컨설팅과는 별도로 프로젝트의 소스를 Eclipse의 프로젝트에 첨부하면 API가 아닌 소스 코드를 탐색 할 수 있습니다. 특별히 Spring Security 프로젝트의 경우에 매우 도움이되었습니다. 소스 코드를 검사하기 전까지는 이해할 수없는 개념이있었습니다.

오픈 소스 라이브러리를 사용하면 장점 중 하나입니다.

감사합니다.

+0

경험을 공유해 주셔서 감사합니다. 하지만 전체적인 디자인을 느낄 수있는 방법은 다음과 같습니다. – peakit

+0

전반적인 디자인에 대한 가장 좋은 조언은 프로젝트 웹 사이트를 참조하고 프로젝트 참조를 확인하는 것입니다. if 존재하는 모든 필자는 필자가 문서화 때문에 모든 오픈 소스 프로젝트가 빛나는 것은 아니라는 것을 인정해야한다. –

0

공식적인 설명서를 참조하거나 (사용중인 버전을 확인하십시오) 기술 관련 서적을 구하십시오.

0

대부분의 API에는 main 메소드가있는 클래스가 없습니다. 그들은 서버 자체에서 호출하는 웹 서버에서 실행 중입니다. 자신의 서버로 실행하지 않는 한 주된 방법은 없습니다.

+0

"main"에서 나는 대부분의 기능이 묶여있는 엔트리 클래스를 의미했습니다. – peakit

+0

@peakit : 당신은 문서와 소스를 읽어야 할 것입니다. 모든 프로젝트는 크게 다릅니다. 구성 파일을로드하는 것이 무엇이든 찾아내는 것으로 시도해보십시오. 첫 번째 또는 가까운 첫 번째로로드되며 다른 모든 것은 그 위에 의존합니다. –

1

구조 101 (http://www.headwaysoftware.com/products/structure101/index.php) 및 Lattix (http://www.lattix.com/)와 같은 도구를 사용하면 코드를 분석하고 아키텍처 다이어그램/종속성 행렬을 생성 할 수 있습니다.

이것은 정확하게 클래스 다이어그램이 아닙니다. 주된 초점은 계층화입니다. 따라서 진입 점은 대개 최상위 계층입니다.

그러나 위에서 설명한대로 일부 라이브러리는 엉망이며,이 도구는 충분히 도움이되지 않습니다.

는 S101 온라인 데모를 참조하십시오 http://www.structure101.com/java/ 예를 들어이 소나 프로젝트 구조는 다음과 같습니다 오픈 소스 소프트웨어를 기록 관객 사람들을위한 http://www.structure101.com/java/tracker/sonar/1.11.1/arch.html