こんにちは!アテナのエンジニア、こーだいです。

私は普段、システムエンジニアとしてお客様にサービスを提供しています。
今回はエンジニア志望の方の参考になればと思い
システム開発における各工程についてご紹介させていただきます。

過去にもフロントエンド、バックエンドについて書いてますので興味あれば覗いてみてください!!!!!

→「webプログラマーのお仕事 ~フロントエンド、バックエンドについて~

開発工程は代表的なものとしてウォーターフォール、アジャイルといった手法がありますが
今回は基本的なウォーターフォール開発について紹介していきます!

ウォーターフォールとは?
直訳すると「滝」という意味です。
水が上から下へ流れていくように、上流工程から下流の工程へ作業を行って行きます。

それでは上流から順に紹介していきます!

・要件定義
お客様の要求、実現したいことをまとめていきます。
前段に企画が存在しており、そこからシステムで実現したいこと、必要な機能について
お客様のヒアリングを重ねながら要件をまとめていきます。

・基本設計
要件定義で決まったことをシステムとしてどのように構築していくか、そのための設計を行います。
処理のフローやデータの持ち方、画面の構成などを決め、機能で何が実現できる項目を決めていきます。

・詳細設計
プログラミングに落とし込む前段階です。具体的に処理の流れを設計していきます。
画面のボタンを押したときのパラメータやデータの保存の流れ、ふるまいについて詳細に明記していきます。

・コーディング
詳細設計をもとにプログラミングを行っていきます。

・単体テスト
コーディングを行った後、ソースコードレベルでの検証していきます。
詳細設計に基づいて処理が実現できているかをチェックしていきます。

・結合テスト
大まかに内部結合テスト、外部結合テストがあります。
内部結合テストではシステムの内部で連携に問題ないことをテストしていきます。
外部結合テストでは他システム間との連携が問題なく行えることをテストしていきます。
基本設計に基づいてシステムが構成されているかをチェックしていきます。

・総合テスト
作られたシステムが要件を満たしているかをテストしていきます。
実際の運用を想定した操作を行い検証していくシナリオテスト、
負荷テストや長期安定化試験などを行い、安定してシステムが稼働することを検証していく非機能テストを行って行きます。

・リリース
やっとの思いですべてのテスト工程をクリアしたらサーバーに新しい状態のシステムを反映させて使える状態にします!

・レビュー
各工程で出来上がった成果物の品質を確認します。
設計に問題がないか、テスト項目に問題がないか、不具合が生じるコードがバグが発生する要素が含まれていないかを確認していきます。
知識や経験が問われるポジションです。

ざっと代表的なものを上げていきました!
こんな流れで各工程を上から順におこなっていきます。
各工程で問題が発生した場合、上流の工程からやり直しするリスクもあるのでレビューでしっかり問題がないことをチェックしていき進めていきます!

エンジニアといったらプログラミングをゴリゴリ書いているイメージがあると思いますが
全体的にみると実はそんなに多くはないんです。意外ですよね。

規模が大きかったり、不具合が許されないようなシステムでは要件定義からリリースまで数年かけて行って行ったりもします。

こんな感じで今回はウォーターフォールについてのお話でした!
※気が向いたらアジャイル開発についても紹介します

ではまた!!!!