プログラミング ツールまたはソフトウェア開発ツールは、ソフトウェア開発者が他のプログラムやアプリケーションの作成、デバッグ、保守、またはその他のサポートに使用するコンピュータ プログラムです。この用語は通常、比較的単純なプログラムを指し、物理的なオブジェクトを修理するために複数の手を使用するのと同じように、タスクを達成するために組み合わせることができます。最も基本的なツールは、ソース コード エディターとコンパイラまたはインタープリターであり、遍在的かつ継続的に使用されます。その他のツールは、言語、開発方法論、および個々のエンジニアに応じて多かれ少なかれ使用され、デバッガーやプロファイラーなどの個別のタスクに使用されることがよくあります。ツールは、個別に実行される個別のプログラム (多くの場合、コマンド ラインから) である場合もあれば、統合開発環境(IDE)と呼ばれる単一の大きなプログラムの一部である場合もあります。多くの場合、特により単純な用途では、ツールの代わりに単純なアドホック手法が使用されます。たとえば、デバッガーを使用する代わりに印刷デバッグを使用する、プロファイラーの代わりに手動タイミング (プログラム全体またはコード セクション) を使用する、バグ追跡システムの代わりにテキスト ファイルまたはスプレッドシートでバグを追跡するなどです。
ツールとアプリケーションの区別はあいまいです。たとえば、開発者は単純なデータベース (重要な値のリストを含むファイルなど) をツールとして常に使用します。[疑わしい–議論する]ただし、本格的なデータベースは通常、それ自体がアプリケーションまたはソフトウェアであると考えられています。長年、コンピューター支援ソフトウェア エンジニアリング (CASE) ツールが求められてきました。成功するツールはなかなか見つかりません。ある意味では、CASE ツールは UML などの設計とアーキテクチャのサポートを重視していました。しかし、これらのツールの中で最も成功しているのは IDE です。
プログラミングツールの用途
人間の言語からコンピュータ言語への翻訳
現代のコンピュータは非常に複雑で、生産的にプログラムするにはさまざまな抽象化が必要です。たとえば、プログラムのバイナリ表現を記述するのではなく、プログラマーはC、Java、Python などのプログラミング言語でプログラムを作成します。アセンブラ、コンパイラ、リンカーなどのプログラミング ツールは、プログラムを人間が書き込み、読み取り可能なソース言語からコンピューターが実行できるビットとバイトに変換します。インタープリタはプログラムをオンザフライで解釈し、目的の動作を生成します。
これらのプログラムは、プログラムの一部をメモリに配置したり、リンカーのようにプログラムの各部分間の参照を修正するなど、人間が実行すると時間がかかり、エラーが発生しやすい、明確に定義された反復的なタスクを多数実行します。一方、最適化コンパイラは、実行速度やその他のプログラムの特性を向上させるために、ソース コードに対して複雑な変換を実行できます。これにより、プログラマーは、プログラムが実行されるマシンの詳細を気にすることなく、プログラムのより高レベルの概念的な側面に集中できます。
プログラム情報を人間が利用できるようにすること
ソフトウェアは非常に複雑なため、最も経験豊富なソフトウェア開発者であっても、ほとんどのプログラムを一目見ただけでは理解できません。また、高水準プログラミング言語によって提供される抽象化により、プログラマーが記述したソース コードと実際のプログラムの動作との関連性を理解することが難しくなります。プログラムのバグを見つけ、プログラムを拡張する際に新しいバグが発生しないようにするために、ソフトウェア開発者はいくつかのプログラミング ツールを使用して、プログラムに関するあらゆる種類の情報を視覚化します。
たとえば、デバッガーを使用すると、プログラマーは、プログラムに使用されたソース言語の観点から、実行中のプログラムに関する情報を抽出できます。デバッガーは、コンパイラによって保存された情報を使用して、具体的なマシンの状態からソース プログラム内の変数の値を計算できます。メモリ デバッガーは、実行中のプログラムの疑わしいまたは完全に間違ったメモリ アクセスを直接指摘できます。これは、他の方法では検出されず、プログラム障害の一般的な原因になることがあります。
ツール一覧
ソフトウェア ツールにはさまざまな形式があります。
- バイナリ互換性分析ツール
- バグデータベース:問題追跡システムの比較- バグ追跡システムを含む
- ビルドツール:ビルド自動化、ビルド自動化ソフトウェアのリスト
- コールグラフ
- コードカバレッジ § ソフトウェア.
- コードレビュー:コードレビュー用ツール一覧
- コード共有サイト: Freshmeat、Krugle、SourceForge、GitHub。コード検索エンジンも参照してください。
- コンパイルおよびリンクツール: GNU ツールチェーン、gcc、Microsoft Visual Studio、CodeWarrior、Xcode、ICC
- デバッガー:デバッガー#デバッガーのリスト。デバッグも参照してください。
- 逆アセンブラ: 一般的にはリバースエンジニアリングツール。
- ドキュメント生成ツール:ドキュメント生成ツールの比較、help2man、Plain Old Documentation、asciidoc
- 形式手法:仕様、開発、検証のための数学的手法
- GUIインターフェースジェネレーター
- ライブラリインターフェースジェネレーター: SWIG
- 統合ツール
- メモリ デバッガーは、手動でメモリを管理できるため、メモリ リークやその他の問題が発生する可能性のあるプログラミング言語 ( CやC++など)で頻繁に使用されます。メモリ デバッガーは、メモリ使用の効率を最適化するのにも役立ちます。例: dmalloc、Electric Fence、Insure++、Valgrind
- パーサージェネレーター:パーシング#パーサー開発ソフトウェア
- パフォーマンス分析またはプロファイリング:パフォーマンス分析ツールのリスト
- リビジョン管理:リビジョン管理ソフトウェアの一覧、リビジョン管理ソフトウェアの比較
- スクリプト言語: PHP、AWK、Perl、Python、REXX、Ruby、Shell、Tcl
- 検索: grep、find
- ソースコードのクローン/重複の検出:重複コード#ツール
- ソースコードエディタ
- ソースコードのフォーマット:インデント、プリティプリンタ、ビューティファイア、ミニファイア
- ソースコード生成ツール:自動プログラミング#実装
- 静的コード解析: lint、静的コード解析ツールのリスト
- ユニットテスト:ユニットテストフレームワークのリスト
IDE
統合開発環境は、多くのツールの機能を 1 つのパッケージに統合します。たとえば、特定のプロジェクト内のファイルのみのコンテンツを検索するなど、特定のタスクの実行が容易になります。たとえば、IDE はエンタープライズ レベルのアプリケーションの開発に使用できます。
特定のプログラミング言語向けの IDE のさまざまな側面については、この統合開発環境の比較で確認できます。
参照
- コンピュータ支援ソフトウェアエンジニアリングツール
- コンピュータサイエンス
- 構成システム
- スクリプト言語
- ソフトウェア開発キット
- ソフトウェアエンジニアリングとソフトウェアエンジニアリングのトピックのリスト
- ソフトウェアシステム
- ユーザーイノベーションのためのツールキット
- 開発者エクスペリエンス
参考文献
- ペタスケールコンピューティング向けソフトウェア開発ツールワークショップ 2007
- カーニハン、ブライアン W. ;プラウガー、PJ (1976)、ソフトウェア ツール、Addison-Wesley、pp. 352、ISBN 0-201-03669-X
