Alan Zeichick | Senior Writer | 2024년 10월 8일
생성형 AI는 셰익스피어 스타일로 소넷을 작성하거나, 원시 데이터 및 분석을 기반으로 실행 가능한 비즈니스 계획의 초안을 작성하는 데 도움이 될 수 있습니다. 올바른 입력과 훈련을 통해 생성형 AI는 제품 컨셉, 눈길을 끄는 광고 음악, 로고, 가격 책정 조언이 포함된 마케팅 계획까지 만들 수 있습니다. 따라서 생성형 AI가 개발 라이프사이클 전반에 걸쳐 소프트웨어 개발 팀을 지원하거나 Java, C++, JavaScript, SQL 또는 기업에서 선호하는 모든 언어로 코드를 작성하는 것은 그리 어려운 일이 아닙니다.
생성형 AI 시스템에게 코딩은 영어, 스페인어, 라틴어로 특정 운율의 시를 쓰는 것과 다르지 않습니다. 그리고 소프트웨어 개발 프로세스에 생성형 AI를 활용하는 것은 엄청난 기회를 의미합니다. PwC의 분석가에 따르면, 생성형 AI 코드 생성 도구를 사용하면 개발 팀은 지금 당장 20%에서 50%의 성능 향상을 기대할 수 있다고 합니다. 그 작동 방법을 확인해 보세요.
생성형 인공지능(Generative Artificial Intelligence, GenAI)은 학습 데이터를 바탕으로 새로운 콘텐츠를 생성하는, 빠르게 진화하는 기술입니다. 생성형 AI 모델은 소프트웨어로 인코딩된 인공 신경망을 만든 다음 사용하는 방식으로 작동합니다. 많은 신경망은 수십억 또는 수조 개의 특정 매개 변수 또는 값으로 구성되며, 대량의 재료를 처리하여 "교육"됩니다. 다행히도, 더 효율적인 모델은 기능적이고 안전하며 효율적인 코드로 구성된 합리적으로 크고 다양한 예시로 훈련을 받으면 훌륭한 프로그래머가 될 수 있습니다.
교육 프로세스 중에 대규모 언어 모델 또는 LLM을 생성하는 코드를 작성하는 방법을 배우는 경우 생성형 AI 시스템은 다음 명령이 무엇인지 예측하려고 시도합니다. 그런 다음 그 예측을 테스트합니다. 좋은 경우 신경 매개 변수가 한 가지 방식으로 조정됩니다. 예측이 잘못된 경우 다른 방법으로 매개변수가 조정됩니다. 충분한 반복을 통해 생성형 AI 시스템은 교육 데이터를 기반으로 결과를 생성하게 됩니다. 그런 다음 정확도가 목적에 충분하면 생성형 AI 시스템에서 입력 매개변수 또는 프롬프트를 기반으로 새 코드를 생성하는 작업을 수행합니다. 잘 작동한다면, 이제 시작할 준비가 되었습니다. 그렇지 않다면 AI 과학자들이 무엇이 잘못되었는지 알아낼 때입니다.
좋은 소식은 코딩 중심의 LLM을 직접 만들 필요가 없다는 것입니다. 이미 선도적인 툴 제공업체들이 있습니다.
핵심 요점
이 글에서는 복잡한 프로그램을 설명하고 생성형 AI 시스템이 프롬프트에 따라 완전하고 바로 사용할 수 있는 애플리케이션을 제작하는 방식을 이야기하지 않습니다. 아직 거기까지 이르지 못했습니다. 그러나 생성형 AI 도구는 엔터프라이즈 개발 팀의 작업을 보강하여 코드 품질과 개별 생산성을 향상시키는 데 사용됩니다. 생성형 AI를 하나 이상의 역할을 담당하는 팀 멤버로 생각할 수 있습니다.
생성형 AI는 소프트웨어 개발 수명 주기의 모든 단계에서 개발 팀의 생산성을 높이는 데 도움이 되기 때문에 소프트웨어 개발에 중요합니다. 현대 기업은 소프트웨어로 운영되기 때문에 이는 매우 중요한 사항입니다. 그 중 많은 소프트웨어, 예를 들어 워드 프로세서, 스프레드시트, 회계 및 인사 관리 시스템 등은 시중에서 구매할 수 있는 제품입니다. 그러나 경쟁 우위는 백엔드 운영, 웹 사이트, 데이터베이스, 모바일 앱 등을 위한 맞춤형 소프트웨어 작성에서 비롯됩니다.
도전 과제는 고품질 코드를 작성하려면 개발 직원이나 계약자의 시간과 전문 지식이 필요하다는 것입니다. 기회를 포착하거나 도전 과제를 해결하기 위해 새로운 애플리케이션이 필요한 경우 대개 대기열에 프로젝트 백로그가 있습니다. 더 많은 개발자를 고용하는 것은 온보딩과 마찬가지로 느린 프로세스입니다. 시간은 돈입니다. 생성형 AI를 사용하면 새로운 아이디어를 더 빨리 생산에 적용할 수 있어, 수익을 창출하거나 절감하고, 직원 및 고객 만족도를 개선하며, 그 밖의 여러 가지 방법으로 기업이 사명을 달성하는 데 도움이 됩니다.
생성형 AI는 엔터프라이즈 소프트웨어 개발 팀에 귀중한 자산이 될 수 있으며, 개발자를 지원하는 다른 도구와 마찬가지로 기업은 이러한 개선 사항을 정의, 측정 및 평가할 수 있습니다. GitHub 또는 소스 코드 관리 시스템과 같은 최신 기술을 사용하는 모든 개발 플랫폼은 일별 코드 라인 및 코드 품질과 같은 개발자 및 팀 성과에 대한 지표를 정기적으로 수집합니다.
프로젝트 계획부터 아키텍처 설계, 코드 분석 및 Q&A에 이르기까지 전체 라이프사이클에 생성형 AI를 통합한 개발 팀은 작업 속도가 크게 향상된 것을 종종 발견합니다. 다음은 생성형 AI가 도울 수 있는 몇 가지 방법입니다.
생성형 AI는 개별 개발자 및 팀의 생산성을 개선하여 엔터프라이즈 소프트웨어 개발을 지원하고, 더 나은 품질의 소프트웨어를 더 빠르게 제작할 수 있도록 지원합니다. 특히 유용한 영역에는 소프트웨어 아키텍처 정의, 제품 계획 수립, 코드 생성이 포함됩니다.
생성형 AI는 반복적인 작업과 많은 프로그램에 공통으로 사용되는 소위 보일러플레이트 코드를 생성하는 데도 뛰어나며, 인간 개발자는 이를 맞춤화하거나 다른 곳에서 사용하거나 완성할 수 있습니다. 생성형 AI는 또한 소프트웨어 소스 코드의 결함 및 잠재적 문제(예: 보안 취약점, 코드의 기능이 사용자 요구 사항 또는 기업 표준에서 벗어난 부분)를 검토하는 데도 도움이 될 수 있습니다.
생성형 AI 기반 개발 도구가 개별 엔터프라이즈 소프트웨어 개발자 또는 전체 팀 구성원에 대한 보조 역할을 할 수 있는 여러 영역이 있습니다. 다음은 소프트웨어 설계에서 소프트웨어 배포에 이르기까지 오늘날 생성형 AI 기술이 도움이 될 수 있는 몇 가지 일반적인 위치입니다.
1. 버그 감지 및 디버깅. 생성형 AI 시스템은 코드에서 오류를 식별하고 수정하거나 수정을 제안하는 데 효율적으로 도움이 될 수 있습니다. 물론, 결함 수정 분야를 중심으로 한 전체 산업이 존재합니다. 오픈소스 및 상업용 도구는 보안 또는 기능 결함을 탐지하기 위해 소스 코드를 스캔할 수 있으며, 이는 시스템이 과부하 상태일 때만 발생할 수 있는 미묘한 오류, 메모리 누수, 멀티스레드 실행 문제, 보호된 메모리 접근 시도 등 다양한 문제를 포함합니다.
생성형 AI는 여러 가지 방법으로 버그 수정에 가치를 추가할 수 있습니다. 먼저 프롬프트를 사용하여 코드가 개발자 또는 이해 관계자의 의도한 작업을 수행할지 여부를 분석할 수 있습니다. 코드가 올바르게 컴파일 및 실행되더라도 올바른 작업을 수행하지 않거나 원하는 결과를 반환하지 않을 수 있기 때문입니다. 둘째, 생성형 AI는 기존 도구의 결함 보고서를 요약하여 테스트 팀과 개발자가 미묘한 오류를 이해하고 잘못된 코드 패턴을 찾고 수정 사항을 제안하는 데 도움이 될 수 있습니다.
2. 코드 생성. 생성형 AI는 프롬프트 또는 사양을 기반으로 코드 작성을 자동화할 수 있습니다. 앞서 언급했듯이 생성형 AI가 곧 복잡한 비즈니스 애플리케이션을 생성할 가능성은 거의 없습니다. 그러나 이는 개발자가 완성할 수 있는 표준 코드를 생성하는 데 도움을 줄 수 있으며, 복잡한 알고리즘을 구현하거나 어려운 프로시저 호출을 수행하거나 외부 리소스에 접근하는 코드 스니펫을 제공할 수 있습니다.
예를 들어, 많은 개발자가 SQL을 사용하여 데이터베이스 정보를 읽고 쓰고 업데이트하는 방법을 알고 있습니다. 하지만 복잡한 데이터베이스 테이블을 처리하고 매우 큰 데이터 세트에서 효율적으로 실행될 수 있는 SQL 저장 프로시저를 작성하는 것은 일종의 예술입니다. 생성형 AI 도구는 프롬프트를 사용하여 프로그래머가 데이터베이스 액세스에 대한 요구 사항을 표현할 수 있도록 지원한 다음, 응용 프로그램에 복사하여 붙여 넣을 수 있는 SQL 호출 또는 절차를 제안할 수 있습니다.
3. 코드 검토. 생성형 AI는 코드 품질, 보안 및 모범 사례 준수를 검토하는 데 도움이 될 수 있습니다. 코드 검토는 소프트웨어 개발 프로세스의 필수적인 부분으로, 팀이 화면 또는 대형 모니터에서 예상되는 그룹 설정의 복잡한 코드를 살펴보고 적절한 기능을 검증하고 개선할 영역을 제안하는 역할을 합니다. 개발자들은 코드 리뷰를 스트레스 받는 경험으로 느낄 수 있으며, 특히 더 경험이 많은 소프트웨어 엔지니어들이 오직 결점만 찾는 경우 더욱 그렇습니다. 코드 리뷰는 또한 매우 시간이 많이 소요되며 많은 사람들이 단순히 빨리 완료하기를 원하므로 실사가 부족할 수 있습니다.
생성형 AI는 개발자가 예비 코드 검토를 통해 명확한 오류를 찾아내는 데 도움이 될 수 있습니다. 이를 통해 주니어 개발자는 학습하고 대면 검토 세션을 더 빠르게 진행할 수 있습니다. 생성형 AI는 또한 그룹 코드 검토 팀의 참여 멤버 역할을 할 수 있으며, 추가적인 주의가 필요한 영역을 강조하고, 개선에 가장 적합한 방법에 대한 자체 지침을 제공할 수도 있습니다.
4. 문서화. AI는 코드베이스에 대한 문서를 자동으로 생성하거나 개선할 수 있습니다. 좋은 의도를 가지고 있더라도, 개발자들은 자신이 몇 달 전에 작성한 소프트웨어를 검토할 때 “도대체 무슨 생각을 했을까?”라고 자문하게 됩니다. 그것이 바로 문서화가 프로젝트의 전체 아키텍처와 특정 모듈 또는 마이크로서비스의 목적 등 다양한 수준에서 매우 중요한 이유입니다. 모듈 및 서비스 내에서 문서는 특히 개발자가 선택할 수 있는 경우 라이브러리, API 및 알고리즘에 대한 결정을 설명할 수 있습니다. 이유가 있었습니다—그런데, 그게 무엇이었을까요? 생성형 AI는 코딩이 진행되는 동안 개발자에게 이러한 결정을 설명해달라고 요청한 다음, 그 설명을 이해하기 쉬운 문서로 확장하여 도움을 줄 수 있습니다.
또한, 생성형 AI를 코드 자체의 생성에 활용하는 경우(위의 2번 참조), 코드 스니펫이나 마이크로 서비스의 기능과 올바른 사용 방법을 설명하는 전체 문서를 작성할 수 있습니다.
5. 학습 및 훈련 생성형 AI는 개발자 기술 향상을 위한 즉각적인 예제와 설명을 제공할 수 있습니다. 소프트웨어 개발자(특히 록 스타 코더 등)들은 지속적으로 학습하고 있습니다. 새로운 기술(예: AI 및 마이크로서비스)이 지속적으로 등장하고 있으며, 새로운 도구, 새로운 언어 기능, 새로운 디자인 패턴, 새로운 보안 취약점, 새로운 기업 표준 및 최선의 실천 방법, 심지어 새로운 준수 요구사항도 계속해서 등장하고 있습니다.
사내 교육 및 멘토링뿐만 아니라 많은 과정과 수업이 있지만 지속적인 도움이 중요합니다. 생성형 AI는 더 이상 사용되지 않는 기능이나 오래된 API를 사용하려고 시도하는 경우와 같이 개발자가 고군분투하는 시기를 감지하고 즉각적이고 개인화된 교육을 제공할 수 있는 잠재력을 제공합니다. 또한, 프롬프트를 통해 개발자가 새로운 작업이나 자주 사용하지 않는 작업을 수행하는 방법을 모르거나 기억하지 못할 때 즉시 안내를 제공할 수 있습니다. 그것은 도움말 화면과 비슷하지만, 그 특정 상황에 맞게 맞춤화된 것입니다.
6. 리팩토링. 성능 향상을 위해 기존 코드를 최적화하고 재구성하는 작업은 생성형 AI가 도울 수 있는 부분입니다. 리팩토링은 소프트웨어 개발 라이프사이클의 필수적인 부분입니다. 리팩토링은 코드의 한 부분을 차지하며, 그 기능을 변경하지 않고도 더 나은 실행을 가능하게 하는 곳입니다. 즉, 속도와 확장성을 향상시키거나, 메모리 소비를 낮추거나, 알고리즘을 업데이트하거나, 새로운 마이크로프로세서 바로 가기를 활용하거나, 새로운 언어 지침을 사용할 수 있습니다. 개발자는 런타임 메트릭을 사용하여 느리거나, 너무 많은 리소스를 소비하거나, 종단 간 지연을 유발하는 코드 영역을 찾아 리팩토링의 대상으로 지정합니다.
리팩토링은 생성형 AI 코드 생성에 이상적인 분야일 수 있습니다. 개발자는 문제의 코드를 시스템에 입력하고, 기본적으로 “더 빠르게 실행되는 버전을 만들 수 있습니까?”라고 묻는 것입니다. 이것은 지나치게 단순화한 설명이지만, 코드가 무엇을 하고 어떻게 작동하는지 파악함으로써 생성형 AI의 예측 기능은 종종 더 나은 접근 방식을 찾을 수 있게 해줍니다. 또한, 기존 코드와 리팩토링된 코드를 비교하고 벤치마크할 수 있기 때문에, 리팩토링 과정의 이점을 쉽게 파악할 수 있으며, 실제로 기본 기능이 변경되지 않았음을 확인할 수 있습니다.
7. 테스트. 생성형 AI는 테스트 케이스 생성, 테스트 프로세스 자동화, 에지 케이스 시뮬레이션을 지원합니다. 다양한 방법론은 소프트웨어 테스트 프로세스에 대한 각기 다른 관점을 가지고 있습니다. 예를 들어, 테스트 기반 개발(TDD)은 단일 코드 행을 작성하기 전에 작성한 내용이 제대로 작동하는지 확인하기 위해 테스트 사례를 생성해야 한다고 주장합니다. 다른 방법론에서는 개발 팀이 스프린트 끝에 테스트를 수행할 수 있으며, 다른 방법론에서는 전담 테스트 팀이 테스트를 수행합니다. 테스트에서 이해 관계자의 역할은 필수적이며 방법론에 따라 다릅니다. 때로는 이해 관계자가 지속적으로 참여하고 다른 경우에는 릴리스 후보자만 검토합니다.
생성형 AI는 테스트 및 테스트 관리에 다양한 역할을 할 수 있습니다. 버그 탐지 외에도, 생성형 AI는 많은 개발자들이 지루하다고 느끼는 테스트 자동화 도구로 사용할 수 있는 스크립트 작성에도 도움이 될 수 있습니다. 이러한 생성형 AI가 강화된 도구는 에지 케이스, 즉 발생할 가능성은 낮지만 코드 모듈, 저장 프로시저 또는 마이크로 서비스에서 적절하게 처리해야 하는 상황도 테스트하는 데 도움이 될 수 있습니다. 또한, 생성형 AI는 사람이 작성한 테스트 케이스를 포함한 모든 테스트 케이스를 검토하여, 테스트가 적절한지, 오류 조건 및 실행 시 코드 해킹 시도 등 모든 가능한 상황을 포함하고 있는지 확인하는 데 도움을 줄 수 있습니다.
“예측을 하는 것은 어렵습니다, 특히 미래에 대한 예측은 더 어렵습니다,”라고 야구 전설 Yogi Berra가 말했습니다. 생성형 AI는 새로운 분야입니다. 이 기술의 첫 번째 사례는 2020년대 초에 텍스트 생성에 중점을 둔 ChatGPT와 이미지 생성에 중점을 둔 DALL-E와 같은 제품으로 등장했습니다. 많은 소비자와 기업 경영진이 생성형 AI에 주목하기 시작한 것은 불과 2년 전인 2022년경부터였습니다.
생성형 AI를 어떻게 보든 우리는 기술의 초기 단계에 있으며 소프트웨어 개발을 포함한 분야에서 새로운 비즈니스 사용 사례를 찾을 것입니다.
하지만 일단 시도해 보아야 합니다. 앞으로 몇 년 동안 어떤 변화를 기대할 수 있을까요?
우선, 코드 생성, 품질 보증, 문서화, 테스트 케이스 생성 등 개발 팀을 지원하는 측면에서 생성형 AI가 현재 할 수 있는 모든 것을 더 잘 수행할 수 있도록 하는 것입니다. 생성형 AI는 더욱 대화형이 되고, 개발자 및 비개발자와의 상호 작용 능력이 향상되어 요구 사항을 정의한 다음 이러한 요구 사항을 프로젝트 계획, 문서, 테스트 케이스 및 코드로 전환하는 과정을 단계별로 안내할 수 있게 될 것입니다.
우리가 정말로 크리스탈 볼을 들여다 보면 아마도 일부 소프트웨어는 전혀 쓸 필요가 없을 것입니다. 비즈니스 사용자가 생성형 AI 시스템에 달성하고자 하는 목표를 알려주기만 하면, 소프트웨어가 그 작업을 정확하게 수행하는 임시 애플리케이션을 생성합니다. 소프트웨어 개발에서 생성형 AI의 미래가 무엇이든간에, 그것을 받아들이는 기업들에게는 엄청난 가치가있을 것입니다.
Oracle의 생성형 AI는 현재 Fusion 및 NetSuite와 같은 비즈니스 애플리케이션에 내장되어 있으며 Oracle Database 23ai에 내장된 엄청난 기능을 제공합니다.
흥미로운 탐구 분야 중 하나는, 개발자의 복잡한 작업을 지원하는 새로운 기능인 APEX AI Assistant를 사용하여 GenAI 및 Oracle APEX를 로 코드 애플리케이션 개발에 활용하는 방법입니다. 보다 광범위하게는 Oracle Cloud Infrastructure(OCI) 계정에 등록하고 무료 클라우드 크레딧을 받아 생성형 AI를 포함한 Oracle의 AI 서비스를 체험할 수 있습니다. 무료로 시작하기.
신기술인 생성형 AI는 소프트웨어 개발에 무한한 응용 가능성이 있습니다. 개발자들은 생성형 AI가 귀중한 조력자, 그리고 아마도 팀의 필수 구성원이 될 것이라고 생각할 가능성이 높습니다.
최고의 AI 사용 사례에는 고객 서비스를 혁신하는 챗봇과 의료 경험을 혁신하는 알고리즘 등이 있습니다. 공통점은 무엇일까요? 소프트웨어 개발입니다.
코딩 시 생성형 AI를 사용하려면 어떻게 해야 하나요?
생성형 AI는 소프트웨어 개발 과정의 많은 부분에서 사용될 수 있습니다. 코딩을 위해 생성형 AI는 프로젝트에 사용되는 특정 프로그래밍 언어에 대한 교육을 받아야 합니다. 시스템에서 수행하려는 작업에 대해 프롬프트라는 매우 구체적인 명령을 제공하고, 컴파일 및 실행 또는 소스 코드 관리 시스템이나 Github과 같은 온라인 저장소에 추가할 준비가 된 완성된 소스 코드를 생성할 수 있어야 합니다.
AI를 사용하여 소프트웨어를 구축할 수 있습니까?
다양한 방법으로 생성형 AI를 사용하여 소프트웨어를 구축할 수 있습니다. 이 기술 개발 단계에서 이 코드는 비교적 간단한 함수만 수행하지만 코드를 생성하는 데 도움이 될 수 있습니다. 생성형 AI의 진정한 가치는 개발 팀이 프로젝트 계획, 아키텍처 설계, 테스트 사례 생성, 코드 검토 수행, 문서 작성과 같은 작업을 수행할 수 있도록 지원하는 것입니다.
AI는 소프트웨어 개발에서 어떤 도전 과제가 될까요?
생성형 AI는 특히 개발 팀 내에서 사용할 수 있는 새로운 기능입니다. 아마도 가장 큰 도전 과제는 현 상태에 만족하고 방법론, 툴 체인 및 프로세스의 변화에 저항하는 회의적인 개발자들이 이 기술을 수용하는 것일 것입니다. 생성형 AI를 자신의 경력에 대한 잠재적 위협으로 보는 사람도 있을 수 있습니다.
그 외에도 각 조직은 생성형 AI 소프트웨어에 대한 신뢰를 구축해야 합니다. 코드가 견고하고 안전하며 성능이 우수합니까? 테스트 사례는 정확하며 전체 코드 범위를 제공합니까? 문서가 요구 사항을 충족합니까? 생성형 AI 지원 소프트웨어 개발의 초기 단계는 대부분 실험적이 될 것입니다. 기술이 올바르게 적용되면 개발자의 생산성을 크게 향상시켜 더 나은 소프트웨어를 더 빠르게, 더 낮은 비용으로 생산할 수 있도록 하여 조직의 사명을 지원할 수 있어야 합니다.
마지막으로, AI 생성 코드의 소유권 및 보호 기능에 대한 법률은 여전히 진화하고 있습니다. AI가 일부 코드를 생성하는 데 사용된 소프트웨어에 저작권을 등록할 수 있습니까? 상용 생성형 AI 시스템을 사용하는 경우, 서비스 약관에서 모델 소유자에게 모든 출력을 라이선스 백해야 할 의무가 명시되어 있습니까? 소프트웨어 개발 시 생성형 AI 사용을 시작하기 전에 이러한 문제를 조사해야 합니다.
