システム開発において、上流プロセスと下流プロセスは重要な段階であり、それぞれ異なるタスクが含まれます。SEとして活動する際には、これらのプロセスについてわかかると、コミュニケーションの誤解を避け、問題を未然に防ぐことができます。本記事は、SE(システムエンジニア)の役割において、下流プロセスについて説明します。
1. 下流プロセスの概要
ソフトウェアエンジニアリングの下流プロセスは、開発ライフサイクルの後半部分を指します。これには開発、テスト、本番リリースなどが含まれます。また、本番リリース後の保守作業も下流プロセスの一部と見なされることがあります。
開発段階では、上流プロセスで作成された設計書を活用して、ソースコードなどを完成させます。さらに、ネットワーク設定やミドルウェアの設定など、システムに必要な要素を総合的に対応させる必要があります。
次に、テスト段階では、作成したソースコードを中心に、設計通りに動作するかどうかを確認します。テストには多くの工程が含まれ、それぞれの工程をすべてクリアする必要があります。
システム全体でテストが完了すると、最後に本番リリースが行われます。開発だけでなく、リリースも完了させることで、ユーザーがシステムを利用できるようになります。
2. 下流プロセスのタスク
2.1. 開発
開発プロセスでは、エンジニアは設計書に基づいてソースコードを記述する必要があります。設計書には、使用すべきプログラミング言語やアルゴリズムなどが示されています。ただし、プロジェクトによっては曖昧な部分があることもあるため、エンジニアは状況に応じて調整する必要があります。
また、多くの場合、複数のエンジニアが開発に関与するため、開発ルールを確立することが一般的です。変数の命名規則や改行のスタイルなどが例です。開発に参加するエンジニアは、これらのルールを把握する必要があります。
さらに、開発プロセスの進捗を追跡するために、バージョン管理システムを導入する場合もあります。Gitなどのツールが広く使用されており、これらのツールの操作方法を理解することも重要です。プログラム言語のスキルだけでなく、関連するスキルも求められることに留意しましょう。
2.2. テスト
開発と密接に関連する作業として、テストがあります。コーディングに比べてテストにかかる時間が長い場合も多く、品質を確保するために不可欠です。設計書に従って、プログラムが要件通りに動作しているかを評価します。
テストにはいくつかの段階があり、「単体テスト」、「結合テスト」、「システムテスト」、「受け入れテスト」といったものがあります。最初は個々のモジュールをテストし、最終的にはシステム全体をテストする必要があります。単体テストに合格しても、複数のモジュールを組み合わせた際に問題が発生する可能性があるからです。
また、テストを実施するには、事前にテストケースを作成する必要があります。設計書に基づいたテストケースを作成し、それをクリアすることでテストが完了したとみなします。最終的には、発見されたバグの数や対処、総合評価などを報告書にまとめる必要があります。
2.3. 本番リリース
下流工程において、本番リリースは重要なフェーズです。この段階では、テストが完了し、問題がないことが確認されたソフトウェアがクライアントに提供されます。リリース前には、リリースノートの作成や最終的な確認作業などが必要です。また、リリース管理ツールを使用して、リリースのスケジューリングやトラッキングが求められることもあります。
リリース後は、ユーザーからのフィードバックを収集し、分析する必要があります。また、バグ修正や機能改善、新たなリリースの準備などにも対応しなければなりません。本番リリース後の運用に向けても備える必要があります。
2.4. 運用
運用は、システム開発工程の一部ではなく、むしろその後の重要な作業です。システムは、定期的なメンテナンスなしには問題が発生する可能性があるため、運用が不可欠です。本番リリースが終わった後も、運用作業が待っています。
ただし、運用の具体的な内容は状況によって異なります。一部の場合ではほとんど作業が必要ないこともありますが、別の場合では定期的なデータ登録などの作業が発生することがあります。ユーザーからの問い合わせが多く、細かな運用が求められる場合もあります。
運用には、開発やテストで作成された資料や運用手順書などが必要です。これらの資料の整備も、システム開発プロジェクトの一環として考えられます。尚、運用の作業内容は、特に上記で詳しく紹介されていませんが、エンジニアは運用についても考慮する必要があります。
3. SE観点からの上流工程と下流工程の違い
上流工程と下流工程には大きな違いがあります。以下の3つの観点からその違いを説明します。
3.1. 作業の実施タイミング
上流工程は、ソフトウェア開発プロジェクトの初期段階で行われます。たとえば、要件定義やシステム設計などが、プロジェクトの初期に実施される作業です。
対照的に、下流工程はプロジェクトの後半部分で実施されます。これにはコーディング、テスト、保守などが含まれます。これらのフェーズでは、上流工程で設計されたシステムを具現化することが求められます。したがって、実施タイミングおよび内容に大きな違いがあります。
さらに、下流工程の作業は、開発プロジェクトが終了した後にも影響を及ぼします。時には、運用が開始された後に問い合わせが発生することもあり、この点に関しても実施タイミングや影響範囲に違いがあると考えてください。
3.2. 目的
上流工程の主要目的は、システムの要件を明確にし、設計書を作成して完成させることです。これにより、開発チームは何を開発すべきか、どのように開発すべきかを理解できます。また、上流工程では、システムの概念的な構造や動作を定義する必要があります。
一方、下流工程の主要目的は、設計されたシステムを具体的に実現することです。また、その品質を継続的に確保することも求められています。さらに、システムの継続的な改善や更新にも対応する役割が下流工程に付随します。
3.3. 成果物
上流工程の成果物には「要件定義書」「設計書」「プロジェクト計画」などが含まれます。これらの文書は、システムの目標や設計を明確にし、開発チームが共通の理解を持つために重要な資料です。
それに対して、下流工程の成果物には、ソフトウェアのコード、テストケース、テスト結果、バグレポート、リリースノートなどが含まれます。これらの成果物は、システムが設計通りに機能し、品質が確保されていることを示すものです。また、これらの成果物は、システムの継続的な改善や更新にも役立ちます。
4. まとめ
SEが理解すべき上流工程と下流工程について詳細に説明しました。労働形態によっては、いくつかの工程にしか関与しないかもしれませんが、SEとしてこれらの工程を理解しておくことは重要です。
上流工程と下流工程には大きな違いがあり、これらの違いは実施タイミングや成果物などに影響を与えます。誤った理解は大きな問題を引き起こす可能性があるため、正確な理解を持つことが必要です。
システム開発で下流工程は一つの大切なプロセスであります。もし下流工程の詳細にご興味があれば、リンクをクリックして、参考してください。
参考リンク:
https://miichisoft.com/7-points-to-keep-upstream-process-development/