半世紀ほど前まではプログラムをつくるためにアルゴリズムを一つひとつ検討することが多かったのですが、今では、プログラミングに必要なソフトウェア部品やツール(以降、これら2つを合わせてツールと呼ぶ)がたくさんありますので、それらの中からどれを選ぶかが重要になっています。欲しい機能が満たされているか調査するのは当然ですが、次の点は十分調査しておくべきでしょう。
・ ツールの制約条件
・ ツールの寿命
・ 障害対応
これらについて少し解説します。
1) ツールの制約条件
ツールが普及していなかった頃は、単一のプログラミング言語を使って、機能設計時にソフトウェアの動作条件を予め定め、これらを満足するためには何をどうすべきか自由に決定することができました。フリーハンドで設計していましたから可能だったと言えます。しかし、ツールの使用を前提としたプログラミングでは、それらの明示的・暗黙的制約条件が利いてきますので、事前に十分調査しておかなければ、後になって、取り返しがつかないことになりかねません。
機能設計工程でプログラムの動作条件を明確にし、ツールの制約条件とすり合わせておく必要があります。
2) ツールの寿命
プログラムのリリース後も機能の変更や追加を余儀なくされます。リリース後何年保守が必要となるか予め知っておかなければなりません。一方、プログラムで使用するツールにも寿命があります。プログラムを保守している間は使用するツールは生きていなければなりません。寿命の短いツールを使って作り直しになることがないように注意すべきです。
3) 障害対応
ツールの信頼性も大切です。ツールの障害が即プログラムの障害となるからです。一般にツール提供者はソースコードを公開していません。更に、障害対応もしてくれないケースがあります。このような危険性を念頭において、ツールの限界まで使わないようにするとか、オープンソースのソフトウェアを活用するなど、危険を回避する必要があります。