ソフトウェアエンジニアが労働について情報発信するブログ

ブラック労働からホワイト労働まで経験したソフトウェアエンジニアが世の中にとって役立つことを情報発信していく。

ソフトウェア開発における「上流工程」「下流行程」の呼び方に違和感あり!「V字モデル」にも苦言!

当ブログではアフィリエイト広告を利用しています

システム開発における、ソフトウェア開発は次のような工程から成る。情報処理技術者試験の参考書や、インターネットにも多く見られ、各々の表現は異なるものの概ね下記のようになっている。


(1)要件定義
(2)外部設計
(3)内部設計
(4)コーディング(プログラミング)
(5)単体テスト
(6)結合テスト
(7)システムテスト
(8)運用テスト

「V字モデル」というものがある。

システム開発は上記


(1)→(2)→(3)→(4)→(5)→(6)→(7)→(8)

の順に進んでいく。とれかの工程が一つでも欠けると成り立たない。

また、上記工程を大きく2つにグルーピングすると、


「(1)→(2)→(3)→(4)」と
「(5)→(6)→(7)→(8)」

となる。
前半は設計工程、即ちシステムを作る側の工程である。後半は検証工程、即ち設計したシステムが要求を満たしているかテストする工程である。

そして、工程前半は「(1)→(2)→(3)→(4)」の順に「上流」から「下流」に、「(5)→(6)→(7)→(8)」は「下流」から「上流」にという流れになる。開発工程全体のなかでは、(1)と(8)が最も「上流」、(4)と(5)が最も下流と呼ばれている。

(4)と(5)が最も「下流」となっている部分で折り返し、設計工程と検証工程が互いに対となっていること、即ちVの字を成していることから、「V字モデル」と呼ばれる。

この記事では、「上流工程」「下流行程」の呼び方による両者のイメージや、一般的に「V字モデル」と呼ばれるこの形態についての実態や問題点、あるべき姿について語る。


1.プログラミングを「下流行程」と呼ぶのは失礼だ!

プログラミングには様々な言語があり、それぞれの文法に従って、処理したい内容を記述していく。プログラミングは難しそう、苦手という方もおられるはずである。最近では、プログラミングスクールが増えてきたり、小学校の授業でもプログラミングが取り入れられてきている。プログラミングとは、ある程度学ばなければならないものであり、人によっては挫折してしまうこともあるかも知れないため、何もせずにできるようになるほど簡単ではなく、スキルが必要である。

システム開発においても、その開発するシステムがビジネスにどのように貢献するかという、全体を俯瞰した形で、企画や要件定義、仕様検討が行われる。そして開発したシステムが、元々の要求を満たしているか、描いていたビジネスに貢献できるかという部分をテスト等で検証する。この部分を「上流工程」と呼んでいる。

そして、システムの詳細設計、プログラミング、単体テストを、専門的な知識・技術を活用して実施する。この部分を「下流行程」と呼んでいる。

「上流工程」にも、「下流行程」にもスキルが必要である。しかし、実際は「上流」「下流」などと、あたかも上下関係があるかのように語られるところに違和感がある。「上流工程」の部分を自社社員に携わらせ「下流行程」を下請け企業に丸投げする企業もあれば、「下流行程」でしっかり手を動かす人材を求めている企業もある。

重要なのは「上流工程」も「下流行程」も必要であり、どちらか片方ではシステム開発は成り立たないということである。

「上」「下」の言葉を使って、下流行程」などと呼ぶ方が失礼なくらい、プログラミングを含む「下流行程」は重要であり、システムを開発し作り上げていく職人のような位置づけである。

2.プログラミングはスキルが必要で需要が増している!

プログラミングは高い専門スキルが必要である。プログラミングには様々な言語が存在するが、その言語を勉強し、そして実践し、経験を積まなければ、一流のプログラマーになれない。誰でもできることではないのである。

海外では、プログラミングと言うと高度専門職に位置付けられ、高い専門性を持つ人材が高い給料を貰っている。国によっては、日本の管理職くらいの給料を貰っている人もいるくらいである。

日本はどうか?

日本のプログラマーの給料は安い。

日本のIT企業に昔見られたのが、OJTと称して新人にいきなりブラック労働の現場に放り込ませ、「見て覚える」「体で覚えろ」というくらい扱いが荒い。そんな劣悪な環境で、かつ給料が安くても、日本のビジネスマンは気合と根性で乗り切る。そして、段々とスキルも身につくが、そのような人材が上司世代になった時には、昔の苦労話を若手に対して自慢げに話す。そして、自分が育てられたやり方と同じやり方で部下を育てる。今の時代こんなやり方では通用しない。

いかにも、「上流工程に携わっている人の方が優位性がある」かのような風潮にも見える。

中途採用の求人票においても、

「上流工程に携わることができます」
「企画、設計、開発、テストと各工程を一貫して携わるため幅広いスキルが身につきます」

というアピールを見たことはあるが、

下流行程に携わることができます」

というアピールは見たことがない。

メーカーやシステム開発企業の大半が、エンジニアやプログラマーが不足していると言われる状況の割には、これらの人たちへの敬意が感じられない。だから、ただでさえ労働人口が減少しつつある状況に加えて、若手はこのような職業を敬遠してしまうのである。

不足しているのは企業単位ではなく、国単位でIT技術者が10万人程度不足していると言われている。ITはこれまで我が国のみならず世界の産業を支え続けてきており、これからもますます発展していく分野である。そして、それだけ需要がある分野でもある。最近では、小学校の授業にプログラミングを導入していることからも、その重要性が伺える。

3.そもそも「上流工程」・「下流行程」のような呼び方をなくすべきだ!

「上流工程」・「下流行程」のような区分がおかしいどころか、「上流工程」には不要なスキルでも「下流行程」には必要なスキルがある。また、その逆もある。互いにそれぞれ必要なスキルがある。

冒頭で説明した「V字モデル」だが、設計工程と検証工程が互いに対となっていることを表現するために活用するくらいにとどめておくのが良い。

一方、システム開発は各工程のどれか一つでも欠落すると成り立たないのである。一連の開発フローとして表現するなら、「V字モデル」ではなく、各工程を横一列に書くべきである。個人的なイメージだが、「上」「下」ではなく、漢数字の「一」をイメージした「一字モデル」のような表現方法がより適切と言える。

「上流工程」・「下流行程」のような呼び方をしてしまうと、「上」「下」の関係を連想させ、「下流行程」を扱うエンジニアは低スペックでも良いかのような印象を与えてしまう。「下流行程」には「下流行程」に必要な高いスキルが求められ、その分野の専門家なしではシステム全体が成り立たないくらい重要な位置づけなのである。むしろ、下流行程」の専門的な技術のおかげでシステム全体が成り立っているのである。そのことを忘れてはならない。

「企画」「設計」「実装」「テスト」等各工程の呼び方のほうが、それぞれで果たすべき役割と重要性が感じられるだろう。

他の良好事例を挙げると、例えばWebシステム開発では「フロントエンド」「バックエンド」という、役割すなわちシステムのどの部分を扱うエンジニアなのかに基づいて呼ばれる名称があり、「上」「下」のような関係を感じない。

高い技術力が必要な割には、「下流」などと呼ばれ、低い立ち位置に晒されるような実態が分かっていれば、誰が進んでそのような職に就きたがるだろうか?

プログラミングを好きでやる人は少なからずいるが、求められる技術力と報酬とのバランスがあまりに悪いと、日本の異常な点の1つとして認識され、エンジニア不足を助長する引き金になりかねない。

4.「下流行程」の位置づけに、日本が世界から後れを取った要因であるIT軽視の風潮を感じる!

日本は歴史的背景から製造業が強く、これまでの製品・システム開発は、モノ・ハードウェアが中心で、IT・ソフトウェアは業務効率化のためのおまけのようなものと軽視されてきた。

そして、世界では発展し続けているソフトウェアの部分を、日本では下請けに丸投げし、技術の空洞化を招いてきた。

これこそが、日本の製造業が衰退している原因である。

大手メーカーにみられる、


「上流工程に携わっている人の方が優位性がある」

ような感覚では、競争力を失う。


「この年齢になっても、まだコード書いてるの?」

こんなことを言っていた人がいた。プログラマーやエンジニアを低く見ており、ソフトウェアが生み出す付加価値をわかっていない人だ。「下流工程」をバカにすべきではない。

また、とあるネット上にはこのような説明もある。

上流工程は主にシステム開発プロジェクト全体の内容を決定・管理して、下流工程は実際の開発業務を担当します。 大規模なプロジェクトの場合、上流工程は大手Slerシステムインテグレーター)などの大企業が担当することが多く、下流工程は下請けや関連会社の中小企業が担当するのが基本的なIT業界の構造です。

日本のIT業界の実態としてはその通りなのだが、この構造こそが問題であることが別途指摘されている。海外では、管理職でもソースコードを書くことがあるという話を聞いたことがある。

今やソフトウェアは経営戦略に欠かせない。これをわかっていない企業には、優秀な人は入ってこない。経営陣はそこに対する危機意識を持ってもらいたい。逆にエンジニアを積極採用している企業は、エンジニアの役割が重要であることをわかっており、今後の伸び代があると考えて良い。エンジニアとして転職するなら、この観点が必要だ。

「Tecgateエキスパート」はITエンジニア経験者で転職希望者の方に向けた、ITエンジニア向け転職サイトです。スキルや実績はあるのに、リターンがいまいちというITエンジニアの方、今よりも更にハイクラスのSEを目指したい方は必見。希少ポジション、非公開求人多数の同サイトは、是非とも登録しておきたい転職サイトです。