>  기사  >  기술 주변기기  >  Google은 자체 "AI+ 소프트웨어 엔지니어링" 프레임워크를 공개합니다. DIDACT: 수천 명의 개발자가 내부적으로 테스트했으며 사용 후 생산성이 매우 높다고 말합니다.

Google은 자체 "AI+ 소프트웨어 엔지니어링" 프레임워크를 공개합니다. DIDACT: 수천 명의 개발자가 내부적으로 테스트했으며 사용 후 생산성이 매우 높다고 말합니다.

WBOY
WBOY앞으로
2023-06-07 17:25:121408검색

모든 대규모 소프트웨어는 처음부터 완전히 고안된 것이 아닙니다. 대신 온라인 요구 사항이 충족될 때까지 개발자가 개선, 편집, 단위 테스트, 수정, 빌드 오류, 코드 검토 및 문제 해결을 반복합니다. 저장소에 병합됩니다.

전체 프로세스를 제어하는 ​​지식을 소프트웨어 엔지니어링이라고 합니다.

소프트웨어 엔지니어링은 독립적인 프로세스가 아니라 개발자, 코드 검토자, 버그 보고자, 소프트웨어 설계자 및 다양한 개발 도구(예: 컴파일러, 단위 테스트, 커넥터, 정적 분석기) 간의 통신으로 구성됩니다.

최근 Google은 자체 DIDACT(Dynamic Integrated Developer ACTivity, 동적 통합 개발자 활동) 프레임워크를 발표했습니다. 이 프레임워크는 AI 기술을 사용하여 소프트웨어 엔지니어링을 향상하고 소프트웨어 개발의 중간 상태를 교육 데이터로 사용하여 개발자의 글쓰기를 지원합니다. , 코드를 수정하고 실시간으로 소프트웨어 개발에 대해 알아보세요.

Google은 자체 AI+ 소프트웨어 엔지니어링 프레임워크를 공개합니다. DIDACT: 수천 명의 개발자가 내부적으로 테스트했으며 사용 후 생산성이 매우 높다고 말합니다.

DIDACT는 편집, 디버깅, 수정 및 코드 검토를 포함한 개발 활동에 대해 훈련된 다중 작업 모델입니다.

연구원들은 주석 구문 분석, 빌드 수정 등 세 가지 DIDACT 도구를 자체적으로 구축하고 배포했습니다. 및 힌트 예측을 통해 각 도구는 개발 작업 흐름의 서로 다른 단계에 통합됩니다.

소프트웨어 엔지니어링 = 상호 작용 로그

수십 년 동안 Google의 소프트웨어 엔지니어링 툴체인은 코드와 관련된 모든 작업을 도구와 개발자 간의 상호 작용 로그로 저장해 왔습니다.

원칙적으로 사용자는 이러한 기록을 사용하여 소프트웨어 개발 프로세스의 주요 변경 프로세스, 즉 모든 코드 편집, 컴파일, 주석, 변수 이름 변경 등을 포함하여 Google의 코드 베이스가 어떻게 형성되었는지 자세히 재생할 수 있습니다. .

Google 개발팀은 모든 도구와 시스템이 포함된 코드 저장소인 monorepo(모노 저장소)에 코드를 저장합니다.

소프트웨어 개발자는 CitC(클라이언트 인 더 클라우드) 시스템에서 관리하는 로컬 쓰기 시 복사 작업 공간에서 코드 수정을 실험하는 경우가 많습니다.

개발자가 특정 작업(예: 버그 수정)을 달성하기 위해 일련의 코드 변경 사항을 함께 패키징할 준비가 되면 Google의 코드 검토 시스템인 Critique에서 변경 목록(CL)을 만들어야 합니다.

일반적인 코드 검토 시스템과 마찬가지로 개발자는 동료 검토자와 기능 및 스타일에 관해 소통한 다음 CL을 편집하여 검토 의견 중에 발생한 문제를 해결합니다.

결국 리뷰어는 코드 "LGTM!"을 선언하고 CL을 코드베이스에 병합했습니다.

물론 개발자는 코드 검토자와의 대화 외에도 컴파일러, 테스트 프레임워크, 링커, 정적 분석기, 퍼지 테스트 도구 등을 포함한 다른 소프트웨어 엔지니어링 도구와도 많은 "대화"를 유지해야 합니다. .

Google은 자체 AI+ 소프트웨어 엔지니어링 프레임워크를 공개합니다. DIDACT: 수천 명의 개발자가 내부적으로 테스트했으며 사용 후 생산성이 매우 높다고 말합니다.

개발자 활동, 코드 검토자와의 상호 작용, 컴파일러와 같은 도구 호출 등 소프트웨어 개발과 관련된 복잡한 활동 네트워크에 대한 그림입니다.

소프트웨어 엔지니어링의 다중 작업 모델

DIDACT는 엔지니어와 도구 간의 상호 작용을 활용하여 기계 학습 모델을 강화하고 소프트웨어 엔지니어링 작업을 수행할 때 개발자의 작업을 제안하거나 최적화하여 Google 개발자 참여를 지원합니다. 소프트웨어 엔지니어링 프로세스.

이를 위해 연구원들은 깨진 빌드 수정, 코드 검토 주석 예측, 코드 검토 주석 처리, 변수 이름 변경, 파일 편집 등 개별 개발자 활동과 관련된 여러 작업을 정의했습니다.

그런 다음 각 활동에 대한 공통 형식을 정의합니다. 특정 상태(코드 파일), 인텐트(코드 검토 주석 또는 컴파일러 오류와 같은 활동에 특정한 주석)를 가져오고 작업(처리하는 데 사용되는 작업) 작업).

액션은 편집, 주석 추가, 변수 이름 변경, 코드 오류 표시 등 새로 추가된 활동으로 확장할 수 있는 미니 프로그래밍 언어와 같습니다. 이 언어는 DevScript라고도 합니다.

DIDACT 모델의 입력 프롬프트는 작업, 코드 조각 및 작업과 관련된 설명이며, 출력은 편집이나 설명과 같은 개발 작업입니다.

State-Intent-Action(State-Intent-Action) 정의 형식 다양한 작업을 공통된 방식으로 캡처할 수 있고, 더 중요하게는 DevScript는 작업이 발생한 후 전체 상태(원본 코드)를 출력할 필요 없이 복잡한 작업을 간결하게 표현할 수 있어 모델을 더욱 효과적이고 해석하기 쉽게 만듭니다.

예를 들어 이름 바꾸기는 코드 파일의 여러 위치를 수정할 수 있지만 모델은 이름 바꾸기 작업 하나만 예측하면 됩니다.

AI 모델을 위한 프로그래머 조립

DIDACT는 개인 보조 작업에 매우 잘 작동합니다. 예를 들어 다음 예는 기능이 완료된 후 DIDACT의 코드 정리 작업을 보여줍니다. 먼저 코드 검토자의 최종 설명( 인간), 그런 다음 주석에서 제기된 문제를 해결하는 데 필요한 작업을 예측합니다(diff로 표시됨).

Google은 자체 AI+ 소프트웨어 엔지니어링 프레임워크를 공개합니다. DIDACT: 수천 명의 개발자가 내부적으로 테스트했으며 사용 후 생산성이 매우 높다고 말합니다.

코드 검토자가 코드 조각에 첨부한 초기 코드 조각과 주석이 주어지면 DIDACT의 사전 제출 정리 작업은 해당 주석을 처리하는 편집 작업(텍스트 삽입 및 삭제)을 생성합니다.

DIDACT The Python의 다중 모드 특성으로 인해 확장됨에 따라 나타나는 몇 가지 새로운 동작이 발생했습니다. 이러한 기능 중 하나는 개발자가 최근에 수행한 작업을 알아보기 위한 프롬프트를 통해 활성화할 수 있으며, 모델은 개발자가 다음에 수행해야 할 작업을 더 잘 예측합니다.


Google은 자체 AI+ 소프트웨어 엔지니어링 프레임워크를 공개합니다. DIDACT: 수천 명의 개발자가 내부적으로 테스트했으며 사용 후 생산성이 매우 높다고 말합니다.

기록 강화 코드 완성 시연

위의 예에서 개발자는 새로운 함수 매개변수(1)를 추가하고 이동합니다. 문서에 커서를 놓습니다(2). 개발자의 편집 내역과 커서 위치를 기반으로 모델은 새 매개변수에 대한 독스트링 항목을 정확하게 예측하고 세 번째 단계를 완료할 수 있습니다.

이력 증강 편집 예측이라는 더 어려운 작업에서 모델은 역사적으로 일관된 방식으로 다음 편집 위치를 선택할 수 있습니다.

Google은 자체 AI+ 소프트웨어 엔지니어링 프레임워크를 공개합니다. DIDACT: 수천 명의 개발자가 내부적으로 테스트했으며 사용 후 생산성이 매우 높다고 말합니다.

연결된 여러 반복에 대한 편집 예측 시연

개발자가 함수 인수(1)를 제거하면 모델은 제거된 인수 문자열(2)에 대한 문서 문자를 역사적으로 정확하게 예측할 수 있습니다. (인간 개발자가 수동으로 커서를 거기에 놓을 필요 없이) 함수 (3)의 명령문은 구문론적으로(그리고 틀림없이 의미론적으로) 올바르게 업데이트됩니다.

히스토리를 사용하면 모델은 "코드 편집 프로세스"를 올바르게 계속하는 방법을 명확하게 결정할 수 있지만, 히스토리가 없으면 모델은 누락된 함수 매개변수가 의도적인 것인지 알 수 없습니다. 매개변수를 제거하기 위한 편집 작업) 또는 예상치 못한 상황(문제를 해결하려면 모델이 매개변수를 다시 추가해야 함).

또한 모델은 빈 파일에서 시작하고 완전한 코드 파일이 작성될 때까지 모델이 다음 편집 작업을 지속적으로 예측하도록 요구하는 등 더 많은 작업을 완료할 수도 있습니다.

무엇보다도 이 모델은 개발자에게 자연스러운 단계별 방식으로 코드를 작성하는 데 도움이 됩니다.

가져오기, 플래그 및 기본 주요 기능 프레임워크를 사용하여 완전한 작업을 생성하는 것으로 시작합니다. 파일에서 결과 읽기 및 쓰기, 사용자 제공 정규식을 기반으로 특정 줄을 필터링하는 기능 추가 등 새로운 기능을 점진적으로 추가합니다.

결론

DIDACT는 Google의 소프트웨어 개발 프로세스를 기계 학습 개발자 보조자를 위한 교육 데모로 전환하고 이러한 데모 데이터를 사용하여 모델을 교육하고, 단계별 방식으로 코드를 구축하고, 도구 및 코드 검토자와 상호 작용합니다.

DIDACT 방법은 Google 및 기타 회사의 대규모 언어 모델의 뛰어난 성과를 보완하여 작업량을 줄이고 생산성을 높이며 소프트웨어 엔지니어의 작업 품질을 향상시킵니다.

위 내용은 Google은 자체 "AI+ 소프트웨어 엔지니어링" 프레임워크를 공개합니다. DIDACT: 수천 명의 개발자가 내부적으로 테스트했으며 사용 후 생산성이 매우 높다고 말합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제