トップページtech
988コメント450KB

eXtreme Programming

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
12のプラクティスがありますが、
実際実用的と思われるのはTesting, Refactoringの2つだと。
Cording Standardsは常識と考えればね。

XP全般について語ってもいいですが、
むしろTesting, Refactoringの二つをメインに語りましょう。
Testingのテクニックなんざをね。

参考URL:
http://objectclub.esm.co.jp/eXtremeProgramming/
00021NGNG
JUnit (for Java)
http://www.junit.org

RubyUnit
http://homepage1.nifty.com/markey/ruby/rubyunit/index.html
その他は1のリンクのFAQ見るべし
0003デフォルトの名無しさんNGNG
XPって理想ではあるけど殆ど妄想かも…

チームメンバの能力が相当高くないと成り立たないよね。
あとモラルも。

何も分かってないくせに、リファクタリングにかこつけて意味もなくコード
いじるオタクちゃんが絶対出てきそうだし。

テストの妥当性とか突き詰めていけばキリがなさそうだし…
そもそも、テスト書く人間のスキルがそれなりに高くないとダメだし。

ペアプログラミングと、個人の端末は持たないってのは論外。出来るわけない。
0004デフォルトの名無しさんNGNG
実際に導入してるところの本音とか聞きたいなぁ
0005デフォルトの名無しさんNGNG
>>3
>ペアプログラミングと、個人の端末は持たないってのは論外。出来るわけない。

出来ないんならやらなきゃいいのでは?
やってるとこはやってるらしいよ。
0006デフォルトの名無しさんNGNG
UnitTestツールは便利だよ。
うまくいって欲しい時のテストはもちろん、
例外時のテストも可能だし。
システム止まってもらっちゃ困るから、
しっかり例外時のテストしなきゃね。
0007デフォルトの名無しさんNGNG
>>3
>チームメンバの能力が相当高くないと成り立たないよね。

それ有りそう。たとえば馬鹿がコードを書くならば、
リファクタすればするほど改悪するかも知れないし、
馬鹿が二人そろっていれば、ペアプロで改悪が加速される。
馬鹿がコード規約を定めれば作業は瓦解する。

実際いるんだよねえ。プログラマ側にもマネージャにも客にも、馬鹿が。
まともに頭使ったら絶対こんな答え出すまい?っていうような答えを出して、
しかも平然としてる奴って。

>ペアプログラミングと、個人の端末は持たないってのは論外。

個人の端末持たないなんてPracticeは、無かったと思いますが?
それじゃネットワーク分散開発がやれないじゃん。自宅にPC持てないから。
それにHHKの売り文句みたいに「自分の気に入った操作環境」は超重要ですから、
それを拒否するなんて馬鹿なことをXPがスルとも思いがたい。

もしかして、ソースを個人で抱え込まないっていう話ですか?
>共同所有権(Collective Ownership)
>誰でも、どのコードでも、どこででも、いつでも、プログラマはコードを修正できる。

それなら、ソースを個人pcじゃなくて、サーバーのver管理ツールに置くのと、
修正を各自が勝手にやる(ことを許す)ってので、OKな筈です。

なおこーゆーことをするには、いや、しない普通の開発の場合でも、
ver管理ツールの存在は大前提っす。XPをしてなくても、これは実感。
偶発や故意(馬鹿も含めて)のソースの修正の安全性が段違いになるので。
俺んとこでもVSS(笑)使い始めてから開発「安定」性がはっきり上がった感じです。

まぁこれはXPに興味持つような人になら釈迦説法だろうけど。
RCS/CVS/VSSスレと、ゲーム開発スレを、参照どぞ。
0008デフォルトの名無しさんNGNG
っていうか、何で「バカがやると」とかいう前提で考えるんだ?

自分や、自分が所属する人間が、現在のやり方を捨て、
XPを実践したらどうなるかを考えたほうが健全では?

「バカ」がやれば、ウォーターフォールでもスパイラルでも
失敗するに違いないでしょ。
0009デフォルトの名無しさんNGNG
>何で「バカがやると」とかいう前提で考えるんだ?

>自分や、自分が所属する人間が、現在のやり方を捨て、
>XPを実践したらどうなるかを考えたほうが健全では?

ん???

一般論として「馬鹿」を考えた後で、
自分たちがその馬鹿に該当するかどうかを考える
という二段構えでも、おかしくないっしょ?
00108NGNG
ん、だから、バカに関する考察して何の益があるんだろう?という
疑問なんですが。

バカがやると失敗するが、スキルのある人がやると成功する、
とかいう考察をしたいんでしょうか?
0011デフォルトの名無しさんNGNG
C/C++用のTestUnitが数種類あるみたいだけど、
どれが一番使いやすいかな?
0012デフォルトの名無しさんNGNG
結論

駄目プログラマは、どんな手法を用いても駄目
天才プログラマは、どんな手法を用いても天才
0013デフォルトの名無しさんNGNG
XPは、いろんな開発手法をやってきてそれでも上手く行かなかった組織が
取り上げたところで効率が良くなる手法ではないと思う。
ある程度のノウハウがあり、そこそこ開発効率の高い組織がさらに上を
目指して取り入れた場合のみ効果があるのではないか?

いずれにしても銀の弾など存在しないのだから過剰な期待は禁物。
0014>13NGNG
厨房には向かないってのはもうわかったから次いこうや。
0015デフォルトの名無しさんNGNG
UnitTestはただテストのコードとして書くだけじゃなくて、
クラスの設計時に合わせて書くといいよ。
なぜなら設計時にテストコードを書くことは
事前に(仮想的な)クラスを使ってみることを意味するので
クラスがどうあるべきかというイメージがはっきりする。
# UMLだけ書いているときと比べてやりやすい気がする。

またテストコードがクラスのドキュメント的な性格を持つので、
UML図、仕様書とコードを常に同期させるコストを低減できる
# ことが期待される。このあたりの効果はまだ不明。

いずれにしても厨房はまともなテストが書けない。
まともなリファクタリングができないといっても不毛だよ。
厨房がXPの実践を通して設計・テスト・リファクタリングの
経験をつめると考えれば従来のコーダよりも得られるものは
はるかに大きいと思う。
0016デフォルトの名無しさんNGNG
>>12
その考えには反対だな。
馬鹿が集まればどんな方法論使っても失敗するけど、
優秀なやつだけで固めてもプロジェクトは失敗するときがある、
ってことでみんな頭を悩ませていたわけでしょ。
で、いろいろなプロジェクト進行法が考え出されて、そのなかで
もっとも現代的で現実的なのがXPってことでしょ。
XPを用いても優秀な人材がいないとだめってのはいっしょってことだな。
0017デフォルトの名無しさんNGNG
>>16
うまく言えないけど、なんかXPの思想や目的、成り立ちと合致してない気が・・・。
0018デフォルトの名無しさんNGNG
>>17
それって「いろいろなプロジェクト進行法が考え出されて、そのなかで
もっとも現代的で現実的なのがXPってことでしょ」って部分に対して
だよね?
スマソ、あんま考えて書いた文じゃないから変でした(藁
ただ、漏れがいいたいのは「優秀なやつだけ集めたとしても失敗する
ときがある。何らかの方法論を使えばそのリスクを軽減できるけど、
そのなかでもXPはなかなか逝けてるYO!」ってことでした
0019デフォルトの名無しさんNGNG
>>10
馬鹿について考えるのが抽象的すぎて困るなら、
自分について考えるのは具体的すぎて
応用が利かないと思うが。

応用ってのは、他人とかに話を展開するときに、ね。
0020デフォルトの名無しさんNGNG
マルチスレッド・マルチプロセス・ネットワーク関連の
UnitTestについては専用のTestingFrameworkってあるのでしょうか。

あとGUIのテストも面倒そうですね。
メニュー選んだりクリックしたりとかが。
0021デフォルトの名無しさんNGNG
>>20
xUnitは言語ごとにあるから、そのプログラムが何で作られてるかによるな。
あと「何を」テストするかにもよる。
漠然と「マルチスレッド・マルチプロセス・ネットワーク関連」と言われても・・・。

>あとGUIのテストも面倒そうですね。
>メニュー選んだりクリックしたりとかが。

Javaの例がどっかにあったな。
WebならHTTP Unitなんかが使える。
00221NGNG
とりあえず、

XPエクストリーム・プログラミング入門
ソフトウェア開発の究極の手法
ケント・ベック(ベック.ケント)

は、XPの紹介だけで実際には使い物にならない本ですな。
XPエクストリーム・プログラミング実行計画 を読んだことがある方
いい本でしたか?
0023名無しさんNGNG
age
0024名無しさんNGNG
age
0025デフォルトの名無しさんNGNG
>>22
どういう内容なら「使い物」になると判断します?
いまよんでるけど、まだ7章なんで精神論が主。
00261NGNG
>>25
これこれこういう思想だよ、というのは伝わるが
技術的な内容は一切無かったような。

とりあえず私は2冊目の本を注文しました。
こっちもそれっぽい内容だったら鬱。
00271NGNG
ついでだけど、既に
「テスト抜きではプログラムが書けない体」
になってしまった人いるかな(笑)
0028名無しさん@お腹いっぱい。NGNG
おお、珍しく知的な人たちが書いてる。
0029コピペさんNGNG
The Test/Code Cycle in XP
テストをひとつ書く。
テストをコンパイルする。まだ何もつくっていないんだから、これは失敗しないといけない。
コンパイルできる程度にコードを書く。(必要ならその前にリファクターする)
テストを走らせ、失敗することを確認する。
テストが通る程度の実装を行う。
テストを走らせ、通ることを確認する。
整理し「同じことは一個所で」となるようにリファクターする。
最初に戻って繰返す。
0030>29NGNG
0.いっちゃん最初に既存のテストが100%通ることを確認

全てはここからだ。
0031デフォルトの名無しさんNGNG
>>27
てゆーか、早く(ニンゲンに)なりたいです俺(T_T)

今やってる仕事がいい加減なプロジェクトで、
客とか上とかの連中が仕様をまともに考えやしない
(理屈的に穴だらけだったりとか)んで、
モトネタの仕様が無くちゃテストもかけない、
でも実装本体は書かされる、という
ロクでも無い状態になってます。
テストファーストが「できる」状況にあるかどうか?は、
結構そのプロジェクトのまとも度の指標になるんじゃないかと憶測。

せめてってわけで、コードとテスト(しかも手動用の手順書)を
同時に提出するようにしてるんだけど、
他の大抵の奴はコード書いてから数十時間後でないと
テストを提出してないらしい。俺のスタイルが
ものめずらしがられてしまったよ。
テストの内容が仕様やコードと(微かにでも)ずれていることの恐さを
判っているんだろうかヤツラは?
0032デフォルトの名無しさんNGNG
>>30

なにかに似ていると思ったら、これって
ソースとかのバージョン管理ツールの理屈に
なんとなく似てませんか?

つまり、概念的には、ソース字面レベルじゃなくて
実行テストレベルでの「diff」なんだよソレは。

確かに字面レベルだと、ソース書きながら
そのソースや他のソースの字面を比較とかするために
頻繁にgrepとか使うもんなあ。
それの実行時版なわけね、UnitTestって。

う。俺ぁエディタでソース書くとき、数秒(誤字じゃなく)に1回
SAVEする感じなんで、同じノリでUnitTestも数秒に1回やりたいな。
将来CPUが速くなったら、コード書くのとリアルタイムに同期した
全自動テストつまりIncrementalUnitTestなんてものが
出来るようになるかも。最後の}を入力し終わった瞬間に
Test画面がRedからGreenになるっていう感じ。

ん?するとUnitTestはRCSみたいなもんってことで、
一方でCVSに相当する統合テスト自動化方法ってのも
きっとこの世のどっかにあるんだろうな(^^;;;

UnitTest+(CVS-RCS)=統合Test
みたいな感じかな。
0033デフォルトの名無しさんNGNG
>>32
多分アナタ、テスト中毒(Fowlerのいう、Test Infected, うただなら
Addicted to Test)になる素質アルネ
0034デフォルトの名無しさんNGNG
>>33
なりたいです(廃人もーど

妄想つづき。
エディタ上でソースの任意の部分を選択ハイライトさせて
Testってコマンドを投げると、その部分に
うまく該当するTest(1つ以上)が存在すれば
そいつを走らせてくれる、というエディタとか。

まぁUnitTestのUnitより小さい単位なんてものを
考え出したら却ってハマルだけかもだが。
0035デフォルトの名無しさんNGNG
>>34
ワォ、アナタ天才ネ
って文体気持ち悪いから戻すけど、
buildとバージョン管理ともろもろを統合するツールは
今、いろんな人がつくりはじめてるみたい。今ならいっちょ面白い
のをつくると皆喜ぶかも。

エディターとの統合も面白いね。
0036デフォルトの名無しさんNGNG
>>32
>SAVEする感じなんで、同じノリでUnitTestも数秒に1回やりたいな。
これはちょっとウザいと思う。動かないのわかってて書いている場合もあるので。

>ソースとかのバージョン管理ツールの理屈に
>なんとなく似てませんか?
というより、XP,UnitTestを
開発ツールベンダに認知させる事ができたら、
開発の全フェーズに関わってくる可能性がある。
# 最近のIDEはカスタマイズ可能なので、
# ユーザーレベルで実現可能なはずだけど。

・プロジェクトと連携。ソースやクラス定義を追加したら、テストの枠組みを自動生成。
・ソース管理と連携。ソース管理のチェックイン・チェックアウトの度にテストを実行。
・実行(?)と連携。プログラムを実行したらその直前にテストを実行。
# テストのmake(前回失敗したもののみ実行)なんてのもありだね。
・デバッガと連携。テストに失敗したら、そのテストを再実行して失敗する直前に
 ブレークをかけてデバッガに制御を渡す。あとテストのステップ実行など。
・レポートツールと連携。テスト結果をデータベースに出力。
 最後に成功した(失敗した)モジュールとテスト直前に修正した他のモジュールなどをレポートする。
・プロファイラと連携。テストの時間を計測。複数のアルゴリズム・バージョン間で実行時間を比較。

これらの幾つかの機能を持ったDelphiのframeworkを作成中。
Delphiはビルドが超高速、GUIが作りやすい、コード補完、
クラスのprivate/protectedにアクセスするテストが普通に書ける、
スマートリンク、テストメソッドの検索・自動実行
ができるので、気合を入れれば結構使いやすそうなものができそう。
00371NGNG
う〜ん
UnitTestしないで試しにプログラムを作ってみたら
発狂してしまった(爆)
0038デフォルトの名無しさんNGNG
ふぉっふぉっふぉ、感染してしまいましたね。
もうとめられません。あなたの因子が社内に、大学に、
伝染してゆくのです。
0039デフォルトの名無しさんNGNG
>>36
おおおおお!
(案の段階で既に)すばらしい!!

なるほど。Borland伝統(笑)のrunメニューのなかに
testメニューが混じってくる感じかな。
DelphiならIDEへのカスタマイズもDelphi自体で書けるから
尚更有り難いですね。

>クラスのprivate/protectedにアクセスするテストが普通に書ける

これって同一ソースファイルに書くわけですね。
リリースのとき切り離すのがアレかな。
あ、条件コンパイルすりゃいいだけか。

>プロジェクトと連携。

Wizardでクラス生成を選択したら
対象ClassとTestClassを一緒に生成っすか。うおー。

>ソース管理と連携

delphiに添付の管理ツール以外も使えるようにしてください(w
(あのツールって使いにくくないっすかかなり?)
0040デフォルトの名無しさんNGNG
>もうとめられません。あなたの因子が社内に、大学に、

変化を抱護せよってのは、そういう意味だったのか(w
「伝染るんです」っていう感じ。
0041けっ!NGNG
こんな建設的なの、2ちゃんじゃないやい!!!
おいらフテネするもんね。
0042デフォルトの名無しさんNGNG
フテネするまえに...
でも、開発現場でISO9000とか、RUPとか、なんでも良いんですが、
重たーいプロセス体験してない人にXP菌を移しちゃっても
大丈夫なんでしょうか?
0043デフォルトの名無しさんNGNG
>>42
ふとまた下らないこと考えたんですが、
ISO9000とかハサップ(w)とかのノリと
XPのノリとの違いって、
型有り言語と型無し言語の違いと、
なんとなく似てるような?(よしあしはさておき
0044デフォルトの名無しさんNGNG
ニテルカモ
運用次第で後者の品質が極めて高くなる。
でも厨房に触らせると...
■ このスレッドは過去ログ倉庫に格納されています