情報システムを開発するのに、プログラミング言語でのソースプログラムを1行ずつ作成するのでは、長時間かかる面倒な作業ですし、プログラマの力量や個性により、品質が悪いソフトウェアになることがあります。そのため、仕様書からプログラムを生成したり、パソコンのGUI画面で指示するとプログラムを生成する開発環境が発展してきました。
CASE、リバースエンジニアリング、総合開発環境(IDE)
CASE(Computer Aided Software Engineering)とは、コンピュータの支援により、ソフトウェア開発・保守を容易にすることですが、一般には、それを行うソフトウェアツール(CASEツール)のことを指します。
歴史的にはCASEは、主にウォータフォール型の開発ライフサイクルに従い、次のように工程別に発展してきましたが、現在では一貫した統合CASEとして提供されるようになりました。
CASEは、ダウンサイジングにより、大きく変化してきました。現在では、パソコンのGUI画面でツールと対話しながらシステムを開発するのが通常になっています。
近年では、CASEというよりもIDE (Integrated Development Environment:統合開発環境) というのが一般的になってきました。
エディタ、コンパイラ、リンカ、デバッガ、バージョン管理などのソフトウェアの開発に必要なツールがまとめられ、一つの環境でコーディング、デバッグ、ビルドまでの一連の作業を行えるようにしたものです。
この環境では、もはやウォータフォール型の外部設計、内部設計、プログラミングなどの各プロセスが不明確になります。ツールで要件定義での入出力画面や加工ロジックをGUI画面で設計すると、その段階でプロトタイプのプログラムが生成されます(注)。入力データの制約条件やロジックの詳細を与えるのに従い、プログラムが改訂されます。
このように、IDEを活用すると必然的にプロトタイピング開発技法などのアジャイル開発になるのです。
初期には比較的単純なWebシステムに適用されていましたが、UMLなどとの連携が発展して、次第に巨大かつ複雑なシステムに適用されるようになってきました。
ノーコード開発とは、コーディングを一切しない開発手法です。
開発ツール側で用意したGUIで表示した機能だけを組み合わせて開発し、基本的にはコーディングは不要です。
限定された機能の範囲で、開発アプリケーションの要件を満たせる場合、プログラミング言語の素人でも非常に短時間に開発できます。
ローコード開発とは、基本部分をノーコード開発で行い、処理の一部をコーディングして開発します。
ノーコード開発に開発柔軟性が得られます。
これらの方法では、アプリケーションを構成するサブモジュールをアイコンで表示し、アイコンを矢線で結ぶことにより、サブモジュール実行の流れとデータの受渡しを表現します。
それにより、アプリケーションの構造が明確になり、データの連携を容易に実現できます。
例えばJava言語によるソフトウェア開発を行うための「JDK」(Java Development Kit)のように、あるプログラミング言語やアプリケーションに関して、それを用いてフトウェアを開発するために必要な仕様書、プログラム部品、サンプルコード、技術文書などをひとまとめにしたパッケージのことです。
一般には、プログラミング言語やアプリケーションの開発元や販売元が、その普及を図ることを目的に開発し、Webサイトで公開して、ダウンロードできるようにして、有料・無料で提供しています。
IDEと似たサービスですが、比較的小規模なものを対象にしているようです。
IDEやSDKが開発環境を提供しているのに対して、APIは親言語からアプリケーションを使うためのインタフェースの仕様を公開したものです。通常は仕様だけでなく具体的な記述法を提供しています。
例えば、Google Map APIでは、利用者がJavascriptからGoogle Mapを使うときに、緯度経度を与えて地図を表示したりマーカーを設定したりするとき、簡潔なコードで記述できるようになっています。
また、このようなコードや、数値解析やグラフ表示など汎用的に利用できる機能を集大成して Javascript の関数として公開していることもあります。それをライブラリとか JS といっています。