semtax
37
2019-08-15 19:25:59 작성 2019-08-15 19:29:38 수정됨
5
2237

신입 포트폴리오로 이정도면 평균... 이하인가요?


별거는 아니고, 자바코드를 던져주면 UML로 바꿔주는 간단한 프로그램입니다..
일단, 자바코드 파싱하는 컴파일러 부분을 파서 제너레이터를 이용해서 직접 만들었고, 그림으로 그려주는것만 graphviz를 이용했습니다

Github : https://github.com/tlqaksqhr/Java2UML

데모 : https://java2uml.herokuapp.com/ 

p.s 
3000이상을 받고는 싶지만 무리같네요 ㅠㅠ...

1
  • 댓글 5

  • kenu
    50k
    2019-08-15 19:35:52 작성 2019-08-15 19:37:17 수정됨

    세상이 많이 변했군요. 쯔업

    "자바코드를 던져주면 UML로 바꿔주는 간단한"? 이라니


    python이 핵심인 듯합니다.


  • rlqnsdl
    195
    2019-08-15 19:36:44 작성 2019-08-15 19:37:32 수정됨

    평균이라는 것도 너무 애매하네요. 포트폴리오 없이 취직하는 사람도 주변에 많아서요.

    만든건 좋아보입니다. (근데 깃헙에 올린 Gif.. 이왕이면 바탕화면 이런것도 깔끔히 정리를 하심이..ㅎㅎㅎ)


    3000이상 주는 기업은 많죠. 근데 무리같다고 생각하는 순간부터 그 기업은 멀어지는거같네요. 본인이 한계를 정해버렸으니까요.

  • 답정너심판자
    2k
    2019-08-15 19:49:31

    이렇게만 올리면, 무엇을 고생했고 무엇을 잘했는지 모르겠습니다.

    보기엔 라이브러리 써서 연결한 것 밖에 안보이거든요.

    본인의 고생 몰라주고 지금처럼 오해하면 속상하겠죠?


    본인이 만든 소프트웨어 팔려고 오는거 아니면,

    본인이 무엇을 했는지 적고, 막혔던 점, 해결 과정 적는건 필수 입니다.

  • mer
    104
    2019-08-15 20:43:27

    소스코드랑 커밋 이력 보고 뭘 하셨는지는 충분히 알겠구요


    충분히 잘 하신 것 같습니다

  • semtax
    37
    2019-09-03 23:46:57

    답변 감사드립니다.
    그 프로젝트 설명같은 경우에는 다음과 같습니다..

    문제1 : ANTLR4 python라이브러리의 기술 문서 부재 
    해결방법1 : 맨 처음 검색으로 ANTLR 레퍼런스 문서가 있는지 확인했지만 java버전의 문서만 있었고, python버전은 존재하지 않음. 먼저 자바 문서를 참고하여 문서에서 명시된 내용을 참조하여 코드를 작성하였으나 제대로 동작하지 않음. 다음으로 github에서 ANTLR4 python binding의 파서 제너레이터 소스코드와 샘플코드를 직접 분석하고 돌려봄. 하지만 코드는 제대로 파싱하였으나 의도했던것과 다른 handler가 호출이 되거나 생각 했던 것 과 다른 값을 반환하는 문제가 발생 함. 그래서 일단 python에 있는 dir함수로 멤버변수를 확인하였음. 그런뒤 type 함수를 이용해서 리턴 타입과 파라미터 타입을 알아내서 어떻게 사용하는지 알아내고 제대로된 값을 받아 올 수 있었음. 그리고 의도했던 것과 다른 핸들러가 호출되는 경우는, 공식 가이드 문서를 참조하면서 해당 핸들러가 호출되는 규칙을 보면서 직접 실행해 보고 그에 따른 규칙을 유추하여 문제를 해결하였음. 
    문제2 : graphviz를 이용한 시각화를 담당하는 부분에서 스타일과 레이아웃 속성이 제대로 적용되지 않음.
    해결방법2 : 먼저 사용한 라이브러리인 viz.js 문서를 찾아보았으나 스타일 속성에 대한 문법이 제대로 나와있지 않았음. 그래서 graphviz 표준 specification문서의 스타일 문법 BNF표기를 찾아 보았고 해당 spec 문서에서 html 형식을 따라 스타일과 레이아웃 속성에 대한 내용이 나와있었음. 그래서 해당 spec 문서를 참조하여 프로그래밍 하여 해결함.
    문제3 : 기존의 BNF문법을 사용하는 경우 무한 재귀 호출 문제가 발생함.
    해결방법3 : 공식 가이드 문서와 컴파일러 관련 서적을 보고 LL기반의 파서여서 Left Recursion 으로 인한 무한 재귀 호출 문제가 발생한다는 사실을 알아내고, 공식문서를 참조하여 ANTLR4의 Syntatic Predicate 키워드를 사용해서 해결.

    이 프로젝트를 통해 얻은 성과는 다음과 같습니다 : 
    - Lexical Analysis와 Syntax Analysis, 그리고 AST에 대해 학습 할 수 있었음.
    - 자바 컴파일러에서 실제로 쓰이는 자바 코드 파서를 실제로 만들어 보는 경험을 함.
    - Flask를 이용한 MVC패턴 기반의 웹 개발 경험을 할 수 있었음.
    - graphviz와 dot언어에 대해 학습 하고, 이에 기반하여 웹 기반의 자바 코드 UML visualization 서비스를 제작 하는 경험을 해볼 수 있었음.

    활용방안은 다음과 같습니다.
    - 코드를 직접보고 UML을 그릴필요 없이 자동으로 UML을 생성해주기 때문에 프로젝트 문서화시 유용하게 사용 할 수 있음.
    - 자바 코드를 굳이 보지않고도 직관적으로 객체간의 상속관계를 파악할 수 있음.

  • 로그인을 하시면 댓글 을 등록할 수 있습니다.