目次
ソフトウェアとは、コンピュータ上で動作するプログラムを意味します。代表的なソフトウェアの例を挙げますと、Microsoft社が提供するMicrosoft WordやMicrosoft Excelなどです。前者のMicrosoft Wordは文書作成ソフトウェアと呼ばれるものであり、後者のMicrosoft Excelは表計算ソフトウェアの一種に該当します。端的に言いますと、このようなソフトウェアを開発し、市場に上市することがソフトウェア開発と呼ばれるものなのです。ソフトウェアは広い意味で使われます。前述した文書作成ソフトウェアや表計算ソフトウェアの他、任天堂やSONYが開発するゲームソフトやポケモンといった市販向けアプリケーション、オペレーティングシステムと呼ばれるOSも、広義の意味ではソフトウェア開発に含まれます。
先述したソフトウェアに対して、コンピュータ端末やサーバそのものはハードウェア(端末)と呼ばれます。ソフトウェアが「コンピュータ上で機能するプログラムで、目には見えないもの」である一方、ハードウェアは「コンピュータを構成する機器群で、物理的に目で捉えることができるもの」を意味します。またこのソフトウェアとハードウェアを一体的に組み合わせ、人によって操作できる状態にしたものを「システム」と呼びます。
ソフトウェア開発の流れ
大まかではありますが、ソフトウェア開発の流れは以下の7ステップに分かれます。
1.企画・構想
2.擦り合わせ
3.要件定義
4.基本設計及び詳細設計
5.開発(プログラミング)
6.単体試験及び結合試験
7.総合試験
8.上市(リリース)
9.運用保守サポート
ソフトウェア開発は、クライアントの悩みや課題感を具体的に抽出するところから始まります。打ち合わせやヒアリング調査の中で、クライアントの具体的な悩みや課題を認識した後、解決に向けたソフトウェア開発の企画・構想段階に移ります。勿論、この打ち合わせの中では開発内容だけでなく、プロジェクト全体の予算感やリリース時期、開発体制なども議論することになります。開発するソフトウェアの企画・構想がまとまり、クライアントと双方納得に至れば、実際に契約を締結(専門用語ではクロージングといいます。)し、次のステップに入ります。
要件定義は、開発するソフトウェアのイメージや機能、性能などを明確化する作業になります。ソフトウェア開発会社とクライアントの間で認識齟齬が生まれると後々トラブルになります。ソフトウェア開発において、この要件定義は非常に重要な工程の一つと言えます。
要件定義が終わると、設計工程に入ります。設計は大きく基本設計と詳細設計の2つに分かれます。基本設計は、クライアントが見てもわかるように作られた設計書を作る作業工程です。一方の詳細設計は、実際に開発を行うプログラマー向けに制作する設計書になります。前工程である要件定義の中で確定された仕様要件をベースに、ソフトウェアに実装する機能や性能を整理していきます。
基本設計と詳細設計の工程を経て実際にソフトウェアを開発していきます。設計書の内容を基に、プログラミングを行います。開発するソフトウェアの規模や難易度によって、エンジニアの人員数も変わってきます。設計を行うエンジニアと実際に開発を行うプログラマーが密に連携し、慎重に開発作業を進めていきます。
ソフトウェア開発の作業が一段落した後、仕様通りにプログラムが動作するか試験を行います。プログラム単位で試験することを単体試験、関連するプログラムを結合させて一体的に試験することを結合試験と呼びます。バグと呼ばれる不適合箇所が見つかれば都度プログラムの改修を行い、全ての試験項目でバグやエラーがなくなれば試験終了となります。
結合試験を経て、クライアント側で総合試験を行います。要件定義の工程で擦り合わせしたソフトウェアの通りになっているか、確認・検証をしていただきます。総合試験をクリアすると、実際に上市となります。
ソフトウェアは開発して終わりではありません。上市した後も色々と改善箇所が出てくるはずです。保守運用サポートの工程では、ソフトウェアが正常に動作するかを適宜確認するとともに、市場環境やエンドユーザ(最終的なお客様)の動向に合わせて、適宜ソフトウェアを改善していきます。
ソフトウェア開発とシステム開発の違いとは?
時折、ソフトウェアとシステムという言葉を混同して使う方がいらっしゃいます。ソフトウェア開発が、MicrosoftのWordやExcelといったプログラムの中身を開発することに対し、システム開発はソフトウェア部分だけでなく、ソフトウェアと密接に関連するハードウェア、例えばバーコード読み取り機器やサーバ構築なども対象として含んだものです。そのため、システム開発という言葉の中には、ソフトウェア開発が含まれるケースもあります。システム開発の方がより広義な意味として使われている、と理解いただければよいかと思います。
ソフトウェア開発の種類
ソフトウェア開発は、開発する対象によって分類されます。本記事では3つのソフトウェア開発の種類について触れたいと思います。
Web系ソフトウェア
Web系ソフトウェア開発は、Google ChromeやSafari、FirefoxといったWebブラウザ上で動作するソフトウェアを指しています。具体的には、アメリカのストレージサービスのBOXやDropboxなどがこのWeb系ソフトウェアに分類されます。ハードウェア(ここでは、PC端末やスマートフォン端末を指します。)の影響を受けることなく、ブラウザに繋がるインターネット環境さえあればWeb系ソフトウェアは利用できるので、勝手の良さが大きな魅力の一つと言えるでしょう。ブラウザ上で動かす必要がありますので、開発するソフトウェアによってはネットワーク技術に長けたインフラエンジニアの力が必要になる場合もあります。
アプリケーション・ソフトウェア
アプリケーション・ソフトウェアとは、ユーザの利用環境に応じてプログラムを開発し、ソフトウェア化したものを指します。代表的な例としては、表計算ソフトのExcel、プレゼンテーションソフトウェアのPowerpoint、メールソフトウェアのOutlookです。これらはWindowsOSを利用するユーザの利用環境に合わせて作られてます。(現代社会では、MacOSやiOS、AndroidOSユーザでも使えるように、ソフトウェアを多様化させています。)
組込系ソフトウェア
組込系ソフトウェアとは、家電製品や工場で使用される生産ロボットなどに独自に組み込まれたソフトウェアを指します。掃除ロボットのルンバの中にも独自の組込系ソフトウェアが搭載されており、現在の位置情報を特定したり、どの部屋を優先的に掃除すべきかなど、ソフトウェア上で全ての動作が管理されています。最近ではIoTなども普及し、冷蔵庫や浴室のバス、照明などにもこの組込系ソフトウェアが活用されています。
おわりに
日本全国には開発会社が無数にありますが、保守性や堅牢性に優れた高品質のシステムやスケール(規模拡大)を目指すアプリサービスを実現させる開発会社は、全国で見ても多くはなく、弊社・GeNEEは数少ないその一つ。
お客様のご要望通りに開発することを良しとせず、お客様と共に伴走しながらビジネス全体にとっての最適な解を模索しながら、プロジェクト全体を推進する、ビジネス×テック(技術力)×デザインの三位一体型システム開発/アプリ開発会社です。DXやIT全般に関して、何かお困りのことがございましたら下記の「GeNEEへのお問合せ」フォームからお気軽にご連絡いただけたらと思います。