クラス図とアクティビティ図

以下は当記事に関連する動画です。本動画に関連する動画はすべてニコニコチャンネルにて閲覧可能です。
https://ch.nicovideo.jp/ai-light 


今回は以下の内容について説明を行います。
1)ユースケース図
2)クラス図
3)アクティビティ図

1)ユースケース図
前回はユースケース図について説明を行いました。今回はクラス図とアクティビティ図について説明を行います。

ユースケース図はUMLを使用しない設計手法ではDFDに該当する内容かと思います。ユースケース図はシステム全体を表す概要図として使用されることが多いのですが、実務的にはユースケース図を作成しないこともあるかと思います。

ユースケース図のようにシステム全体概要を表す資料は経営者層などへの説明などには適していますが、システムを制作していく上ではもう少し詳細な内容で記述する必要があるので、あまり役立ちません。そもそも全体像が見渡しにくいぐらいに開発規模が大きい場合には、システム制作側でもユースケース図は十分に役立つかと思います。

また、ユースケース図も詳細な内容として記述されば十分にシステムの内容を表現することは十分に可能かと思います。

2)クラス図
システムの概要を表すのによく使用されるのがクラス図です。

クラスはオブジェクト指向でよく出てくる概念です。クラスはデータと操作をセットにしたものです。クラスに関してはオブジェクト指向を使ったプログラミングの経験がないとイメージがわかないかもしれません。

クラス図で記載する1つのクラスがまさにプログラムを作成した際に1つのクラスに該当します。また、クラス図はシステムの概要を示すことができるので作成することが多いのではないかと思います。

クラス図の作成方法としては、以下のようになります。


図1.クラス図の書き方
参考文献:
http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/local_support/pdf/cio_text_ps_2-1.p

「図1.クラス図の書き方」では、「職員」というクラスがありその中に「氏名、入所年度、内線番号、メールアドレス」などの項目が属しています。上図では操作欄は未記入となっています。

この部分に関しては、以前にご紹介をしたER図(下図を参照)と内容は似通っています。

図2.ER図
参考文献:
http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/local_support/pdf/cio_text_ps_2-1.p


ER図で記載するエンティティ名はデータベースを作成した際のテーブル名に該当します。つまり、エンティティ名がクラス図の クラス名 に該当すると考えると良いかもしれません。

「図1.クラス図の書き方」の下段ではクラスの関連付けを表しています。市役所には複数人の職員が所属していますので、「市役所」クラスと「職員」クラスとの関係は1対多の関係になります。クラス間を結ぶ線上にクラス間の関係が1対多であることを記載しています。

なぜ、クラス間の関係が必要になるかというと、職員の情報を蓄積するためにシステムではデータベースを使用することが多いですが、データベースにてテーブルを作成する際に必要になるからです。

つまり、そもそもシステムの設計書はシステム制作するためにあります。そのため、その設計書がシステムにどのように落とし込まれるかがイメージ出来ないと、設計書が上手く書くことが出来ない訳です。従って、設計について明確に記載するためにはプログラミングを知っておいた方が良いです。

<補足>****************************************
実際の事務にシステムを導入する際に誰がシステムを設計するかという問題があます。もちろん、実務の内容にも精通し、システムの設計にも、プログラミングにも精通した人物がいれば、最高です。

しかし、そのようなことはめったにありません。実務の内容に精通した人はプログラミングには知識がない場合や、プログラミングには知識がある人は実務の内容に精通していないという場合がほとんどです。

そのため、実務の内容とプログラムの架け橋になるシステムの設計書を誰が作成するかという問題になります。通常はプログラムを作成する側がシステムに精通しているということでシステムの設計書を作成することが多いですが、その場合にはシステムの設計書を作成して、業務の内容に精通した人に確認を求める訳ですが、業務の内容に精通した人はシステムの設計書の内容があまり分かってないので、その部分でコミュニケーションギャップが生まれ、実際にシステムが稼働する段階になってシステムが業務の内容と異なると言った話になることがよくあります。

そのような事を避ける方法の一つとしては、業務の内容に精通した人がシステムの設計書を作成するということも考えられます。その場合には、先ほど記載した通り確かにプログラミングの知識がないと設計書が上手く書けないということがあるかもしれませんが、それは仕方がないということになります。

何事でもそうかもしれませんが、すべての事が分かるスーパーマンはいない場合が多いので、それぞれの得意分野を持ち寄り、上手くコミュニケーションを取りながら進めていくしかありません。

****************************************

ちなみに「図2.ER図」でもエンティティ間に線を結びエンティティ間の関連を記載しております。左上の「顧客マスタ」と「注文テーブル」との関係は、一人の顧客が複数の注文を行うことがありますから、「顧客マスタ」と「注文テーブル」との関係は1対多の関係になります。

クラス間の関係とER図でのエンティティ間の関係もよく似た内容を記載していることが分かります。

下図に、クラス図間の関係を示します。

参考文献:
http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/local_supp

「図3.クラス図間の関係」の上から2段目ですが「汎化」という関係が説明されています。このような関係はER図でのエンティティ間の関係にはありませんから、「クラス」図とER図で似ているのですが異なる点があることが分かります。

「汎化」は「図3.クラス図間の関係」の例では「バラ、ユリ、菊」などの植物の名前が入り、クラスAはそれらを抽象化した植物などが該当するとあります。

オブジェクト指向プログラミングでは一度、作成した処理を継承してさらに、それに機能をプラスして処理を作成することができます。このような場合には、クラスAで植物という全般的な機能を作成しておき、クラスBではクラスAの処理を継承して最初から処理を記載するのではなく、クラスA内の処理に機能を追加することでクラスBの処理を作成することができます。

例えば、「図4.クラス図操作内容記載例」ではクラス図とそれに対応した「図5.クラス図に対応したjavaプログラム」を記載します。

図4.クラス図操作内容記載例

参考文献:
http://www.itsenka.com/contents/development/uml/class.html

図4 のクラス図の書き方はかなりプログラムよりの記載方法です。「図4.クラス図操作内容記載例」に対応した実際にjavaプログラム例は以下の通りです。

図5.クラス図に対応したjavaプログラム

参考文献:
http://www.itsenka.com/contents/development/uml/class.html

「図4.クラス図操作内容記載例」では、「Sample」というクラス図を作成し、その中には「StaticField」と「instanceFiled」という2つの項目を持っています。

「図5.クラス図に対応したjavaプログラム」では、
public class Sample {
という部分がクラス名を示しており、次に続く、
private static String staticField = null;
private String instanceField = null;
が2つの項目名を示しています。

また、「図4.クラス図操作内容記載例」では「getStaticField()」と「getInstanceField()」の2つの操作を持っていますが、それは「図5.クラス図に対応したjavaプログラム」では、

public static String getStaticField(){
    return staticField;
  }

  public String getInstanceField(){
    return this.instanceField;
  }

という2つの処理が該当しています。つまり、ここではクラス図とプログラムが1対1で対応して記載されている訳です。

ちなみにオブジェクト指向プログラムでは処理を各クラスに記載するため、デバックなどで処理を追って確認していく際に、1つの処理があちらこちらのクラスにまたがることがありますが、その場合には処理の流れが非常に分かりにくくなります。

単純に処理を追うことだけを考えると処理が何も構造化されていないベタ書き状態の方が処理を追いやすいです。

そのようにオブジェクト指向プログラムでは関連するプログラムがあちらこちらに分散することがありますので、処理全体を見渡すのにクラス図は非常に役立ちます。

3)アクティビティ図
アクティビティ図は下図の8つの記号を使って処理の流れを記載します。

図6.アクティビティ図

参考文献:
http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/local_support/pdf/cio_text_ps_2-1.p

アクティビティ図はフローチャートのように具体的な処理の流れを記載するのに役立ちます。アクティビティ図の記載例は下図の通りです。

図7.アクティビティ図の記載例

参考文献:
http://www.soumu.go.jp/main_sosiki/joho_tsusin/top/local_support/pdf/cio_text_ps_2-1.p

この図は上部に部署や担当窓口欄を記載することにより、処理の流れを記載するとともに、誰が担当するかも記載しており、全体の処理の概要を捉えるのに役立ちます。この図は、実際の処理の流れを示すようなフローチャートではありません。

ただ、業務を処理する担当者が実際にシステムを制作する側に処理内容を伝えるのには非常に適した方法です。処理は左上の●からスタートして矢印に沿って処理が行われて左下の黒丸まで処理が流れる様子が分かります。

UMLを使用しない場合には、DFD、ER図、フローチャートを使って処理の流れを表していたものが、UMLを使うことによって現在プログラム言語の主流となっているオブジェクト指向に沿った形でユースケース図、クラス図、アクティビティ図を使って同様の内容を記載することができます。

そもそも業務システムを作成することを想定しますと、
大まかには処理の流れをどうするか
どのようなデータを管理するか
を明確にすれば良い訳です。

さらに最終的にプログラムの流れをどうするかを明確にすれば良いのです。

その中で使用されてきたのがDFD、ER図、フローチャートです。UMLを使用しない場合に行ってきた設計手法とUMLを使用する設計手法は完全に異なっている訳ではありません。大きく対応関係を当てはめると
DFD → ユースケース図
ER図 → クラス図
フローチャート → アクティビティ図
と対応していると考えるとUMLも捉えやすいのではないかと思います。


ニコニコチャンネル(月額固定で見放題)
https://ch.nicovideo.jp/ai-light
本記事に関連する動画講座を閲覧できます。一部の動画は無料でも閲覧できます。

YouTubeチャンネル(無料動画配信中)
https://www.youtube.com/user/ailightcom
ITと経営に関する動画を配信しております。
よろしければ、チャンネル登録をお願い致します。

Access・Excel倶楽部
https://www.ai-light.com/accessclub/
Access・Excelに関する各種情報を配信しております。

格安ホームページ制作所
https://www.ai-light.com/hp2
インターネットマーケティングに関する記事が無料で閲覧可能です。

株式会社アイライト公式HP
https://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)

ITでお困りのことがございましたら、まずはご相談(コンサルティング)
https://www.ai-light.com/itconsulting.html

アイライトブログ
https://ai-light.org/
株式会社アイライトおよびアイライトIT経営研究会の本サイトにアクセスが集中した際に表示が遅い時があるようです。本サイトはその際のバックアップサイトとしても活用しています。


弊社は、主に中小企業様向けの業務システム開発ホームページ制作パソコンサポートコンサルティングなど、ITに関する様々なサービスを格安で提供しております。
特に小規模な業務システム開発の分野では、主にAccess(アクセス)を利用した柔軟で効率的な開発を得意としており、関西でダントツの実績があります。

業務システム開発に関しては、以下のような内容で対応しております。
・顧客管理などの単機能なシステムは20万円~50万円が多い。
・受注から入金まで業務全体システムで100万円~350万円ぐらいが多い。
・Access(アクセス)-SQLserverで大規模システム開発は350万円~1500万円が多い。

詳細は、Access(アクセス)、Excel(エクセル)、WEBサイト製作による小規模システム開発のページをご参考ください。

大阪商工会議所からの推薦を受けて、中小企業庁運営の中小企業支援事業に専門家として登録されました。
通称ミラサポ。3回まで無料でのコンサルティングが可能です。ご興味がある方はご連絡ください。
https://www.mirasapo.jp/


(近畿大学にて非常勤講師も務めたバリバリの技術屋が経営する会社)

Access(アクセス)Excel(エクセル)SQL server バーコード Webシステムを使った業務システムのシステム開発の無料相談を受付中

株式会社 アイライト 担当:内藤 響(Naito Ko)
〒550-0005 大阪市西区西本町1丁目5番9号 日清ビル 5F
(四つ橋線 本町駅 24番出口すぐ)
まずは、メール・電話でご相談ください。
TEL : (06) 6599-8890 E-mail : info@ai-light.com
お電話が混んでいる場合が多いので、つながりにくい場合は
TEL : (06) 6535-5117までお願いします。