H28 技術士(情報工学)ソフトウェア工学 II-2-2:デザインパターン


(1)ソフトウェア開発において使用されるパターンとしてはGoFのデザインパターンがある。
GoFはオブジェクト指向でのソフトウェア開発において、頻繁に発生する問題を解決するための手段をまとめたもので、デザインパターンに沿ってソフトウェアの開発を行うことで、さまざまな問題についての解決をスムーズに行うことができる。
GoFはソフトウェア開発における問題解決として23種類のデザインパターンを、オブジェクトの生成、クラスやオブジェクトの構造、オブジェクトの振る舞いの3つに分類して提供されており、パターンを使用する目的、適用する課題、解法、適用例、効果について書かれていて、問題解決時に使えるようになっている。

(2)GoFはデザインパターンとして、ソフトウェア開発時に発生する問題の解決方法をまとめたものであり、問題(課題)があるときにパターン集から似たもの、近いものを探しそれを適用する。
ソフトウェアの開発では、他のプロジェクトで開発したソフトウェアを流用したり、機能改良・追加などでソースコードの修正を行うことがあるが、こういったときの変更の影響を局所化し、他の箇所への影響を減らすことはテストの負担を軽くすることになるが、こういったときの変更方法などでデザインパターンの考えを使うことができる。
このとき、使うのは考え方とそれをまとめて提供されるパターンのクラス図で、クラス図を参考にすることで、プログラム修正時の考え方や注意点などを理解できる。
また、GoFのデザインパターンには適用例があるので、これを参考にすることで、プログラミング上の誤りをすることなく、ソフトウェアの開発を行うことができる。

(3)デザインパターンを利用するとの課題としては、利用する者のスキルに依存したものが多い、本来、課題については担当者が自ら考えそれをまとめ、関係者にレビューして、指摘を受け修正するという作業を行うことで担当者の問題解決力の向上やスキルアップにつながるが、デザインパターンを使うことで調査する力は付くが、問題解決力の向上に課題がある。
また、プロジェクトのマネージャ側も、デザインパターンに沿った開発であることに安心し、十分な議論、検証を行わずに開発を進めてしまい、対応に問題があった場合の発見が遅くなったり、問題を抱えたまま開発を終了し、リリースしてしまうことがある。
他にも、デザインパターンを採用すると、流用や変更が行いやすいソフトウェアになるが、効率性などは少し下がるため、処理速度やメモリ使用量などについての改良が発生することがある。


[Intermission]
担当している業務が組込系のソフトウェア開発でオブジェクト指向での開発を行っていないので、ネットでデザインパターンを調べて書いて見ました。
ここで挙げたGoFはソフトウェア開発時の課題解決のノウハウ集に近いもののようなので実際に使用する場合は、自社内でブラッシュアップしたり、使いやすい形にアレンジしたりといった作業が必要になると思います。(ここでもSECIモデルが使えますね。)



戻る 一覧へ