ジャクソンシステム開発(JSD)は、1980年代にマイケル・A・ジャクソンとジョン・キャメロンによって開発された、直線的なソフトウェア開発手法である。
JSDは、1982年にマイケル・A・ジャクソンによって「A System Development Method」という論文で初めて発表されました。[ 1 ]また、1983年にはSystem Development誌にも掲載されました。[ 2 ] ジャクソンシステム開発(JSD)は、ソフトウェアライフサイクルを直接カバーするか、より専門的な技術を組み込むためのフレームワークを提供することによってカバーするシステム開発手法です。ジャクソンシステム開発は、要件の一般的な記述しかないプロジェクトの段階から始めることができます。しかし、ジャクソンシステム開発を使用した多くのプロジェクトは、実際にはライフサイクルの少し後の段階で開始し、最初のステップはユーザーと直接やり取りするのではなく、既存のドキュメントから主に実行しました。JSDの後半のステップでは、最終システムのコードが生成されます。ジャクソンの最初の手法であるジャクソン構造化プログラミング(JSP)は、最終コードを生成するために使用されます。JSDの前半のステップの出力は、一連のプログラム設計問題であり、その設計がJSPの対象となります。保守も、前半のステップのうち適切なものを再作業することによって対処されます。
JSDは進化を続け、いくつかの新機能がメソッドに導入されました。これらは、1989年にJohn Cameronによってまとめられた論文集「JSPとJSD」 [ 3 ] 、および1992年版(バージョン2)のLBMS JSDマニュアル[ 4 ]に記載されています。
JSDメソッドの開発は、1990年代初頭にジャクソンの考え方が『ソフトウェア要件と仕様』(1995年)と『問題フレーム:ソフトウェア開発問題の分析と構造化』 (2000年)の出版とともに問題フレームアプローチへと発展したことで終焉を迎えた。
JSDの基本的な運用原則は以下の3つです。
1982年にジャクソンによって最初に発表されたとき、[ 1 ]この方法は6つのステップから構成されていました。
その後、いくつかの手順が統合され、わずか3つの手順で済む方法が作られました。[ 5 ]
モデリング段階では、設計者はエンティティ構造図の集合を作成し、システム内のエンティティ、それらが実行するアクション、エンティティのライフサイクルにおけるアクションの時間順序、およびアクションとエンティティの属性を特定します。エンティティ構造図は、Jackson構造化プログラミング構造図の図式表記法を使用します。これらの図の目的は、システムと組織の側面を完全に記述することです。開発者は、何が重要で何が重要でないかを決定する必要があります。開発者と新しいシステムのユーザー間の良好なコミュニケーションは非常に重要です。
この段階は、前述のエンティティ/アクションのステップとエンティティ構造のステップを組み合わせたものです。
ネットワーク段階では、システム全体のモデルが開発され、システム仕様図(SSD)(ネットワーク図とも呼ばれる)として表現されます。ネットワーク図は、プロセス(四角形)と、状態ベクトル接続(ひし形)またはデータストリーム接続(円)を介してプロセス同士がどのように通信するかを示します。この段階で、システムの機能が定義されます。各エンティティは、ネットワーク図においてプロセスまたはプログラムになります。外部プログラムは、後からネットワーク図に追加されます。これらのプログラムの目的は、入力を処理し、出力を計算し、エンティティプロセスを最新の状態に保つことです。システム全体はこれらのネットワーク図で記述され、データとプロセスおよびプログラム間の接続に関する記述によって完成されます。
初期モデルステップでは、現実世界のシミュレーションを指定します。機能ステップでは、このシミュレーションに、システムの出力を生成するために必要な実行可能な操作とプロセスを追加します。システムタイミングステップでは、プロセス間の同期を行い、制約を導入します。この段階は、前述の「初期モデル」ステップ、「機能」ステップ、および「システムタイミング」ステップを組み合わせたものです。
実装段階では、ソリューションの抽象的なネットワークモデルが物理システムに変換され、システム実装図(SID)として表現されます。SIDでは、システムがプロセスを実装するモジュールを呼び出すスケジューラプロセスとして示されます。データストリームは、逆プロセスへの呼び出しとして表現されます。データベースシンボルはエンティティ状態ベクトルの集合を表し、ファイルバッファ(プロセスが異なる時間間隔で実行されるようにスケジュールされる場合に実装する必要がある)には特別なシンボルがあります。
実装段階における中心的な課題は、システムの最適化です。仕様に含まれるすべてのプロセスにそれぞれ仮想プロセッサを割り当てることは不可能であるため、プロセスの数を削減する必要があります。変換処理によってプロセスを結合することで、プロセッサ数に合わせてプロセスの数を制限します。
この図は、アクションエンティティがシステムとどのように連携するかを示しています。エンティティ構造図(ESD)表記法:
通常、RecurringConstruct の下には 1 つのアクションしか存在しません。
ネットワーク図は、プロセス間の相互作用を示します。システム仕様図(SSD)と呼ばれることもあります。ネットワーク図(ND)の表記法:
状態ベクトル接続とデータストリーム接続の違いは、どちらのプロセスがアクティブであるかという点にあります。データストリーム接続では、情報を持つプロセスAがアクティブプロセスであり、A(送信者)が選択したタイミングでデータストリームリーダーBにメッセージを送信します。一方、状態ベクトル検査では、情報を持つプロセスAはパッシブであり、リーダープロセスBがAの状態ベクトルを検査するのを待つだけです。検査を行うプロセスBがアクティブプロセスであり、Aから情報を読み取るタイミングを決定します。大まかに言えば、データストリーム接続はメッセージパッシングの抽象化であり、状態ベクトル検査はポーリング(およびデータベース検索)の抽象化と言えます。