バックナンバーはこちら

today&tomorrow

Technology Update

  • T&T HOME
  • Technology Update
  • アプリケーション・セキュリティ・マネージャーのためのアジャイル開発

2017 May Spring vol.106

アプリケーション・セキュリティ・マネージャーのためのアジャイル開発

シノプシス ソフトウェア・インテグリティ・グループ スタッフ

競争の激しい現在のビジネス環境では、アプリケーション開発に対して正確性だけでなく迅速性も求められるようになっています。伝統的なウォーターフォール型開発は確かに効果的ではあるものの、必要な手順が多いため現在のソフトウェア開発のスピードについていけなくなっています。アジャイル手法はソフトウェア開発を劇的に加速するのはもちろん、それ以外にいくつもの利点があって広く支持されています。

アプリケーションの脆弱性がビジネスの重要なデータに与える脅威はますます深刻化しています。特にウェブ・アプリケーションから日々発生する脅威はとどまるところを知りません。一般的な認識では、アジャイル手法によるソフトウェア開発とアプリケーション・セキュリティの確保は共存が難しく、アジャイル開発チームはアプリケーション・セキュリティの要件を満たすことができないと考えられています。アジャイル開発の「俊敏」で「冗長性を削ぎ落とした(リーンな)」性質はセキュリティと相反しており、アジャイル・プロセスにアプリケーション・セキュリティを導入しようとすると、アジャイル開発プロセスの長所が台無しになってしまうというのがその根拠です。

しかしアジャイル開発プロセスにアプリケーション・セキュリティを組み入れて成功した企業の例も多く報告されています。その成功の鍵とは一体何でしょうか。本稿では、アプリケーション・セキュリティの観点からアジャイル開発を詳しく観察し、アジャイル型開発にセキュリティを効果的に組み入れる方法について考察します。

アジャイルの原則について

純粋なアジャイル開発はアジャイル宣言(Agile Manifesto)に定義されています。しかし純粋なアジャイルを採用している組織は少数で、多くはアジャイルの原則に基づいたメソドロジを採用し、アジャイルをフレームワークとして活用しています。ここでは、多くの開発チームが採用しているアジャイルの原則についてまとめます。

責任の所在は開発チームに:開発チームにはミッション完遂の責任と信用が与えられます。コミュニケーションは、すべてのステークホルダーが対面形式で意思疎通を図るのが理想です。

コードは常時アップロード/更新される:これによって、プロセスのどの段階で変更が発生しても最終製品を適応させることができます。アジャイル・プロジェクトのライフサイクルは明確な状態で構成されているのではなく、開発とテストを繰り返していくことによって構成されます。
これにはエクストリーム・プログラミング(XP)と呼ばれるソフトウェア開発手法も利用されます。個々の開発者が作成したコードをメインのソースコードに結合する作業を1日に何回も行うことによって、開発プロセスの後期に統合の問題が発生するのを防ぎます。このため、プロジェクトの現在のステータスは常に変化します。

プロセスの終盤に要件が確定する:要件はプロセス全体を通じて変化、発展することをアジャイル・チームは知っています。早い段階で要件を文書化しても無駄に終わるだけです。最初のうちは、プロジェクトの範囲を特定するために要件を手探りで予想する作業が中心となります。明確な要件は、プロセスが進行して開発チーム全体が最終結果に関して理解を深めた段階で決まります。

顧客志向の要件:プロジェクトは顧客との協調によって完成させますが、要件とプロジェクトの範囲を最終的に決めるのは顧客です。そして最終目標は、動作するソフトウェアをスケジュールどおりに顧客に納品することです。

ユーザー・ストーリー:ユーザー・ストーリーとは、プロジェクトの各機能に対してユーザーが何をする必要があるのかを簡潔に整理したステートメントのことです。これは要件管理を容易にする手段の1つとなります。

自動化したテストを継続的に実行する:テストおよびテスト・ケースを自動化することにより、アジャイル開発プロセスのすべての工程でより頻繁にテストができるようになります。この結果、開発サイクルの短いアジャイル手法でも高品質なソフトウェアを生み出すことができます。

リーン開発:アジャイル手法はソフトウェア開発プロセスにおいてリーン生産方式の原則を活用します。これにより無駄を最小限に抑え、開発チームに権限を委譲し、なるべく短期間かつ低コストでプロジェクトを完了させることができます。

ビジネス・サイドと開発サイドの協力:開発者とステークホルダーの協調を毎日続けることが、アジャイル開発を成功させる唯一の方法です。

動作するロバストなソフトウェアをコンスタントに作成する:成果を判定する重要な指標は、求められている機能が正しく動作するソフトウェアがコンスタントに作成されているかどうかです。成果物として優れたソフトウェアを提供することに重点が置かれます。

自己改善のプロセス:現在のプロセスの問題点およびその解決方法についてチーム内で定期的に振り返りを行う必要があります。

カテゴリートップ