要件定義、外部設計、内部設計の違いを簡単に説明してみた。

#技術系
writtdden by 銀太

どうもです!銀太です!

気づけばもう10月!!2021年も終盤に向かってますね〜

10代の頃に大人や先生に言われた、「大人になったら一年なんて今よりもっと短く感じるよ」って言葉が最近身に染みてしょうがないです。。。

言われてた当時は子供だから適当に内心で「はい!出ました!大人あるある!一年を感じるスピードに誤差あるわけないだろ!」って思っていましたが、

どうやら本当だったようですね。。。大人ってすごい。

と言うわけで今回は要件定義、外部設計、内部設計の違いを簡単に説明出来ればと思っています〜

要件定義requirements definition RD

要件定義は、本格的な開発工程の前段階で、開発者の視点から要求をまとめ、具体的な進め方を決めることです。

システム開発では、クライアント側の要求を実現することがゴールです。 そのため、開発をスタートする前に、要求をもとにして実装する機能や性能などを要件定義に定め、具体的にどのように進めていくかを決めます

まずは、クライアント側の要望を引き出し、整理することから始まります。そこから、具体的な開発工程を設計するために業務フローや業務のシナリオを作成していきます

要件定義は、お客様の要求定義をいかにシステム化していくかを定義する、いわばシステム開発の土台となるものです。

ですので、要求にある細かな動作や、それに伴ってユーザーが行いそうなエラー動作までを想定して、ひとつひとつをプログラムの動作でイメージしなければなりません。

外部設計【external design】ED

外部設計とは、要件定義書をもとに画面操作や操作方法のインターフェースの設計をすることを言います。

外部設計は基本設計などと呼ばれる場合もあります。

外部設計ではユーザーが直接関わる部分を設計するので、
操作画面や操作方法、データ出力など、ユーザーから見えるインターフェース部分の仕様を決定したり、セキュリティや運用規定、システム開発のスケジュール、費用などを設計するのが外部設計となります。

外部設計で設計する主な項目は以下になります!

システム方式設計

システムを稼働させる性能を持ったハードウェア(サーバー)を決定したりサーバを複数の拠点に分散する、中間サーバを設ける、バックアップ専用のサーバを設置するといったようなことです。また、複数のサーバを稼働させる場合、負荷分散装置(ロードバランサ)の設置の有無などについても決定します

他にはプログラムをどのように開発し、実装をするのかを決定します。プログラムを社内で開発するのか、他社のパッケージを導入するのか、プログラムを動かすためのミドルウェアをどうするかなど、決定します。

後は開発フレームワークの決定をします。フレームワークについての説明は、まさんがしてるので是非見て下さいね!
【プログラミング基礎】ライブラリ・フレームワークって何?

開発言語は、さまざまな角度から検討し適した言語を選択する事になります。

機能設計

機能設計では、システムをモジュール単位で分割し、各モジュールや使用するデータベースの設計を行います。

具体的には、データの入出力、データベース同士のデータの受け渡し、ユーザーによる操作、帳票の出力などです。

また、画面のレイアウト、操作方法、帳票類の書式など、システムの使いやすさやユーザー満足度につながるインターフェース部分の仕様を決めるのも機能設計の役割です。

そのほかの設計

そのほかの設計では、クライアントに求められている機能やセキュリティ、運用規定、納期、開発費用など、業務として運用するために必要な部分を決定します。

 

内部設計internal design】ID

内部設計とは、開発するシステムが要件を満たし、安定した品質で開発を行うために、詳細な設計を行うことを言います。

内部設計は詳細設計とも呼ばれることもあり、ソフトウェア詳細設計に該当します。

システムに求められる機能を実現するためのシステムやプログラムなど、データ処理や初期値の定義など、システム内部における重要な機能を決めます開発者寄りの設計工程になります。

内部設計は、外部設計をもとにシステムの全体像を具体化していくことをします。内部設計が完了すると各機能のプログラミング作業へと移っていきます。

内部設計で設計する主な項目は以下になります!

機能分割

外部設計で洗い出した各モジュールの機能を明確化する。機能間でデータが処理される際の流れ(データフロー)を設計する。
処理の明確化で、設計バグを洗い出せることが出来ます!

上記の説明で分からなかったら凄く分かりやすく書いてある記事があるので下記の記事を良ければ見て下さい!
リンク

物理データ設計

システム内部で使うファイルやデータのやりとりに関する部分の設計を行う。

データベースとしての性能について考慮します。正規化したテーブルの定義を崩したり,インデックスを定義したりして性能が向上するようにモデルを修正していきます。

入出力の詳細設計

『機能仕様書』、『データフロー書』、『データベース物理設計書』などを作成する。

最後に

この記事を読んでくれた方は、「システム開発をするにあたって色々な設計をしているんだな〜」と知ってもらえらば嬉しいです!

少しでも要件定義、外部設計、内部設計について知って貰えらた嬉しいです!

それでは皆さんさようなら〜!!

Favorite