KSUG에서 DI 번역 얘기를 하다가 DI라는 용어를 처음 만든 사람이 생각했던 dependency의 의미를 한번 살펴봤다. KSUG메일링리스트에 썼던 글을 옮겨 놓는다.

원 글은 http://groups.google.com/group/ksug/browse_thread/thread/efb8cb41a9fc43e1

그 이전에 논의 했던 DI번역에 관한 것은 http://groups.google.com/group/ksug/browse_thread/thread/bfd8580df8971303/166b8a987d1daf9c#166b8a987d1daf9c

——————————————————————————–

이전의 DI 용어 번역 논의에서 한 부분을 차지했던 dependency에 대해서 좀 더 생각해보고 싶습니다.
Dependency Injection이라는 용어를 처음 만들어서 제안했던 사람은 Martin Fowler입니다. 스프링이 사용한 방식을
IoC라는 너무 느슨하고 일반적인 용어로 부르는 것보다는 그 특성을 잘 나타낸 구체적인 용어를 사용하는 것이 좋겠다고 생각해서 제안한
것이죠.

그의 IoC/DI 소개 글은 매우 유명합니다. 스프링 레퍼런스 문서에서도 IoC개념을 위해서 1.0 문서 때부터 이 문서를 읽도록
권장하고 있습니다.
http://www.martinfowler.com/articles/injection.html

이 글에 나타난 dependency에 대한 설명을 좀 살펴볼 필요가 있습니다.

I’m going to start by talking about the various forms of dependency njection, but I’ll point out now that that’s not the only way of emoving the dependency from the application class to the plugin mplementation

이 글에 나타난 dependency에 대한 설명을 좀 살펴볼 필요가 있습니다. DI에 대해서 먼저 설명한다고 하면서 그것이 애플리케이션
클래스에서 dependency를 제거하는 유일한 방법은 아니다라고 이야하기 하고 있습니다.  DL(service locator)도 있다는
설명을 위한 것인데, 아무튼 여기서 관건은 DI란 application class에서 dependency를 제거하는 방법의 일종이라는
것입니다.

좀 더 구체적인 설명을 보죠.

The key benefit of a Dependency Injector is that it removes the dependency that the MovieLister class has on the concrete MovieFinder implementation

예제에 나온 MovieLister -> MovieFinder(interface) -> MovieFinderImpl 관계를 가지고
설명하기를 DI의 장점은 dependency를 제거하는 것인데, dependency란 MovieList클래스가
MovieFinderImpl 클래스에 대해서 가지고 있는 것
이라고 되어 있습니다.

내용은 쉽습니다. MovieList가 MovieFinder라는 인터페이스에만 의존하고 있어야지, MovieFinderImpl에 의존하고
있으면 안된다는 것이고, 그 것을 완벽하게 제거하기 위해서는 인터페이스를 도입할 뿐더러, 그 DI를 통해서 외부에서 dependency를
주입해주도록 해야 한다는 것입니다.

자 그럼 여기서 제거 된다는 dependency란 무엇일까요? 그것은 MovieLister안에 가지고 있는 구체적인 클래스에 대한 모든
정보를 말합니다. 그 정보를 가지고 있기 때문에 발생하는 모델링 타임의 의존관계(dependency relationship) 또는
의존하고 있는 성질(?)이라고 추상적으로 말할 수 있는 의존성(dependency)입니다.

적어도 여기서 볼때 dependency란 런타임시에 컨테이너가 집어넣어주는 dependent object가 아님을 분명히 알 수
있습니다.
오히려 그것은 모델링 타임시 코드레벨에서 가지고 있을 수 있는 의존관계(UML에서 쓰는 용어이죠)를 가리킨다는 것이라고 볼 수 있습니다.
코드에서는 제거해주고 대신 IoC/DI컨테이너가 대신 부여(주입)해준다는 것이죠.

즉, MovieLister 코드에 나타날 수 있는 특정 클래스에 대한 의존관계(또는 의존성)을 외부로 제거하는 것이 DI라는
설명입니다.

물론 나중에 DI 방식의 컨테이너가 해주는 일은 구체적로 런타임시 의존객체를 전달해주어서 그것과 런타임 의존관계를 만들어주는 것입니다.
구현 메카니즘으로 보면 dependent object injection이라고 할 수 있지만, 그 개념을 보자면 코드레벨에서 구체클래스에
의존관계를 가지지 않도록 해주는 것이 DI 라는 것입니다.

그래서 DI라는 용어를 처음 고안한 Martin Fowler의 아이디어에 따르면

DI에서 dependency를 의존객체라고 보는 것은 적절치 않습니다.
대신 코드 레벨에서 제거했지만, 런타임시에 가지게 해주는 의존관계 또는 의존성으로 보는 것이 좋습니다.

http://publib.boulder.ibm.com/infocenter/radhelp/v6r0m1/index.jsp?top…
에서 볼 수 있 듯이, 한쪽 클래스가 다른 클래스에 의존하고 있는 것을 UML에서는 dependnecy relationship이라고
표현합니다.
위의 설명에서 제거한다는 dependency란 바로 그것을 말하고 있고(have dependency on a class), 그런면에서
의존관계라고 이해하는 것이 DI 개념을 가장 잘 설명한 dependency의 해석이라고 봅니다.

물론 DI에서 dependency의 뜻이 그렇다는 것이지, 그래서 용어번역도 그래야 맞다고 주장할 생각은 없습니다. 번역이란 또 다른 이유와 목적을 위해서 원개념과 다른 대안번역어를 가질 수 있기 때문이니까요.

그래도 의존객체는 쫌 그렇네요. 상위 개념을 너무 로우레벨의 실현방법으로 대치시켜버린 듯한 느낌이

Related posts:

  1. DI의 본질 – 다이나믹 (타입) 언어는 Dependency Injection이 필요없는가?
  2. Code Organization & Cyclic Dependency Problem
  3. Dependecy Injection에는 Prototype Scope가 없다
  4. Dependency Injection 표준화?
  5. EJB3의 Dependency Injection
  6. JSR-330 Dependency Injection for Java 최종 승인
  7. 마이크로 DI(dependency injection)
  8. Spring 3.0 (42) Spring Dependency Matrix 업데이트
  9. Spring 3.0 (7) Spring 3.0 Dependency Matrix
  10. Spring 3.0 (53) Spring Dependency Matrix 업데이트
  11. Maven 재도전기 (1)

Facebook comments:

to “Dependency Injection의 Dependency란 무엇인가?”

  1. I every time spent my half an hour to read this blog’s articles every day along with a cup of coffee.|

  2. very couple of web-sites that happen to become comprehensive beneath, from our point of view are undoubtedly nicely worth checking out

  3. we came across a cool site which you could delight in. Take a search for those who want

  4. You said it nicely.! zyloric 300

  5. viagra https://canadianpharmacyfda.com/ – viagra viagra online viagra viagra online

  6. check below, are some absolutely unrelated sites to ours, on the other hand, they are most trustworthy sources that we use

  7. Reliable material. Thank you! buy cialis online

  8. the time to study or stop by the material or websites we’ve linked to below the

  9. Nicely put, Cheers! dutasterid

  10. cheap cialis http://www.ciallisonline.com/ – cialis cheap cialis п»їcialis online cialis

  11. Nicely put. Appreciate it! kaletra

  12. just beneath, are several entirely not connected web sites to ours, nonetheless, they may be surely worth going over

  13. Fntlvw ukgjjl non prescription ed pills medicine erectile dysfunction

  14. wow, awesome blog.Really thank you! Keep writing.

  15. “Enough!” He (I presumed) walked up to me, demonstrating that I had a head of height in advantage, and gestured imperiously for Bekhat to move away from me. Given the circumstances, what could she do but obey? As she did so, a pair of the brutes moved from their line to flank her, though they did nothing more.
    http://com7.jp/ad/?https://1080pxvideos.com
    The little man drew from one sleeve a small stick, looking as though he had pulled it from a bush to scrape his teeth on his way over, and dragged it along the ground in a circle around me. As he completed the circle he spat on the joining and straightened again.

    I grew alarmed as he drew a small knife from somewhere or other, but he only cut his own finger and splashed a few drops on to the dust. “Now, creature,” he said, looking me in the eyes at last. “Simply walk over my circle, return to your home, prove me wrong, and we shall trouble you no more.”

  16. This paragraph will assist the world wide web users for setting up new site or possibly a blog from begin to end.

  17. Sites of interest we have a link to

  18. I have not checked in here for some time since I thought it was getting boring, but the last few posts are great quality so I guess I will add you back to my everyday bloglist. You deserve it my friend :)

  19. Hi! Do you use Twitter? I’d like to follow you if that would be okay. I’m definitely enjoying your blog and look forward to new updates.|

  20. Really informative article post.Much thanks again. Really Great.

  21. Incredible plenty of helpful info! Order Generic Strattera

  22. In the case of michael kors factory outlet, Inc. Sometimes the decisions are

  23. cialis online https://cialisfw.com/ – cialis generic cialis cialis cialis

  24. Seriously tons of wonderful knowledge! buy celebrex online

  25. uvb treatment I want to write and I wonder how to start a blog for people on this yahoo community..

  26. Thank you, I have recently been looking for information about this subject for ages and yours is the greatest I’ve discovered so far. But, what about the conclusion? Are you sure about the source?

  27. Many thanks! I appreciate this. lisinopril 10 mg

  28. “I carry on listening to the rumor lecture about receiving boundless online grant applications so I have been looking around for the top site to get one. Could you advise me please, where could i get some?”

  29. Amazing forum posts. Thanks! fluconazol 150 mg

  30. Thanks for the blog post.Thanks Again. click here

  31. Thank you for your own effort on this web page. Ellie loves making time for investigations and it is obvious why. We all notice all about the lively method you produce rewarding tips by means of the web blog and even encourage contribution from visitors about this subject matter so our favorite girl is truly discovering a whole lot. Enjoy the rest of the year. You are always conducting a very good job.

  32. Fantastic information, Cheers. ventolin hfa

  33. Nicely put. Cheers! inderal xl

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha