![見出し画像](https://assets.st-note.com/production/uploads/images/46773686/rectangle_large_type_2_7dd2bd73bd9e36bc79e716dc719f66af.png?width=1200)
【IT基礎】 ソフトウェア開発とはどんなものなのか?
対象の読者
・これからソフトウェアを開発しようと考えている人
・ソフトウェア開発について基礎的な勉強したい人
・ソフトウェアについて基礎的な勉強したい人
このチャンネルを初めてご覧の方は以下の記事を一読いただけると幸いです。
はじめに
ソフトウェア開発をはじめる前に「ソフトウェア開発とはどんなものなのか」というイメージをしておきましょう。
そもそもソフトウェアについても曖昧な知識の人は是非一読ください。
ソフトウェアとは
ソフトウェアとは、ハードウェア(物理的な機械)と対比される用語です。
ハードウェアとは『物理的な機械』を指していて、テレビやパソコン、スマートフォンなど物理的に存在する機械のことです。
ソフトウェアとは、基本的に『ハードウェアの上で動いている物理的ではないシステム』のことを指します。
テレビを例にすると、チャンネルやテレビ自体の機械の部分はハードウェア。
チャンネルを切り替えるためのシステムや番組を予約するためのシステムはソフトウェアに当たります。
ゲームであれば、ゲーム機本体はハードウェアで、実際に遊ぶゲームソフトはソフトウェアです。
スマートフォンで日常的に使用しているアプリケーションなども全てソフトウェアに当たります。
ソフトウェアは基本的に『プログラミング言語』によって作られています。プログラミング言語を使ってソフトウェアを開発することを『プログラミング』と呼び、それを職業にしているのが『プログラマー』です。
ソフトウェア開発とは
それでは、みなさんがこれから行おうとしている『ソフトウェア開発』について考えてみます。
ソフトウェア開発とは『プログラミングを使ってソフトウェアを開発すること』を指すのでしょうか?
この表現は正しいです。ですがプログラミングだけでは必要な工程が不足しています。
ソフトウェア開発を行うためには多くの工程が必要です。
ゲーム開発であれば、「どんなゲームにするか」、「どんなゲーム機に乗せるか」や、「どんなグラフィックにするか」など実際に世の中にリリースされるまでに、プログラミング以外にも多くの工程が必要です。
ソフトウェア開発には、このようなソフトウェアを取り巻くシステム全体を作る工程も含まれています。
つまりソフトウェア開発とは『ソフトウェアを使ったシステム全体を開発すること』です。
ソフトウェアをプログラミングすることはその工程の一部でしかないのです。
全体像を捉える
良いソフトウェアシステムを開発するためには多くの工程について勉強する必要があります。
ソフトウェアや関連技術を使うための技術的な知識はもちろん、
『ソフトウェア開発の工程に関する工学的な知識』
『生産的な開発を行うための思考法』
『開発プロジェクトを円滑に進めるためのマネジメント法』
『品質の良い製品を作るためのテストの方法』
など勉強しなくてはならないことが無数にあります。
これらの全てはじめから習得することは難しいため、まずは「ソフトウェア開発というものがどういう流れで行われるのか」という全体像を捉える事から始めてみましょう。
実践的な内容は各工程ごとに徐々に勉強していけば大丈夫です。
ソフトウェア開発は、大体次の図のような流れで開発を進めることになります。
各工程について詳しく説明していきます。
1.何をつくりたいかを決める
「ソフトウェアを開発しようとしているのだから何をつくりたいかは決まっているのではないか」と思う人もいるかもしれませんが、いざ作り始めると「自分がどういうものをつくりたかったのかを上手く説明できない」ということは非常に良く起こります。
この工程ではソフトウェアを含むシステム全体で『本当にユーザーに提供しなければいけない機能や体験』を定義します。
『なんとなくイメージしていたアイディア』から『提供する価値がある製品(機能)』になるように言語化するようなイメージです。
これをシステム開発では『要件定義』といいます。
2.どうやって作るかを設計する
どんな機能を作るか決まったら、それをどうやって作るかを考えます。
特に企業が仕事として開発する場合は『誰が作るのか(自分で開発するか、誰かに開発してもらうか)』について決めることも重要です。
もし自分たちで開発するのであれば、開発に必要なメンバーをアサインすることが必要です。
一方で誰かに作ってもらうのであれば、外部の開発会社やエンジニアなどに依頼する必要があります。
誰が作るかが決まったら、『どうやって作るのか』を設計します。
「システムのどの範囲までソフトウェアで開発するのか」
「ソフトウェア以外の工程はどのように実現するのか」
「どんな体制でどのように開発プロジェクトを進めるのか」
など具体的に開発するために必要なことを決めていきます。
3.開発する
どうやって作るのかが決まったら、実際に手を動かして開発していきます。
開発はプログラマーだけの仕事と思われがちですが、実際は様々な職種のメンバーが必要です。
開発の進捗を管理するマネージャーは日々のスケジュールやチームの状況をコントロールします。ソフトウェアのデザインにはデザイナーも必要です。
開発途中で機能の仕様が変更する必要がある場合には、開発責任者やプランナーと一緒に要件について話し合います。
ソフトウェア開発は、その他多くの製造業を同じようにチーム戦での開発なのです。
4.テストする
システムの開発が完了したら、リリースする前に正しく動くかテストをする必要があります。
ソフトウェア開発では、開発したソフトウェアには必ず不具合(バグ)が存在します。
※ 正確ではないですが、経験上バグの存在しないソフトウェアはない。と言い切れるレベルでバグは存在します。
この工程では、少なくとも『ユーザーが不快な思いをしないこと』『提供したい機能が確実に動作していること』を最低限のレベルとして製品の品質を上げるためにテストを行います。
当然必要であれば、プログラマーは不具合を修正するためにプログラミングを行います。
5.リリースする
ユーザーに対して十分な品質を担保できたら、製品(システム)を世の中にリリースします。
初めて開発した製品をリリースしたときの喜びはひとしおですが、ここで安心してはいけません。
ユーザーに製品を届けることができたここからがソフトウェア開発の本当の意味でのスタートです。
6.運用/改善する
ソフトウェアのシステムは、一度リリースしたら終了ではありません。
ユーザーの反応をみて、機能の改善や追加機能を開発してシステムをより良い物へアップグレードする必要があります。
特にユーザーが使うことで初めて発見される大きな問題については、早急に修正する必要があります。
改善のフローは、基本的にはリリースまでと同じです。
追加機能や修正機能について「1.何をつくりたいかを決める」~ 「5.リリースする」までのフローを繰り返し行います。
まとめ
「ソフトウェアを開発する」とはどのようなことなのか、まずは簡単な入り口を説明しました。
ソフトウェア開発とは『プログラミングをする』ことだけではなく、『ソフトウェアを使ったシステム全体を開発する』ということ
『ソフトウェア開発はどのような流れで行われるのか」
このあたりをイメージできるようになっていただけたら幸いです。
アンケートのお願い
このチャンネルでは、これから提供していくコンテンツやサポートの内容を改善していくために、アンケートをお願いしています。
ぜひアンケートにご協力ください。
アンケートはこちらから
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?