DevOpsに代表されるシステム開発の手法と工程

 2021.10.18  2022.01.26

IT人材を保有しない企業のほとんどはシステム開発を別注します。しかし、システム開発の工程について詳しく理解していない担当者は多いのではないでしょうか?システム開発工程について知れば、各工程において担当者がどのようの関わればよいかが自然と見えてきます。

システムは開発会社だけで構築するものではなく、クライアントも一緒になってより良いシステムを構築するための尽力することが理想の形です。そのためクライアント側の担当者にもシステム開発工程への理解は必須と言えましょう。

そこでここでは、一般的なシステム開発手法と開発工程についてご紹介します。より良いシステムの構築のために、この機会に開発工程の基礎について知っていきましょう。

システム開発手法

まずはシステム開発の手法からご紹介します。大まかに分けると、システム開発手法にはウォーターフォール開発とアジャイル開発の2種類があります。ウォーターフォール開発は古い手法、アジャイル開発は現在主流の手法というのが一般的な認識です。

①ウォーターフォール開発

ウォーターフォール開発は上流工程から下流工程まで一連の流れでシステム開発を行うための手法です。滝の水が上から下に流れる姿にちなんでいます。かみ砕いて言えば1~100まで手順通り開発工程を進めるという手法です。

主な特徴は進捗管理が容易であることと、各工程において成果物が設けられていることです。ウォーターフォール開発は計画通りに開発を進めることが基本なので、プロジェクトが現在どの段階にあるか一目でわかります。なので状況に応じてリソースを割り振りできるというメリットがあります。

各工程において成果物が設けられている理由はウォーターフォール開発が「後戻りできない開発手法」だからです。1~100まで手順通りに進めていくので、後工程で問題が発生すると前工程まで戻り同じ作業を繰り返し行わなければなりません。なので各工程に成果物を設けて、品質を確保してから次工程へと進むというのがセオリーです。

こうした特徴から衰退しつつあるウォーターフォール開発ですが、システムの種類によってはこの開発手法が最適な場合もあります。

②アジャイル開発

アジャイルには「俊敏な」という意味があり、文字通りスピーディな開発工程を持つことで生産性を高めるための開発手法です。「イテレーション」と呼ばれる短い開発期間を設けて、その中で要件ごとの開発を行っていきます。システム開発の最初から最後までを1~100まで手順通りに行うのがウォーターフォール開発ならば、アジャイル開発は細かい開発サイクルをいくつも重ねて最終的な成果物を完成させていきます。

その反面進捗が管理しづらいという傾向があるため、場合によっては総合的な開発期間が延びてしまう危険性があります。

≪スクラム開発≫

スクラム開発とはコミュニケーションを主体としてアジャイル開発の一種です。高頻度にミーティングや進捗会議を行い、チーム全体で情報を共有することで問題の早期発見と生産性の向上、ならびにシステム品質の向上を目指します。ただしスクラム開発を取入れるためには環境的条件がいくつかあるため、スクラム開発が適さな場合もあります。

≪DevOps≫

DevOpsとは開発チームと運用チームが協力体制を取り、スピーディかつ信頼性の高いシステム開発を目指すための手法です。2009年に米メディア企業のオライリーが主催した「Velocity 2009」というカンファレンスにて、Flickr(https://www.flickr.com/)のエンジニアが紹介した「10+ Deploys Per Day: Dev and Ops Cooperation at Flickr(1日に10回のデプロイ:Flickrにて開発とオペレーションの協力)」というセッションから浸透しました。

CTCグループ10,000ユーザーが使う Windows Virtual Desktop環境を快適にするマイクロソフトの Azure NetApp Files
ストレージ選びを解決! Azure NetApp Files(ANF)とは?

システム開発工程

続いてシステム開発工程を細かく分割して解説していきます。あくまで基本工程なので、システム会社によって若干異なる部分もあるでしょう。

①システム企画

クライアントからシステム開発依頼があった段階で企画を作成します。システムの主な概要、開発期間、開発費用などを記載したものです。この時点では契約に至っていないので、システム要件を掘り下げると開発期間や開発費用が変動する可能性があります。あくまで目安として捉えましょう。

②要件定義

契約を締結するとこれから構築するシステムの要件を定義していきます。この要件定義で担当者が心がけるべきことは、要件を余すことなく引き出すことです。システムに関係するエンドユーザーを巻き込んで必要な機能などを定義するため、システム会社からのヒアリングには協力的な姿勢を見せましょう。

③概要設計

要件定義が完了するとシステムと大まかな概要設計に移ります。ここではシステムのUI(ユーザーインターフェース)や具体的な機能、入出力する帳票などを設計していきます。

④詳細設計

クライアントが持つビジネス課題を解決するために機能要件を詳細まで設計していきます。ここでの決定事項を具体的なプログラムに落とし込んでいくため、要件変更がある際はこの時点ですべて顕在化すると開発がスムーズに進むでしょう。

⑤プログラム設計

各プログラムに関して一つ一つの構成や処理手順などを細かく設定していき、プログラムを記述するための骨子を設計します。

⑥プログラムコーディング

プログラムを記述することをコーディングといいます。コーディングでは100%の完成度を目指すのではなく、70%~80%の完成度で単体テストを行い早急に問題を検出して、微調整を加えていくことでシステムの信頼性を確保できます。

⑦単体テスト

プログラム単体のテストです。多くの場合はプログラムのコーディングが完了した時点でテストを行いその動作を検証します。問題があれば修正を加えていきます。

⑧結合テスト

機能としてひとまとまりのプログラムを連携してテストします。各機能がビジネス課題に決に結びついているかを確認することが大切です。

⑨システムテスト

各機能の結合テストが完了するとシステム全体としてのテストに移行します。機能と機能の連携が正しく行われているかの確認をして問題があれば修正します。

⑩運用テスト

実際にエンドユーザーにシステムを使ってもらいその検証データをもとに行う最終テストです。この段階で問題をすべてクリアしていればシステムリリースに移行します。

⑪リリース

運用テストをクリアすれば晴れてシステムリリースです。ただし、リリース後に問題が発生する可能性もあるため要注意です。

⑫運用保守

システムリリース後はシステムの運用保守を行い、安定した稼働を目指します。問題が発生すればシステム会社が対応したり修正を加えていきます。

以上が細かいシステム開発工程です。クライアント側の担当者はこの開発工程を知っているかいないかで、構築するシステムの成否が大きく分かれるでしょう。システム会社に開発を丸投げするのではなく、担当者も一緒になって構築していくという姿勢を持ちより良いシステム開発を目指しましょう。

無料のオンラインCSSクリーナーは、ウェブサイトのスタイルファイルを整理するのに役立ちます。きちんとしたコードを書くたびにそれを使用してください。

DevOpsの導入にあたり考慮すべき3項目

RECENT POST「トレンド」の最新記事


トレンド

ゼロトラストとは?注目されている理由と実現させるポイントを解説

トレンド

アプリケーション開発に求められるマイクロサービスとは?

トレンド

ランサムウェアの脅威とは 感染経路や対策方法など基礎まとめ

トレンド

ランサムウェア防災訓練@京都府舞鶴市 Non-Tech編

DevOpsに代表されるシステム開発の手法と工程
クラウドへの移行の計画と実行
ブログ購読のお申込み

RECENT POST 最新記事

RANKING人気記事ランキング