NGMsoftware

NGMsoftware
로그인 회원가입
  • 커뮤니티
  • 자유 게시판
  • 커뮤니티

    자유롭게 글을 작성할 수 있는 게시판입니다.

    자유 게시판

    자유롭게 글을 작성할 수 있는 게시판입니다.


    소프트웨어 의존성 라이브러리를 찾을 때 유용한 프로그램. (A useful program when looking for dependenc…

    페이지 정보

    본문

    안녕하세요. 소심비형입니다. 개발을 하다보면 내 컴퓨터에서는 잘 동작하던 프로그램이 배포한 사용자 컴퓨터에서 실행되지 않는 경우를 자주(?) 접하게 됩니다. 보통 웹개발의 경우에는 이런일이 발생하지 않습니다. 웹브라우저가 클라이언트 역할을 하기 때문에 개발자의 관리 영역이 아니기 때문이죠. 하지만, CS 프로그램들의 경우에는 매우 빈번하게 발생되는 문제이기에 한번 정리를 하게 되었습니다. 주로 사용하던 프로그램은 [ Dependency Walker ]입니다. 윈도우 10으로 넘어오면서 이 프로그램이 제대로 동작하지 않네요-_-;

    snapshot.png

     

     

    윈도우 7에서 잘 사용하던 프로그램인데 말이죠. 그래서, 윈10에서 사용할만한 프로그램이 없을까하고 찾아보다가 깃헙에서 오픈소스를 하나 발견했습니다. [ Dependencies - An open-source modern Dependency Walker ]에서 다운로드 받을 수 있습니다. 이 프로그램도 디펜던시 워커와 비슷한 GUI를 가지고 있어서 사용하는데 크게 어려움은 없을겁니다. 라이브러리 의존성을 체크할 exe나 dll을 선택하면 아래와 같이 표시해줍니다. 초기에는 작은 프로그램이었지만, 현재 엔지엠은 상당히 큰 프로젝트가 되어 버렸습니다. 관리해야 할 버전도 많아지고, 의존성과 종속성(Dependency)을 가진 프로젝트와 모듈, 라이브러리들... 이제 직접 관리하는데 한계가 오고 있네요ㅠㅠ;

    96FNs02.png

     

     

    Dependency란?

    프로그램 또는 모듈간 상호 참조하는 상태를 말합니다. 사실 상호 참조는 IDE에서 막고 있기 때문에 불가능합니다. 그렇다고해서 못하는건 아니예요. 구조적인 결함으로 어쩔 수 없는 경우에는 강제적으로 상호 참조를 하기도 합니다. OOP(Object Oriented Programming, 객체 지향 프로그래밍) 언어에서 자주 발생됩니다. (C++, C#, Java...)

     

    프로그래밍할 때 강력하게 결합된 모듈들은 즉각적인 배포를 불가능하게 하고, 테스트를 어렵게 만듭니다. 물론, TDD(Test Driven Development, 테스트 드리븐 디벨롭먼트)에서 목업을 이용할수도 있지만, 권장하지는 않습니다. 아무튼, 이런 종속성을 느슨하게 결합하도록 하는 여러가지 방법들이 존재하는데요. 대표적으로 Dependency Injection(의존성 주입)과 Facade Design Pattern(파샤드 디자인 패턴)을 이용합니다. 인터페이스를 준수해야 하고, 다형성을 지원해야 한다면 서비스를 극단으로 단순화한 파샤드 보다 어뎁터(Adepter)를 사용해야 합니다. 바쁜 스케쥴에 쫓기다보면 스파게티 소스가 되는건 어쩔 수 없나봅니다.

     

    ※ 개발자들의 필독서~ GoF의 디자인 패턴

    n1gdfUA.jpg

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.