1. ホーム
  2. 記事一覧
  3. 内部設計の目的と成果物

2022.12.29

内部設計の目的と成果物

こちらの記事では、内部設計について解説します。

内部設計

内部設計とは、外部設計を実現するシステム内の処理・構造を決めることです。

https://envader.plus/article/55

処理・構造を決めるといっても、ソースコードを日本語で書くということではなく、処理については概要レベルとプログラムの構造の定義です。

内部設計の目的は主に開発の効率化と仕様と技術のギャップを埋めることです。

まず開発の効率化についてです。開発では共通で利用する機構が多くあるため、もし先にそれらが定義されていなければ、本来共通機構として作るべきだったものを個々の開発者が独自に実装してしまいかねません。そのため、構造レベルでは先んじて設計しておく必要があります。

また、仕様とその実現技術にはギャップがあります。例えば画面の項目とDBのカラムが常に対応したものがあるとは限りません。DBのあるカラムに対して何らかの演算をしたものを画面に項目として出すのであれば、開発者は画面仕様とDBのカラムだけ見てもその対応を察することは難しいでしょう。仮に推察しても、常に誤解の危険がつきまといます。

開発物が比較的小規模な場合にはある程度見通しがききやすいため、このような問題が生じる危険も低かったり仮に起きてもすぐわかるということもあり得るため、内部設計の実行コストを考慮した結果、内部設計しないという判断もあり得るかもしれません。しかし大規模開発の場合は全体を見通すのは難しく、人員の質も担保できないこともあり、内部設計をしなければ破綻する可能性があります。

内部設計の成果物

内部設計の成果物にはいくつか代表例はあります。しかし、会社によって何を成果物とするかは違いが大きい部分でもあります。そのため、自身が成果物を作る立場になったら、その会社の成果物が一体何を目的としたものなのかを都度把握し、その目的を達成できるものを作る必要があるでしょう。

ここでは内部設計の成果物を以下の3種類に分類し、それぞれの代表例を挙げるにとどめます。

  • ユーザーの一連の動きの定義

システムを構築する上で、時間軸で全体としての動きを把握する必要があります。この「全体」にはユーザーの動きも含まれます。

そこで、ユーザーの行為とシステムにおける業務的な判断・動きを一連の流れとして表現した図が求められます。システム側の判断・動きは細かく記述しようとすればコードレベルまで細かく記述できてしまいますが、ここでは業務的な意味の抽象度で記述します。

具体例としては、アクティビティ図が挙げられます。この図ではビジネスプロセスとシステムの制御フローが記述されます。

  • システム内部のオブジェクトの一連の動きの定義

上記のような業務的な水準でのフローよりも、もう少しプログラム寄りの水準での流れの把握も必要です。

そこで今度は記述対象をシステムのみに絞って処理の流れを記述する図が求められます。やはりここでもどこまでも細かく記述しようとすればコードレベルまで記述できてしまいますが、ここではクラスやテーブルといったひとまとまりのもの=オブジェクトレベルで図示します。

具体例としては、シーケンス図が挙げられます。この図では、システムのオブジェクトレベルでの制御フローが記述されます。

  • システムを構成する、個々のコンポーネントの構成要素の定義

ここまでは各オブジェクトを所与の前提として、その連携を色々な抽象度で図示したものでした。

ただそのためには、どういうオブジェクトが存在するのかをまず定義しておかなければなりません。

この定義はアーキテクチャレベルでの各コンポーネントについて行われる必要があります。コンポーネントが「画面」なのであれば共通部品定義書を作成しなくてはなりませんし、バックエンドシステムであればクラス図を、DBであれば物理設計書を作成する必要があります。

【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

IT未経験者必見 USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話

プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。

「フリーランスエンジニア」

近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。

「成功する人とそうでない人の違いは何か?」

私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。

比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。

多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、

note記事3000いいね超えの殿堂記事 今すぐ読む

エンベーダー編集部

エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。

RareTECH 無料体験授業開催中! オンラインにて実施中! Top10%のエンジニアになる秘訣を伝授します! RareTECH講師への質疑応答可

関連記事