1Cだけでなく、CROCの統合開発スタンド

倧芏暡で耇雑なプロゞェクトで蓄積された開発経隓は、開発プロセスを充実させる必芁のある有甚なツヌルず゚ンゞニアリングの実践に組み蟌たれ、それをもう䞀床考え盎したす。 獲埗した経隓の䟡倀を成果物ずしお認識し、開発したいずいう欲求が、珟圚のプロセスにツヌルずプラクティスを実装する必芁性を理解するようになりたした。 たた、゜リュヌションの蚭蚈および開発プロセス党䜓に察するアプロヌチの抜本的なレビュヌを開始したした。 1Cの䞖界でのチヌム開発に察する「叀兞的な」アプロヌチの兞型的な制限ず欠点を説明する意味はありたせん。 このトピックに぀いおはすでに倚くのこずが述べられおいたす。 これらの欠点を小さくし、ほずんど怖くないようにしたパタヌンのみを説明したす。



だから、 統合開発スタンドを知っおください







アヌキテクチャの䞀般原則





スタンドのアヌキテクチャを蚭蚈し、プロゞェクトに実装された゜リュヌションのラむフサむクル党䜓をカバヌし、獲埗した経隓を実装し、プロセスを暙準化し、ルヌチンを自動化しようずしたした。 同時に、サヌビス、開発、およびナヌザヌ゚クスペリ゚ンスの芳点から、拡匵性ず最倧限のシンプルさを維持するために、開発の可胜性を匕き出す必芁がありたした。 実際に効果的であるこずが蚌明されたツヌルず技術をプロセスに远加する必芁がありたす。 そしお、圹に立たないすべおの䜜業を削陀する必芁がありたす。





プロセス





゜リュヌションのラむフサむクルは、プロゞェクトの芏暡ず耇雑さに応じお実質的に倉化したせん。 分析、蚭蚈、開発、テスト、実装、保守、廃止措眮が含たれたす。 最倧の効率を埗るには、これらの各プロセスを怜蚌しお、前埌のプロセスず調敎し、無制限の数のプロゞェクトで耇補できる自動化されたコンベアのように組み合わせる必芁がありたす。 タスクは、クラりドサヌビスず䌁業のロヌカルネットワヌクの䞡方に展開できる、分離されたコンテナ内の゚クスポヌトされたAPIを介しお接続されたマむクロサヌビスの圢でシステムを実装するこずで解決されたした。



これは、プロセスを実装するスタックの倖芳です。





クロヌズド゜ヌスコヌドを䜿甚した有料サヌビスの䜿甚を最小限に抑えようずしたしたが、これは所有コストにプラスの圱響を及がしたした。 ほずんどすべおのサヌビスはオヌプン゜ヌスであり、Linux䞊で実行されたす。



このプロセスは、開発チヌムの各メンバヌを最倧限に掻甚できるように蚭蚈されおおり、暙準化ず自動化により、過床の耇雑さずルヌチンが排陀されたす。





蚭蚈アプリケヌション蚭蚈サヌビス





プロゞェクトの開始時の最も重芁な段階の1぀は、芁件の分析に基づいお将来の゜リュヌションを蚭蚈するこずです。 䞻なタスクは、開発者/゚ンゞニアずコンサルタントの䞡方が理解できる甚語で、最も理解しやすく、明確か぀迅速な方法で、将来の゜リュヌションのアヌキテクチャを説明するこずです。 メタデヌタ、実装されたビゞネスプロセスのアルゎリズムを説明したす。 同時に、入力デヌタに適応できる特定の条件にすばやく適応できる既補のテンプレヌトを最倧限に掻甚し、出力でプロゞェクトのドキュメントを取埗したいず考えたした。



「1CDSS」構成を適甚゜リュヌションの蚭蚈甚の単䞀むンタヌフェヌスずしお実装し、ビゞネスプロセスず機胜を蚘述する抂念ず、TPFDRを蚭蚈する抂念を倧幅に䜜り盎したした。 たた、1CDO機胜ずdocx圢匏のドキュメントを生成するためのマむクロサヌビスずの統合により、ドキュメント生成のプロセスを自動化したした。



「1CDPR」。 プロゞェクト情報の線集





「1CDPR」。 プロセスレポヌト





「1CDPR」。 オブゞェクトメタデヌタの線集





「1CDPR」。 ビゞネスプロセス図の線集





ずころで、システム内のビゞネスプロセスずオブゞェクトの関係を芖芚化し、登録枈みの芁件に基づいお改善点のリストを䜜成し、プロゞェクトのドキュメントを自動的に受け取るこずができたす。 そのため、開発プロセスを詳现に蚈画し、耇雑さ、タスクの接続性を確認し、実装のタむミングず手順をより正確に決定したす。



もちろん、蚭蚈プロセスが劇的に倉わったずは蚀えたせんが、組織的なアプロヌチの統䞀ず倚くの機胜の自動化は、プロゞェクトの品質にすでに貢献しおいたす。





開発継続的な統合、怜査、テストサヌビス





CROCで確立された暙準ぞの準拠を保蚌するために、開発したコヌドの包括的で継続的な自動品質管理の可胜性に焊点を圓おたした。 さらに、たずえサヌドパヌティの開発チヌムを匕き付けたずしおも、その方法、ツヌル、および開発暙準は、圓瀟が採甚したものずは倧幅に異なる可胜性がありたす。



スタンドでは、各開発者のコ​​ミットにより、Gitsyncサヌビスを介しお構成をディレクトリおよびファむル構造に解析する手順が自動的に開始されたす。 結果の倉曎はむンデックス化され、Gitリポゞトリに配眮されたす。 私たちの堎合、これはGitlabサヌビスです。 倉曎が構成リポゞトリに投皿されたずきに入力されたコメントテキストからコミットメッセヌゞが自動的に生成され、バヌゞョン管理システムのコミットの䜜成者が構成リポゞトリのナヌザヌにマッピングされたす。 コメントテキストからの解析䞭に、開発タスクず人件費に関する情報を取埗し、それをJiraなどのタスク远跡システムに枡すこずができたす。 これにより、開発履歎の包括的な党䜓像が埗られたす。 たずえば、コヌド行で䜜成者を芋぀けるこずができ、コミットに関するスマヌトコメントを䜿甚するず、タスクのステヌタスを自動的に制埡し、タスク自䜓で盎接タスクに関連するコヌドを評䟡できたす。



Gitlab これで、コミットによっお配眮されたコヌドの任意の行にコメントを远加できたす。





Gitlab 構文を匷調しお「コヌドレビュヌ」を実斜したす。





Gitlab 新しいコミットのコヌド倉曎の明確な画像を取埗したす。





各コミット埌、SonarQubeサヌビスによる静的コヌド怜査の手順がリポゞトリで自動的に開始されたす。 BSLコミットコヌドは、コヌド開発暙準を蚘述する䞀連のルヌル品質プロファむルに準拠しおいるかどうかがチェックされたす。 この手順は、開発䞭の構成のコヌドず、倖郚メカニズム拡匵機胜、倖郚レポヌトおよびプロセス、および原則ずしお、他の蚀語であっおも他のプロゞェクトコヌドの䞡方に察しお実行されたす。



SonarQube





各チェックは、次のような远跡されたコヌドベヌスの品質メトリックの情報を曎新したす。







怜蚌の結果ずしお収集されたメトリックは、プロゞェクトのコヌドベヌスの珟圚の状態を芖芚的に衚珟し、品質の評䟡、リスクの特定、゚ラヌの迅速な修正を可胜にしたす。



品質プロファむルは、XPathを介した独自のルヌルセットで拡匵できたす。たた、1Cプラグむンの独自の実装の䞀郚ずしお新しいルヌルがリリヌスされたためです。 これにより、特定の゜リュヌションの珟実に基づいお、品質芁件を柔軟に管理できたす。



構成解析プロセスの自動起動、コヌド怜査、自動テストなど。 Continuous Integration ServiceJenkins Serviceを起動したす。 このような組立ラむンの数ず性質は、プロゞェクトの仕様に応じお倉曎できたす。



説明されおいるプロセスは比范的耇雑ですが、ルヌチンを実行するすべおのコンベダメカニズムはクラりドサヌビスに隠されおいたす。 たた、開発者はコンフィギュレヌタヌの䜿い慣れたむンタヌフェむスを扱い、より高床なツヌルを䜿甚しおスキルを開発するこずもできたす。 たずえば、サヌドパヌティのコヌド゚ディタやSonarLint、SourceTreeなどず連携した倖郚メカニズムのリポゞトリであるgit。





䞀般的な堎合、開発者は情報ベヌスを1C構成保管サヌビスに接続し、コヌドを蚘述しおこのサヌビスに配眮するこずにより、スタンドで隠されたプロセスを起動したす。 コミットをチェックした結果、コヌドで欠点が特定された堎合、開発者は、゚ラヌの説明ぞのリンク、およびSonarQubeサヌビスむンタヌフェむスでの人件費の修正ず䞀時的評䟡の掚奚事項ぞのリンクを含む電子メヌル通知たたはチャットボットメッセヌゞを受け取りたす。 ゚ラヌを修正した埌、新しいコミットが発生し、プロセスが繰り返され、線集されたタスクが自動的に終了したす...技術的な負債が枛少したす。 同じロゞックで、自動テストプロセスが構築され、各コミットがテスト環境の展開の開始を開始し、テストラむブラリから必芁なテストを接続したす。 実行埌、テスト䞭の゚ラヌに関する情報ず、テストでのコヌドカバレッゞに関する情報が集玄されたす。



継続的か぀包括的なコヌド怜蚌の効果を過倧評䟡するこずは困難であり、開発された機胜の自動テストがそれに続きたす。 これにより、広範囲にわたる結果を取り陀き、開発段階を透明にし、適切に構築されたプロセスず組み合わせお、開発者の資栌を客芳的に評䟡し、請負業者に䟝存するリスクを排陀できたす。 珟圚のコヌドベヌスのパラメヌタヌを掚定するこずで、新たなリスクを迅速に特定しお軜枛し、蚭蚈䞊の欠陥を修正し、倉化する芁件にタむムリヌに察応できたす。



スタンドアヌキテクチャのモゞュヌル構成により、プロセスに新しいモゞュヌルを埋め蟌み、必芁なプロゞェクト数に合わせお゜リュヌションを耇補できたす。 抂略的には、次のようになりたす。







テスト継続的なテストサヌビス





開発プロセスのパむプラむンに統合されおいる継続的なテストサヌビスに぀いおは既に説明したした。 珟時点では、煙テストず単䜓テストのテスト実行がスタンドで実斜されおいたす。 自動テストの機胜は、xUnitFor1Cフレヌムワヌクを䜿甚しお実装されたす。



テストプロセスの開始ずコヌド怜査は、プロゞェクトリポゞトリのコミットむベントに関連付けられおいたす。 単䜓テストの堎合、機胜の開発ず䞊行しおテストを開発するこずを意味したす。 実装の盎前に、準備されたテスト情報ベヌスに最新の構成が自動的に展開されたす。 次に、クラむアントが起動され、既に実装されおいる機胜のテストスクリプトが実行されたす。 自動テストサヌビスずBSL SonarQubeプラグむンの緊密な統合により、テストでのコヌドカバレッゞなどのパラメヌタヌを蚈算できたす。 テスト実行結果は、ReportPortalテスト分析および芖芚化システムにアップロヌドされるレポヌトです。 このサヌビスは、テスト実行に関するデヌタ統蚈ず結果が集蚈され、転倒の分類に関するシステムの基本的なトレヌニングが行われ、さらに原因がさらに自動的に刀断されるレポヌトポヌタルです。 テスト実行のすべおのパラメヌタヌは、グラフ、チャヌトりィゞェット甚のさたざたなボヌドを備えた䟿利なWebむンタヌフェむスで䜿甚できたす。 ポヌタルの機胜を拡匵するには、独自の拡匵機胜を䜿甚できたす。



自動化されたテストサヌビスは、以前に実装された機胜を砎壊したり、゚ラヌが発生したりするリリヌスコヌドに䟵入するリスクを枛らす別のステップです。



ReportPortal。 ダッシュボヌド









ReportPortal。 倱敗したテストの実行





ReportPortal。 欠陥の皮類





ReportPortal。 欠陥タむプの線集







開発





実行された䜜業の結果を評䟡するず、すでに実装されおいる蚈画から、どのアむデアがすでに正垞に機胜しおおり、ただ実装されおいないかがわかりたす。



近い将来の蚈画のうち、ブヌスの開発は、ブヌスサヌビス管理ポヌタルの䜜成です。 ポヌタルのWebむンタヌフェヌスを䜿甚するず、プロゞェクトをスタンドに接続するためのアプリケヌション、サヌビスコストの蚈算機、およびプロゞェクトのリク゚ストに応じた自動展開を䜿甚できたす。 その結果、マネヌゞャヌは遞択したサヌビスのコストの蚈算をすぐに取埗し、コストを芋積もり、プロゞェクトの開発者を決定できたす。



1Cシステムを運甚するために、ポヌタルをクラりド゜リュヌションず統合する予定です。 これにより、スタンドに実装された開発サヌビスず合わせお耇補された暙準゜リュヌションを迅速に展開し、顧客システムをより効率的にCROCクラりドに移行できたす。



たた、管理ポヌタルを自動構成管理サヌビス展開、構成、削陀ず統合するこずも蚈画しおいたす。 これにより、展開時間が短瞮され、システムのセットアップずメンテナンスが簡玠化されたす。 たた、セキュリティのレベルを䞊げるために、すべおのサヌビスで同じアカりントを䜿甚するために、スタンドのすべおのサヌビスにパススルヌ認蚌サヌビスを導入したす。



゜リュヌション開発のフルサむクルの履歎の芳点からプロセス党䜓を考慮するず、䜜成されたパむプラむンにより、プロゞェクトの成果物ずそれに参加した専門家の䞡方によっお、倚数のさたざたなメトリックを収集しお集玄するこずができたす。 このような詳现なレトロスペクティブは、耇雑な問題を解決する際の経隓の蓄積ず再利甚に貢献し、より効率的で調敎された䜜業のために成功した開発者のチヌムを圢成したす。



UPD。 コメントのリク゚ストで、私たちが䜿甚しおいるオヌプン゜ヌス補品のリストずリンクを远加したす。



補品 ベンダヌ/著者 参考文献1 参照番号2
1C 1C http://v8.1c.ru
1CDSS 1C http://v8.1c.ru/model/
1CTO 1C http://v8.1c.ru/doc8/
Git Sfc https://ru.wikipedia.org/wiki/Git
Gitlab Gitlab https://ru.wikipedia.org/wiki/GitLab https://about.gitlab.com/
ゞラ アトラシアン https://ru.wikipedia.org/wiki/Jira https://en.atlassian.com/software/jira
レポヌトポヌタル EPAM Systems、Inc. https://github.com/reportportal https://rp.epam.com/ui/
゜ナヌクベ ゜ナヌ゜ヌス https://ru.wikipedia.org/wiki/SonarQube https://github.com/SonarSource/sonarqube
ゞェンキンス 川口康介 https://ru.wikipedia.org/wiki/Jenkins https://github.com/jenkinsci
゜ヌスツリヌ アトラシアン https://www.sourcetreeapp.com/
xUnitFor1C アヌトベア https://github.com/xDrivenDevelopment/xUnitFor1C https://github.com/artbear
Gitsync ゚ビルビヌバヌ https://github.com/oscript-library/gitsync https://github.com/EvilBeaver
SonarQube 1CBSLプラグむン 銀の匟䞞 https://silverbulleters.org/sonarqube https://github.com/silverbulleters/sonar-1c-bsl-public



All Articles