システムエンジニアに必要な「設計力」とは

システムエンジニアに求められる能力の一つに、「設計力」があります。

設計力は、主に「モデリングスキル」と「実装スキル」の二つで構成されます。

まず、モデリングスキルとは、ユーザーの要望をモデル化するスキルのことです。

これを行うには、「モデルの表記方法」「アプリケーションの技術」などだけでなく、業務そのものへの理解も不可欠です。

次に、実装スキルとは、モデル化された物をシステムに当てはめて実現するというスキルのことです。

これを行うためには、「システムを構造化する技術」のみならず、「フレームワークの技術面での制限」「システムに使われている機器の構成や設定」「デプロイメント」など、広範な知識と技術が必要になります。

そして、こうした設計力を会得するには、「プログラミングスキル」も備えておいたほうがよいでしょう。

「処理の構造化」など、プログラミングの過程で行われる作業は、設計そのものといえるからで、それはプログラミングの経験によって会得される物だからです。

システムエンジニアの仕事の一つ「内部設計」とは

システムエンジニアが行う仕事の一つに、「内部設計」があります。

内部設計は、基礎的な部分を設計する「外部設計」の後に行われる作業であり、「詳細設計」とも呼ばれます。

内部設計は、以下の3段階に分けられます。

まず、「機能分割」。

プログラミングなどを容易にするために、機能をモジュール別に分け、それぞれの機能をはっきりさせて行きます。

また、「データフロー(機能相互でのデータ処理の流れ)」も設計します。

これにより、バグを発見することができます。

次は、「物理データ設計」。

ユーザーからは見ることができない、システム内部で用いるファイルやデータのやり取りなどに関わる部分を設計して行きます。

そして、「入出力の詳細設計」。

この段階では、外部設計で作ったインターフェースをどうやって実装して行くか、またどうやって表現するかということを決めて行きます。

具体的にいうと、「エラー処理」「初期値やデフォルト値の定義」などが挙げられます。

システムエンジニアの仕事の一つ「外部設計」とは

システムエンジニアの仕事の一つに、「外部設計」があります。

これは、システムエンジニアが行う仕事のうち、「システムの仕様を決める作業」のことです。

これは、以下の3段階に分けられます。

まず、「方式設計」。

「システムの実装方針」「プラットフォームの方針」などを決めて行きます。

アプリケーション全体の構造もこの段階で決めるので、「アーキテクチャ設計」ともいいます。

次は、「機能設計」。

「システムのモジュール単位での分割」「それぞれのモジュールに用いるデータベースの設計」を行います。

具体的にいうと、「データの入力および出力」「データベース相互のデータ交換」などの他、「画面のレイアウト」といったユーザーインターフェースに関わる作業も行うことになります。

そして、上記二つに該当しない「その他の設計」。

「クライアントが要望する機能」「運用規定」「開発費用」などの、実際に運用するにあたって必要な物を設計したり、決めたりして行きます。

ソフトウェア開発における設計の種類と内容について

まず、ソフトウェアなどのシステム開発においてシステムエンジニアはプログラマーとは異なり、プログラミングを含めて大半の開発工程に関わります。

この開発工程のうち、設計にあたる仕事の範囲としては、最初に顧客の要件を洗い出した情報を整理して、実際にプログラミング言語を用いてコーディングできるまで条件や指示内容を纏めるところまでを指すことが多いです。

そして、この場合の設計の種類としては主に基本設計と詳細設計に分かれることがあります。基本設計はソフトウェアを扱う画面を作ったり、ボタンを押したときに行われる処理や画面の変化方法を決めたりするなど、主に操作部分の仕様を決める作業に対し、詳細設計は、基本設計で決まった内容を実際にコーディングして実装する指示内容を決める作業になります。

つまり、SEの仕事で設計の作業は要件定義で決まった内容を実際にコーディングによって形にする設計図を描く作業であると考えたほうがわかりやすいのではないかと思います。

情報処理技術者試験の内容から設計の知識を学べる

まず、設計の仕事範囲は幅広く、ユーザーからの条件を具体的なものにした上で、プログラミングを記述する仕様を仕上げるところまでが該当することが多いです。

このため、ソフトウェアなどのシステム開発において設計の技術を学ぶのに最適な方法の1つとして応用情報技術者試験などの情報処理技術者試験の試験勉強を通じて知識を習得してみることを挙げたいと思います。

初めて、設計関係の知識を得る場合は、標準レベルとされている基本情報技術者試験の内容から始めることをお勧めします。なぜなら、この試験範囲には開発工程全体の流れの中で必要とされている用語や手法が簡潔に含まれており、試験対策本では視覚的に書かれているものもあるからです。例えばUMLに用いられるユースケース図やシーケンス図やオブジェクト指向のインヘリタンスの方法などがあります。

企業の中には、このような情報処理技術者試験に合格すると一時金などの報酬が得られるところもあるうえ、この試験で得た知識が業務に活かしたり、活かしながら学んだりしやすいタイプであるため是非ともお勧めする方法です。

設計で必要なのはコーディングを行うメンバー間のコミュニケーションである

そもそも、ソフトウェアなどのシステムを開発する仕事は1人だけで関わることなく多くのメンバーや外部の人と関わりながら行うものなので、どの工程を担当してもコミュニケーション能力が不足すると納期遅れなどで迷惑をかけるなどの影響が出る可能性が高まります。

開発工程のうち設計部分で必要となるコミュニケーション能力としては、前工程にあたる要件定義において具体的に決めた内容を後工程にあたるコーディングを行うメンバーに的確に伝えたり、メンバーごとの進捗状況を把握したりする力であると思います。なぜなら、コーディング作業は大抵、複数人のメンバーにプログラミングする範囲を決めて割り振って行われることが多く、担当範囲をミーティングなどの際に伝えるだけでなく、全体的な進捗状況を把握したうえで、遅れているパートのメンバーに指示を出すなどチーム全体を管理する必要があるからです。このために、開発を行う他のメンバーとの連携をしっかり取れるように普段からチーム内で気づかいをするなど良い関係を保つなどしたほうが良いと思います。