スタートページWeb教材一覧システムの調達

システム開発環境

学習のポイント

情報システムを開発するのに、プログラミング言語でのソースプログラムを1行ずつ作成するのでは、長時間かかる面倒な作業ですし、プログラマの力量や個性により、品質が悪いソフトウェアになることがあります。そのため、仕様書からプログラムを生成したり、パソコンのGUI画面で指示するとプログラムを生成する開発環境が発展してきました。

キーワード

CASE、リバースエンジニアリング、総合開発環境(IDE)


CASE

CASE(Computer Aided Software Engineering)とは、コンピュータの支援により、ソフトウェア開発・保守を容易にすることですが、一般には、それを行うソフトウェアツール(CASEツール)のことを指します。
 歴史的にはCASEは、主にウォータフォール型の開発ライフサイクルに従い、次のように工程別に発展してきましたが、現在では一貫した統合CASEとして提供されるようになりました。

上流CASE
要件分析での各要求の相互関係や矛盾のチェック、要件からDFDやE-R図など外部設計に用いられる各種図表の作成などを支援します。
下流CASE
主としてソースプログラムやテストデータを生成する機能です。
初期の簡単なものは流れ図からソースプログラムを生成するだけでしたが、現在ではUMLでのクラス図やアクティビティ図などの作成を支援するとともに、それらからソースプログラムを生成できるようになってきました。
極端にいえば、プログラミング言語のソースプログラムは単なる中間言語であり、実務上管理すべきソースはUMLの図表あるいはそれを作り出すパラメタデータであるという状況になってきたのです。
CASEツールが仕様書やソースプログラムを管理しているのですから、仕様書に基づくブラックボックステスト、プログラムの内部に着目したホワイトボックステストのテストデータを自動作成して、テスト結果を示すことができます。
保守CASE(リバースエンジニアリング)
開発の場合は、例えば、流れ図やクラス図などの図表→ソースモジュール→ロードモジュールのように進みます(これをフォワードエンジニアリングといいます)が、保守改訂のときには、ロードモジュールからソースプログラムを生成したり、ソースプログラムから各種図表を生成したりすることが必要になります。これをリバースエンジニアリング(Reverse Engineering)といいます。
リバースエンジニアリングには、既存のソフトウェアを解析し,その仕様や構造を明らかにしたり、データベースシステムの定義情報から,E-R図などで表現した設計書を生成するようなこともあります。
保守CASEは、リバースエンジニアリングの機能、既存の図表やプログラムの管理の機能をもっています。

IDE(統合開発環境)

CASEは、ダウンサイジングにより、大きく変化してきました。現在では、パソコンのGUI画面でツールと対話しながらシステムを開発するのが通常になっています。
 近年では、CASEというよりもIDE (Integrated Development Environment:統合開発環境) というのが一般的になってきました。
 エディタ、コンパイラ、リンカ、デバッガ、バージョン管理などのソフトウェアの開発に必要なツールがまとめられ、一つの環境でコーディング、デバッグ、ビルドまでの一連の作業を行えるようにしたものです。
 この環境では、もはやウォータフォール型の外部設計、内部設計、プログラミングなどの各プロセスが不明確になります。ツールで要件定義での入出力画面や加工ロジックをGUI画面で設計すると、その段階でプロトタイプのプログラムが生成されます(注)。入力データの制約条件やロジックの詳細を与えるのに従い、プログラムが改訂されます。
 このように、IDEを活用すると必然的にプロトタイピング開発技法などのアジャイル開発になるのです。
 初期には比較的単純なWebシステムに適用されていましたが、UMLなどとの連携が発展して、次第に巨大かつ複雑なシステムに適用されるようになってきました。

Eclipse
代表的な統合開発環境です。IBM製品でしたが、オープンソースプロジェクトに寄贈され、現在ではオープンソースで提供されています。Javaを対象とする開発環境でしたが、C言語、C++、PHPなどにも対応するようになりました。
Visual Studio
Microsoftが提供しているWindows向けアプリケーション開発用の統合開発環境です。.NET Frameworkをベースとして、Visual Basic、C++、C#など言語による開発に適しています。

(注)ノーコード開発/ローコード開発

ノーコード開発とは、コーディングを一切しない開発手法です。
 開発ツール側で用意したGUIで表示した機能だけを組み合わせて開発し、基本的にはコーディングは不要です。
 限定された機能の範囲で、開発アプリケーションの要件を満たせる場合、プログラミング言語の素人でも非常に短時間に開発できます。

ローコード開発とは、基本部分をノーコード開発で行い、処理の一部をコーディングして開発します。
 ノーコード開発に開発柔軟性が得られます。

これらの方法では、アプリケーションを構成するサブモジュールをアイコンで表示し、アイコンを矢線で結ぶことにより、サブモジュール実行の流れとデータの受渡しを表現します。
 それにより、アプリケーションの構造が明確になり、データの連携を容易に実現できます。

SDK(Software Development Kit)

例えばJava言語によるソフトウェア開発を行うための「JDK」(Java Development Kit)のように、あるプログラミング言語やアプリケーションに関して、それを用いてフトウェアを開発するために必要な仕様書、プログラム部品、サンプルコード、技術文書などをひとまとめにしたパッケージのことです。

一般には、プログラミング言語やアプリケーションの開発元や販売元が、その普及を図ることを目的に開発し、Webサイトで公開して、ダウンロードできるようにして、有料・無料で提供しています。
 IDEと似たサービスですが、比較的小規模なものを対象にしているようです。

API(Application Programing Interface)

IDEやSDKが開発環境を提供しているのに対して、APIは親言語からアプリケーションを使うためのインタフェースの仕様を公開したものです。通常は仕様だけでなく具体的な記述法を提供しています。
 例えば、Google Map APIでは、利用者がJavascriptからGoogle Mapを使うときに、緯度経度を与えて地図を表示したりマーカーを設定したりするとき、簡潔なコードで記述できるようになっています。
 また、このようなコードや、数値解析やグラフ表示など汎用的に利用できる機能を集大成して Javascript の関数として公開していることもあります。それをライブラリとか JS といっています。