突然ですが、開発の流れの中で、自動生成するタイミングっていうのを考える。
ふつう、こういう開発をしますということが決まると、かなり早い段階で(業務分析中くらいに)方式決定をしようという話になる。
方式決定は、以下のことを考慮して行われると思う。
・要素技術(Webをつかうとか、セキュリティとか)の決定
・入出力の要素の決定(DBの有無、通信の有無など)
・開発言語
で、こんなところから、だいたいのプロジェクトの参加者のこと(費用から集められるメンバーの技術レベル)もかんがえて、まあ、ここの部分は隠したいよねとか、標準化したいよねとか言って、(たとえば、
DBのトランザクションのコミット部分は、画一化しないと、
ずーっとにぎっちゃうやつがいるから、やばいよね。
とか、オートミットでいいじゃんとか、
帳票出力は、これでいきたいけど、難易度下げたいよねとか、
クライアントの利用者によって、サーバー側の起動するクラスを
切り替えるため、リフレクションつかう部分は、教えると、
わかんないやつがうるさそうだから、隠したいよねとかなどなど)
とりあえず、パターンないしは、フレームワークを作成する。
そして、仕様書の各項目を参照して、フレームワークをつかって、開発できるという「プロジェクトの成功の方程式??」をたてる。
つまり、方式の時点で、どのドキュメントをつかって、どう組めば、開発が可能なのかを、読みきっている(ただし、最近のアジャイルまんせーな人が方式にはいると、単体レベルで、開発可能かどうかを読みきらないうちに、方式完了とせざる終えない。アジャイルな人たちに、そこまで規定すると、反感を大いに買うから。
この場合、マネージャーが、プログラマを管理できない場合、プログラム開発工程でプログラマがプログラムを抱え込まれてしまうと、失敗する)。
そして、ドキュメントの流れをつくる(どこをどうみて、開発すれば、開発可能かを確認する)。
自動生成の1つは、この時点で、おこる。
あるドキュメントから次工程のドキュメント、ソースをつくるのが、大変なとき、あるいは開発工程上、変更が頻繁にありえるのに、時間がないとき、その部分を自動生成する。
つぎに、方式部隊の成果をうけて、共通部隊が開発することになる。
共通は、1つは、共通ライブラリ、メソッド、クラスの作成がある。そして、もう1つの役割として、共通部分の入出力を開発することもある。
はじめの共通ライブラリなどの開発は、ほんとに共通なので、これは、ソースをつくってしまえばおしまいの話である。
問題は、後者の共通の入出力。RDBなどに対する入出力、帳票出力、サーバーへのデータ飛ばしなどをつくることになるが、これは、機能が共通というだけで、ソースが共通になるとは限らない。
このように、ソースは共通にならないとき、ドキュメントから、ソースを自動生成するものをつくる。これが、自動生成の2つめのパターン
自動生成の3つめのパターンは、つぎの業務部隊が動く工程でおこる。
この段階では、業務開発部隊によって、外部設計、プログラミングがはじまる。このときに、データ名の管理、DBの項目管理、(場合によっては構成管理も)において、変更が起きたとき、ソースを変更しないといけないことが起こる。そこで、ソースを自動生成するプログラムを作成する。
つまり、管理上、変更があったときに自動生成する形のプログラム。
TDDを実行する際、TDDまんせーな人たちでも、じゃあ、テストデータは、どーやってつくるのよ!というと、だまっちゃう人がある(何千件、何万件以上のテストデータが単体でも必要ってなこともあるわけで。。。そういうとき)。
そんなばあい、「TDDって、お前言ったんだから、作れよ!」とはいえない。
そこで、自動生成チームがテストデータを作るなんていうケースもあるね。
まあ、このようなもんも、自動生成の2、あるいは3にふくまれる。
ということで、いままでにでてきた、自動生成のプログラムを作る場合は、こうやると、システムが開発できる、管理できるという業務と、ドキュメントの流れが明確にあり、それを補助する形で、自動生成プログラムができている。
つまり、ドキュメントの流れさえ理解すれば、自動生成プログラムのやってることも、プログラム内部も、容易に理解できるようになっているのがふつう。
で、PMは、ドキュメントの流れを理解しないと、つまりこのプロジェクトの成功の方程式がわかっていないことになるので、これは、論外。理解してるでしょう。
なので、自動生成のやってること、中身も理解してるのがふつう。
ところが、自動生成プログラムには、もう1種類ある。
開発中に、アドホックに、「ちょっと便利だから」ってつくちゃうやつ。
自動生成プログラムに入力する手間をはぶくための自動生成プログラムなんていうのもあるとおもう(ウィリアムのいたずらは、作ってことがある)。
で、わるいことに、これらのプログラムを改良(改悪?)修正したり流用したりしちゃったりする。そうすると、はじめ、「ちょっと便利だから」と深くかんがえず作ったもんだから、修正がかさんでくるうち、わけわかんないというプログラムに、なっちゃう。
また、上記の自動生成の1から3でも、修正がはいりにはいったり、成功方程式となるドキュメントが変わって、自動生成が変わると、修正の仕方によっては、わけがわからなくなる。
文がながくなるので、とりあえず、ここできります。