fireguy
2017-10-03 13:21:35 작성 2017-10-03 15:08:22 수정됨
11
3031

AI로 웹프로그램을 자동으로 만들어 주는 프로그래밍


대략 4년전에 DB모델을 가지고 자동으로 java 배치 프로그램 소스를 만들어주는

프로그램을 개발해서 .. 나를 위해 사용해 본 적이 있습니다.

그때 .. 한 달에 할당된 java 배치가 인당 30본 정도 됐는데. 2시간 만에 모두 만들어서 ..

사람은.. 약간의 모디파이와 검증을 하면 되는 수준이었으며 , 소스 주석이라던지 표준화도 자동으로 생성되는 구조였습니다.

가끔 ...

이런 생각을 해 봅니다. 간단한 게시판이나 ui 디자인 기능 혹은 복잡한 미디어나.. 기타 다른 통신 기능도..

내가 적어 놓은 자연어 요구사항 대로 html/javascript/jquery/angular 등의 언어와 백단 spring framework/db query 등의 소스 코드가 자동으로 만들어 지는 걸 ..

만드는 것은 그리 어려운 일이 아니라는 생각이 들었습니다.

하지만.. 만들지 않는 건 .. 그 당시 .. 이러면..

개발자들... 밥줄이.. 영향을 받겠구나.. 하는 생각에 만들지 말아야지 했습니다.

하지만.. 요즘은 왠지 한번 취미로 만들어 볼까 하는 생각이 듭니다..



0
1
  • 댓글 11

  • 파이썬초보..
    556
    2017-10-03 13:35:38
    이미 있지 않나요...
    0
  • fender
    14k
    2017-10-03 13:48:06 작성 2017-10-03 13:50:31 수정됨

    단순히 단방향으로 프로젝트 뼈대를 만드는 도구는 이미 다양한 기술 기반으로 매우 많이 나와 있습니다.

    데이터베이스로부터 역공학을 해서 그런 뼈대를 만드는 도구 역시 꽤 있습니다만, 우리나라 처럼 무조건 데이터베이스 중심 설계를 하는 게 일반적인 상황이 아니기 때문에 그렇게 널리 쓰이진 않습니다.

    그리고 그런 부류 도구들의 문제는 다양한 기술 환경에 적용할 수 있는 모듈화 된 템플릿을 항상 최신으로 유지해야한다는 것인데, 당연하지만 이는 꽤 손도 많이가고 다양한 기술 흐름을 꿰고 있어야 가능한 일입니다.

    반면에 양방향 생성 및 동기화를 기본으로 하는 경우 보통 '모델 기반 아키텍쳐(MDA - Model Driven Architecture)'라고 부르는데, 상당히 오래전부터 많은 개발자들의 관심을 받아오던 개념입니다.

    뭐랄까... 그 개념 때문에 많은 소프트웨어 아키텍트들이 이상으로 여기는 접근 방법이고, 실제 제품화 시도까지 여러번 되었지만 아직까지 업계 표준으로 널리 쓰일만한 무언가는 나오지 않았습니다.

    이유는 아무래도 양방향 동기화에 대한 기술적 어려움도 있겠고, 그런 부류의 대부분의 도구가 그렇듯 수동으로 할 때에 비해 80%의 작업은 매우 쉬워지고 10%는 비슷하게 할 수 있는데, 남은 10%는 손으로 하면 간단할 게 끝내주게 복잡해지거나 아예 불가능하게 되어 버리는 한계를 극복하지 못해서 아닌가 싶습니다.


    0
  • fireguy
    2017-10-03 13:55:01

    fender

    언제나 의견 감사합니다. ^^

    펜더님 같은 훌륭한 인재가.. 그나마 한국에 존재한다는 사실에..

    희망을 가지고 .. 즐거운 개발자로 살아가렵니다.

    ps, 첨언을 드리면.. 세상에 존재 하지 않는것은 , 아직 우리가 만들지 않았을 뿐이기 때문입니다. ^^

    0
  • fender
    14k
    2017-10-03 14:16:56

    fireguy// 전 그렇게 대단한 개발자는 아닙니다. ㅎㅎ;

    단지 말씀하신 종류의 프로그램도 대단한 내용은 아니고, 대신 제대로 만들려면 또 그렇게 간단한 내용도 아니란 정도 이야기를 하고 싶었을 뿐입니다.

    0
  • 하두
    10k
    2017-10-03 16:16:37 작성 2017-10-03 17:53:06 수정됨

    저도 한번 (매번은 아니구요) 한적 있어요.

    테스트만 조금 더할 정도로~~~~ㅋ

    Excel VBA로

    표준화 수준이 높을수록 유리하겠지요.

    0
  • 포로리잉
    665
    2017-10-03 18:42:26

    히타x에서 돈 몇십억 부어서 해본적이 있습니다.


    결과요?


    망했습니다 ㅎㅎㅎㅎ


    툴로 마우스끄적끄적 대면 배치고 화면이고

    만들어주는거.



    0
  • 하두
    10k
    2017-10-03 19:12:41 작성 2017-10-03 19:13:26 수정됨

    학습능력이 있다면,

    성력화는(노력을 줄일수는)

    어느정도 기대해도 될거 같아요.


    번역도 프로그램으로 돌린다음에

    문구를 다듬는  식으로 작업한다고 하는데,

    그런식이 되지 않을까요.

    중요한거는 코딩개발중심에서

    분석 설계 중심으로~~~

    0
  • March
    2k
    2017-10-05 02:54:30
    갑자기 님의 글을 보면 막** 님이 생각날까요 ㅋㅋ
    0
  • dosuser
    67
    2017-10-08 13:58:17 작성 2017-10-08 14:24:41 수정됨

    하아... 제가 중학생때(아득)...  부터 생각했던 부분이네요...


    com, com+, CORBA, CBD, SOA, 매쉬업 등등을 거쳐서

    학부말, 대학원 때 HTML5 widget 스펙에 꽤 기대를 걸고 그 쪽만 팠습니다.

    이 스펙이 사실 논의 단계에서는 말씀 하신 부분을 모두 담고 있습니다.

    스펙을 정의하면 그대로 프로그램이 나오고, 윈도우에서 띄우면 윈도우 widget으로, 웹에서 띄우면 웹 위젯으로 나오고 위젯끼리의 연동, 데이터의 공유 등등...


    졸업 논문도 그쪽으로 썼고...


    결과는 "망했어요" -_- 정말 대차게 망했어요 빌어먹을 팀 버너스리...

    방대함을 다 정리 못하고 스펙은 원래 의도의 1000분의1도 정의 못했으며 구현체는 아파치 인큐베이터를 넘지 못하고 죽었고...ㅡㅜ


    일단 제일 어려운게 스펙인데...

    위에서 말씀 하신것처럼 MDA 에서 "유저" 라는 개념만 놓고 봐도 어렵습니다.


    하나의 제품에서도 유저는 아래처럼 나오는데...

    1. DB에서의 유저 객체

    2. 비지니스 레이어에서의 유저 객체

    3. 프리젠테이션 레이어에서의 유저 객체


    제품 x 제품 간의 연동을 생각해보면 경우의 수가 9개죠;;

    모델링을 잘 하면 이걸 그나마 줄일 수 있는데 역시나 트레이드 오프는 "성능"입니다....


    html5 스펙 초창기에는 이걸 시멘틱 웹에서 이야기 하는 "추론"으로 커버 하려고 했는데요;

    문제는 추론을 하려면 온톨로지(사전)이 만들어져야 하는데 그러려면 "유저" 에 대한 모든 경우의 수가 확립이 되어야 합니다; (최소한 50%라도..) 그런데 이게 될리가 없잖아요?


    진짜 문제는, 기술이 발달하면서 UI에 대한 요구 사항이 늘어났다는 점입니다.

    사실 비지니스 로직에 대해서는 꽤 괜찮은 스펙, 프로토콜이 나왔는데 UI쪽은 말 그대로 개판 입니다.

    python의 django 만 봐도 간단한건 뚝딱뚝딱 만들어 내는데요;;

    복잡한 UI가 들어가면 UI에 대한 부분이 노력의 99%를 차지하고 django를 쓰던 spring을 쓰던 별 차이가 없어집니다;;;


    그리고 말씀하신 자연어 스펙문서 읽기..

    이 부분은 End User Development 라는 분야인데 이게 또 사람 환장하게 만드는 분야로

    스펙을 낸 주체는 스스로 스펙을 제대로 모른다는 문제 때문에 스펙 변경에 대한 피드백을 바로 바로 줘야 하는데 미리 준비된 프로그램 계통안에서 응답을 주는 시스템 입장에서는 유저의 의사를 100%로 반영하지 못하고 , 유저는 "이게 뭐야? 내가 원한건 이게 아닌데?" 라는 입장입니다.


    또, 유저가 입력한 스펙을 체계화 시키는 과정에서 이미 프로그래밍 이상의 중 노동을 필요로 하고 그렇게 만들어진 스펙에 대해 시스템이 프로그램 코드를 제대로 만들 수 있느냐는 또 하늘의 별 따기 같은 난감함이 있습니다.


    결국 퀄리티의 문제 라고 볼 수 있습니다. 자동으로 뭔가를 만들어 내는 시스템이 개발 되는 것보다 전체 적인 산업의 발전이 빠르기 때문에 고객의 눈높이를 따라 잡을 수가 없는 상황.


    AI도 답이 아닌게 위의 (자동으로 생성 가능한 프로그램들의)기능 스펙에 대한 정의가 제대로 안되면 도출 해야 하는 경우의 수가 너무 많아서 유한 시간 이내에 처리 하기 어렵습니다.


    그리고 이렇게 만들어진 제품을 체계가 없이 만든 다른 제품과 연동 시키려면 중간에 엄청나게 많은 작업이 필요합니다. 대부분이 ETL 작업이나 서로 상이한 명세를 맞추는 작업인데;;;  


    즉 취미로 하려고 해도 최소 대학원은... 가야 하고;;; 영혼을 털릴 것이며 돈이 안됩니다;;;

    괜찮은 취미로는 아직 구현이 덜 끝난 angular2  schema form 의 구현이 어떨까요 ㅎㅎ

    angular 1용은 어느 정도 쓸만한데 2용은;;; https://github.com/json-schema-form/angular-schema-form




    0
  • failer0805
    216
    2017-10-10 10:46:29

    모델을 모델로 만들어 변환도 모델링해서 모델링으로 모든걸 다하겠 다는 개념의

    MDA...

    0
  • butnim
    2k
    2017-10-12 07:15:50

    님이 개발한 건 늘 사용되는 훌륭한 것들이 있습니다.

    SQL입니다.

    Sql에 소스 넣고 표준화한 정한 부분만  replace해도 원하는 결과를 얻을 수 있습니다.

    그리고.. 그건 신입한테 시켜도 됩니다.

    요기 해더.. 이렇게 치환하고.. Insert문 이렇게 만들어..... 

    즉 중요한 건 표준화... 입니다.


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