はじめに
業務で新規に開発するシステムや既存のシステムの仕組みがどうなっているかというのは仕様書を読むことや実際に動かしてみないとわからない点が多いと思います。開発には欠かせない内部設計書、外部設計書等を作成することで機能についての理解度が上がります。今回は内部設計に注目して内部設計についての備忘録として残したいと思います。
目次
内部設計とは
システム開発において、はじめに要件定義を行い外部設計を行った後、内部設計を作成します。内部設計の目的は、外部設計をもとにシステムの全体像を具現化を行うことです。
データの処理方法や管理方法等を設計します。また内部設計はシステム内部の詳細内容を設計することから詳細設計とも呼ばれています。
内部設計の成果物
-
クラス図
システムを構成するクラスの関係を可視化できるように図に示したもの。システム全体像の把握や他の成果物作成にも使用されるため詳細設計で作成する中でも重要度が高い。 -
モジュール構造図
それぞれのモジュールの持つ機能やシステムの構成についてまとめて可視化したもの。 -
アクティビティ図
システムの処理やユーザーの実行の流れと条件分岐を可視化したもの。 -
シーケンス図
プログラムの概要や処理の流れを時間軸で図に示したもの。
クラス図の書き方
1つのクラスを表現するルールとして
-クラス区画: 上段「社員」
-属性区画(フィールド): 中断「社員番号」
-操作区画: 下段「start()」
の順に記載します。各区画の間を線で区分けします。
関連(association)
線や矢印で表します。
社員とプロジェクトのクラス図が線で繋がっているので、何かしらの関連を表します。
社員クラスとプロジェクトクラスをつなぐ線の上に”0..1”,”1”という表記が添えられています。
これは多重度を表現しています。
上記の図では「社員」から見た「プロジェクト」は1つ。「プロジェクト」から「社員」は0人以上であるという表現となります。
多重度
表記 | 意味 |
---|---|
n | 値の通り、必ずn |
“0..n” または “*” | 0以上 |
“1..*” | 1以上 |
“m..n” | mからnまで |
集約(aggregation)
白塗りのひし形と実線で表します。
クラス間で「全体」と「部分」の関係にある時に「集約」として表現します。
例:会社がなくなったとしても社員は別の会社で社員になることができる。
コンポジション(composition)
黒塗りのひし形と実線で表します。集約の一種で、より一層結びつきが強いときに使います。インスタンスの生成や削除を担っている場合に使用されます。
例:社員が入社したと同時に社員証が発行され、退職時に破棄される。
依存(dependency)
破線矢印で表します。
依存元が変更されたら、依存先は変更しなければいけないことを明記する必要があるときに「依存」を使用する。以下の図では、ホイールが変わったときに、タイヤも依存(その規格に合わせて変更する必要がある」を表現している。
全体のクラス図
クラス図をつなげると以下のようになります。
この図はサンプルとしてdrawioを使いました。
最後に
設計書は作って終わりではなく今後、同じチーム(プロジェクト)に入った人に理解してもらうことや成果物として重要なので作成後の定期的なメンテナンスも可能な範囲で行っていかなければならないと思いました。