ソフトウェア開発を体系化するとした場合に考えたいこと
みなさんは「A-SPICE」と言うものをご存知ですか?
読み方は「えーすぱいす」。Automotive SPICE(Software Process Improvement and Capability dEtermination)の略で、車載ソフトウェア開発プロセスのフレームワークを定めた業界標準のプロセスモデルのことを意味します。
主には自動車に200以上搭載されていると言われるECU(Engine Control Unit)に組み込むプログラム群を開発する際の開発体系と考えればいいでしょう。ですので、基本的には組込み系の技術が使われることが多いと思いますが、最近ではCASE
「Connected(コネクティッド)」
「Autonomous(自動運転)」
「Shared&Service(シェアリング&サービス)」
「Electric(電動化)」
の"C"を実現するために、インターネットでつながる技術も使われるようになりましたから、ただの組込み系技術だけではすまなくなってきている部分もあると思います。
まぁ、それはさておき。
この車載ソフトウェア開発に特化して、A-SPICEと言う考え方があり、AUTOSAR(オートザー、AUTomotive Open System ARchitecture)をはじめ、多くの自動車メーカーが導入しています。
ここでは、とりわけ車載ソフトウェアについて語りたいのではなく、このA-SPICEの掲げるソフトウェア開発体系群の整理の仕方が、システム開発を行う上で非常にわかりやすくって、
「エンジニアの仕事って、プログラミングだけじゃないよね」
ということを、ハッキリと分からせてくれます。
この考え方を最優先にしたいわけではないのですが、この図がとても整理されていて、もう少しアレンジする必要があるにしても、ベースラインとしては非常に優秀なのではないかと思ってしまうわけです。
この体系は、決して自動車業界のみ、車載ソフトウェア開発のみに特化した考え方ではないと思います。
一般的に、ここで言うSWE(ソフトウェア エンジニアリング)プロセス群が、V字モデルの基本となっているのでしょう。
SWE.1 =要件定義
SWE.2 =基本設計
SWE.3 =詳細設計+プログラミング
SWE.4 =単体テスト
SWE.5 =結合テスト
SWE.6 =システムテスト
と言う位置づけになるでしょうか。
これらすべてのプロセスを修得し、正しく運用できる人のことをエンジニア(Engineer)と呼ぶのだと、私は思っています。世の中的には、SWE.1までできるエンジニアは「上級エンジニア」と呼ぶところもあるようです。
そして、SWE.3およびSWE.4しかできないエンジニアは、あえて「エンジニア」と呼ぶ企業もあるようですが、通常は「プログラマー」です。エンジニアリングしていませんから。
なぜ、「プログラマー」と呼ばずに「エンジニア」と呼ぶかと言うと、人的リソースの労働力を切り売りする、派遣や準委任の場合、
プログラマーより、エンジニアの方が報酬が高いから
です。だから、とりあえず「エンジニア」と名乗るようにする風習がこの国にはあります。
たとえば、これは役割毎の時給差を示したものです。
見ての通り、プログラマーとエンジニアでは、実に1.5倍近い開きが出る場合もあります。どんなに優れていても、どんなに貢献しても、どんなに結果を出しても、学歴と同じく『肩書き』だけでこのように差が出てしまいます。
そのため、どの会社でも「そうした事情を理解したうえで」建前上、すべての人的リソースを"エンジニア"と呼ぶようにしています。
ですが、私は明確にしたいですね。
エンジニアはエンジニアリングができるから「エンジニア」なのであって、プログラミングしかできないのであれば、それは「プログラマー」と名乗るべきです。
評価制度は別途見直すとしても、プログラマーをエンジニアと名乗らせると、システム開発の全体像を理解しないまま成長し、いずれ年功序列的にリーダーやマネージャーを担う立場になってしまった時に、システム開発の全体を知らないままプロジェクトを進めようとしてしまうからです。
先ほどの図にあったように
これらのプロセスのうち、エンジニア、リーダー、そしてマネージャーを名乗る人たちは、どれだけの進め方を理解しているでしょうか。
「SYS(システムエンジニアリング)」はハードやインフラも含めた、本当の意味でのシステムを指すため、どちらかというとITアーキテクトの領域になるかも知れません。
ですが、「AQO(取得プロセス)」であればITコンサルティング、「MAN(管理プロセス)」や「SPL(供給プロセス)」、「PIM(プロセス改善プロセス)」「SUP(支援プロセス)」であればマネージャー、「SWE(ソフトウェアエンジニアリングプロセス)」、「SUP(支援プロセス)」の他、「REU(再利用プロセス)」なんかはエンジニアやリーダーの領域ではないかと思うんです。
いただいたサポートは、全額本noteへの執筆…記載活動、およびそのための情報収集活動に使わせていただきます。