ソフトウェア開発とは?ソフトウェア開発の流れをわかりやすく解説
ここでは、ソフトウェア開発の流れやそれにかかわる職種について解説します。ソフトウェア開発は、ゲームソフトや企業の業務システムを製作する一連のプロセスを指します。また、それぞれのプロセスで担当する職種も異なってきます。例えば、営業やシステムエンジニア、プログラマーが挙げられます。ソフトウェア開発には、どのような業務があるのでしょうか。それらを解説していきたいと思います。
目次
1.ソフトウェア開発とは?
ソフトウェア開発は、ユーザーや顧客のニーズ、マーケティング分析を踏まえて、それをソフトウェア製品として落とし込む一連のプロセスをいいます。ソフトウェア開発の流れについては後述しますが、基本的には営業から始まり、納品、その後の保守(メンテナンス)となっています。
ソフトウェア開発で作られる製品は、以下の3つに分類することができます。
- システムソフトウェア
- アプリケーションソフトウェア
- 組込みシステム
システムソフトウェアは、コンピュータを動かすために必要なソフトウェアのことを指します。代表的なもとしては、WindowsやLinuxなどのオペレーティングシステム(OS)やファイルやデータの保存処理などが挙げられます。アプリケーションソフトウェアは、ユーザーの利用目的に応じた機能を持つソフトウェアを指します。代表的なものとしては、ゲームソフトや一般事務で使用されるMicrosoft Wordのようなワープロ、Excelのような表計算ソフトが挙げられます。組込みシステムは、家電製品や機械等に組み込まれているソフトウェアを指します。例えば、炊飯器や洗濯機をはじめとしたデジタル家電、AEDなどの医療機器を動かすために内部に組み込まれたシステムが挙げられます。
2.ソフトウェア開発の流れ
2-1.営業
ソフトウェア開発は、営業から始まります。主な業務内容としては、新規の顧客や継続取引の顧客の現行の業務や新しい業務をどのように効率化するか、また現行で運用しているシステムの改善で可能なのか、新システムの導入が必要なのか等について検討します。ここでは、顧客が悩んでいる課題について仮説を立てます。
2-2.顧客へのヒアリング
営業の次には、顧客へのヒアリングを行います。顧客のヒアリングでは、前段階で収集をした情報をもとに、具体的に顧客が何に困っているのか、何が必要なのか等について聞いていきます。このヒアリングは非常に重要で、その後の開発業務に影響します。ここで、どれだけ顧客の課題を深堀できるかが重要になります。その他、予算や運用の開始時期、同業他社のシステム化の状況についてもヒアリングを行い、具体的な企画に落とし込んでいきます。
2-3.システムの企画・提案
システムの企画・提案では、顧客のヒアリングで聞いた事項を整理し、どのように解決するかについて検討します。検討する際には、どのようなシステムを開発するか、開発にかかる費用はどれくらいか、どれくらいで開発ができるか、費用対効果はどれくらいか等について検討し、企画として立案します。この企画提案では、一回だけではなく、複数回繰り返すことが一般的です。一度企画が完成したら、顧客の方に提案し、顧客の問題点や疑問点を解決しながら、企画を修正していきます。ここで、顧客とすり合わせることによって、相互の認識ミスや見積もりのミス、開発するソフトウェア製品の内容の相違を防ぐことができます。さらに、顧客との信頼関係も築くことができます。
ソフトウェア開発では、どれだけ顧客の要望を聞き入れることができ、それを具体的な企画として落とし込めるかが重要です。そのため、企画提案では、顧客の納得がいくまで、企画案の修正をする必要があります。
2-4.契約
企画提案後、契約となります。契約では、企画に沿った詳細な見積もり(開発費用・開発期間・納期等)を提示します。ここで顧客の承認を得ることができれば、契約・受注となります。
顧客によっては、同業他社と比較検討している場合もあるため、契約受注につなげるためには、顧客との綿密なコミュニケーションと他社と比べて、機能が優れている、費用対効果が見られる、開発費用が安い等のメリットを提示することが重要です。
2-5.要件定義
顧客との契約が成立し、受注した場合、次に必要なのは要件定義です。要件定義は、ソフトウェア開発には必須の業務で、企画提案に基づいて、実装すべき機能や必要な性能を明確にしていく業務を指します。この要件定義では、そのあとに続く設計・開発・テストの工程において影響を及ぼします。そのため、要件定義がプロジェクトの成功可否を左右するとも言えます。
要件定義では、「要件定義書」と呼ばれる書類に検討事項を落とし込んでいきます。検討すべき事項は、
- 現在の業務フロー・システム設計書
- 顧客と開発における関係
- 解決策
を入れる必要があります。現在の業務フロー・システム設計書を確認することで、既存のシステムの現状を把握します。現状を把握することで、技術上の問題点や課題を整理します。また、それ以外にも顧客企業側の保守担当者やIT部門の社員、関係者のヒアリングによって改善点を明らかにします。さらに顧客側と開発側の役割分担を明確にすることで、相互に必要な業務は何かを明確にします。
要件定義書では、解決策も検討する必要があります。ここでは、顧客のニーズ・要望をどうしたらソフトウェアに落とし込めるかを検討します。解決策を検討する場合、顧客の要望をどうしたら実現できるかを考え、それを設計に落とし込むようにする必要があります。そのため、要件定義でも顧客や社内の営業部門・ユーザー部門とのコミュニケーションが大切です。
2-6.設計
設計では、前段階で作成した要件定義書を踏まえて、ソフトウェア開発における全体像・仕様を検討します。ここでは、入出力(画面やデータベース等)、処理方法、テスト方法、運用方法等、今後の開発・テスト、更には納品後の保守・メンテナンスに関わる事項を検討する必要があります。
また、設計の方法には、主に外部設計(基本設計)と内部設計(詳細設計)があります。外部設計は、基本設計とも呼ばれ、ソフトウェアやシステムが外から見た場合、どのように動かせるかを決めます。内部設計では、外部設計で決めた動きをどのように実現するかを決めます。外部設計では、要件定義書や顧客から聞いた事項を整理して、操作画面や操作方法などユーザー向けの仕様を設計します。この過程では、顧客にも理解できるように基本設計書を作成する必要があります。内部設計では、外部設計で決めた基本設計書を基に、システムやソフトウェアの内部構造、つまり顧客の目に見えないところの設計を決めます。ここでは、システムの機能やデータベースの設計、プログラムが作られるまでの作業工程を決めます。これらの事項は、設計書ではなく、具体的な開発工程を仕様書に落とし込みます。
関連記事2-7.開発
開発では、設計書・仕様書に基づいてプログラムを実際に記述します。ソフトウェア開発の多くは、JavaやCといった言語が使われています。
関連記事2-8.テスト
テストでは、システムやソフトウェアが設計書・仕様書通りに動くかどうかを検証します。プログラム単体だけのテストは、単体テスト、プログラムを複数組み合わせた場合は統合テスト、全体の場合は、システムテストと呼ばれます。ここで、正常に動かない場合は、ソースコードの欠陥(バグ)があります。その場合は、再度デバッグを行い、バグを取り除きます。これを何回か繰り返すことで、プログラムを正常に動かせるようになります。大規模なシステム、ソフトウェア開発になると、検証するソースコードも膨大で、デバッグにも多くの時間がかかります。これをクリアすると運用テストのステップに進みます。運用テストでは、顧客が実際の扱うデータを基に、システムが正常に動くかどうかを検証します。
関連記事 関連記事2-9.納品
運用テストをクリアすると、顧客へとシステム、ソフトウェアの納品となります。納品では、システムの運用を開始するとともに、システムの設計書やプログラム、運用マニュアルを受け渡します。
2-10.保守
納品後には、システム障害やメンテナンス、システムの機能追加に対応します。システムの機能追加でも、このソフトウェア開発と同様の手順となります。
関連記事3.ソフトウェア開発に関わる職種
3-1.営業
ソフトウェア開発企業にも、少数ながら営業職があります。ソフトウェア開発の営業のタイプは、3種類あります。
- パッケージ営業
- 受託開発営業
- SES営業
となります。
まず、パッケージ営業では、自社のソフトウェア製品を販売します。例えば、勘定系システムや業務効率化システムといった自社ソフトウェアが挙げられます。また、中小企業でも自社製品を作っている場合もあります。受託開発営業では、顧客からの引き合いでシステム開発を請け負い、受注を目指す仕事になります。受託開発営業では、顧客からのニーズや要望を把握したうえで、ソフトウェア開発を行う必要があります。SES営業は、客先常駐エンジニアを求めている企業に対し、システムエンジニアを派遣する職種となります。受託開発営業の場合、上記の流れでシステム開発が進みます。その場合営業が関わるところは、最初の営業~契約となります。
3-2.システムエンジニア
システムエンジニアの仕事は、主に顧客からのヒアリングやシステム設計です。場合によっては、開発にも携わることもあり、ソフトウェア開発におけるすべての工程に携わることもありますが、基本的には、顧客のヒアリングと要件定義~設計までを担当します。いわば、システムエンジニアは、ソフトウェア開発の設計者ということができます。
関連記事3-3.プログラマー
プログラマーは、開発~テストまで担当するため、プログラミングのプロフェッショナルと言えます。プログラマーは、システムエンジニアが作成した設計書に基づいて、プログラミングを行うことが主な仕事となり、システム開発における開発担当となります。
一般的にプログラマーからシステムエンジニアを目指す流れが一般的ですが、それぞれ仕事内容も異なっているため、求められる能力も異なります。システムエンジニアでは、顧客のヒアリングや社内の人との調整、更には企画提案も行うため、対人コミュニケーション能力が優れている人やドキュメント作成能力がある人が好まれます。プログラマーでは、コミュニケーション能力も必要ですが、プログラミング能力が求められます。そのため、プログラマー上がりのシステムエンジニアは、要件定義や設計のイメージがつきやすいかもしれません。
関連記事 関連記事4.さいごに
ソフトウェア業界は、今後将来性が高い業界だと言われています。しかしながら、ソフトウェア業界では、現在人材不足が深刻化しています。これは、プログラミング言語の多様化、トレンドの移り変わりの速さ、育成に時間がかかる等の理由があります。今後は、人材不足を補うため、優秀な人材を奪い合う可能性が高くなります。
ソフトウェア業界を目指す方は、スクールやオンライン講座でプログラミングを学ぶことで、自身の市場価値を高める必要があります。さらに、資格でも基本情報技術者や応用情報技術者の資格を取得することで、就職活動や転職活動を有利に進めることができます。
以上、ソフトウェア開発について見ていきました。ソフトウェア開発では一定の業務フローがありますが、それぞれの業種によって担当する業務が異なってきます。その中でもシステムエンジニアは、営業とプログラマーの中間的な役割を担っており、ソフトウェア開発では、非常に重要な役割を担っています。
今後需要が高まるソフトウェア業界では、プログラミングの知識だけでなく人工知能やクラウドといった最新トレンドの知識も求められる可能性があるため、そうした最新技術に対して常にアンテナを張る必要があります。
コメント