杉岡システム公式ブログ

https://blog.sugiokasystem.co.jp

協調設計とアジャイル型開発手法を取り入れたシステム開発について

タイトルイメージ画像

 

はじめに

この記事では、システム開発の手法をご紹介するとともに、杉岡システムの開発手法(協調設計・アジャイル型開発)・開発の流れも詳しくご紹介します。

従来と現在のシステム開発の違い 

従来はシステム開発を上から順に段階を経て行い、前の工程に戻らない一直線型の開発手法「ウォーターフォール型開発」が主流でしたが、

現在は、ハードウェアとソフトウェアの開発を連携させて、「S/W設計」~「コーディング」~「デバッグ」間を細かく行き来しながら機能のリリースを繰り返す「アジャイル型開発」という開発手法が主流となってます。

アジャイル型開発手法を取り入れることで、今まで一方通行だった開発スタイルが、相互に行き来しながら不具合を発見次第処理できるスタイルになったことで、開発の効率やコストが格段に向上しました。

以下、その点を踏まえて、従来の開発スタイル「ウォーターフォール型」と、現在の開発スタイル「アジャイル型」の詳細と開発の流れ・双方の違いについてご紹介します。

ウォーターフォール型開発

ハードウェアとソフトウェアの双方からアプローチをかけていく協調設計に対して、往来の手法ではハードウェアとソフトウェアを別々に設計し、最後に統合するのが一般的でした。

そのため、最終的には一つのシステムとして機能するはずのものを「お互いが別々に作る」ために、度々齟齬が生じ、性能やコスト面でもあまり効率的ではありませんでした。

また、ソフトウェア開発側から見ると、下の図(フローチャート)を見ても分かるように、ソースコードコンパイルから先の段階に進むにはハードウェアの完成を待たなければならないことも多くありました。

つまり、ソフトウェアの開発はハードウェアの実装後に行わなければならなかった上、そのハードウェアの設計においても、設計対象となるアプリケーションを始めとしたシステムに応じて求められる性能やコスト面といった様々な制約の下で行わなければならず、開発は困難を極めました。

ハードウェアとソフトウェアを完全に切り分けて開発するために、どちらも最初の段階で決めた仕様書を元に開発を進めるしかなく、それも途中段階まで来たら片側の開発を待つことになるのですから、時間もコストも非常に掛かりました。

ウォーターフォール型開発の流れ

従来の組込みシステム開発(ウォーターフォール型)の流れ・フローチャート

仕様書の作成:システム設計

ハードウェアとソフトウェアの仕様設計

 

ハードウェア部
  1. 基本設計・詳細設計

  2. 回路設計
    半導体のカタログやマニュアルを見ながら回路図の作成
    ・使用する部品の価格や販路状況を調査しながら使用部品の選定
    ハードウェアの設計等にソフトウェアは強く依存するため、設計には何度も試行錯誤する必要がある

  3. 試作
    ・プリント基板上に部品の取り付け

  4. デバッグ

 

ソフトウェア部
  1. 基本設計・詳細設計

  2. コーディング

  3. デバッグ
    ・机上で行う
    ・主に文法エラーのチェック作業

  4. ハードウェアの開発を待つ
    ・ハードウェアが開発されるまで、ソフトウェア開発はこれ以上先に進めないことも多かった。
    ・工夫をこらすことでハードウェアの開発を待たずに作業を行うこともあったが、それでも協調設計と比べると、ハードウェアの設計を想像しながら手探りでしなければならず、非効率的。

  5. ソースコードコンパイル
    ソースコードコンパイルとは?
    プログラミング言語で記述されたソフトウェアの設計図(ソースコード)を、コンピュータが実行可能な形式(オブジェクトコード)に変換する作業のことです。

    ELITE Network「ビジネス用語集」>「コンパイルとは?」より引用

  6. ロード・モジュールの作成

  7. 実機デバッグ単体テスト
    ・基板にソフトウェアを組み込む(ハードにソフトを組み合わせる)
    ・実機上で動作させてバグを発見・修正
    ・バグを発見次第ソースコードを修正して再度オブジェクトコードを作成する作業を繰り返す
    ★このバグ処理作業は非常に時間がかかる

  8. 結合テスト
    ・複数のモジュール間で上手く動作しているかの確認

  9. 統合テスト
    ・プログラム全体が連携して動作しているかの確認

 

試作
  1. 第一次試作
    ・仕様書との相違や部品の不備を確かめる
    デバッグ

  2. 第二次試作
    ・お客様のもとへ納品し、製品チェックおよび品質確認
    ・不備や仕様と異なる点を発見次第新たな試作品を作成し、納品

 

製造・量産

製品は必要に応じて改良を加え、随時製造を行います。
万が一不具合が起きた場合は即座に対応します。

 

ウォーターフォール型開発まとめ

以上のように、システム開発を上から順に段階を経て行い、前の工程に戻らない開発手法を「ウォーターフォール型開発」と呼びます。

ウォーターフォール型とは、システムの開発を「基本計画」「外部設計」「内部設計」「プログラム設計」「プログラミング」「テスト」という工程に分けて順に段階を経て行う方法です。 前の工程には戻らない前提であることから、下流から上流へは戻らない水の流れにたとえてウォータフォールと呼ばれています。

Okapi Project「ウォーターフォール型の開発手法」より引用

アジャイル型開発

上述の「従来のシステム開発ウォーターフォール型)の流れ(フローチャート図)」を見ても分かるように、往来の手法ではハードウェア部にとってもソフトウェア部にとっても設計およびデバッグ作業が大変困難でした。

これを解決したのが、ハードウェア・ソフトウェア双方を連携させながら開発していこうという発想から来た「アジャイル型開発」および「協調設計(HW/SW Co-Design方式)」という設計手法です。

アジャイル型開発手法では、仮想ハードウェアを利用することで協調シミュレーションを行うため、ハードウェアとソフトウェアの同時開発を可能としています。

設計の効率化・コスト削減という面においても、(特に組込みシステム開発においては)協調設計という手法は欠かせないものとなってます。

このため、アジャイル型と呼ばれる開発手法は、しばしば協調設計の一部として組み込まれています。

 

協調設計(HW/SW Co-Design方式)とは

協調設計とは、ハードウェア・ソフトウェア双方を連携させながら開発していこうという発想から来た「協調設計(HW/SW Co-Design方式、コデザイン方式)」という設計手法です。

協調設計では、仮想ハードウェアを利用することで協調シミュレーションを行い、開発にあたることで、ハードウェアとソフトウェアの同時開発を可能としてます。

設計を効率化・コスト削減という面においても、(特に組込みシステム開発においては)協調設計という手法は欠かせないものとなってます。

 

協調設計・アジャイル型開発の流れ

協調設計・アジャイル型開発の流れ(フローチャート)

仕様書の作成:システム設計
  • ハードウェア仕様書作成・システム設計
  • ソフトウェア仕様書作成・システム設計

 

システム・アルゴリズムの設計・検証

 

モジュール抽出
  • モジュールの動作順序・階層関係を抽出
  • ハードウェア・ソフトウェアのトレードオフ
  • ハードウェア部・ソフトウェア部それぞれにモジュールを割り振る

 

HW/SWを並行して設計(協調設計
  • ハードウェアの設計……ソフトウェアとの互換性を確認しつつ設計
  • ソフトウェアの設計……仮想ハードウェアを構築してソフトウェアを設計(常にハードウェアとソフトウェアの互換性やエラー、バグの確認をしながら設計が可能)
  • 「S/W設計」~「コーディング」~「デバッグ」間を細かく行き来しながら、機能のリリースを繰り返す(バグの早期発見も可能)。これを「アジャイル型開発」と呼ぶ。
  • デバッグの時はハードウェアとソフトウェアを相互に連携させながら行う。
ハードウェア設計
  1. 回路設計
  2. アートワーク設計
  3. 試作
  4. デバッグ(ハードウェアとソフトウェアを相互に連携させながら行う)

  ↓ ↑ 相互に連携

ソフトウェア設計
  1. 仮想ハードウェアの構築
  2. ソフトウェア設計
  3. コーディング
  4. デバッグハードウェアとソフトウェアを相互に連携させながら行う

 

試作・製造
  1. 第一次試作
    ・仕様書との相違や部品の不備を確かめる
    デバッグ

  2. 第二次試作
    ・お客様のもとへ納品し、製品チェックおよび品質確認
    ・不備や仕様と異なる点を発見次第新たな試作品を作成し、納品

 

製造・量産

製品は必要に応じて改良を加え、随時製造を行います。
万が一不具合が起きた場合は即座に対応します。

 

アジャイル型開発まとめ

このように、開発において少単位で実装とデバッグを繰り返す開発を「アジャイル型開発」と呼びます。

アジャイルAgile)とは、直訳すると「素早い」「機敏な」「頭の回転が速い」という意味です。アジャイル開発は、システムやソフトウェア開発におけるプロジェクト開発手法のひとつで、大きな単位でシステムを区切ることなく、小単位で実装とテストを繰り返して開発を進めていきます。従来の開発手法に比べて開発期間が短縮されるため、アジャイル(素早い)と呼ばれています。

発注ラウンジ「アジャイル開発とは?今さら聞けない開発手法のメリット・デメリット」より引用

アジャイル型開発手法と協調設計手法を取り入れることで、エラーやバグを早期に発見することが可能です。また、この開発手法だとデバッグ処理や変更・改良などが素早く行えるため、製品の性能やコスト面の向上にも繋がります。

ただし、この手法を用いるにはハードウェア・ソフトウェア双方の知識を持っている必要があり、難しい手法でもあります。

その点、杉岡システムではハード・ソフトどちらの知識もスキルも備えた技術者が設計・開発にあたっているため、迅速かつ柔軟な製品の開発・製造が可能です。

システム開発を依頼するに当たって注意するべき点

ここでは「組込みシステム開発」についてご紹介しましたが、他のシステム開発においても共通する部分は多いです。

その中でシステム開発を依頼するに当たって注意するべき点は、大きく分けて以下の2点です。

  • システム開発の手法(協調設計やアジャイル型開発を取り入れていると良い)
  • 技術者のスキルを見極める(特に協調設計はH/W・S/Wどちらにも精通している必要があるため)

これらは複数の会社に見積り依頼や開発までの日数・期間を確認すると見えてくるところも多いです。

例えば、複数の会社がAの製品開発について「開発費:800万円」「開発期間:2ヶ月」と提示しているのに対して、1社(仮にD社とする)だけ「開発費:1200万円」「開発期間:1年」などと提示した場合、D社は開発手法か技術者のスキルに問題がある可能性があります。(※提示した予算などの関係もあり、一概には言えないのでご注意ください

杉岡システムについて

弊社ではハードウェアとソフトウェアを組み合わせた開発を得意としており、ハード・ソフトどちらの知識もスキルも備えた技術者が設計・開発にあたっています。

協調設計とアジャイル型開発手法を取り入れることで、常にお客様のニーズを素早く取り入れ、製品の開発・改良・製造を行うことが可能です。

また、弊社ではあらゆるニーズにお応えするためにも、
企画・設計・開発・試作・改良・製造・量産までのプロセスを網羅した国内一貫生産体制と、製造後の徹底したアフターサポート(改良・修理)を行うことで、安定・洗練された技術と品質・サービスをご提供します。

www.sugiokasystem.co.jp

 

各種資料

システム開発関連サービス案内

システム開発の流れ・プロセス案内

会社案内

 

お問い合わせはこちら

製品開発に関するご相談、お見積りなど、お気軽にお問い合わせください。

  • お電話でのお問い合わせ
    072-853-3553(平日10:00 - 17:30)

  • FAXでのお問い合わせ
    072-853-3577(平日10:00 - 17:30)

  • メールでのお問い合わせ
    support@sugiokasystem.co.jp(24時間受付)
    営業時間外の場合、翌営業日以降に対応致します。

  • お問い合わせフォームでのお問い合わせ
    開発依頼・お見積り・その他お問い合わせはこちら(24時間受付)
    営業時間外の場合、翌営業日以降に対応致します。