システム開発技術とは、企業や組織の「業務課題を解決し、効率化する仕組み(システム)」を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つの機能のみを提供。
- 情報的強度: 同じデータを扱う機能群。
- 連絡的強度: モジュール内でデータを受け渡す機能群。
- 手順的強度: 決まった順序で実行される機能群。
- 時間的強度: ある時点でまとめて実行される機能群(初期化処理など)。
- 論理的強度: 論理的に関連するが、引数で使い分けられる機能群。
- 暗合的強度: 全く関連性のない機能群(最も低い)。
覚え方
数が多いので、強度の強い順で「キジョレンテジロンアン」と各名称の頭の文字をつなげて覚えるのがおすすめです。
「モジュール結合度」との違い
- モジュール強度: モジュール『内』の機能の関連性。
- モジュール結合度: モジュール『間』の関連性の強さ。
- 設計目標は、モジュール強度を高め(高凝集)、モジュール結合度を弱くする(低結合)こと。
モジュール結合度
モジュール結合度とは、ソフトウェアを構成する部品(モジュール)同士の結びつきの強さを示す指標で、結合度が低い(疎結合)ほど独立性が高く、保守性・再利用性が向上する良い設計とされています。結合度が高い(密結合)と、一つのモジュールを変更した際の影響が他のモジュールに広がりやすくなるため、一般的にはデータ連携に引数(パラメータ)を用いる「データ結合」が最も低く、内部実装に依存する「内容結合」が最も高くなります。
結合度の低い(良い)状態
- 疎結合: モジュール間の依存関係が弱い状態。
- メリット: 変更に強く、テストしやすく、再利用しやすい。
- 理想: モジュールの機能が独立しており、インターフェース(引数など)だけ決めて開発できる。
結合度の高い(悪い)状態
- 密結合: モジュール間の依存関係が強い状態。
- デメリット: 変更の影響範囲が広がり、メンテナンスが困難になる。
- 例: 他のモジュールの内部データや実装に直接依存している状態。
代表的な結合度の種類(高い順)
- 内容結合(高): 他のモジュールの内部にまで依存。最も悪い。
- 共通結合: 複数のモジュールが共通の大域変数(グローバル変数)を参照。
- 外部結合: モジュールが単一の大域変数を参照。
- 制御結合: 引数で制御情報(フラグなど)を渡し、処理を変える。
- スタンプ結合: 構造体などのまとまったデータを引数で渡す。
- データ結合(低): 単純なデータ(数値、文字列など)のみを引数で渡す。最も良い。
覚え方
数が多いので、結合度の低い順で「デスセイガイキョウナイ」と各名称の頭の文字をつなげて覚えるのがおすすめです。
大域変数(グローバル変数)
プログラムの全範囲(スコープ)からアクセスや変更が可能な変数です。スタンプ結合の具体例
顧客情報(名前、住所、電話番号、購買履歴)を管理するシステムで、名前と電話番号しか必要ない関数に、顧客情報の「構造体」全体を渡す場合です。
キーワード
●モジュールとは
モジュールは、プログラムを機能ごとに分けた部品です。
たとえば販売システムなら、
- 受注入力
- 在庫確認
- 請求計算
- 帳票出力
のように役割ごとに分けます。
目的は主に次の3つです。
- 開発しやすくする
- 保守しやすくする
- 変更の影響範囲を小さくする
最重要:モジュール評価の2軸
試験ではここが核心です。
凝集度(きょうしゅうど)
※モジュール強度と同等の意味合いです。
モジュール内部のまとまりの強さ
→ 高いほど良い
つまり、1つのモジュールが1つの明確な役割だけを持つ状態です。
結合度
モジュール同士の依存の強さ
→ 低いほど良い
つまり、他のモジュールにあまり頼らない状態です。
●凝集度(高いほどよい)
試験では「どれがよいか」を問われます。
悪い → 良い の順
① 偶発的凝集
関係ない処理がたまたま集まっている
例:ログ出力、計算、印刷が同じモジュール
② 論理的凝集
似た種類の処理をまとめたもの
例:入力処理をまとめたが、条件分岐で処理が変わる
③ 時間的凝集
同じタイミングで実行する処理をまとめる
例:初期化処理、終了処理
④ 手順的凝集
実行順序が決まっている処理をまとめる
例:入力 → チェック → 変換
⑤ 連絡的凝集
同じデータを扱う処理をまとめる
例:顧客情報を読み込み、更新、保存
⑥ 情報的凝集
同じデータ構造に対する複数操作
例:顧客マスタの検索、追加、削除
⑦ 機能的凝集(最良)
単一の明確な機能だけを持つ
例:消費税計算だけ行う
●結合度(低いほどよい)
悪い → 良い の順
① 内容結合(最悪)
他モジュール内部を直接参照・変更
② 共通結合
共通領域(グローバル変数)を共有
③ 外部結合
外部装置や外部フォーマットに依存
④ 制御結合
フラグで他モジュールの処理を制御
例:mode=1なら検索、mode=2なら更新
⑤ スタンプ結合
必要ないデータも含めて構造体ごと渡す
⑥ データ結合(最良)
必要なデータだけを引数で渡す
出題されやすいポイント
❓頻出1
「高凝集・低結合」が理想
これが最重要です。
❓頻出2
グローバル変数は共通結合
よく問われます。
❓頻出3
フラグで処理を分岐 → 制御結合
午後問題でよく出ます。
❓頻出4
必要な値だけ引数で渡す → データ結合
良い設計です。
覚え方(試験向け)
●凝集度
「機能が最良、偶発が最悪」
●結合度
「データが最良、内容が最悪」
知識に自信ができた方は、今度は自身のキャリアアップに向けて準備してみませんか?

まずは無料でキャリア相談

コメント