ソフトウェアドキュメンテーションとは、
コンピュータソフトウェアに関連する文書作成、またはその文書自体を指します。これには、
ソースコードドキュメンテーションが含まれることもあります。仕様書をドキュメンテーションに含めるかどうかは立場によって異なりますが、ドキュメンテーションは
ソフトウェアのライフサイクル全体で重要な役割を果たします。
ドキュメンテーションの分類
ドキュメンテーションは、
ソフトウェア開発の様々な側面をカバーします。以下に主な分類を示します。
制約・要求: ソフトウェアの制限事項や実現可能な機能、費用対効果などを明確にする文書で、仕様書を含む場合があります。
アーキテクチャ/設計:
ソフトウェアの概要、外部環境との関係、設計原則などを記述した文書です。なぜそのように設計されたのかを解説することに重点を置きます。
技術: コード、アルゴリズム、インターフェース、APIなど、技術的な詳細を記述した文書です。
エンドユーザー:
エンドユーザー向けのマニュアルや、システム管理者、サポートスタッフ向けの文書が含まれます。
マーケティング: 製品概要などのプロモーションを目的とした文書です。
制約・要求文書
Requirement(要求)は、ソフトウェア開発における必要事項を定義し、制約を含みます。これは仕様とも呼ばれ、システムがどのように動作するかを記述します。仕様書は、ソフトウェアの動作を定義するだけでなく、そのまま実行可能な場合もあります。仕様とソフトウェアの境界は、実装方法によって異なるため注意が必要です。
アーキテクチャ/設計文書
設計文書は、ソフトウェアの設計意図や背景を解説します。データ構造の背後にある原理や、特定のオブジェクトの構造、コードの追加方法などを記述します。アーキテクチャ文書は、設計文書の中でも特に高レベルな視点を提供します。コードの詳細には深く立ち入らず、システムの存在意義や動機となった要求仕様などを解説します。また、類似製品との比較文書(ホワイトペーパー)も重要です。これは、特定の観点からシステムを分析し、代替案を提示します。
技術文書(コード文書)
技術文書、特にコード文書は、プログラマが「ソフトウェアドキュメンテーション」として最もイメージしやすいものです。これには、API、データ構造、アルゴリズムなどの技術的な詳細が記述されます。ソースコードにコメントとして埋め込まれることが多く、Doxygen、Javadocなどのツールを用いて自動生成が可能です。コード文書は完全性と保守性のバランスが重要です。文芸的プログラミングのように、コードと文書を同時に作成する手法もあります。
ユーザー文書
ユーザー文書は、ソフトウェアの利用方法を解説するものです。チュートリアル形式、テーマごとの文書形式、辞書形式などがあり、ユーザーのレベルに合わせて選択できます。ユーザー文書は、ソフトウェア契約の一部を構成し、正確かつ最新であることが求められます。オンラインヘルプだけが提供される場合もありますが、詳細な情報は書籍として提供されることもあります。
マーケティング文書
マーケティング文書は、製品の宣伝を目的とします。潜在的なユーザーを引きつけ、製品の価値を伝え、競合製品との比較を通じて製品の位置づけを明確にします。キャッチフレーズの使用や、他の製品との相互運用性の強調が効果的です。
アーキテクチャ/設計/技術文書のためのツール
ドキュメンテーションを効率的に行うための様々なツールが存在します。統一モデリング言語(UML)や、ソースコードから文書を自動生成するツールがよく利用されます。
主なソースコードからの文書生成ツール
ApiGen - PHP
Ddoc - D言語
Doxygen - 各種言語
Epydoc - Python
HeaderDoc -
Apple製、各種言語向け
Javadoc - Java
Natural Docs - 各種言語
NDoc - 共通言語基盤向け
phpDocumentor - PHP
ROBODoc - 各種言語
Sandcastle - C#, VB.NET 向け
VBDOX - Microsoft Visual Basic
文芸的プログラミングは、ドキュメンテーションをコードと同時に作成する手法です。これにより、コードと文書の整合性が保たれやすくなります。
注釈
ソフトウェアドキュメンテーションは、ソフトウェア開発の成功に不可欠な要素です。適切なドキュメンテーションは、開発チームだけでなく、ユーザーやマーケティング担当者にとっても重要な情報源となります。ツールや手法を適切に活用し、高品質なドキュメンテーションを目指しましょう。
関連項目
ソフトウェア開発工程
契約プログラミング
Docstring
*
ドキュメンテーションジェネレータ