設計と開発の違いとは?

 2018.06.19  株式会社システムインテグレータ

同じような用途で使用されたり、ひとくくりにして使用されたりすることも多いのが「設計」と「開発」です。これらは似ているようで、実は違うことを指しています。これはアプリケーション開発プロジェクトにおいても同様で、設計フェーズと開発フェーズは明確に分かれています。

今回はそんな設計と開発の違いを一般論とアプリケーション開発プロジェクトという2つの視点から解説します。

一般論としての違い

「設計」と聞くと建築士や機械設計士など、図面のようなものを書いてものづくりの基本となる設計をする人を想像する方が多いでしょう。実際に設計とはそうした人たちの仕事を指します。設計するモノは違ったとしても、共通している点は「研究や開発によって生み出されたモノを形にすること」でしょう。

たとえば建築士なら今ある技術をフル活用して、耐震性の高い住宅などを設計します。機械の設計士も同じように既存の技術や最新の技術を組み合わせて、クライアントが求める機械を製作するための構造を設計として形にすることが仕事です。そのため設計では次の要素を意識することが大切です。

製造、建築など制作のコスト

成果物による付加価値の向上

成果物の耐久性

内外部のデザイン

新規CTA

設計に向いている人というのは例えて言うなら「舗装が得意な人」でしょう。ゼロからモノを作り出すことよりも、すでにあるモノをより良いモノにするための創意工夫が得意なタイプです。

これに対して開発は「世の中に無いモノを生み出すこと」と言えるでしょう。目標に向かって試行錯誤を繰り返し、既存のモノだけでなく、新しいモノを生み出して世に送り出す。研究開発と言ったりもするので開発は研究に近い概念です。

世の中に無いモノを生み出すことはゴールの見えないマラソンをひたすら走っているようなものでしょう。本当にゴールにたどり着くかどうかの保証もないまま目標に向かって突き進むことができる人に向いている職種です。

このように設計と開発ではその位置づけや特徴の違いは大きく、仕事内容も求められる能力や性格もまったく違います。これが一般的な設計と開発の違いです。

[RELATED_POSTS]

アプリケーション開発プロジェクトにおける設計と開発の違い

ではシステム開発やアプリケーション開発における設計と開発の違いはどうでしょうか。アプリケーション開発とはクライアントが依頼した通りのモノを構築し、クライアントが持っている業務上の課題を解決したり、新たなビジネスを構築するという仕事です。このアプリケーションは大規模な業務システムだったり、簡易的なスマートフォンアプリだったりその種類は様々でしょう。ただ、どのようなアプリケーション開発プロジェクトでも設計と開発は必ず存在します。

アプリケーション開発プロジェクトにおける設計とはシステムエンジニアの仕事です。システムエンジニアはプログラミングに関する基礎知識を持っており、かつプロジェクト全体を管理する監督者のような存在です。それに対して開発はプログラマーを指します。専門的なプログラミングスキルを持ち実際にアプリケーションを構築する職人的存在です。

システムエンジニアとプログラマーの仕事内容の違いを簡単に整理していきましょう

≪システムエンジニアの仕事内容≫

プロジェクト関係者の中でクライアントやプログラマーなど、すべての関係者のハブ的存在として仕事をこなすのがシステムエンジニアです。最初の仕事はクライアントから現状の課題やどういったアプリケーションを構築したいかという目的などをヒアリングし、要件としてまとめます。

さらにその要件から基本設計と詳細設計を作り、プログラマーと協力しながら最終的なアプリケーション設計を完成させます。クライアントの業務に関する知識やコミュニケーション能力に加え、プログラマーと対等に会話をするための技術的知識や、クライアントにアプリケーションの概要を分かりやすく説明できるプレゼン力も欠かせません。

日本ではプログラマーのキャリアアップ先としてシステムエンジニアを目指す人が多く、プログラマーとして数年経験を積んだ人がシステムエンジニアになることが多いでしょう。

≪プログラマーの仕事内容≫

プログラマーの仕事はまさに職人としてプログラムを作ることです。システムエンジニアと協力して完成させた設計に従ってソースコードを書き(コーディングという業務)、各プログラムのテストを行いつつ最終的なアプリケーションを完成させます。コーディングがおもな仕事なので、長時間同じ作業を行う集中力とプログラミングに対する熱意が求められます。

ただし最近では、プログラマーがクライアント先に出向いてアプリケーションの説明をすることも多いようです。そのため多少のコミュニケーションも求められるようになっています。日本ではシステムエンジニアの下請け的なイメージもありますが、海外では専門的なプログラマーはシステムエンジニアよりも重宝される存在です。

このようにアプリケーション開発プロジェクトにおける設計の位置づけは一般論と同様ですが、開発に関しては研究というよりも構築という概念の方が強くなります。これはシステム開発やアプリケーション開発の領域での特徴でしょう。ただし世の中にまだ存在しないアプリケーションやプログラミング言語の開発に取り組むプログラマーも多数存在するので、そうした人達は研究者に近い開発者かもしれません。

設計フェーズと開発フェーズは何をする?

アプリケーション開発プロジェクトにおける設計フェーズは、開発フェーズの前工程に存在します。主な作業内容としてクライアントからヒアリングした内容をもとにまとめた要件を、基本設計と詳細設計に落とし込んでいきます。

基本設計とはユーザーや運用管理者視点からアプリケーションに必要な機能や画面レイアウト、入力および出力するデータや帳票の種類などを体系的にまとめたものです。アプリケーション開発は建築や製造のようなものづくりと違って無形なので、図面のような設計図は存在しません。その代わりドキュメントとして、テキストや表を用いてアプリケーションの設計を行います。

詳細設計は基本設計の内容をもとに開発者(プログラマー)視点でアプリケーションの細部まで設計することです。ここで設計した内容に沿ってプログラムを作成していきます。いわゆる設計の最終版なので何度かレビューを繰り返し、間違いがあったら早急に改修することが良いアプリケーション開発につながります。

こうした設計フェーズを過ぎると次に待つのが開発フェーズです。このフェーズにてプログラマーが設計書に沿ってプログラムを開発します。設計通りにアプリケーションを一気に作り上げる方法と、設計項目の優先度に応じて開発していくという方法があります。後者の開発方法はアジャイル開発といわれ、設計項目ごとに開発→テスト→改善を繰り返していくため、イメージを合わせながら質の高いアプリケーションをより早く開発することが可能です。ただし全体のスケジュールを把握しづらいという難点もあるため、システムエンジニアやプロジェクトマネージャーのマネジメント力が試されます。

設計と開発の違いに理解を示す

以上のように、一般論でもアプリケーション開発プロジェクトでも設計と開発には大きな違いがあります。経営者としてはこの違いを明確に理解し、システムエンジニアにはシステムエンジニアの、プログラマーにはプログラマーの評価基準を作ることが大切です。プロジェクト成功の背景にはシステムエンジニアとプログラマー双方の力が不可欠です。ぜひ設計と開発の違いを理解して、それぞれにおける立場や役割を踏まえたうえでプロジェクトを進めていただければと思います。

新規CTA

RECENT POST「コラム」の最新記事


この記事が気に入ったらいいねしよう!
ブログ購読のお申込み

RANKING人気資料ランキング

RANKING人気記事ランキング

RECENT POST 最新記事

OBデザイナーで
生産性向上!