技術ブログ設計

プログラミング設計:設計とは?その2

概要

前回に引き続き、設計とは何か?というところで書き進めていきたいと思います!

何故設計を行うのか?

大規模なプロジェクトを実装する場合

例えば、個人制作、または少人数のチームでシステム制作、ゲーム制作を行う場合

設計書、仕様書がなくても実装が問題なくできることはあるとは思います!

しかし、例えばこのプロジェクトが大規模なものになった場合はどうでしょうか?

大規模なプロジェクトを作る場合、

・人数はより多く

・制作期間はより多く

・素材アセット類などもより多く

・プロジェクトが失敗した時の損失もより多く

・プロジェクトリリース後の運用期間もより長く

のような形で色々と状況が変わってくるかなと思います。

そういったときに仕様・設計を導入せずにプロジェクトを進めた場合、

以下のような問題に直面するリスクをおうことが予測されます。

・実装が属人化しやすい

設計なしで進めた場合に、どういった規則で作業を行ったら良いのかが不明なので

各自の独自な実装方法で割り当てられた部分を実装してしまい、その結果

各種作業部分をつなぎ合わせるときに問題が生じる。

また、属人化しているのでその作業者しか実装部分を更新できなくなります。

・メンテナンス性が犠牲になりやすい

設計により、各種モジュールの独立性(後ほど詳しく解説しようかと思います!)

が担保されている場合は、実装ないしを変更しても他の箇所に変更の影響を及ぼす割合が少ないのですが、(疎結合)

作成したモジュールが他のモジュールに方々依存していると(密結合)、実装を変更した場合、その変更が他のモジュールにも影響を与えてしまいその結果、他の部位にバグが発生する(エンバグ)ことがあります。

このエンバグを治すとまたエンバグが生じるような構造になっていると実装の更新・修正コストが跳ね上がる為、

結果メンテナンス性がガクッと下がります。

次回は・・

設計については、まだまだ書きたいことがあるので

次回も何故設計を行うのかなどについて順次書いて行こうかなと〜!