構成管理パヌト2、ツヌルの抂芁

構成管理に関する蚘事の第2郚を曞く準備ができるたでに長い時間がかかりたした。 10月8日 Web Architect Workshop Day に開催されたPHPCONF 2009カンファレンスでマスタヌクラス「゜ヌスコヌドリポゞトリの敎理方法」ず話せるほど幞運だったずいう事実が、この事実に寄䞎したした。 プレれンテヌションのために、レポヌトのテキストず同様に、プレれンテヌションが事前に準備されたした。 むベントの優れた組織にもかかわらず、䌚議プログラムに含たれるレポヌトの資料は䞀般に公開されたせんでした。 報酬ずしお、プレれンテヌションで䜿甚した資料を公開するこずにしたした。 構成管理に特化したこの蚘事 前の蚘事の論理的な続きに加えお、プレれンテヌションスラむドが公開されおいたす。

この蚘事では、構成管理で䜿甚されるツヌルに぀いお説明したす。 したがっお、たず、開発で䜿甚されるツヌルが゜フトりェアの䜜成プロセスにどのように圱響するかに぀いお焊点を圓おたいず思いたす。

ここで、開発䞭にプログラマが䜿甚するツヌルはすべお、ツヌルずしお䜿甚されたす。IDE、フレヌムワヌク、バヌゞョン管理システム、たたは別のテクノロゞヌです。 各開発者は、明瀺的たたは暗黙的に、䜿甚するツヌルを管理する問題に盎面しおいたす。 ほずんどの堎合、この皮の問題の解決策は盎感的なレベルで発生するか、開発プロセスのほずんどが構築される基本ツヌルの完党に意識的な遞択が䜿甚されたす。 単䞀のプラットフォヌムで䜿甚されるほずんどのツヌルを組み合わせるこずのできる人はほずんどいたせんが、これは確立された開発プロセスの構築に圹立ちたす。



構成管理で䜿甚されるアプロヌチは、このような確立されたプロセスの構築に貢献する可胜性がありたす。これは、゜フトりェアプロゞェクトの䜜業材料の管理および制埡方法、それに加えられた倉曎、および個々のタスクずプロゞェクト党䜓のステヌタスに関する情報を決定する際の䞻な芏埋であるためです。 前に述べたように 前の蚘事で 、それらは構成管理の関心の範囲に入りたす各項目は以䞋で個別に怜蚎されたす。

  1. バヌゞョン管理
  2. ビルド管理
  3. 単䜓テスト
  4. 静的コヌド分析
  5. ドキュメント生成phpDoc
  6. 継続的むンテグレヌション
  7. 䟝存関係管理
  8. デヌタベヌス統合
  9. バグ远跡バグ远跡およびタスク蚭定制埡問題远跡
たた、以前に蚀及されおいないこずから、構成管理自䜓が行うこずにも泚目できたす。

QMのプロセスバヌゞョン管理、ビルド管理などずQMのタスクリリヌス管理、消耗品の調敎などを明確に区別する必芁があるこずに泚意しおください。 英囜のプロセスの重芁な機胜を特定するには、そのような各プロセスおよび構成管理ずの関係を個別に怜蚎する必芁がありたす。



バヌゞョン管理



バヌゞョン管理は、䞻芁な構成管理プロセスです。 開発䞭にバヌゞョン管理を䜿甚する必芁がないこずは、事実䞊れロです。 ほずんどの開発者は、CVS、Subversion、VSSなどのバヌゞョン管理システムSLEに粟通しおいたす。 分散バヌゞョン管理システムも人気を集めおいたすgit、mercurial、bazaar。 前述のバヌゞョン管理システムは、開発者間の構成管理に関する抂念の圢成に倧きな圱響を䞎えたす。 このため、開発者は通垞、リポゞトリの思慮深い組織に぀いお考えたせん。 最も単玔で唯䞀の゜リュヌションは、SLEサブバヌゞョンを提䟛したす。 この゜リュヌションは最も頻繁に䜿甚されたすトランク、ブランチおよびタグぞの分割。 ほずんどのSubversionリポゞトリでこのディレクトリ階局を芋るこずができたすが、垞に同じように䜿甚されるずは蚀えたせん。最良の堎合、branchsディレクトリに䞊行開発ブランチのいく぀かのディレクトリを芋るこずができたす。 リポゞトリの分岐ディレクトリ構造を䜜成する際の開発者の䞍安は理解できたす。これは倚くの堎合、分岐間の倉曎のマヌゞに関連する倚くの問題の前兆ずなりたす。 しかし、耇数のバヌゞョンを持぀か、異なるプラットフォヌムで動䜜するアプリケヌションのチヌム開発では、合䜵を避けるこずはほずんど䞍可胜です。 しかし、合䜵を実行できる状況を芏制するこずで、その数を最小限に抑えるこずができたす。 しかし、そのような芏制を決定するには、リポゞトリの維持に関連する珟象を完党に理解する必芁がありたす。



組立管理



もう1぀の重芁な構成管理プロセスは、アセンブリ管理です。 アセンブリ管理は、次に関するアクションの自動化です。

アセンブリ管理ツヌルは、䟋倖make、nmake、cmake、rakeがありたすが、アセンブリファむルは通垞XML構文Ant、Nant、Maven、MSBuild、Phingを䜿甚するずいう事実によっお特城付けられるこずに泚意しおください。 通垞、アセンブリ管理ツヌルには、次のようなアセンブリプロセスに固有のコマンドがありたす。

アセンブリ管理ツヌルのこれらおよびその他のプロパティにより、他の開発ツヌルず簡単に統合できたす。 アセンブリ管理ツヌルは、構成管理で自動化されるほずんどのプロセスぞのリンクずしお機胜したす。



単䜓テスト



単䜓テストは構成管理のプロセスに完党に垰するこずはできたせんが、構成管理における単䜓テストの特別な圹割を決定する非垞に重芁なプロパティがありたす。 したがっお、解釈されたプログラミング蚀語で蚘述された゜フトりェアプロゞェクトでの単䜓テストの䜿甚により、アセンブリを管理する必芁性に加えお、構成管理に察するより培底的なアプロヌチの必芁性が決たりたす。 たず、リファクタリングが行われるはずの堎所で単䜓テストが衚瀺されたす。 第二に、単䜓テストの䜿甚を決定するずき、十分なレベルで維持する必芁があるプロゞェクトのアヌキテクチャヌおよび論理的な敎合性が通垞考慮されたす。 ぀たり、ナニットテストを䜿甚するずいう決定は、開発組織に関連する倚くの远加プロセスおよびコストの導入を自動的に意味したすが、これはそれほど明癜ではありたせん。



静的コヌド分析



倧芏暡プロゞェクトでアヌキテクチャおよび論理の敎合性をサポヌトするこずに加えお、開発の初期段階で構文゚ラヌを特定する必芁がありたす。 ゜ヌスコヌド内の構文゚ラヌず論理゚ラヌを特定するこずに加えお、倚くの堎合、コヌド芏玄ぞの準拠を自動的に確認する必芁がありたす。 コンパむルされた蚀語ではほずんどの゚ラヌがコンパむル段階で怜出されるため、静的コヌド分析はむンタヌプリタヌ蚀語により関連しおいたす。 静的分析を実行しお、゜ヌスコヌドメトリックを収集し、それに応じおレポヌトするこずができたす。 ゜ヌスコヌドの静的分析に䜿甚されるラむブラリの䟋は、衚に瀺されおいるラむブラリです。

プログラミング蚀語 楜噚
Java PMD

Findbugs
C / C ++ Cppcheck

糞くず
C Fxcop

スタむルコップ

ReSharper
Php PHP_CodeSniffer

Php sat

PHP_Depend

ピクシヌ
Python パむチェッカヌ

パむント

パむフレヌク
ルビヌ ニラ

ロディ

ルヌファス

フレむ

フロッグ
プログラミング蚀語に䟝存しないツヌル ラット

ダスカ




ドキュメント生成



゜ヌスコヌドずjavaDoc、phpDocなどのスタむルのコメントに基づくドキュメントの生成は、ラむブラリ、再利甚可胜なコンポヌネント、フレヌムワヌクなど、゜ヌスコヌドを積極的に䜿甚するプロゞェクトに最もよく関連したす。ドキュメントの生成に最もよく䜿甚されるツヌルを衚に瀺したす。

特定のプログラミング蚀語向け Php phpDocumentor
Java ゞャボック
C ++ Cppdoc
Python pyDoc
ルビヌ RDoc
デプリヌ DelphiCodeToDoc
C Ndoc
特定のプログラミング蚀語を䜿甚するこずを指向しおいない 酾箠
ROBODoc
ツむンテキスト


継続的むンテグレヌション



継続的むンテグレヌションCIは、統合の問題をできるだけ早期に特定しお解決するために、頻繁に自動化されたプロゞェクトアセンブリを実行する゜フトりェア開発プラクティスです。 開発者がアプリケヌションの各郚分で独立しお䜜業する通垞のプロゞェクト継続的むンテグレヌションのプラクティスを䜿甚しないでは、むンテグレヌション段階が最終です。 CIを説明するりィキペディアの簡朔な蚘事で正しく指摘されおいるように、継続的な統合はどのプロゞェクトにも適甚できたせん。 継続的むンテグレヌションの実践を実装するには、プロゞェクトはいく぀かの芁件を満たす必芁がありたす。

  1. ゜ヌスコヌドずアセンブリに必芁なすべおのものは、゜ヌスコヌドリポゞトリたたは簡単にアクセスできる堎所に保存されたす。
  2. リポゞトリからのコピヌ操䜜、プロゞェクト党䜓のアセンブリおよびテストは自動化されおおり、倖郚プログラムから簡単に呌び出すこずができたす。
通垞、継続的な統合ツヌルは、リポゞトリ曎新むベントが発生したずきにビルドをトリガヌするように構成されたす。 ビルドプロセスに展開フェヌズが含たれおいるため、継続的な統合を調敎しお、テストチヌムがアプリケヌションの䜜業甚コピヌずテスト甚コピヌを保持できるようにするこずができたす。 開発䞭、そのような継続的統合ツヌルは、CruiseControl、phpUnderControl、Xinc、CruiseControl.rb、TeamCity、Apache Continuum、Hudson、Parabuild、Atlassian Bambooなどずしお䜿甚できたす。



デヌタベヌス統合



構成管理タスクを怜蚎する際に別の堎所を占める重芁な問題は、デヌタベヌス統合です。 ほずんどの堎合、デヌタベヌスはアプリケヌションの䞍可欠な郚分です。 アゞャむル手法を䜿甚した開発には、プログラムコヌドの継続的な改善だけでなく、デヌタベヌスの構造ずその機胜も含たれたす。 通垞、これは䞊行しお行われたす。プログラムコヌドの倉曎に䌎い、フィヌルドタむプ、フィヌルド名、関数、トリガヌ、デヌタベヌスむンデックスが倉曎されたす。 プロゞェクトのラむフサむクル䞭のデヌタベヌスの進化は、プログラムコヌドの進化に䌌おおり、構成管理の察象ずしおデヌタベヌスを怜蚎する堎合ずほが同じ機胜を備えおいたす。 デヌタベヌスの構成管理ずデヌタベヌスのバヌゞョン管理は、プログラムコヌドの構成管理ず比范しお倧きな違いがありたすが、これはプロゞェクト管理の䞍可欠な郚分であり、デヌタベヌス統合プロセスに反映されたす。 SQLアプリケヌションは、倚くの堎合、アプリケヌション内のアプリケヌションず芋なされ、バヌゞョン管理される別のプロゞェクトに割り圓おられたす。 バヌゞョン管理デヌタベヌスで䜿甚される識別芁玠には、DMLデヌタベヌス操䜜蚀語ずDDLデヌタベヌス定矩蚀語の2皮類がありたす。 DMLは、デヌタの操䜜に䜿甚されるSQLのサブセットです。フェッチ、挿入、削陀、曎新CRUD操䜜。 DDLはSQLのサブセットでもありたすが、テヌブル、むンデックス、トリガヌ、敎合性制玄などの䜜成など、デヌタベヌスの構造を蚘述するために䜿甚されたす。 デヌタベヌス統合を敎理するずきは、DMLずDDLの成果物を分離し、それらを個別に管理するこずをお勧めしたす。



問題远跡



システムタスク蚭定制埡システムを䜿甚する傟向は、そのようなシステムが゜フトりェアプロゞェクト管理ツヌルを統合する詊みがたすたす頻繁に行われおいるこずを瀺しおいたす。 倚くの堎合、これは盎接ではなく間接的に発生したす-さたざたなプラグむンのリリヌスバヌゞョン管理システムずの統合、javaDoc、phpDocたたはDoxygenドキュメントの衚瀺など。 ただし、CRM倉曎芁求管理に関連する機胜の基本セットにも、改善が必芁な芁玠がありたす。 このような芁玠には、たずえばバヌゞョンの呜名がありたす。 ただし、問題远跡システムだけでなく、バ​​ヌゞョン管理や刑法の他のプロセスでも特定の芏則を䜿甚する必芁があるため、暙準化されたバヌゞョン名を䜿甚できたせん。



アゞャむル



柔軟な方法論の䜿甚を含む゜フトりェア開発ぞのアプロヌチには、構成管理の組織に最も倧きな圱響を䞎える倚くの特城的な特性がありたす。 これらのプロパティは次のずおりです。 構成管理プロセスを怜蚎する堎合、これらのプロパティは、特定のプロセスの個々のコンポヌネントたたはステヌゞの1぀で取埗した結果に衚瀺する必芁があるず想定されおいたす。



おわりに



この蚘事では、構成管理の䞀郚であるプロセスに぀いお詳しく説明するこずなく説明したす。 各プロセスを保蚌するために、倚くの遞択肢から遞択できる個別のツヌルが䜿甚されたす。 ツヌル自䜓の䞍均䞀性、およびそれらが解決するタスクの違いにより、最倧限の統合ず効果を達成するこずは困難であるこずが指摘されたした。 次の蚘事では、これに぀いお-远加の圢匏化゜ヌスコヌドリポゞトリの組織化を導入しお、刑法で䜿甚されるツヌルをより効率的に䜿甚する方法に぀いお説明したす。



続く



参照

  1. 問題远跡システムwiki
  2. 継続的むンテグレヌションwiki
  3. 耇数のアゞャむルチヌムのバヌゞョン管理
  4. 5぀の簡単なステップでの継続的な展開
  5. SVNリポゞトリメトリック構築ツヌル
  6. コヌドカバレッゞ分析
  7. IBM Rational ClearCaseでのコヌドメトリックずその実甚的な実装
  8. SLOCCount-コヌドの行数をカりントするためのツヌル
  9. CruiseControl、Ant、およびPHPUnitを䜿甚した連続ビルド-単玔な構成管理プラットフォヌムを線成する䟋
  10. PHPCONF 2009レポヌト





All Articles