ソフトウェア開発とは、WindowsなどのOSを含めたシステムソフトウェアやアプリケーションソフトウェア、家電や機械の組込みシステムなどを制作することです。本記事はソフトウェア開発の内容や具体的な流れ、開発に役立つポイントなどを解説します。
ソフトウェア開発とは?その内容と業界の実状
ソフトウェア開発とは、顧客の要望などに応えてソフトウェアを開発して提供する一連のプロセスのことをいい、プログラミングが活かせる職業です。
ソフトウェア開発で制作されるものはシステムソフトウェア、アプリケーションソフトウェア、組み込みシステムの3つに大別されます。コンピュータを動かすためのシステム、スマートフォン上のアプリ、家電や機械にもソフトウェア開発は必須であるため、ソフトウェア開発の用途は幅広いといえるでしょう。
そんなソフトウェア開発の仕事は、特にスマートフォンとIoT家電などが普及したことで、非常に将来性のある職業へとなりつつあります。
ソフトウェア開発における8つの工程
ソフトウェア開発の工程は、顧客から受託して開発するのか、あるいは自社サービスを開発するのかによって多少変わります。受託開発の場合は、次の8つの工程で開発するのが一般的です。
まずは顧客を獲得するための営業から始まり、提案書の作成、要件定義、仕様設計をします。そしてプログラミングで開発を進め、完成したプログラムのテストを実施後、問題なければ納品です。運用が開始されたならば、稼働確認や保守などもしていきます。
営業をして顧客を獲得する
受託開発では、当然ながら仕事を依頼してもらうための顧客を獲得しなければいけません。また、基本的には法人企業からの受注がメインです。そこで営業担当者が営業をして、どのような点をどのようにできるのかなどの商談を行い、見込み顧客を獲得します。
ソフトウェア開発の営業は、ソフトウェア開発やプログラミングなどの専門知識が必要であるため、一般的な営業よりも若干ハードルが高いかもしれません。
ヒアリングと企画、提案をする
見込み顧客を獲得できたならば、顧客がどのような課題を抱え、どのようにしていきたいと思っているのかなどのヒアリングを行います。実際にプロジェクトマネージャーやエンジニアも交え、システムの内容や開発費用と期間がどのくらいになるのかを検討して提案書を作成していくことになるでしょう。
そして見込み顧客に見積もりや提案後に承認してもらい、契約を締結します。ここで見込み顧客から顧客に変わり、正式に受託開発が進むのです。
ヒアリングを元に必要な性能などの要件を把握する
次は、ヒアリング内容を元にしてシステムに求められる性能を把握し、仕様などを確定する要件定義のフェーズです。この時点で開発するシステムやソフトウェアの開発内容が決まるため、ヒアリングで顧客が求めている機能や性能を理解しておくべきでしょう。
要件定義では開発するものが法律や制度の基準などに満たしているか、あるいは違反していないかなどを確認しなければいけない場合もあり、注意が必要なフェーズです。
開発のアウトラインや仕様の設計をする
要件定義に基づき、データの入出力や処理方法、テストや運用の方法、セキュリティなどを設計していくフェーズです。
このフェーズの設計には、主に基本設計と詳細設計の2つがあります。基本設計は、操作画面や操作方法などユーザーに関する仕様の設計です。一方の詳細設計では、システムの内部構造やプログラミングの具体的な開発工程などを設計していきます。
プログラミングをして開発を進める
仕様書と設計書に基づいたプログラミングをして、開発を進めていきます。開発したプログラムがどのような媒体で使用されるのか、またはどのような機能を持たせるのかによって、プログラム言語を変えていくことを覚えておきましょう。つまりソフトウェア開発では、複数の言語でプログラミングできる能力が必要とされているのです。
4つのテストを実施する
4つのテストを実施し、システムやソフトウェアが正常に動作・稼働するのかを確認します。
まず行うのは、プログラムのみを検証する単体テストです。そこで問題がなければ、複数のプログラムを同時に動作させる統合テスト、その後にシステム全体の検証をするシステムテスト、最後に運用テストという流れになります。
運用テストとは、顧客が扱っている実際のデータを用いた検証です。これらのテストによってプログラムに欠陥(バグ)が見つかった場合には、修正するデバッグ作業を行います。
納品してリリース・運用を開始する
テストで問題ないことを確認できたならば、顧客に納品してサービスやシステムなどをリリースし、運用を開始できます。このとき、取引先のコンピュータにソフトウェアやシステムを導入する作業を行うこともあるでしょう。
納品時には運用マニュアルやシステム設計書なども渡し、可能な限り顧客のサポートができるようにしておきます。
データのバックアップや稼働確認などの保守をする
実際に運用が開始されたならば、トラブルが起きていないか、あるいはパフォーマンスに問題がないかといった稼働確認をしたり、データのバックアップを作成して保守したりします。
また、法律や制度の改正によって更新の必要があるときや、顧客の要望に応じて追加機能を盛り込む対応やメンテナンスをする場合もあるでしょう。
ソフトウェア開発特有の2つの課題
ソフトウェア開発は、システムやソフトウェアの仕組み、プログラミングなどの専門的な知識が求められる職種です。
したがって、人材育成が難しいだけではなく、IT人材の不足によって優秀な人材を確保するのが難しいという課題があります。また、顧客レベルが上がっていることに加え、技術者ごとに能力や生産性の差があるなど、ソフトウェア開発特有の課題を抱えているのが現状です。
IT人材不足で人材確保が難しい
一つ目の課題はIT人材が不足していることであり、人材確保が大変だという点です。
IT業界では専門的な知識や技術が必要とされていますが、環境やプログラミングが発展・多様化していることで、さまざまな技術を、より高度なレベルで求められています。
今までは技術的なことに対応するだけで良かったのですが、顧客レベルが上がっていることで、より業務スキルが必要とされているのです。
しかし、小規模な企業では新人をゼロから育成する余裕もないため、人材確保のみならず人材育成も難しいという課題があります。
技術者によって生産性に差があること
特にIT業界は、技術者によってプログラミング能力や生産性に大きな差があります。そのため、プロジェクト管理が大変でスケジュールを決めるのが難しいです。
また、IT業界は情勢が目まぐるしく変化することも特徴です。開発内容や利用するツールなどが常に変わっていきやすく、変化に対応していく能力が必要であることも人材育成が難しいことの要因となっています。
ソフトウェア開発に役立つ2つのポイント
ソフトウェア開発をする上では、2つのポイントをおさえておくべきでしょう。それは、人材育成などに役立てることができる「ソフトウェア開発データ白書」を参考にすること、ソフトウェアの開発をする際に手法を取り入れることです。
この2つのポイントは、ソフトウェア開発業界では基本であるため把握しておきましょう。それぞれについて詳しく解説していきます。
「ソフトウェア開発データ白書」を参考にする
ソフトウェア開発には、「ソフトウェア開発データ白書」が教材として役立ちます。ソフトウェア開発データ白書は、ソフトウェア開発のさまざまなデータを収集し、分析することによって組織や企業が参考として活用できるようにまとめた資料です。
ソフトウェア開発の設計や開発プロジェクトを決める上で役に立つため、ぜひ参考にしてみてください。
ソフトウェア開発手法を取り入れる
ソフトウェア開発には、開発手順などのテンプレートとして手法がいくつか存在します。特に有名なものとしてはウォーターフォール型、アジャイル型、プロトタイプ型、スパイラル型などが挙げられるでしょう。それぞれの大きな特徴は次のとおりです。
ウォーターフォール型とは開発工程を分け、それぞれの工程が終わったならば次の工程に進み、原則的に前の工程に戻らないようにする手法を指します。他方でアジャイル型は、スピード感のある開発が求められる中で生まれた手法です。とにかく設計や実装、テストを細かく繰り返してプロジェクトを進めていくもので、状況の変化に柔軟に対応できるのがアジャイル型の特徴といえるでしょう。
プロトタイプ型は早期に試作版を作成してより具体的なイメージができるようにし、開発工数を減らすことができる手法です。そしてスパイラル型は、アジャイル型とプロトタイプ型に似ています。設計して実装、テスト、試作を繰り返していきながら、理想の状態に近づけていく手法です。
これらの手法にはそれぞれ長所と短所があるため、それぞれの特徴を把握した上で開発者に合う手法を取り入れることがポイントといえるでしょう。
まとめ
ソフトウェア開発は、今後も進むIT化に欠かせない業種といっても過言ではありません。変化が激しく、専門的なスキルや技術が求められるため難しい職業ですが、社会に貢献できるのは間違いないでしょう。
最近ではプログラミングを勉強できるプログラミングスクールも増えており、プログラミングを始めやすい環境が整っています。先人が作り出してきた手法やソフトウェア開発白書などもあるため、それらを参考にしつつぜひ挑戦してみてください。