見出し画像

ソフトウェア開発の基礎知識

ソフトウェアエンジニアリングとは

プログラム開発を合理的な様々な方法論と開発手法を用いながら、早く、安く、正確に、だれでもプログラムを作成できることを目指す学問。

システム開発の手順

プログラムを書くことはシステム開発において重要ですが、その前にやるべき作業があります。
プログラミングに必要なシステムの設計図を用意する必要があります。
ちょうど、家を建築するのには設計図が必要なことと同じ意味です。

それでは、その設計図はどのような手順で作成するのでしょうか?

・分析
顧客から要望を聞きだしたり、現在の業務の流れを調べたりして得られた情報を分析し、何を作るのかを明らかにする作業のこと

・設計
分析により明らかになった要件を、どのような形でプログラムしていくかを決定すること。

次にその分析・設計作業をどのようにして進めていくのか
・構造化分析、構造化設計
全てのシステムは、それより小さな要素の組み合わせで構成され、その要素もまたさらに小さい要素の組み合わせで構成されているという考え方行われる手法。
この手法では、システムの機能をサブシステムやモジュールに分割し、サブシステム間やモジュール間のデータの流れを定義します。

ソフトウェア開発のプロセスは4つに分けられています。
・要求定義、要件定義
ユーザーが求める要望を調査・分析して定義し、その結果ソフトウェアに実装すべき機能を要件として定義すること。
この工程で成果物「要件定義書」が作成される。

・設計
要件定義書の内容からソフトウェアで実装しなければならない機能の具体的な仕様を決めていく作業。
この工程で成果物「設計書」が作成される。

・製造
設計プロセスで決められた仕様をもとに、ソフトウェアを制作していく工程。

・テスト
製造工程で作成したソフトウェアに対して、各種テストを実施し仕様書通りに完成しているかを検証する作業。
この4つの工程で「要求定義、要件定義」「設計」の2つの工程を上流工程、
「製造」「テスト」の2つの工程を下流工程と呼ぶ。

開発プロセスにおいては、様々な開発モデルがありますがその中でも以下の2つは代表的なものになります。
・ウォーターフォール型
開発は時系列に沿って段階的に進められ、まず分析・設計を行い、完了したらプログラミングやテストに進む手法。
基本的に後戻りせず順番に進めていく手法となります。

メリット
〇全体を見通すことができるので進捗管理が容易
デメリット
〇不具合が、テストを行うまで見つからない可能性がある
〇その際、最初まで遡って修正する必要があり時間とコストの無駄になる
〇ある工程が遅れると、その後のすべての工程に影響が及ぶ
この手法が向いている案件
大規模プロジェクト、作りたいものがある程度決まっているもの

・アジャイル型
短期間で開発できるものを順に製造・リリース及び確認を繰り返しながら開発していく手法。
イテレーション:繰り返して開発する期間
ユーザーストーリー:実現したいことをカードに記載

メリット
〇後戻りが少ない
デメリット
〇全体像が把握しにくくスケジュール管理が難しい
この手法が向いている案件
優先度や作るものが変わる頻度が高いもの