評価してください: 

成功するソフトウェア開発を支援するマイクロソフトの取り組み

更新日: 2011 年 7 月 1 日


世界有数のソフトウェア開発会社の 1 つとして、マイクロソフトは開発チームの成功をサポートすることに力を入れています。ここでは、ソフトウェア開発ライフサイクルのあらゆる側面を網羅するマイクロソフトの幅広いツール、開発環境、フレームワーク、コード サンプル、ガイダンスの概要について説明し、優れたソフトウェアの設計、ビルド、配置を行う個人やチームを支援します。

図 1 は、最初の顧客要件の収集からソフトウェアのリリースまで、そして開発、保守、配置後の変更を継続的に繰り返すソフトウェア開発ライフサイクルを示します。 

ソフトウェア開発ライフサイクル

図 1. ソフトウェア開発ライフサイクル

次のセクションでは、ソフトウェア開発ライフサイクルの主な各分野について説明します。また、使用可能なマイクロソフトのテクノロジやツールを示し、設計や開発プロセスの各段階でそれらがどのように役立つかについて説明します。

計画と要件分析

通常これは設計に関連する作業ですが、開発チームは顧客の要件を、コストや時間の制約内での実装が可能で、使用可能なハードウェアとインフラストラクチャで機能する実際の設計に変換する責任があります。

要件の収集と分析は最初のステージです。通常この作業には、Microsoft Office プログラム (Word、Excel、Visio、Project など) などのツールやアプリケーションを使用します。要件はドキュメント、図、図式、モデル、ランタイム環境の説明などで提供される場合があります。この最初のステージで時間の管理や開発プロジェクトのコスト見積もりを行うのに理想的なツールは、Microsoft Project や Microsoft Excel です。図 2 は、Microsoft Project を使用したプロジェクト管理の例です。

Project 計画と見積もりツール 

図 2. Microsoft Project 計画と見積もりツール

アーキテクチャ、設計、およびモデリング

 より詳細な設計になると、Microsoft Visual Studio のツールを使用して、アプリケーションのアーキテクチャの設計や、モデルと配置依存関係の作成を簡単に行うことができます。このツールを使用して、全体の設計とコンポーネントの分散をモデル化し、ハードウェア インフラストラクチャのモデル上にこれを重ねて設計の実用性を検証できます。また、コンポーネントの依存関係や相互接続の図を生成し、詳細図の一部としてデータベース スキーマをモデル化できます。図 3 は Visual Studio 2010 のモデル デザイナーを示します。

Visual Studio のアーキテクチャ用モデリング ツール 

図 3. Visual Studio のアーキテクチャ用モデリング ツール

マイクロソフトでは設計フェーズを支援するガイダンスも提供しています。アーキテクチャ上の優れた手法に関する全般的なガイダンス、さまざまな種類のアプリケーションの一般的な設計に関する情報、ソフトウェアが要件を満たすために必要なトレードオフの評価支援などがあります。たとえば図 4 は、現在の一般的なアプリケーション アーキテクチャを示します。すべてのアプリケーションにこれらの機能がすべて含まれるわけではありません。

一般的な階層構造のアプリケーション アーキテクチャ

図 4. 一般的な階層構造のアプリケーション アーキテクチャ

ネットワークやインフラストラクチャの要件に関するアドバイスから、設計に影響する可能性のある配置や管理要因の具体的な情報まで、特定のテクノロジを使用するアプリケーションの設計に関する詳細なガイダンスも利用できます。たとえば、Windows オペレーティング システムのドキュメントには、ネットワークのレイアウト、サーバーの配置、システム要件、サーバーで実行するアプリケーションの配置時の考慮事項などに関するガイダンスが含まれています。これらはすべて、マイクロソフト プラットフォーム上で実行するソフトウェア アプリケーションの設計において重要です。

開発テクノロジ、ツール、および言語

マイクロソフトは多くのテクノロジやアプリケーションの種類でのコードの作成をより簡単で効率的に行うためのツールや開発環境を用意しています。選択する開発環境は、作成するアプリケーションの種類や使用するコード言語に応じて変わります。図 5 は、マイクロソフトのツールと開発環境、テクノロジ、開発言語と、対象となるアプリケーションの種類を示します。

開発者が使用できるテクノロジ、ツール、および言語 

図 5. 開発に使用されるテクノロジ、ツール、および言語

テクノロジと言語には多くの異なる組み合わせがありますが、ほとんどのアプリケーションは Microsoft .NET Framework 上で実行するように構築されます。これは、ハードウェアとオペレーティング システムの上にコードのためのより統一されたプラットフォームを提供する層です。使用する .NET コード言語 (C# や Visual Basic など) に関係なく、コードは .NET Framework のランタイム コンポーネントによって実行される Microsoft 中間言語 (MSIL) と呼ばれる標準形式にコンパイルされます。図 6 に、アーキテクチャとプロセスを示します。

.NET Framework でのコードのコンパイルと実行

図 6. .NET Framework でのコードのコンパイルと実行

このような開発とランタイム フレームワークの標準化によって基になるシステムの複雑さの大半が隠されるため、コードの作成が簡単になります。また、これらはすべてコード ライブラリ、オブジェクト、およびプログラミング インターフェイスの同一の標準セットを使用するため、異なる言語での作業もより簡単になります。

コードの作成、コンパイル、およびテストを行う

開発の観点からすると、主要なツールは Microsoft Visual Studio です。特定の種類のアプリケーション向けの無料の Express Editions を含むさまざまなバージョンを使用できます。Visual Studio にはプロジェクトとソリューションの作成、コードの作成、コードのコンパイルと実行、コードのデバッグ、およびエラーの解決に使用できる統合開発環境 (IDE) が用意されています。Visual Studio には一般的な多くの種類のアプリケーション向けのテンプレートが含まれ、ダウンロード可能なテンプレートとフレームワークによって追加の種類がサポートされています。図 7 に、これらのいくつかの種類のアプリケーションを示します。

Visual Studio 2010 でのアプリケーション プロジェクトの種類の選択 

図 7. Visual Studio 2010 でのアプリケーション プロジェクトの種類の選択

Visual Studio でコードを作成する

Visual Studio には開発プロセスに役立つ多くの機能が用意されています。これらの機能には、オブジェクト、クラス、クラス メンバーのポップアップ リスト、統合されたヘルプ機能とドキュメント、共通タスク用のウィザード、カスタマイズやプラグイン型の追加ツールの完全なサポートなどがあります。アプリケーションを作成する際の生産性をさらに向上させるお気に入りのプラグインに加え、Visual Studio はすべての中心的な開発タスクを満たすのに十分な堅牢さを備えています。図 8 は、Visual Studio で Silverlight アプリケーションを作成する統合開発環境 (IDE) を示します。

Visual Studio 2010 での Silverlight アプリケーションの開発 

図 8. Visual Studio 2010 での Silverlight アプリケーションの開発

Visual Studio では一般的な Web、デスクトップ、クラウド、およびモバイル アプリケーションをはるかに超える種類のアプリケーションを使用できます。たとえば、クラス ライブラリ、フレームワーク、Office アプリケーション向けのコンポーネントや拡張機能、ワークフローベースのアプリケーション、SharePoint アプリケーションなどを開発できます。図 9 は、SharePoint アプリケーション用の開発環境を示します。

Visual Studio 2010 での SharePoint アプリケーションの開発 

図 9. Visual Studio 2010 での SharePoint アプリケーションの開発

ほとんどのビジネス アプリケーションは情報ソースとしてデータベースを使用します。Visual Studio には、データベースの作成、テーブルのスキーマ設計、関係の作成、およびテスト用サンプル データを使用したテーブルの設定を簡単に実行するツールが用意されています。Microsoft SQL Server のデータベース エディションのすべてを含む、ほとんどの一般的なデータベース サーバーに接続できます。図 10 は、Visual Studio でデータベースのストアド プロシージャを作成する方法を示します。

Visual Studio 2010 でのデータベースの操作 

図 10. Visual Studio 2010 でのデータベースの操作

開発では多くの場合、他の開発チームが作成した、またはサード パーティ サプライヤーから入手したコンポーネントやフレームワークとのインターフェイスを提供する必要があります。これらのコンポーネントやフレームワークのインターフェイスを理解し、オブジェクト構造を調べることができると便利です。Visual Studio には、.NET クラス ライブラリを構成するクラスを含むクラス、オブジェクト、コンポーネント、およびフレームワークを参照する機能が用意されています。図 11 は、Visual Studio を示します。

Visual Studio 2010 オブジェクト ブラウザー 

図 11. Visual Studio 2010 オブジェクト ブラウザー

Visual Studio でデバッグ、トレース、およびテストを行う

Visual Studio のバージョンによっては、単体テストの実行、実行時の効率性を最大化するコードのプロファイル、基になるハードウェアでのコードの実行方法の表示を行うツールも用意されています。たとえば図 12 は、実行中の Visual Studio ランタイム コード分析機能を示します。

実行中のコードの分析を示す Visual Studio 2010 

図 12. 実行中のコードの分析を示す Microsoft Visual Studio 2010

Visual Studio ではコードのコンパイル時と実行時の両方でエラーの検出および修正がサポートされています。一般的な種類のエラーを回避し、コードを更新してエラーを解決するのに役立つ詳細な警告とエラー メッセージがコンパイラによって生成されます。検出メカニズムは強力かつ構成可能であるため、コードのコンパイルを妨げることがなくパフォーマンスに影響する可能性のある警告のうち、通知を受け取る警告の種類を選択できます。図 13 は、アプリケーションのコンパイル時に Visual Studio に表示されるエラー リストを示します。

Microsoft Visual Studio 2010 コンパイラのエラー リスト 

図 13. Microsoft Visual Studio 2010 コンパイラのエラー リスト

アプリケーションのデバッグで最も困難な作業の 1 つは、エラー箇所を突き止めることです。コードのステップ実行を可能にする一般的な 1 行ごとの実行モードのほか、Visual Studio 2010 には実行プロセスに関するより多くの情報を収集し、エラーを引き起こした状況を再現する IntelliTrace 機能が用意されています。図 14 は、Visual Studio IntelliTrace 機能を示しています。

実行中の Visual Studio IntelliTrace 

図 14. 実行中の Visual Studio IntelliTrace

Visual Studio を使用してアプリケーションを配置する

Visual Studio にはセットアップ パッケージや配置パッケージの作成をサポートし、アプリケーションを直接配置するさまざまなツールや機能が含まれています。リリース用のコンパイルでは、アセンブリとリソースに必要なすべての情報を指定する機能が組み込まれます。また、リバース エンジニアリングをいっそう困難にするコードの難読化、Microsoft インストーラー (MSI) パッケージの作成、ヘルプ ファイルの作成、およびその他多くの種類の配置パッケージの作成を行うことができます。Web アプリケーションなどのランタイム ホストに直接配置されるアプリケーションのために、Visual Studio には図 15 に示すような Web 配置ツールが用意されています。

Visual Studio 2010 の Web 配置オプション 

図 15. Visual Studio 2010 の Web 配置オプション

その他のコード開発ツール

その他の特定のタスク、アプリケーションの種類、または特定の開発シナリオでは、その他の開発ツールや開発環境を使用できます。たとえば Microsoft WebMatrix (図 16 を参照) は、ASP.NET Web ページ テクノロジを使用した Web アプリケーションや Web サイト作成を行うための無償のツールです。WebMatrix では C#、Visual Basic、PHP などのマイクロソフト以外の他の言語でアプリケーションを作成できます。このツールには、データベースを操作したり、Web ホスティング プロバイダーにアプリケーションを配置する機能を備えた統合環境も用意されています。

Web アプリケーションや Web サイト向けの WebMatrix 開発環境 

図 16. Web アプリケーションや Web サイト向けの WebMatrix 開発環境

Windows Phone で実行するアプリケーションの開発では、無償の Windows Phone Developer Tools を使用できます。これには、特別に調整されたバージョンの Visual Studio、ゲーム プログラミング向けの XNA 開発環境などのその他のツール、インタラクティブなインターフェイス作成用の Expression Blend、モバイル端末にアプリケーションを配置するユーティリティ、完全なバージョンの Visual Studio と統合するテンプレートが含まれています。図 17 は、開発中の Windows Phone Silverlight アプリケーションを示しています。

Windows Phone Silverlight アプリケーションの開発 

図 17. Windows Phone Silverlight アプリケーションの開発

Expression Blend はアプリケーションのインターフェイスやグラフィックス設計者向けのツール ファミリの 1 つですが、開発作業でも一般的に使用されます。たとえば、Expression Blend は遷移およびその他のグラフィカルな構造上の動きのある効果を含む、デスクトップ、Web、モバイルに対応した Silverlight アプリケーション向けの優れた開発環境を提供します。図 18 は、Expression Blend での Windows Phone アプリケーション開発を示しています。

Expression Blend での Windows Phone Silverlight アプリケーション インターフェイスの作成 

図 18. Expression Blend での Windows Phone Silverlight アプリケーション インターフェイスの作成

他の多くの開発ツールの中には、コードの有効性のチェック、実行時の分析や診断の実行、配置およびドキュメントのパッケージ作成を行うツールがあります。Internet Explorer などのアプリケーションにも、Web アプリケーションやクライアント側スクリプト コードのデバッグやテストに便利な開発ツールが含まれています。   

最後に、マイクロソフトではすべての開発ツール、テクノロジ、および言語に関する完全なドキュメントとガイダンスを提供しています。Microsoft Developer Network (MSDN) は、開発作業を行う個人やチームにとって主要な情報源です。これにはテクノロジの理解を助ける概念的なドキュメントや、ツールと言語の使用に重点を置いたガイダンスが含まれています。さまざまなテクノロジのすべてのポータルには、テクノロジを簡単に習得し、開発を迅速に行うためのビデオ、"How-To" ステップ バイ ステップ ガイド、サンプル コード、および参照実装が含まれています。

レビュー、プロジェクトとコードの管理、およびレポート

チームの一員として作業する場合、各個人はチーム全体でプロジェクト管理の情報を共有し、それらの情報に基づいて行動する必要があります。マイクロソフトでは、開発者個人がチーム環境で成功し、開発を迅速に行い、開発ライフサイクルを管理するのを支援するツールやガイダンスを提供しています。この場合の主なツールは Team Foundation Server (TFS) および SharePoint Server です。これらは両方とも、バージョン管理とさまざまなネットワークからのアクセスの提供を可能にし、プロジェクトの正しい目標を維持するために役立つリポジトリです。

Team Foundation Server は主に開発タスクおよびプロジェクト管理タスクを目的としています。これには、完全なバージョン管理機能を備えたコード リポジトリの作成、チェックアウト機能とチェックイン機能、完全なアプリケーションの定期的なビルドを可能にするコード分岐やリンクのための多くの機能が含まれています。また、構成可能なテンプレート、ワークフロー、レポート、およびその他の多くの関連機能に基づいた作業項目も提供されます。これは大規模で複雑なアプリケーション開発に理想的な環境ですが、小さいチームやプロジェクトでも機能します。

チーム メンバーは、ファイルのチェックアウトおよびチェックイン、ファイルへの読み取り専用アクセス、リポジトリのスナップショット作成および接続機能を自動的に管理する Visual Studio または他の互換性のあるツールから TFS に接続します (図 19 を参照)。

Visual Studio 2010 から Team Foundation Server への接続 

図 19. Visual Studio 2010 から Team Foundation Server への接続

初期のアプリケーション設計フェーズと開発ライフサイクル全体を通じて、さまざまなチーム メンバーがタスク、フィードバック、計画、およびプロジェクト関連のその他すべての役立つ情報を記述するストアを TFS に作成し、維持します。ストーリーには時間の見積もりと完了の情報を含めることができるため、個々の作業者と管理者がプロジェクト開発サイクルの状態をひとめで把握できます。図 20 は、TFS のプロジェクトのストーリーの概要ページを示します。

ストーリーを使用した TFS の開発サイクルの監視と管理 

図 20. ストーリーを使用した TFS の開発サイクルの監視と管理

また、TFS は全体の進行状況、ビルドの状態、ソフトウェアのバグに関するさまざまな情報を一連のポータルを通じて提供できます。これは、テスト計画、および開発プロセスのあらゆるステージで検出されるソフトウェアのエラーの観点から、ソフトウェアの品質を監視するのに特に有効です。図 21 は、TFS で生成できるいくつかのグラフィカルなレポートを示しています。

TFS を使用した開発中のソフトウェアの品質の監視 

図 21. TFS を使用した開発中のソフトウェアの品質の監視

SharePoint はマイクロソフトが提供する 2 つ目の種類のリポジトリです。これは主にドキュメントと情報のリポジトリであり、プロジェクトのドキュメント管理に向いています。多くの Microsoft Office アプリケーションとの統合機能が提供され、アーキテクト、設計者、プロジェクト管理者がソフトウェア開発ライフサイクルを通じて使用できる理想的なリポジトリです。また、多彩な組み込みおよびダウンロード可能なリポジトリ テンプレート、包括的なカスタマイズ機能、ネットワークとインターネットを通じて分散したチームの広範なアクセスを実現する可用性を提供します。図 22 は、ドキュメント リポジトリとして使用される SharePoint を示します。

ドキュメントおよび情報リポジトリとしての SharePoint 

図 22. ドキュメントおよび情報リポジトリとしての SharePoint

まとめ

マイクロソフトではソフトウェアの設計、開発、および配置プロセスをサポートする幅広いソフトウェアおよびツールを提供しています。アーキテクトや設計者は、アプリケーションとランタイム環境のモデル化、ドキュメントの管理、および関係者との対話にツールを使用できます。

開発タスクでは、統合およびスタンドアロン専門の開発ツールや開発環境が提供する高度なサポート、使いやすさ、拡張性により、プロセスのあらゆるステージが可能な限り簡素化されます。コードの作成とデータベースの操作のほか、コードのコンパイル、テスト、トレース、およびデバッグにツールを使用できます。

開発プロセスを通じて使用されるその他のツールや環境には、コードおよびドキュメント リポジトリ、プロジェクト管理ツール、レポート ツールなどがあります。さらに、マイクロソフトではより優れたソフトウェアの設計、ビルド、実行に役立つ設計、開発、管理、およびテスト作業に関する幅広いさまざまな種類のガイダンスを提供しています。

ページのトップへ