endobj <>/PageLayout/OneColumn/PageMode/UseNone/Pages 71 0 R/Type/Catalog/ViewerPreferences<>>> ステムの構造を示す図式のことです。ここで、いくつかの広く使われるアーキテクチャ設計図及びそのテンプレートについて簡単に紹介します。, Edrawは、Wondershare Groupの子会社です。. r�ׂH endstream この記事でUMLを使って描いた状態遷移図(ソフトウェア設計図)について説明しています!, 『ソフトウェア設計図を描く前に知っておきたいUMLの基礎知識』を説明したいと思います。, という”知りたガール”さんでも分かるように、”UML”について丁寧に説明したいと思います。, プログラミングは楽しいけど、本記事をきっかけにソフトウェア設計(UML)にも興味を持ってほしなぁ(*・ω・)ノ♪, UML(Unified Modeling Language)とは、日本語だと“統一モデリング言語”と呼ばれており、ソフトウェア設計時に描く”モデル図”の記法を統一するために定められた”言語”のことです。, どういうポーズが正解かはさておき、多くの人は”言語が通じない”なら、Body Languageで相手に伝えようとすると思います。, プログラミング言語が読めない人に、どんなソフトウェアを開発したか説明しなければいけないとき、どうしますか?, そして、ソフトウェアについてUMLで描かれた図は、そのまま仕様書として使うことができます。, UMLはプログラミング言語が読めない人に、ソフトウェアの仕様を説明するときに使えます。, 「プロトタイプ(試作品)はPythonで書いて、製品への実装はC言語で書きたい」という現場があったとします。, PythonもC言語もプログラミング言語なので、文法の違いはありますが同じアルゴリズム(処理)を書くことができます。, 基本的にプロトタイプと製品の仕様は同じなので、違うプログラミング言語で同じ処理を書く必要があります。, 1つのプログラミング言語のみを使って、書いてほしいアルゴリズム(処理)の指示を出すと、片方のエンジニアは理解できません!, しかし、UML(統一モデリング言語)を使い、アルゴリズムに関するアクティビティ図や状態遷移図などの設計図を描けば、以下のように2人同時に指示を出すことができます。, また『プログラミング言語の壁を取り除く』ということは、『UMLで描かれた設計図に対し、修得している言語やレベルにあまり依存せず意見をいえる!』ということです。, UMLを使うことで、修得しているプログラミング言語にあまり依存せずに指示を出せたり、設計図に対する意見をいうことができます。, UMLを使ってモデル図を描くのは同じですが、読み手の違いを意識して描き方を変える必要があります!, 日本語で書かれた本でも、児童向けと大人向けで文章の書き方が異なりますよね?それと同じことです。, 仕様書(取り扱い説明書)の読み手は”ユーザー”なので、ソースコードの内容を説明する必要がなく「操作方法のみ」を説明すれば良いです。, 一方、設計図の読み手は”開発者”なので、操作方法はもちろん「どんなソースコードが書いているか?あるいはどんなソースコードを書くべきか?」まで説明する必要があります。, 少しだけ、ややこしい話をすると、ソースコードのテスト(動作確認など)をするために、開発者はユーザーという立場にもなります。, 下図はUMLを使って描いたアクティビティ図(振る舞い図)の仕様書バージョンと設計図バージョンです。, 仕様書(取り扱い説明書)の方は「どんな操作をするのか?」・「どうやってゲーム(処理)が進むのか?」を示しています。, 一方、設計図は「どんな変数・関数を使うのか?」を示しており、さらに”game_start”という関数について別の設計図があったりします。, 仕様書(取り扱い説明書)の方はソースコードの細かい説明が不要なため、”粒度”が大きく、設計図の方はソフトウェアの構造や振る舞いを説明するため”粒度”が小さくなる傾向にあります。, 粒度が小さすぎても見にくいし、粒度が大きすぎても理解できない!粒度がバラバラだと読み手は大混乱です!, 実は、仕様書(取り扱い説明書)レベルでもUMLによるモデル図があれば、ソフトを作成できるエンジニアはいます。, むしろ、先ほどお見せした設計図のように、変数や関数まで指定されるとかえってコードを書きにくい場合もあります。, これも「読み手である開発者を考慮して粒度の大きさを~」と一言で片づけても良いのですが、少しだけ”UMLの闇”を説明しておきます。, 変数や関数も指定したモデル図を描いておくと、ソースコードを自動生成してくれる”UMLツール”があります。, この場合、読み手には優しくない”粒度がとても小さい”設計図になる傾向にありますが、悪いことばかりではありません!, 複数のプログラミング言語を修得しなくても、UMLを使いこなして詳細なモデル図(設計図)描くことができれば、多様な言語のソースコードを自動生成できるのです。, そうすれば、設計図を書けるエンジニアが一人いれば、複数の言語でコーディングする工数を節約できます。, 設計(モデル図作成)とコーディング両方できて、コーダーの気持ちを考慮して設計できるエンジニアがカッコイイと思うよ(ง •̀ω•́)ง✧, 以上のような”ソースコード自動生成”などの考え方があるため、”粒度は小さいほど良い”と主張する人もいます。, スマホゲームを例に仕様書(取り扱い説明書)と設計図の違いを説明しましたが、世の中には「開発者向けの製品」というものがあり…, 職業柄、私がよく使うのはSDK(Software Development Kit)というソフトウェア開発者用向けのキットです。, SDKの場合、読み手が開発者しかいないため『仕様書=設計図』というのがほとんどです。, つまり、仕様書用と設計図用で粒度を変えたモデル図を描くのではなく、”適当な粒度”でモデル図を描き『仕様書=設計図』として、ひとまとめにするのです。, この”適当な粒度”の塩梅が難しく、SDKドキュメントを”仕様書(取り扱い説明)”として読むと詳細過ぎるし、設計図として読むと物足りなかったりします。, そのため、正解が書いてあるはずの”SDKドキュメント”や”UMLの参考書”・”ソフトウェア設計の参考書”を読んで勉強したはずなのに…, 本記事の後半で、UMLの闇を少し見せました!UMLに対して様々な考え方があるため、結局のところUMLの描き方に正解はなかったりします。, もちろんケースバイケースで、一般的には”この粒度で書くと良い”という例が参考書に載っていますが…, UMLの知識がある人に自分の描いたモデル図(設計図)を読んでもらい、ちゃんと意図(メッセージ)が伝わるなら、それは良いモデル図(設計図)です。, 逆に言えば、”粒度の小さい”詳細なモデル図(設計図)を描いたつもりでも、読み手に意図(メッセージ)が伝わらないなら、それは配慮の足りないモデル図(設計図)です。, 『相手にメッセージを正確に届けるには、どんな文章が良いか?どんな図を使うと分かりやすいか?』, 本記事は、UMLを学びたい!あるいはUMLについて学んだのに悩みが尽きない!!という人たちを対象に書きました。, くるるちゃんいつからそこに?と聞く前にフクロウの”くるる””@kururu_owl が喋りだした。, そう!相手に伝わることが一番大事!相手に伝わるなら話題がソフトウェア開発だったとしてもUMLを使わなくたって良いのです。, しかし、文章や写真で説明する方が分かりやすいと考たので、UMLを使いませんでした。, (”スサー”とかUMLでごちゃごちゃ説明するより、写真と文字の方が分かりやすいからね!笑), UMLとオブジェクト指向をセットで説明する本などがあるため、”くるる”も勘違いしたのかな?, 俳句が『季語を入れた五・七・五の十七音からなる詩』というルールを知っていても、読み手に想いを伝える詩は、上手く作れないですよね?, ”UMLをマスターした”というのは、日本語および俳句のルールを理解したレベルです。, オブジェクト指向はソフトウェア設計手法の一つです。より正確にはソフトウェアの構造設計手法の一つです。, ソフトウェアの構造設計で、UMLのクラス図を描くのですが、UMLを読み書きできるだけでは、読み手に想いを伝えるクラス図(設計図)を描くのは難しいです。, 読み手に想いを伝える”俳句のテクニック”を学ぶように、読み手に設計の意図を伝える”設計手法・設計思想”を学ぶ必要があります。, なので、”オブジェクト指向”をマスターしたいなら、UMLだけではなく、ソフトウェア設計手法・設計思想も勉強してほしいぁ(*・ω・)ノ♪, ソフトウェアの構造設計は、設計者の”設計思想”が…もっと単純に言えば”好み”が設計図に色濃くでます!, 「自分ならこうしたい!」とか「この構造はシンプルだけど野暮ったい」などを考えることが、ソフトウェア設計者への第一歩です!, 私の場合は、大量のクラス図(構造図)を熟読⇒考察⇒真似る!を繰り返して、自分好みの設計スタイル(思想)を修得したけど…そういう現場にいないと難しいよね。。, (ふう…そう簡単にTwitterのフォロワーもサイトへのアクセスも増えないよね?), ソフトウェア設計図(モデル図)は読み手のことを想い「どうやってメッセージを伝えるか?」を考える抜いて完成した情熱の塊です!, 勉強する人(読み手)は、このソフトウェア設計図(モデル図)に「どんなメッセージが込められているのか?」を考えると同時に…, 「自分ならこうしたいなぁ」というのを考え続けて下さい!それを繰り返し実施すれば、自分の設計スタイルを見つけられるようになると思います!, お互いの設計思想・設計スタイルをぶつけ合うことで、はじめて理解できることもあるからね!, 正解・不正解ではなく、相手がどう考えたのかを学び、”良いなぁ”と思ったら素直に認めて吸収しましょう!, 本では要求定義や要求分析にユースケース図を使ってるのに…この記事じゃ全然出てこないじゃん!, 納得した!UMLの勉強したから、なんにでもモデル図を描こうとしてた!読み手への配慮が足りなかった!!, 企業の研究所に勤務する現役エンジニアです。頑張っている理系を応援したいので、役立つ情報を配信していきます!, 【ソフトウェア開発入門チュートリアル】OpenCVとPythonで『物体追跡カメラ』を作る. xref Copyright © 2020 Edrawsoft. 75 0 obj ��h��AA�N���W�߽t:St^���p���(�j���afϸ���Vs^�/��#��xǤ�9_ă���X���s�h��2���( ˳{�ځkg-��e� �LxG=��;N�Z9z��u�)����U&6/���ܭy�Ɓ�B.��M�y(�RF� �. <> <> 76 0 obj グラフィックオーガナイザーの例, グラフィックオーガナイザー 知識, フローチャート作成のハウツー, ネットワーク図作成のハウツー, プロジェク図表作図のハウツー, マインドマップ作成のハウツー, グラフィックオーガナイザー作成のハウツー, グラフィックデザインのハウツー, ソフトウェアアーキテクチャー図, フローチャート、マインドマップ、組織図などを作成, Officeライクの操作感覚 初心者もすぐ使える. シーケンス図は、システムの設計を視覚的に把握するために用いられるもの。時間軸に沿ってクラス・オブジェクト間のやりとりを表現することができます。 ユーザーがどういうアクションをして、それに対してシステム側でどのように対応しているのかという一連の流れを把握しておくこと� ��1p�2l��A|���ħ{��Ӭʲ�W-�� endobj 0 x�c```�c���B �ab�N�-�>�v�}�� #�[Λ ��8q�sy������;I�����M2s�l�fŶ� %PDF-1.4 All rights reserved. endobj ソフトウェア開発入門のチュートリアル記事を書きました。本記事では、OpenCVとPythonを使った『物体追跡カメラ』の開発を題材に、開発プロセス・設計・実装(コーディング)などのソフトウェア開発に関する知識を一通り学べる内容になっています。... ゲームソフト作成を題材にした「オブジェクト指向」の入門記事を書きました。オブジェクト図/クラス図の書き方や考え方のポイントも説明した実践的な内容になっています!ソフトウェア設計やソフトウェア開発を学びたい人にオススメの記事です!... https://cpp-learning.com/wp-content/uploads/2018/07/logo_hayabsa_note-1.png, 組込みソフトウェア開発のための オブジェクト指向モデリング (組込みエンジニア教科書). endobj 74 0 obj <> 8D�âQI���V����P�B���:�6�#7��7��8������2�9m���%!8�bTu� ����2���|�j�_�+IV����->,ڄ��d��]�c`�U�rP���p�����Iq ����m�z�E���G[�m�aLm���y���õ�#,�]�}�ږcKW���A��z���b������#y�JbM`+�����ue�q5��W�յ��-�ǶH�"wl�Ա-2��srſj߼�>׀�x�y�Wo��]��Ѳ�S����-VM��Y�ë�QG��A�~@Ki���-Š�ac)[��(>s�m��a�ĸZ%����W�)�Ӊ�5th���_\C�璱���yb{ Z�ڣB*�ިAm(R��}5(�����>�$4g6�OB �ž��E$�-I�Xpjl�Ƹh|z\4~H�F S���Jg\��1\�ӵ�Cͫ��z�-�O�ε}��C� _#�H+�[;���� 0000000015 00000 n 0000000946 00000 n 0000001538 00000 n 0000001646 00000 n 0000005538 00000 n 0000005699 00000 n 0000005852 00000 n 0000006935 00000 n 0000007195 00000 n 0000055870 00000 n 0000056615 00000 n 0000056745 00000 n 0000061443 00000 n 0000061678 00000 n 0000198769 00000 n 0000201706 00000 n 0000201864 00000 n 0000202100 00000 n 0000216670 00000 n 0000217710 00000 n 0000228763 00000 n 0000239986 00000 n 0000251039 00000 n 0000257336 00000 n 0000261279 00000 n 0000263933 00000 n 0000001222 00000 n trailer <<69259056894399B516B33DBC7D50D36E>]/Info 72 0 R/Prev 627083/Root 74 0 R/Size 100>> c�mN�wW߯/k�;�Gm����G}sl+�V],祪\�k #f#���x���`V�p"�x|�H^Ѐ�6 �c��H�@��;�M�]��8���a�e`m�{��O\����E�K�5k�hd�vx�A���<7��8V�0�������;�f� ��`R 基本設計のことを「外部設計」と呼ぶ場合もあるが、当サイトでは「基本設計」に統一して記載している。 基本設計は、要件定義の結果を受けて、具体的なシステム構成や機能を設計する工程だ。 基本設計書には、下記の4つを検討のうえ成果物としてまとめる。 ・業務設計 ・システム方式設計 ・アプリケーション機能設計 ・非機能要件設計 要件定義書と同じく、企業によっては記載内容やテンプレートを整備している企業もあるので、まずは自社のルールを確認することをお勧めする。 ※当サイトでは、 … startxref V$�:.�B���-��5L�#��ʟq���-��j��h`+�q�\�xǤ0�.N���6�2�Ͻ��b�C����.�@9����͉j\��bEI����AT |l�^�A�1mv?pђ���y��;��f�s�2M��ss�� )�JY��|�1F �K�}�4�&~pϗs��R.m�c��=jƃ�����e��xp���PQ�ۍj:!�L#�9ȼ ��&��\���R���ȓy@K��t5�Xa���!�p6�C����8r@�� �? �^�0��́(���9�fA�o������aA��*� • システムの構成要素(コンポーネント=プログラム部品)は何か • それらが互いにどう関係しているか • 多くの場合,アーキテクチャは図(ブロック図)で表現される • ソフトウェア設計のもっとも最初の段階でおこなう • アウトプット=互いに関連するコンポーネントからなるアーキ "�J��w��=��x��,�e����;v��9���z2�\ 本記事では、”uml”を使ってソフトウェア設計図を描きたい!という人のために… 『ソフトウェア設計図を描く前に知っておきたいumlの基礎知識』 を説明したいと思います。 73 27 %%EOF %���� x��[M�9�������O !�$3H+qX��e�P.�}��mw{&�,)3���\��OU��y����|�|�[nuK��/[uioa���n?��FQ�������J�>�|��귔I������^n�q���n��q{�t��!�-f���Av[(N:�fs�m�mϕ�M���������O��cq��/%���F������r�D�i/�}��PQ��g�����_�~D�-6��O��N��=�ɓ��ݞB7% ���lC"��ݨ �i��}�[���m�_n����>�-��&y�Z�yE#[vu�5�e�b�CՅ�������y���=� �5د�>O�7��O�T[�J^����3{�Ⱥ��O�Xˢ�S]5�Uc��1�RregY���J�-qcߏ4i�f>ђ�r̘��o�M��A�FnamAf!=:(�.���&�+Z� sPɉ�`���� システムの構成図 システム概念図 ; システムの業務フロー; ユースケース図; 機能要件 システムの機能一覧; 各機能の詳細; 入出力要件 入力データ一覧; 各入力データの詳細(データ項目・ファイル形式など) 出力データ一覧; 各出力データの詳細(入力データと同様) 非機能要件 セキュリティ要求; アーキテクチャ図とは、レイヤー、コンポーネント、インターフェースなどを含み、システムの構造を示す図式のことです。ここで、いくつかの広く使われるアーキテクチャ設計図及びそのテンプレートについて簡単に紹介します。 73 0 obj <> 99 0 obj ka�u�lx�v1�������L�׎��n�?����&ּ��1���fL�[�� そもそもプロジェクト計画を建てる目的はなんでしょうか? プロジェクト計画を建てる目的は、プロジェクトを成功に導くためです。プロジェクトを成功に導くには、目標(品質・コスト・期限)を決め、これを実現するために必要な活動を計画するという、とてもシンプルなものです。 しかし、プロジェクト計画を建てるにはそれなりの労力が掛かります。そのため、プロジェクト計画を建てずにプロジェクトをスタートさせ …