ALM(Application Lifecycle Management)の目的はシステムの継続的な配布(と統合)です。継続的デリバリを考慮した場合、製品の配布パッケージ(リソースとコンパイル済みコード)、開発環境プロジェクトのリポジトリ、ステージングやリサーチ用のソースコードの3つをどのように連携するかが肝になります。Microsoft製品の場合、これらが容易に連携できるようになっています。 各種リソースの連携 Visual StudioでWeb Appを作成し、Azureのプロダクション環境へ発行、同じくVisual StudioでWeb AppをVisual Studio Team Servicesへ登録しソース管理を行う方法を紹介します。 まずテンプレートから作成したWeb Appをそのままソリューションエクスプローラーで右クリックして[公開]を選択し、Azureのプロダクション環境へ発行します ソース管理へ登録 Web […]
ALM(Application Lifecycle Management)で重要な要素にバージョン管理があります。ALM管理ツールのバージョンの管理として「イテレーションに紐づける方法」や「ユーザーストーリーに紐づける方法」、「フィーチャーに紐づける方法」などがあると思いますが、プログラマーが主体となってバージョンを管理する場合、ALMツールの「フィーチャーに紐づける方法」によって、ソース管理ツールのリポジトリの「features」と連動させます。しかし、このケースでは「masterへのマージまで複数のリビジョンやビルドが残りドキュメントとの整合に工数がかかる」、「イシューが残ったままバージョンインクリメントが発生し、イシュー管理が困難」といった問題を抱えるケースが少なくありません。 バージョン管理をALMツール側の「ユーザーストーリーに紐づける方法」によって、ユーザーストーリーに「masterへのマージ」をタスクとして入れる方法は、製品バージョンに同期した文書管理やリリース判定テストを煩雑にしないひとつの手法です。この場合、製品バージョンとプログラムソースのバージョンの動きはユーザーストーリー進行中は連動しませんが、ユーザーストーリーのClose時に製品とソースコードのマイナーバージョンレベルの一致が容易です。マネージャーレベルの担当者は、常に製品とソースコード管理を意識する必要があります。 バージョン管理ツール バージョン管理ができるツールにはいかのようなものがあります。 ビルド ビルドツールには以下のようなものがあります。 カバレッジツール カバレッジツールには以下のようなものがあります。 ユニットテストツール ユニットテストツールには以下のようなものがあります。 統合開発環境 統合開発環境は前述の各種ツールと連携をとれるものが一般的です。統合開発環境には以下のようなものがあります。
ALM(Application Lifecycle Management)は、CMMI(Capability Maturity Model Integration)やAgile、Scrumといった開発プロセスにも必要な作業であり、それら開発プロセスによって量の単位や質の単位の定義が異なるため、アジャイル開発プロセスも管理できる機能を持つALMツールが一般的です。 アジャイル統合管理 アジャイル統合管理ができるツールにはいかのようなものがあります。 Visual Studio Team Services Visual Studio Team Servicesの場合、プロジェクト作成時に開発プロセスを選択します。 […]
ソース管理ツールは、製品のロードマップがあって組織内の様々なプロセスの後に形成されるALMを基盤として、その上で利用するものですから、それらの先行作業なしにツールを利用することはできません。しかしながら、多くの組織ではバージョン管理ツールを使うことに執心し、製品戦略との兼ね合いや構築プロジェクト完了後の継続的デリバリを意識すること無く、納品後のソースコードそのものがファイルサーバーに置かれていたりします。この記事では、ソース管理ツールが製品戦略の中でどのような役割を果たし、製品の継続的デリバリがどのようになされるのかについて解説します。 ALM ALM(Application Lifecycle Management)は、継続的デリバリには欠かせない作業です。ALMはPLM(Product Lifecycle Management)の一部であり、サービスのリリース時期、機能の拡張時期といったビジネスに直結する要素と分離された状態では、機能を実現する際の技術検証や懸念事項が犠牲にされプロジェクトのリスクが高まります。 ALMツール PLMで定義された製品化カタログはALM側でユーザーストーリーに置き換え、PLMで計画されたリリース単位、リリース時期をALM側でイテレーションに置き換えて、機能以外のドキュメントっ作成なども考慮したタスク群の入れ物となるバックログを作成していきます。その作業を支えるのがALMツールであり、いくつかの製品が販売されています。 ALMでは、ソースコードやバッチなどのリソース(≒プロジェクトの成果物)の状態を定義し管理します。設計文書などの状態なども定義し管理します。 ソースコード等のリソースの状態の定義とは、イテレーション内のユースケースを構成する複数のタスクのうちプログラムやバッチとして定義したタスクをフィーチャー(機能)として複製し量と質を管理していきます。量の管理とは、機能単位でソースコードが追加された、改修された、拡張された等を指し、アジャイル開発プロセスを採用している場合はできる限り1日単位(8h程度)のタスクにすることを推奨します。 また質の管理とは、その機能はどのような作業(コードレビューが終了した、単体試験が終了した等)で構成されているのかといった質の単位を定義し管理します。
業務用かどうかに関わらず、ソフトウェアの開発ではユニファイド・プロセスが重要であると考えます。ユニファイド・プロセスはAgileやScrum、Extream Programming等と相反するものではなく、ユニファイド・プロセスがカスタマイズされたものであると考えられるからです。元来、ユニファイド・プロセスはプロジェクトや組織によってカスタマイズされることを期待しており、適切なカスタマイズは、ユニファイド・プロセスの導入効果を最も発揮する重要な手法です。 業務用ソフトウェアの場合、このプロセスの単位は大小さまざまであると考えます。大きなひとつの構築プロセスと小さな改修プロセスや機能追加プロセス、技術検証プロセスなどが同時に推進していくことの方が多く、構築がひと段落してから第2フェーズの機能追加、バグ改修といった”裕福な”プロジェクトはそう多くはありません。多くの場合、運用しながら並行して機能追加や既知の潜在バグ改修といったプロジェクト推進が求められます。 このような形態のプロジェクト推進に対応しやすいと思われるのがAgile Unified Processです。Rational Unified Processを簡素化したAgile Unified Processは、規律をベースとするプロセス推進法であり、 Test-Driven Development (TDD)やAgile Modelingなどを含み、それらの作業を簡略化するツールの使用が推奨されています。Agile Unified Processは、大小さまざまな各プロセスの規律がイテレーション後に充足、改修されながら確立されていくため、最初に試験的なプロセスが必要となります。 […]