システム開発技術とは、企業や組織の「業務課題を解決し、効率化する仕組み(システム)」をIT技術を用いて、企画・設計・プログラミング・テスト・運用するまでの一連の技術とプロセスの総称で、具体的には、要件定義、設計、コーディング、テスト、運用・保守などの工程があり、ウォーターフォールやアジャイルといった様々な開発手法が存在します。

画像参照:https://www.co-well.jp/blog/system_dev_flow
モジュール分割
モジュール分割とは、プログラム全体を特定の機能や役割を持つ独立した部品(モジュール)に分割する設計手法で、大規模開発の効率化、可読性向上、保守性・再利用性の向上、複数人での並行開発を可能にするために行われます。
目的とメリット
- 並行開発・分担: チームで担当箇所を分け、同時並行で開発できる。
- 保守性の向上: 問題発生時に修正箇所を特定しやすく、影響範囲を限定できる。
- コードの再利用: 共通機能をモジュール化し、他の場所やシステムで使い回せる。
- 可読性と理解しやすさ: プログラムの全体像が把握しやすくなり、コードが読みやすくなる。
- テストの容易さ: モジュールごとに独立してテスト(単体テスト)を行える。
STS分割
STS分割(Source-Transform-Sink分割)とは、プログラムをデータの流れに着目し、「Source(源泉:入力)」、「Transform(変換:処理)」、「Sink(吸収:出力)」の3つの主要なモジュールに分割する構造化設計手法です。データの入力から出力までの一連の流れを、「最大抽象点」というデータが入力データとも出力データともみなされなくなる地点を見つけて分割することで、モジュールの独立性を高め、保守性や再利用性を向上させます。
ポイント
- 着目点: データの流れ(データフロー)。
- 3つのモジュール:
- Source (源泉): データの入力、読み込み、取得など。
- Transform (変換): データ計算、加工、変換処理など。
- Sink (吸収): データ出力、表示、書き出しなど。
- 最大抽象点:
- 入力の最大抽象点: 入力データが処理されて、もはや入力データとして認識できなくなる地点。
- 出力の最大抽象点: 処理されたデータが出力データとして認識されなくなる地点。
- 目的: 入力・変換・出力の役割を明確に分けることで、モジュールの機能的な独立性を高め、全体の設計をシンプルにし、保守性を向上させる。
どのような時に使うか
- バッチ処理: 未加工のデータを集めて、業務に役立つ形に加工・出力するような、データの流れが明確なシステム設計に適しています。
TR分割
TR分割(トランザクション分割)とは、ソフトウェア開発において、データの流れや処理の単位(トランザクション)に着目してプログラムを機能ごとに分割するモジュール設計手法の一つで、入力データの種類によって処理が分岐する場合に、それぞれの処理を独立したモジュールとして作成することで、コードの再利用性や保守性を高め、独立性の高い設計を実現するための重要な技法です。
主な特徴
- 着目点: データ処理の「流れ」や「種類(トランザクション)」に着目します。
- 目的: トランザクション(一連の処理)ごとにモジュールを分割し、各モジュールが特定のトランザクションのみを処理するように設計します。
- 効果:
- 高独立性: 各モジュールは担当するトランザクションのみを処理すればよいため、他の処理に影響されにくく、高い独立性を持ちます。
- 保守性向上: 変更が必要な際も、特定のトランザクション部分のモジュールだけを修正すればよいため、影響範囲が限定されます。
- 再利用性: 共通する処理があれば、共通機能分割などと組み合わせて、他のモジュールから呼び出すことも可能です。
- 適用例: オンラインリアルタイム処理で、入力データ(トランザクション)の種類に応じて処理が異なる場合(例:給与計算の基本給・残業手当などの更新処理)に特に有効です。
モジュール強度
モジュール強度とは、ソフトウェアの部品(モジュール)内部に含まれる機能同士の関連性の強さを示す指標で、「凝集度」とも呼ばれ、強度が高いほど「1モジュール1機能」に近く、独立性が高く、保守性・再利用性が良い設計とされます。具体的には、単一の機能に特化した「機能的強度(高い)」から、関連のない機能の寄せ集めである「暗合的強度(低い)」まで7段階あり、目標は機能的強度です。
概要
- 目的: モジュール内の機能がどれだけ「まとまっているか」を示す。
- 強度が高い(高凝集):
- 1つの機能に特化している(例: 1モジュール1機能)。
- 独立性が高く、他のモジュールへの影響が少ない。
- 保守性・再利用性が向上する。
- 強度が低い(低凝集):
- 関連性の低い複数の機能が混在している。
- 独立性が低く、変更時の影響範囲が広がりやすい。
強度の種類(高い順)
- 機能的強度: 1つのモジュールが1つの機能のみを提供。
- 情報的強度: 同じデータを扱う機能群。
- 連絡的強度: モジュール内でデータを受け渡す機能群。
- 手順的強度: 決まった順序で実行される機能群。
- 時間的強度: ある時点でまとめて実行される機能群(初期化処理など)。
- 論理的強度: 論理的に関連するが、引数で使い分けられる機能群。
- 暗合的強度: 全く関連性のない機能群(最も低い)。
「モジュール結合度」との違い
- モジュール強度: モジュール『内』の機能の関連性。
- モジュール結合度: モジュール『間』の関連性の強さ。
- 設計目標は、モジュール強度を高め(高凝集)、モジュール結合度を弱くする(低結合)こと。
モジュール結合度
モジュール結合度とは、ソフトウェアを構成する部品(モジュール)同士の結びつきの強さを示す指標で、結合度が低い(疎結合)ほど独立性が高く、保守性・再利用性が向上する良い設計とされています。結合度が高い(密結合)と、一つのモジュールを変更した際の影響が他のモジュールに広がりやすくなるため、一般的にはデータ連携に引数(パラメータ)を用いる「データ結合」が最も低く、内部実装に依存する「内容結合」が最も高くなります。
結合度の低い(良い)状態
- 疎結合: モジュール間の依存関係が弱い状態。
- メリット: 変更に強く、テストしやすく、再利用しやすい。
- 理想: モジュールの機能が独立しており、インターフェース(引数など)だけ決めて開発できる。
結合度の高い(悪い)状態
- 密結合: モジュール間の依存関係が強い状態。
- デメリット: 変更の影響範囲が広がり、メンテナンスが困難になる。
- 例: 他のモジュールの内部データや実装に直接依存している状態。
代表的な結合度の種類(高い順)
- 内容結合(高): 他のモジュールの内部にまで依存。最も悪い。
- 共通結合: 複数のモジュールが共通の大域変数(グローバル変数)を参照。
- 外部結合: モジュールが単一の大域変数を参照。
- 制御結合: 引数で制御情報(フラグなど)を渡し、処理を変える。
- スタンプ結合: 構造体などのまとまったデータを引数で渡す。
- データ結合(低): 単純なデータ(数値、文字列など)のみを引数で渡す。最も良い。

コメント