●バージョンアップ
01016/01017 VFF15672 T's-Neko バージョンアップ
(16) 97/09/03 22:43
こんばんは。T's-Neko です。(^o^)o
#827 のコメントを読んで、バージョンアップ(拡張)について考えてみました。
バージョンアップと言ってもイロイロなタイプがあるわけで、
1.バグフィックス
2.最適化する:縮小化、高速化
3.機能を追加する(機能を細分化する)
4.処理対象を増やす
5.標準化する
に分けられると思います。(いま考えただけだけど)
ツールとかカスタマイズとかに分類するのは、あまり意識したことはありませ
んが、たとえば、配列とか、同じ概念(クラス)でも、MFC 版や STL 版があ
りますよね。(文法が違ったりしてインターフェイスが異なるのが困りますが。)
でも、その配列でも、微妙に機能が違ってきます。配列番号が大きくて、
初めてアクセスする配列要素が初期化されているかいないかとか、アクセス
できないとか。そうなると、拡張可能配列とか固定長配列とか別のタイプの
配列(クラス)になるので、バージョンアップではないと考えます。
一方、元々固定長配列だったものを、アクセス時に配列要素を拡張できる
別のインターフェイス(関数)を追加したなら、バージョンアップであると
考えます。(以後、これを「厳密なバージョンアップ」と呼ぶ。ポイントは、
同じインターフェイスで同じ機能であるかということです。)
また、処理対象を増やすこともバージョンアップと呼ばれますが、厳密な
バージョンアップと異なり、継承(による拡張)の要素を含んでいるので、
その扱い方も変わってしまいます。これによって、いちばん影響が出るの
は、コンストラクタ(初期化)でしょう。
あと、拡張可能配列とか固定長配列とかの厳密な区別を意識する必要を
減らすために、標準化されることもあります。C++ でファイルアクセス
クラスというラッパークラスを作った人が多いと思いますが、これは
自分のスタイルに標準化していることとも言えますね。これも、厳密な
バージョンアップではありません。
スパイラル開発では、このように 5種類の違いを意識し、資産を増やす
ことが重要だと思いますが、みなさんどう思いますか。
ただ、再利用には、ドキュメントを書くこと、過去のバージョンを残す
ことが重要であるのは明らかなので、ここでは、ソフトウェアの拡張を
どう設計するかについて議論したいと思います。最終的なソフトウェア
の仕様ではなく構成設計に関する部分です。(細かいですけど)
あなたは、新バージョンを作るとき、スクラップ&ビルドしますか?
--- Neko.
This text was copyed from Niftyserve Programer's Forum Pro.