システム設計と開発の違いとは?仕事内容や求められる能力などを解説
若手エンジニア・プログラマー向けに、要件定義〜リリースまでの開発工程における各工程の作業内容を詳しく解説します。また設計・開発工程の違いを3つの観点から比較し紹介しますので、ぜひ参考にしてください。
若手エンジニア・プログラマー向けに、要件定義〜リリースまでの開発工程における各工程の作業内容を詳しく解説します。また設計・開発工程の違いを3つの観点から比較し紹介しますので、ぜひ参考にしてください。
知識・情報
2021/07/29 UP
- 仕事内容
- SE資格・スキル
- 開発
- キャリアパス
システム開発プロジェクトの作りこみ工程である「設計」と「開発」は区分けなく一緒くたに実施されることもある工程です。これらは似ているようで、目的や仕事内容が違います。
この記事では若手エンジニア・プログラマー向けに、要件定義〜リリースまでの開発工程における各工程の作業内容を詳しく解説します。また設計・開発工程の違いを3つの観点から比較し紹介しますので、ぜひ参考にしてください。
なお、設計と開発の前に、要件定義と設計の違いについて知りたい場合、以下の記事をご確認ください。
要件定義と基本設計は何が違う?実施すべき内容と進め方のポイントを解説
システム設計と開発の仕事内容
システム開発プロジェクトにおいて設計・開発工程はプロジェクトの規模や特性に関わらず多くの場合で実施される工程です。ウォーターフォール型・アジャイル型などどの開発手法によって若干作業内容の違いはありますが、設計・開発の作業は欠かせません。
ここからは、システム開発の設計・開発それぞれの目的や仕事内容を解説します。
開発プロジェクト工程をおさらい
システム開発プロジェクトは様々な工程から成り立っています。これはシステム開発を効率よく実施し、プロジェクト開始時に計画したスケジュール・品質・コスト通りに開発を進めることが目的です。
工程 | 作業内容 |
---|---|
要件定義 | クライアントから要望をヒアリングし、システムに実装すべき機能を定義する |
設計 | 要件定義で整理した内容を具体化し、どうやってシステムに実装するのかを明確にする。画面や帳票・機能のアウトラインを設計する基本設計と、どうやってプログラミングするかを定義する詳細設計に分かれることもある。 |
開発 | 設計内容を元にプログラム言語を使ってプログラミング(製造)をする |
テスト | 開発工程で作成したプログラムが正しく動くことを検証する。検証内容・範囲などによって単体試験、結合(内部・外部)試験、システム試験、運用・受入試験などと工程が細かく分かれることもある。 |
システム移行 | 移行手順書を作成し、関係者への説明・承認を経て商用環境でのプログラム切り替えを実施する。 |
運用・保守 | 切り替え後にシステムが安定稼働するように運用する。また定期的なメンテナンス、アップデートなどの保守対応を行う。 |
一般的には以下のような開発工程で構成され、要件定義〜設計までを上流工程、開発〜運用・保守までを下流工程とよびます。
また、プロジェクトの規模や特性、開発方針などにより各工程の分け方に差異があります。現場のルールやプロジェクト運営方針を確認してから作業にあたりましょう。
設計工程の仕事内容
設計とは大きく、基本設計と詳細設計に分類されます。基本設計はクライアントからヒアリングした要望や、要件定義で定義した要件内容をシステム的にどうやって実現するのかを明確にするプロセスです。システムの全体像・大枠を決めていく作業なので概要設計とよばれることもあります。画面や帳票のレイアウトや表示項目の仕様を決めたり、裏で動く処理や外部システムのインターフェース仕様を決めたりする工程です。
詳細設計は各機能を実装するためにどんなプログラムを組む必要があるのかを考え、詳細化・具体化をしていきます。基本設計で定義した内容に沿って、各機能の処理内容やフローを明確にする、データを格納するテーブルのカラム名やデータ型などを定義するなどが作業内容です。
基本設計では利用者視点でシステムを検討するのに対し、詳細設計では開発者(プログラマー)の視点で設計を進めます。
開発工程の仕事内容
開発工程はプログラミングを実施する工程です。詳細設計で指示された内容をもとに、プログラミング言語を使ってコードを書いていきます。使用言語の選択肢は出力デバイスや製品の特徴によって変わってきますので、開発対象のシステムや担当機能に応じた使い分けが必要です。
開発工程は実際に動くプログラムを作成する工程で製造やコーディング・MK(Make)工程などとよばれることもあります。また、プログラム単位で正しく動くかどうかを検証する単体試験を一緒に実施する場合もあります。
システム設計と開発の違い
システム設計と開発の工程は一括りで実施することもありますが、全く作業内容や目的は異なります。それぞれの役割を意識して業務にあたることでムダなく効率的に開発を進めることが可能です。ここからはシステム設計と開発の違いを3つの観点から比較して解説します。
違い1 - 仕事内容
設計は「どんなものをどうやって作るか」を考える仕事です。画面や帳票などクライアント・利用者の目に見えるものを設計していくことも多いので、関係者と密にコミュニケーションをとりながら具体化していきます。詳細設計の場合も機能仕様や機能間の繋がりを設計するため開発メンバーとのやり取りは多くなるのが一般的です。
対して開発は「プログラムを組んでシステムを完成させる」仕事です。設計工程で作成される設計書や定義書に従ってソフトウェアが動くよう、様々なプログラミング言語やフレームワークを使ってソフトウェアを完成させていきます。どちらかというと個人で進める作業です。
違い2 - 担当する人
各工程を担当する人のことを設計はSE(システムエンジニア)、開発はプログラマーと区別することが多いです。ただし、小規模なプロジェクトや所属する企業などによっては一人のエンジニアが全ての工程を担当することもあります。システム開発工程の全般を幅広く担当するエンジニアと専門性高く開発工程に集中するプログラマーといった位置づけです。
大手のソフトウェア開発企業では入社後から数年間はプログラマーとしての経験を積み、担当する業務の幅を広げる意味でシステムエンジニアにステップアップすることもあります。
違い3 - 求められる能力
設計と開発では求められるスキル・能力も異なります。設計工程ではIT全般の幅広い知識、コミュニケーションスキル、プログラミング知識などが必要です。特にクライアント・開発メンバーとともに作業を進めるので、相手の意図を引き出し自分の意見を正しく伝える力が求められます。
開発工程ではプログラミングスキルやコミュニケーションスキルなどが円滑に進めるために必要となるスキルです。開発スピードや出来上がったプログラム性能は担当者スキルに依存します。設計書を読み解き論理的に考え、最適なプログラムを書き出すための能力が重要です。また、IT技術は日進月歩で発展しているので常に向上心を持って最新技術を学ぶ意欲も欠かせません。
製造業における設計・開発の違い
自動車や半導体メーカーなど製造業にも設計・開発の仕事が存在します。エンジニアのものとは少し意味合いが異なるので参考として紹介します。製造業における設計は「研究や開発によって生み出されたモノを形にすること」です。商品の作り方を明示した設計図を作り出します。
対して開発は「世の中に無いモノを生み出すこと」が仕事です。先行技術や要素技術など直接商品開発に繋がりませんが、事業や企業・業界全体の核となるような技術を開発することを目的としています。
ただし、統一された職業名ではなく同じ仕事内容であっても企業によって名称はバラバラです。設計開発と一括りにしている場合や、開発の中にも研究開発や商品開発、技術開発など何を仕事内容にするのかによって呼び方を変えることもあります。
設計と開発の違いを理解して円滑にプロジェクトを進めよう
設計開発は目的や仕事内容は異なりますが、独立した工程ではなく相互に影響しあう関係性です。設計者は開発者を意識し技術的に実現可能な設計をする必要がありますし、開発者も設計者の意図を汲みとりシステムを作り上げます。
前後の工程、さらにシステム開発工程全体を意識して業務を進めることで、プロジェクトをスムーズに進めることが可能です。自分の担当する工程だけに注力するのではなく、視野を広げるのを意識してみましょう。