ソフトウェアドキュメンテーションとは、
コンピュータソフトウェアに関連する文書作成、またはその文書自体を指します。これには、
ソースコードドキュメンテーションが含まれることもあります。仕様書をドキュメンテーションに含めるかどうかは立場によって異なりますが、ドキュメンテーションは
ソフトウェアのライフサイクル全体で重要な役割を果たします。
ドキュメンテーションの分類
ドキュメンテーションは、
ソフトウェア開発の様々な側面をカバーします。以下に主な分類を示します。
制約・要求:
ソフトウェアの制限事項や実現可能な機能、費用対効果などを明確にする文書で、仕様書を含む場合があります。
アーキテクチャ/設計:
ソフトウェアの概要、外部環境との関係、設計原則などを記述した文書です。なぜそのように設計されたのかを解説することに重点を置きます。
技術: コード、
アルゴリズム、インターフェース、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
*
ドキュメンテーションジェネレータ