はじめにこんにちは、Morley@仮免エンジニアです。未経験エンジニアが来月から客先常駐案件にジョインするに際し、理解が曖昧だったワードを表層的ではあるものの、理解することで用語から生じるハードルを少しでも下げることを目的に記事を書くことにしました。エンジニア新人エンジニアそもそも、システム開発工程とはなんぞや?システム開発工程とは、コンピュータを用いた機能(自社サイトや業務システム、アプリケーション等)を開発する際に必要なプロセスのことです。開発モデル(ウォーターフォール型やアジャイル型など)によって、開発工程は異なるものの、開発工程を構成する要素にはある程度の共通点があります。具体的には、顧客の要望を整理することや、システムの設計・プログラミングなどの要素がシステム開発工程には必要になってきます。開発モデルごとに異なる開発工程システム開発の開発モデルには、いくつかの種類があります。主な開発モデルは以下のとおりです。※その他多くの開発モデル(手法)が存在します今回はそのなかでも代表的な開発モデルである「ウォーターフォール型」について、モデルの説明とシステム開発工程について簡単に紹介します。ウォーターフォール型の開発工程ウォーターフォール型は、システム開発に要する工程を順番に進めていく手法です。定めた工程計画を順番にこなすイメージで、高いところから水が流れ落ちる滝を模して「ウォーターフォール型」と呼ばれています。原則として前工程が完了しないと、次工程に進まないことで前工程の成果物の品質を確保し、前工程への手戻りを最小限にします。大規模開発で採用される、最もポピュラーな開発モデルです。ウォーターフォール型では、上図のような流れで開発工程を進めていきます。システム開発するためには、まず設計が必要です。基本的にシステム設計では、最初に要件定義を行い、次に外部設計を行います。外部設計を基にして内部設計を行ったあと、内部設計を基にして実装(プログラミング)を行います。Definition)ウォーターフォール型におけるシステム開発は、要件定義という工程から始まります。要件定義とは、クライアントがシステムに求めている機能をまとめて、システムの仕様や範囲を決めることです。必要な機能や性能、要求される信頼性や保守性、そのほか実現すべき業務モデルや業務フローなどについて、クライアントの要望を詳しくヒアリングし、齟齬が生じないように要件定義書を作成します。要件定義の精度が高いほど外部設計を行いやすく、その後の仕様変更を減らすことができます。要件定義で確定しなかった項目は、次の外部要件の段階で再度検討され、仕様が決定されます。Design)要件定義が終わったら、次は外部設計です。外部設計は、基本設計(BD)とも呼ばれ、一般的に外部設計までが上流工程に含まれます。要件定義で決定した機能や性能、制約条件などを基にしてシステムの基本となる設計を行います。操作画面や操作方法、データ出力など、ユーザーから見えるインターフェース部分の仕様を決定したり、セキュリティや運用規定、システム開発のスケジュールや費用などを設計したりと、基本的にユーザーに向けた仕様を設計するのが外部設計です。その他の設計」の三つに分けて解説します。方式設計では、システムの実装方針やプラットフォームの方針を設計します。システムがどのようなハードウェアで構成されるか、ハードウェアやソフトウェアの機能や構造をどうするか、プラットフォームは何か、開発言語をどうするかなどを決めます。アプリケーション全体の構造もここで設計されるため、アーキテクチャ設計とも呼ばれています。機能設計では、システムをモジュール単位で分割し、各モジュールや使用するデータベースの設計を行います。具体的には、データの入出力、データベース同士のデータの受け渡し、ユーザーによる操作、帳票の出力などです。書式など、システムの使いやすさやユーザー満足度につながるインターフェース部分の仕様を決めるのも機能設計の役割です。業務として運用するために必要な部分を決定します。インターフェース仕様書」などが作成されます。これらの内容は、クライアントに確認して合意を取ることが必要です。Design)内部設計では外部設計を基に、システム内部の動作や機能、物理データなどユーザーから見えにくい詳細な部分の設計を行います。外部設計とその後に行われる詳細設計の間の工程ですが、内部システムに特化しているため、詳細設計と同じ工程として扱われることもあります。プログラム機能を単体に分割し、そこで使用する物理データや入出力を設計します。外部設計の結果をプログラミングしやすくするのが内部設計の役割です。次に外部設計で決定した事項を基にコンピュータでの実装を想定したうえで、より詳細にシステムを設計します。外部設計がユーザー視点からの設計である一方で、内部設計の工程ではコードやプログラムの設計など、開発者側からの視点でシステムを設計します。データ設計」「入出力の詳細設計」の三つに分けて解説します。機能分割では、プログラミングやシステムのメンテナンスをしやすくするために、機能をモジュールごとに分割し、各モジュールの機能を明確化します。機能間でデータが処理される際の流れ(データフロー)を設計します。データが処理される流れを明確にすることで、設計バグを洗い出せます。物理データ設計では、ユーザーには見えないシステム内部で使うファイルやデータのやり取りに関する部分の設計を行います。入出力の詳細設計では、外部設計で決めたインターフェースをプログラミングでどのように実装し、表現するかをさらに細かく設計します。エラー処理や初期値・デフォルト値の定義、入力データのチェック方法、表示するメッセージなどについても検討します。データフロー図」「データベース物理設計書」などが作成されます。内容はプログラミング作業を行うメンバーに共有されますが、内部設計でクライアントとの調整を行うことはほとんどありません。【4】実装ここでようやく実装工程です。実装工程では、内部設計での決定事項を基に実際にプログラミング言語を用いて、システムを構築する工程になります。家の建築で例えると、先ほどまでの工程が設計図の作成であった一方で、この工程以降は家を実際に建てる流れになります。最後に今回はシステム開発工程のうち、ウォーターフォール型に焦点をあてて紹介しました。要件定義~実装までの開発工程の概略についてを取り扱いましたが、私自身が未経験であるがうえ、調べたものを解釈しているため、内容に相違がある場合がありましたら、ご容赦ください。その際はコメントや編集リクエストいただけると幸いです。upLoginユーザーは見つかりませんでした。