システム開発におけるアルゴリズム開発はどう位置づけられるか?~ハートテクノロジーズブログ~
目次
はじめに
システム開発において、アルゴリズム開発という分野をどう捉えたら良いかについて、この記事では分かりやすく整理していきたいと思います。
ポッドキャストでもお話ししています
以下の画像をクリックしてお聞き下さい
↓
そもそもシステム開発とは?
コンピュータ(計算機)によって制御される製品、公共物、部品などをシステムと定義づけて、そのシステムの開発をすることがシステム開発になります。
システムの例を申し上げます。
大きなモノはスマートシティとか巨大プラント等もありますし、小さいモノだと家電製品や、マイクロプロセッサも搭載されたセンサー部品もシステムなのです。
今やありとあらゆる物、サービスがシステムといえますので、沢山のシステム開発が行なわれていると言えます。
アルゴリズム開発とは?
それに対して、アルゴリズム開発とはどういうものでしょうか?
アルゴリズムは英語で、Algorithm 元々は演算法、手続き、手順のことを言います。そこでのキーワードは、”計算可能な~”ということになります。
本来はアルゴリズム自体、コンピュータのプログラムとは限らず、数式などを用いてある演算を行なって、ある解を見いだすというのもアルゴリズムになります。
コンピュータのソフトウエアとしてプログラムを書く場合、その中に必ずアルゴリズムは入っていると言えます。
ただし狭義には、コンピュータプログラムの全てがアルゴリズムであるという場合は少ないです。コンピュータプログラムの中で、演算に関する処理のところがアルゴリズムといえます。
例えばディスプレイへの出力処理、操作ボタンの入力処理、無線通信制御処理などのコンピュータプログラムをアルゴリズムと言う場合は殆どありません。
アルゴリズム開発でのポイント
アルゴリズムはデータ構造との関連が非常に重要になります。計算可能な手続き、手順がアルゴリズムですので、当然データを扱うことになります。
アルゴリズム開発では必ず以下のような処理が入ります。(全てとは限りませんが・・)
・データを保管する
・データを並び替える
・データを探す
・数式を用いてデータの組み合わせからある解を見いだす
それらを最新の計算手法を駆使して行なうのが、アルゴリズム開発のポイントになります。
システム開発とアルゴリズム開発の関係
2つの考え方があります。
1)システム開発フェーズの中で、アルゴリズム開発は詳細設計の中で行なわれるプログラム設計と捉えられる。
2)実際の商品に向けてのシステム開発の前に,要素技術開発としてアルゴリズム開発を行ない、そこで作られたオブジェクトコードなどを
システム開発における詳細設計の中に取り入れる。
アルゴリズム開発のボリュームが小規模であれば、1)でも開発可能でしょうが、ボリュームが大規模であるほど、
実際の商品に向けてのシステム開発の前に、要素技術開発、 先行技術開発として、アルゴリズム開発を行なっておくべきだと思います。
以下図で説明致します。
上の図は、システム商品開発スタート時に引き継ぐというイメージで書いています。横軸は時間だと思ってください。
この図のようにシステム開発スタート時点ではアルゴリズム開発は完了しているのが理想ですが、実際にまだアルゴリズム開発が終わっていない場合も有るかも知れません。
その場合は、
実際にアルゴリズム開発の結果の成果物であるオブジェクトコードなどをシステム商品開発フェーズの中の詳細設計中に取り込むといった開発スケジュール立案も可能です。が、
アルゴリズム開発がうまくいかなかった場合にはそのアルゴリズムを商品に採用できなくなるというリスクがあります。
従いまして私は、アルゴリズム開発はシステム商品開発時点では完了させるというやり方を推奨したいと思います。
今回の記事はこれで終了します。別の記事でアルゴリズム開発に必要な帳票について触れていきたいと思います。
関連記事
⇓
IoT関連技術と知財関連コラボシリーズ企画第3回 ソフトウェア・アルゴリズムと特許権・著作権の関係について分かりやすく解説します