こんにちはパグたんです。よろしくお願いいたします。
解決できる内容(対象者)
・設計の基本である突合パターンが分からない人
・設計の始め方を学びたい人
・詳細設計書の作り方が分からない人
・新人/若手SEの人
パグたんおすすめの解決方法
詳細設計作成の時によくあるパターンが、
2つのファイル(テーブル等)を1つのファイルに集約する形式です。
大きく以下の4stepで作成することができます。
1.編集条件を決める。
どういった目的で、何の処理・判定を行い、結果どういうファイル(テーブルなど)に
にしたいかを明確にする。
2.過去の参考資料を探す。
記載方法で参考になる設計書がないかを確認する。
3.キー項目を決める
4.キー項目をソートする。
※主に昇順にソートすることが多い。
※ソートをすることで突合の準備が完了する。
5.突合のアルゴリズム(ロジック)を考える。
~突合のロジック~
・対象のループ処理2ファイルに対象して
ファイルの全レコードを読むまでループ処理を実行するようにする。
・key項目でマッチングする。
マッチする場合
編集条件に従い、編集する。
その語ファイル1、ファイル2ともに1レコードずつ次のレコードを読み込む。
マッチしない場合(ファイル1がファイル2より小さい)
小さいほうのレコード(ファイル1)を読み込む。
マッチしない場合(ファイル2がファイル1より小さい)
小さいほうのレコード(ファイル2)を読み込む。
6.ファイル1/ファイル2ともにすべてのレコードまで突合が行われるまで
繰り返す。
※突合と編集だけでなく、独自の機能を搭載しないとならない場合があります。
その時は、どこで独自機能を搭載すべきかを考えて設計を行ってください。
●例題
例でみてみることとします。
AファイルとBファイルがあり、
keyと記載さ入れている箇所が突合する突合キーだとします。
FileName | A | FileName | B | |||||
↓key | ↓key | |||||||
No. | name | customerNo | Country | No. | name | customerNo | Country | |
1 | Ema | 1111 | America | 1 | Alex | 1234 | America | |
2 | Jun | 2222 | India | 2 | Kyoko | 3333 | Japan | |
3 | Kyoko | 3333 | Japan | 3 | Mix | 5555 | Canada |
①ファイルAのNo.1「1111」とファイルBのNo.1「1234」を比較
ここでは、ファイルA「1111」<ファイルB「1234」のため、
ファイルAを1レコード読み込みます。(ファイルAはNo.2になります)
②ファイルAのNo.2「2222」とファイルBのNo.1「1234」を比較
ここでは、ファイルA「2222」>ファイルB「1234」のため、
ファイルBを1レコード読み込みます。(ファイルBはNo.2になります)
③ファイルAのNo.2「2222」とファイルBのNo.2「3333」を比較
ここでは、ファイルA「2222」<ファイルB「3333」のため、
ファイルAを1レコード読み込みます。(ファイルAはNo.3になります)
④ファイルAのNo.3「3333」とファイルBのNo.2「3333」を比較
ここでは、ファイルA「3333」=ファイルB「3333」のため、
編集条件に従い編集し、ファイルAとファイルBを読み込みます。
※ファイルAは終了します。ここでよく使用される手法が「HighValue(どんな数値よりも大きい)」を設定する手法です。
⑤ファイルAの「HighValue」とファイルBのNo.3「5555」を比較
ここでは、ファイルA「HighValue」>ファイルB「5555」のため、
ファイルBを1レコード読み込みます。
⑥ファイルAの「HighValue」とファイルBのNo.3「HighValue」を比較
ここでは、ファイルA「HighValue」とファイルB「HighValue」のため、
処理を終了させます。
実際編集が行われたのは、ファイルAのNo.3「3333」と
ファイルBのNo.2「3333」が突合したときのみです。
この方法を用いることにより、突合の基本の考え方が理解できます。
パグたんの経験談
実際のホストやオープンなどでも業務処理を行うシステムではこのような処理の組み合わせであることがほとんどです。
パグたんが携わった公共系のシステムや、同期が担当しているCOBOLやJavaなどでコーディングをしている顧客の業務システムはこのようになっていることが多いです。
初めは設計を理解することが大変ですが、
状況ごとに値の変化を追っていくトレースという作業をすることで
設計のアルゴリズムを深く理解することができます。
また、間違いにも早期に気づくことができます。
慣れるまでは少しめんどくさくハードルが高いですが、
根気よくトレースをしてアルゴリズムを構築していきましょう。
まとめ
今回ご紹介した突合の設計の基本の形はあくまでも基本の型です。
そんな基本の形を理解し、肉付けし実際のプログラムとして動作することがほとんどです。
その処理独自に追加しないとならない機能が漏れていないかを考えながらも、
皆様が、この突合の基本の型を活用して、品質/生産性が高い作業ができるような一助となればうれしいです。
ともに学んでいきましょう。よろしくお願いいたします。
コメント