![見出し画像](https://assets.st-note.com/production/uploads/images/118616262/rectangle_large_type_2_65da36f3ec3fcdb3d842ca35d1ab4dd0.png?width=1200)
システム開発はそもそも何のためやる? ユーザー・ベンダー互いの理解が必須だ!
システム開発とは何であって、そもそも何のために行うものなのかを考えたことはありますか?
みなさんの会社では何のためにシステム開発を行っていますか?
システム開発とは?
パソコンを使って業務を効率的に改善したり、従来の手法では出来なかったことを実現するためにプログラムを開発し利用すること。
例えば、業務の進捗状況を把握する業務管理システムや在庫状況を管理する在庫管理システムや会計システムなど。
要約すると、業務改善のためにITシステムはあるといえるだろう。会社全体の業務をITシステムを活用することで効率化したり、改善することを目的にITシステムの開発を行う。
具体的な例として、飲食店のハンディ機がある。小規模の飲食店の場合は、紙や店員の記憶でお客さんの注文をとることがあるが、チェーン店の多くは紙で注文を取るのではなく、ハンディ機でとっているケースがほとんどだ。
ハンディ機を使っている理由は、注文を紙ベースで取るのよりも簡単にすることであり、厨房へ注文を流すのを簡単にするためである。また、電子化された注文を一括で管理することができるので、どの店舗でどのメニューが売れているかなどを把握することが簡単になる。
このように細かい業務を効率化したり、経営全体を改善していくためにシステム開発は行うものである。
システム開発の基本的なプロセス
![](https://assets.st-note.com/img/1697008773312-gjWJTc5Ttv.png)
(開発プロセスの基本を学ぶ – 開発プロセスの基本を学ぶ:ITproより)
これ以外にも、様々なシステム開発のプロセスはありますが、オーソドックスなプロセスはこの「ウォーターフォール型開発プロセス」と呼ばれる手法である。この手法では以下の5つのプロセスを踏む。
どういうシステムが必要なのかリサーチ
リサーチに基づいた要件定義
デザイン・機能の設計
プログラムを組み、システムのテスト運用
バグをなくして運用
要件定義でダメだと全てが無駄になる
ITシステム開発で多くの失敗が起きる要因でよく言われていることとして、要件定義が中途半端なまま開発を行い、運用テストを行っている時に現場から多くの修正依頼が来て大幅な修正が必要になることがある。運用テストのときに大幅な修正が起こるのは、設計・開発の時点で行ったことのほとんどが無駄になることである。
要件定義がうまくいかない理由として大きく2つある。まず、ユーザー側の問題として、何のためにどんなシステムを作りたいのか不明確になっていることがある。そして、ベンダー側の問題として、ユーザー側のシステムで解決することができる課題を十分に把握しないままにしていることである。
双方が、何のためにシステム開発を行うのか不明確にしたまま開発に入り、実際に使用を始めると想定外のことが多く起き、使えないシステムができてしまうのである。
このような失敗を防ぐために、要件定義を柔軟に変更していく開発手法もある。その一つがアジャイル開発である。
アジャイルとは、「素早い」「俊敏な」という意味で、その名の通り短いスパンで開発を繰り返していくことで、質の高いシステムを作っていく手法である。
多くのシステム開発プロジェクトが要件定義で全てを決めるが、不十分な要件定義で開発を行い結果的に失敗している中で、短いスパンで一度決めた要件定義に囚われずに改善をしていくことは一つの有効な開発手法である。
ただし、アジャイル開発にも難しい点はあり、ユーザー・ベンダーが一体となり開発チームを構成して開発に取り組まなければならないため、ユーザーからの開発へのコミットメントが必要なのである。
システム開発は経営全体に関わることである
そのため、どのような開発手法を用いても何のためにシステム開発を行っているのか、システム開発とは何であり、何ができるのかということユーザーが把握していることが必須である。もちろんベンダーがユーザー側の課題を把握することも必須だ。
つまり、ただ何かの道具を買うことではなく、システム開発をすることは企業全体の業務に大きく関わることであり、それを理解してシステム開発に臨むことが必要である。