見出し画像

仕様内容を設計・実装する前に検証って必要?検証の重要性とは?

皆さん、こんにちはギガバイトです😄
さて、今回は現在、本業や副業でエンジニアをやられてる方向けの投稿になります。
さて、皆さんはエンジニアとして仕事をしていく中でどのような作業をしていますでしょうか?ソフトウェアの実装、設計、テスト等色々あるかと思います。ちなみに著者は要件定義からテストまでの一通りの経験を持っています。
しかし、実際に作業では開発を全て請け負うことはあまりなく、ある開発フェーズの段階での作業を任されることがほとんどだと思います。特に決定後の仕様の設計と実装、テスト作業をやられてる方がほとんどだと思います。
今回は仕様をもらった後に設計・実装を行う前にする作業について投稿させていただきます。

◼︎そもそも開発の流れってどうなってるの?

さて、そもそも皆さんはアプリやWebサイトの開発の流れってご存知でしょうか?元からエンジニアとして仕事をやってきた方だったらご存知の方もいるかと思いますが、副業や転職してエンジニアの仕事を始めた方はあまり知らない人が結構多いです。開発は主に要件定義、設計、実装、テストの順に行われます。主に要件定義から実装までが上流工程と呼ばれており、テストを下流工程と呼ばれています。それでは各工程について簡単に解説していきます。

・要件定義
要件定義はクライアントからいただいた要件からツール、アプリ等で何をしたいかどのようなツールやアプリを作るべきかを定義する。プロジェクトのコンセプトを決める工程です。

・設計
要件定義で定義して内容を詳細化・構造化していく工程です。設計は要件定義で定義した内容を実現するために必要な機能を決定する基本設計と細かく詳細化し機能を実装できるように構造化していく詳細設計があります。

・実装
設計した機能を実際に作っていくのが実装工程です。プログラミングはこの工程に当たります。

・テスト
実装した機能が要求通りに作れているかを確認する工程です。

以上の工程で開発は進んでいきます。しかし、実際に一つの案件で全ての工程に携わるエンジニアは少数で多くの人は各工程ごとに分別された仕事を任されます。フリーランスやクラウドソーシングでも特定の工程内での作業が多いため、各工程間での連携や情報共有が不可欠となります。

◼︎設計・実装前に検証が必要な理由とは?

ここから本題に入っていきます。開発工程内で実際に携わることが多い工程は設計(詳細設計)、実装、テストです。これは工程が進んでいくほど必要機能や要件がより詳細化され、作成箇所が増えていくためです。要件定義や基本設計は開発の根幹であるということと人数が少ないというこもありますし、クライアント側が完了させてることが多いということもあげられます。さて、仕事として設計や実装の依頼を受けた際にまず考えなければいけないのはその仕様を設計、実装する際にどのように設計、実装できるかということですが要件定義や基本設計をした相手がエンジニアでないこともあります。ということは依頼を受けた時点では実現できるかわからないということ、使用OSやフレームワーク、プログラミング言語等が指定されている場合はそれらでは対応されていない場合があります。さらに開発において問題がある場合はどの工程で発覚するかでも開発に大きく影響しますし、最悪の場合、遅れる分をリカバリーできないということもあります。それらを回避する点で設計、実装を行う前に一度提示された要件で実現可能かを検証する必要があるといえるでしょう。

◼︎検証って言うけど何をするの?

それでは検証って何をするのか、設計や実装まえに今回作る部分を小さい規模で作ってみようということです。この段階で作る部分はしっかりしたものではなくて構いません。あくまで検証ですので仕様に対して実現できるかどうかを試す程度で大丈夫です。この段階で実装可能とわかれば開発を進めることも可能ですし、問題が発覚しても仕様内容についてクライアントと相談することも可能ですし、設計と実装前ですので仕様の規模にもよりますがリカバリーしていくことが十分可能だと著者は考えています。

■最後に

今回、投稿した内容については著者が今までの失敗から必要だと思ったことを投稿させていただきました。エンジニアとっての仕事というのはプログラミングや設計するだけが仕事ではなく、クライアントや他の関係者と仕様について相談するのも仕事の一つです。開発目的のアプリやツールの作成がエンジニアの仕事目的です。そのためには徹底した報連相が必要になります。何か問題が発生した際は自分で留めるだけでなく、クライアントや関係者と相談することも忘れないようにしてください。

この記事が気に入ったらサポートをしてみませんか?