販売・生産・搬送計画率案支援システム・プログラム設計

はじめに

ER図を使ったデータモデリングとDFDを使ったアプリケーションルールの定義が終了したら,プログラム設計に入ります.DFDはプロセス「販売計画立案」までしか記述していないので,このプロセスを例として使用します.

抽象データ型の定義

ER図のエンティティおよびDFDのデータストアを元に,抽象データ型・抽象データ群を定義します.なお,抽象データ型 “販売可能商品履歴”と抽象データ群の“販売可能商品履歴群”はそれぞれ“販売可能商品”と“販売可能商品群”の中でのみ使用すればよいでしょう.

表1.抽象データ型
名称 局所変数 操作プログラム
得意先 得意先名称 得意先名称 get得意先名称(得意先)
void set得意先名称(得意先,得意先名称)
販売担当者id 販売担当者id get販売担当者id(得意先)
void set販売担当者id(得意先,販売担当者id)
販売計画 年月日 年月日 get年月日(販売計画)
void set年月日(販売計画,年月日)
得意先名称 得意先名称 get得意先名称(販売計画)
void set得意先名称(販売計画,得意先名称)
商品名称 商品名称 get商品名称(販売計画)
void set商品名称(販売計画,商品名称)
販売数量 販売数量 get販売数量(販売計画)
void set販売数量(販売計画,販売数量)
販売実績 年月日 年月日 get年月日(販売実績)
void set年月日(販売実績,年月日)
得意先名称 得意先名称 get得意先名称(販売実績)
void set得意先名称(販売実績,得意先名称)
商品名称 商品名称 get商品名称(販売実績)
void set商品名称(販売実績,商品名称)
販売数量 販売数量 get販売数量(販売実績)
void set販売数量(販売実績,販売数量)
販売可能商品 得意先名称 得意先名称 get得意先名称(販売可能商品)
void set得意先名称(販売可能商品,得意先名称)
商品名称 商品名称 get商品名称(販売可能商品)
void set商品名称(販売可能商品,商品名称)
販売可能商品履歴 得意先名称 得意先名称 get得意先名称(販売可能商品履歴)
void set得意先名称(販売可能商品履歴,得意先名称)
商品先名称 商品名称 get商品名称(販売可能商品履歴)
void set商品名称(販売可能商品履歴,得意先名称)
販売開始年月日 販売開始年月日 get販売開始年月日(販売可能商品履歴)
void set販売開始年月日(販売可能商品履歴,販売開始年月日)
販売終了年月日 販売終了年月日 get販売終了年月日(販売可能商品履歴)
void set販売終了年月日(販売可能商品履歴,販売終了年月日)
販売終了理由 販売終了理由 get販売終了理由(販売可能商品履歴)
void set販売終了理由(販売可能商品履歴,販売終了理由)
表2.抽象データ群
名称 操作プログラム
得意先群 得意先 detect(得意先群,得意先)
得意先群 select(得意先群,得意先)
得意先 detect(得意先群,担当者)
得意先群 select(得意先群,担当者)
得意先 getFirst(得意先群)
得意先 getNext(得意先群,得意先)
真偽値 isLast(得意先群,得意先)
得意先 add(得意先群,得意先群)
得意先 remove(得意先群,得意先群)
販売計画群 販売計画群 select(販売計画群,自年月日,至年月日)
販売計画 detect(販売計画群,得意先)
販売計画群 select(販売計画群,得意先)
販売計画 detect(販売計画群,商品)
販売計画群 select(販売計画群,商品)
販売計画 getFirst(販売計画群)
販売計画 getNext(販売計画群,販売計画群)
真偽値 isLast(販売計画群,販売計画群)
販売計画 add(販売計画群,販売計画)
販売計画 remove(販売計画群,販売計画)
販売実績群 販売実績群 select(販売実績群,自年月日,至年月日)
販売実績 detect(販売実績群,得意先)
販売実績群 select(販売実績群,得意先)
販売実績 detect(販売実績群,商品)
販売実績群 select(販売実績群,商品)
販売実績 getFirst(販売実績群)
販売実績 getNext(販売実績群,販売実績)
真偽値 isLast(販売実績群,販売実績)
販売実績 add(販売実績群,販売実績群)
販売実績 remove(販売実績群,販売実績群)
販売可能商品群 販売可能商品 detect(販売可能商品群,得意先)
販売可能商品群 select(販売可能商品群,得意先)
販売可能商品 detect(販売可能商品群,商品)
販売可能商品群 select(販売可能商品群,商品)
販売可能商品 getFirst(販売可能商品群)
販売可能商品 getNext(販売可能商品群,販売可能商品)
真偽値 isLast(販売可能商品群,販売可能商品)
販売可能商品 add(販売可能商品群,販売可能商品群)
販売可能商品 remove(販売可能商品群,販売可能商品群)
販売可能商品履歴履歴群 販売可能商品履歴 detect(販売可能商品履歴群,得意先)
販売可能商品履歴群 select(販売可能商品履歴群,得意先)
販売可能商品履歴 detect(販売可能商品履歴群,商品)
販売可能商品履歴群 select(販売可能商品履歴群,商品)
販売可能商品履歴群 select(販売可能商品履歴群,販売開始年月日,販売終了年月日)
販売可能商品履歴 getFirst(販売可能商品履歴群)
販売可能商品履歴 getNext(販売可能商品履歴群,販売可能商品履歴)
真偽値 isLast(販売可能商品履歴群,販売可能商品履歴)
販売可能商品履歴 add(販売可能商品履歴群,販売可能商品履歴群)
販売可能商品履歴 remove(販売可能商品履歴群,販売可能商品履歴群)

プロセスの実装

定義した抽象データ型と抽象データ型群を使ってDFDのプロセスを実装します.例えば,得意先・担当者確認の場合は以下のようになります.

    得意先群 得意先・担当者確認(社員id){
      得意先 担当得意先;
      得意先群 全得意先群;

      set販売担当者id(担当得意先,社員id);
      return select(全得意先群,担当得意先);
    }
  

販売可能商品抽出の場合は以下のようになります.

    販売可能商品群 販売可能商品抽出(得意先){
      販売可能商品群 全商品群;

      return select(全商品群,得意先);
    }
  

得意先・担当者確認,販売可能商品の抽出,計画立案データ提供までをひとつのプログラムとして実装すると仮定すると,こうなります.

    main(社員id){
      得意先群 担当得意先群;
      販売可能商品群 現販売可能商品;
      販売計画群 過去3年分の販売計画;
      販売計画群 全販売計画;
      販売実績群 過去3年分の販売実績;
      販売実績群 全販売実績;

      担当得意先群=得意先・担当者確認(社員id);
      for(得意先 担当得意先=getFirst(担当得意先群);isLast(担当得意先群,担当得意先);担当得意先=getNext(担当得意先群,担当得意先)){
        add(現販売可能商品,販売可能商品抽出(担当得意先));
        add(過去3年分の販売計画,select(全販売計画,得意先));
        add(過去3年分の販売実績,select(全販売実績,得意先));
      }
      計画立案データ提供(担当得意先群,現販売可能商品,過去3年分の販売計画,過去3年分の販売実績);
    }
  

実際のプログラミングでは処理速度や記憶容量の兼合いがあります.SQLの直接記述等,臨機応変に実装してください.