開発ツールの役割と使い分け
要点と定義
開発ツールは、設計、プログラミング、テストなどの作業を支援し、開発を効率化するソフトウェアです。開発工程全体をまとめて支援する統合開発環境(IDE)には、エディター、コンパイラー、デバッガーなどが組み込まれたり、連携したりします。Eclipseはその例です。IDEは個別のコンパイラーやOSとは役割が異なります。
コンパイラーはソースプログラムを解析し、目的プログラムを生成します。その際の最適化は、プログラムの意味を保ちながら、生成するコードの実行効率を高める処理です。例えば、繰り返し使う計算結果を再利用できる形にすることで、実行時間を短縮できる場合があります。最適化が常に実行時間を短くするとは限らず、コード生成にかかる時間を短くすることや、デバッグを容易にすることが主目的ではありません。
リンカは複数の目的モジュールやライブラリを結合し、モジュール間の相互参照を解決して、実行可能なロードモジュールを生成します。例えば、あるモジュールが別モジュールの関数を呼び出すとき、その参照先を結び付けます。ローダは、生成済みのロードモジュールを実行に先立って主記憶に読み込みます。結合・参照解決がリンカ、主記憶への読み込みがローダの役割です。
テストツールには、プログラムを実行せずにソースコードなどを調べる静的解析ツールと、実行して動きを調べる動的解析・テスト支援ツールがあります。静的解析は、文法上の問題や、条件によって発生し得る論理上の問題をソースコードから検出します。動的な支援には、実行経路や網羅率の計測、実行時の時間・呼出し回数の測定、テストデータやドライバー・スタブの生成などがあります。何を観測するかだけでなく、プログラムを実行するかどうかで分類します。
ローコード開発ツールは、用意された部品やテンプレートをGUIで組み合わせて開発し、必要に応じて一部の処理をソースコードで記述できる開発基盤です。ソースコードをまったく書かずに作成するノーコードとは、コード記述を許すかどうかが異なります。
適用条件と例
例えば、二つの目的モジュールA・Bがあり、AがBの関数を参照しているとします。リンカが参照先を解決して両者を結合し、ロードモジュールを作ります。その後、ローダが主記憶へ読み込みます。ロード後の実行環境や形式はシステムに依存するため、ここでは役割の順序を押さえます。
ソースコードを読むだけで未初期化変数の使用候補を探すなら静的解析が適します。一方、「ある入力で分岐を何割通ったか」を知るには実行が必要なので、動的なカバレッジ測定を使います。実行時間や関数の呼出し回数も、実行時に計測します。静的解析は実行時の全ての振る舞いを確定するものではなく、入力や実行条件に依存する不具合は実行テストで確かめる必要があります。
この節の続き
- 誤りやすい点
ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。
アプリでこの節を読む