要件定義
まずは、開発するシステムにどのような機能を盛り込むか明確にしていきます。IoTシステムの性能、機能、運用方法、予算、人員、開発期間などを決めていきます。システムを開発する目的やターゲットなどを明確にして、発注側と開発側の認識を合わせることで、思ったのと違うシステムができあがることを避けます。
外部設計
要件が固まって両者のコンセンサスがとれたら、外部設計に進みます。開発するシステムの大枠を決めていく作業です。具体的には、システムを利用するユーザーの視点で、必要な機能を洗い出していきます。この作業は、ユーザーの使い勝手につながる作業ですので、使いやすいシステムを開発するためにも大切な作業です。
内部設計
外部設計が確定したら、より具体的な内部設計に進みます。システムの詳細を決めるために、ユーザーの視点よりも開発側の視点から詳細をつめていきます。プログラムの設計や、ミドルウェアの選定などを行います。
プログラミング
各設計をもとに、実際にプログラミングをしてシステム構築をしていきます。家を建てることに置き換えると、内部設計は家の間取りなどを決めて設計図を書く作業で、プログラミングは実際に家を建てるための工事を行う作業となります。
単体テスト
プログラミングが完了したら、きちんと動作するのかテストをします。このテストでは、最初に決めた要件定義のとおりに動作するのかをしっかり確認していきます。単体テストでは、小さい規模から大きな規模へ順番にテストをしていきます。モジュールごとにテストをしていき、決められた要件を満たしているか確認していきます。
結合テスト
単体テストで問題がなければ、対象モジュールを複数結合してテストをしていきます。データの受け渡し、画面の切り替わりなどそれぞれのプログラムがきちんと連携してシステムとして正常に機能しているかをテストしていきます。
総合テスト
結合テストに問題がなければ、システム全体の総合テストを行います。ユーザーが要求する機能や性能を満たしているか細かくテストしていきます。実際に使用したときの処理速度、大量アクセスが発生したときの耐久性などをテストします。また、ユーザーによって使いづらい点はないかもチェックしていきます。
運用テスト
すべてのテストをパスしたら、運用テストに進みます。実際に運用する環境で不具合がないかなどを確認します。最も実用的なテストであり、ユーザー側の視点にたって確認を進めていきます。
リリース
ここでやっと、開発したシステムをリリース(公開)します。リリース方法は、旧システムから一気に移行するパターンと、徐々に移行していくパターンがあります。システムの規模や内容、運用状況などから最適な方法を選択します。
運用、保守
システムを使用していくなかで、何らかの不具合が発生することは避けられないでしょう。リリース後も常にシステムの状況を監視して、不具合が発生した場合は、速やかに対処します。システムをよりよい状態で使用できるようにアップデートを行うことも必要になるかもしれません。