ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

SE・プログラマーを、安い金額で、死ぬまで、こき使わせる契約の結び方

2005-05-31 18:16:11 | 開発ネタ


そうそう、以前のブログで、

 ちなみに、これを応用し、アジャイルとあわせると、SEさん、プログラマーさんを、死ぬまで、こき使うことができる(それも、ものすごーい安い金額で)

と書いておきながら、その方法を示しませんでした。

たとえば、こんな感じ(もちろん、これ以外にも、テクニックあると思うけど)
(つーか、ウィリアムのいたずらは、これで、人生狂いました、はい)




方法

1、契約書を、機能ベースで契約する
  ・受注機能
  ・入出庫機能など

2、前払いで全額払う

3、開発者と直接契約を結ばない(中間業者が入る)

4、開発は、アジャイルで行うとする。
  このため、途中の仕様変更を認める
 (アジャイルでなくても、仕様変更を認めれば、なんでもOK。
  ただ、アジャイルという言葉を入れると、耳障りが良い
  契約書には、「アジャイル」とは書かないけど)。
  仕様変更の場合の費用は、別途話し合いということにする。

5、請負契約にする




 これ、ウィリアムのいたずらのような、システムやっている人だったら、絶対結ばない、ありえない契約でしょう。

 だって、途中で仕様変更をみとめて、請負にして、機能ベースにするんだよ!

 論理的に出来ない機能と、あとでわかっても、「機能の意味が違う、おまえの理解が足りない、ヒアリングが悪い、ヒアリング時間が足りない」っていわれたら、どんなにヒアリングを十分やっても、いつまでたっても、出来ないじゃん(論理的に出来ないんだから)!

 しかし、相手が中小企業の場合、どこかおかしいから中小なんですよ!

 とくに、2世経営者の場合、「白いタキシードを着て、農業をやる(だれかのメルマガで読んだ言い回し。だれだかわすれた)」みたいなことを平気で言う。
 つまり、「実現は可能だが、ありえないでしょ!」みたいな。
 もう、論理的以前に、ちょっと考えるとおかしいような話を平気で言うわけ。
(普通、それって、コンピューター化しないよね、出来ないよね、みたいなネタ)

 でも、それが、改善だと、思い込んじゃっているわけよ!
 そういう夢を、ずーっと追っかけているから中小っていうケースがある。

 こういう場合、システム開発をずーっとやらせられる。
 それも、「おまえが理解してないからだ!機能はまったく変更していない」といって、お金払わない!

 仕様変更したら、お金がもらえる!!と思って、中間業者は、受ける。
 しかし、この場合、実際には、「仕様変更でない、お前が馬鹿だから、仕様変更のように聞こえるのだ!」と言い切れれば、お金は払わなくてすむ。

 なぜか。

 実際、裁判にもって言った場合、その期間、ソフトハウスが、費用的に耐えていくには、相当な金がかかる(開発者は、裁判関連に取られるし、弁護士費用もかかるし。。)。だから、実質、裁判になるのを嫌う(とくに、中間業者は)。

 よって、「仕様変更ではない、なんなら、裁判する?」という話になると、お金は取れない。

 結局、仕様変更をみとめてしまったら、相手の機能を満たすまで、いつまででもやらないといけない。契約内容が違うといわれてしまったら、その間、お金はもらえない(だから、仕様変更を認める場合、機能で規定するのでなく、入出力の物で規定する、機能で規定したければ、請負でなく、準委託契約で受けるっていうのが、いいと思う)。




 で、問題は、前払いされてしまった場合。

 このように、やばい!とわかった場合、普通、その開発からぬけることを考える。
 しかし、お金を受け取っていた場合、よくて全額、悪い場合は、さらに、違約金などの支払いもありえる。

 で、ここで、自分だけだったら、そういうリスクがあるから、絶対、前受けにしない。ところが、途中にだれかが入ると、そいつが、前受けしちゃう場合があるわけ。

 そうすると、そいつは、金を返したくない(というか、使い込んじゃってるんだよね、たいてい)から、お金をはらわず、契約を続ける。




 この結果、どうなるか。。。

 ウィリアムのいたずらのあったケースでは、

・ウィリアムのいたずらの前のSEは、はじめ言っていた機能とぜんぜん違う機能を開発させられ、さらに、それが、DOAでやると、DFDで矛盾が出るから(情報処理試験なんかの問題で出るパターン。入出力が合わない)でたらめ言ってるって、すぐに気がつくのに、オブジェクト指向で開発し、情報を隠蔽しちゃって、さあたいへん。
 (情報を隠蔽すると、出来そうに見えるのよ。。)

 結局、自分自身では、ユーザーの言っていることが、でたらめだと見抜けず(想像で言ってるだけだった。やっぱり、実際間違ってた)、うつ病になってしまった。
 →理論的にできないのに、その前受けで金をもらった人から、「はやくやれ」と攻め立てられ、何で出来ないのか、自分ではわからず悩み、うつ病になった。

・ウィリアムのいたずらは、その程度は気づいた。
 しかし、契約内容が、「準委託だよね!」と確認したのに、請負になっていた。
 (契約が、2本立てになっていて、もう一本が請負、で、こっちがメインだった)
 その結果、結局システム開発しても、お金がはいってこなかった(>_<!)

 その期間、仕事できないこともあり。。。。




 てなかんじなんで、絶対に、機能だけで、契約しないほうがいいよ。

 あと、仕様変更、文書で取っていても、機能でとってたら、意味ない。

「おれは、そういうつもりで言ってない。だからこの契約は無効だ!」

 といわれたら、おわりだからね。。。
(こういって、契約を無効にされた人を、ウィリアムのいたずらは、聞いたことがある。無効にした人っていうのはあ。。やばやばそおな話になってきたので、かかないけど。。)




 ただ、この方法、仕様変更だと、すぐにわからせてしまうと、仕様変更のお金がとられてしまうので、うまくいかないのよ。

 その仕様変更と、気づかせないで、SEをこき使うテクニックは、またこんど。

 って、どっちの立場で、書いてるんだか、わかんなくなってきたど。。

  

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

仕様書からテスト項目を抜き出す方法と、情報処理試験 午後2の小論文とTACの関係

2005-05-31 14:58:35 | 開発ネタ

 昨日のブログ「仕様書から単体テスト以外のテスト項目を抽出する方法」を、Excelの表に無理やりまとめると、こんな感じになると思う。


 ということで、以前のブログ「プログラム設計書・仕様書から、単体テスト項目を浮き上がらせ、テスト仕様書を手作業で作成する方法」とあわせて考えると、結局テスト項目の抽出って、簡単にまとめてしまうと、こういう操作をやればできる?

1.まず、その行おうとしているテストに対して、テスト方法っていうのが、一般的にきまっているので、それを横に書く。
  単体のモデルの場合、
    その機能のよってちがうが、通過テスト、更新値のログダンプなど
  単体のコントローラーの場合、
    値の組み合わせ(境界値でチェックがいいかも)に対する起動をログで、など
  単体のビューの場合
    画面の入力値の境界値、字種、構文など
  結合以上
    対応する仕様書に書かれている内容のエビデンス収集としての
    シナリオチェック、出力チェックなど

2.今回、調べる対象を縦に書く。これは、行おうとしているテストによって、書き出す内容が変わる。
  単体のモデルの場合、
    各機能
  単体のコントローラーの場合、
    値の組み合わせ
  単体のビューの場合
    画面の項目
  結合以上
    各機能(仕様書の見出しなど)

3.縦横の交点について、実際にテストが出来るかどうかを考え、テストできそうなら、その内容を記述する。




 つーことは、これって、情報処理試験の午後2の小論文のやり方と、一緒ですよね!
 まず、午後2の小論文は、

 あいさつぶん1行

 数十行の、世間話

 問題:あなたの経験なんとかかんとか、書きなさい
 (あ)プロジェクトについてなんとかかんとか 800字
 (い)その問題についてなんとかかんとか
 (う)それをどう評価するか

 っていう形式ですよね。

 で、やり方としては、こんなふうにやりません?
1.「数十行の世間話」の中に、その問題に対する、一般的な論点と、予想される問題点が書かれているので、それを抜き出し、横に書く。
2.実際の自分のプロジェクトの行ったことを縦に書く
3.その交点が、(い)の解答になる。

答案の作り方は、こんなふうにやりません?
(A)3.の交点が埋まる事項に関して、その縦の項目(つまり、自分の具体例を)わかるように、(あ)に800字でまとめる。このとき、キーワードを見つけておいて、それを入れておくようにする(そのキーワードが(い)とつながる)
(B)(い)の部分で、まず、1。で抜き出した横の項目と、一般論としてはということで、予想される問題点を書く。そして、今回のプロジェクトでは、ということで、交点の内容を書く。このとき、(A)のキーワードが入って、対応が付けられるように。。
(C)(う)は、自画自賛する。

ちなみに、わたしは、こんなかんじで、アプリケーションに、受かりました。

 で、問題は、1.の世間話から、どうやって、一般的な論点を抜き出すかっていうことなんですが、それは、TACの午後2対策でも、見てください。




 つまり、情報処理試験の午後2って、仕様書からテスト項目とかを抜き出すやり方(じつは、それ以外のドキュメントから、他のドキュメントやプログラムを生成するのも、似たような操作なんだけどね)のテストをやってるだけの気もします。

 で、情報処理試験の場合は、横の項目が、問題用紙に入っている(その抜き出し方は、くどいけど、TACのような受験学校で教えてくれる)、縦の項目は、自分のプロジェクトの作業内容(項目)ということになる。

 テスト仕様の場合には、それぞれの状況によって、縦と、横の項目が違い(上記のとおり)横の項目は、すでに、偉い人が決めてくれている(自分が偉い人の立場の場合、世間一般や経験から決める)、縦の項目は、指針はあるので、それを、自分のプロジェクトに当てはめて考える。




 と、思うんですけど、こういう説明をしてくれた人、見たことないんですけど。。
 そのわりに、試験受けろ!っていうのよね。。。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

VC++で、「CStringを使ったとき、strcoreでメモリーリーク」のまとめ

2005-05-31 14:05:25 | Weblog

ウィリアムのいたずらも、ハマったし、検索しても、いろいろでてきますね。

    CStringを使ったとき、strcoreでmemory leaks

けっきょく、こんな感じのケースなんですけどね。。。




1.メソッド内で

  CString buf = "";
  for(int i = 0 ; i <10; i ++ )     buf = buf + "a";
  }

のように宣言したもので、ポインタでなく、newしたものでもない
  (なので、deleteもできない。こういうのは、メソッド終了後、解放されるはず)

2.スレッド内で使っていても、強制終了されたものではない。
  スレッドは、すでに終了しているのに、出る

3.文字列の連結や、format関数を使ったときに起こりやすい。
  ただし、これだけのケースだけでは、ないようだ。。。
  逆に、このとき、かならずなるわけでもない。
  バージョンによっても(VC++ Ver6、VC++ .net)同じプログラムで、
  出たり、出なかったりする


で、現象は、プログラム終了後、

 strcore.cpp(118) :
 で、メモリーリーク(memory leaks)がおきることがある
(かならずおきるわけではない)




原因:不明

回避策:
 CStringを使わない。charの配列で、文字列を表現し、連結するときは、メモリ領域を取り直して、コピーすると、メモリーリークにならない。

 うーん、これじゃあ、自動車事故を減らすには=自動車に乗らないっていうのと、おなじだな(>_<)!

 もっとも、中学校のとき、「忘れ物をなくすには?」というホームルームの話し合いで、「学校に荷物をすべて置いておく。わすれない!」と提案したことがある。

 「っていうことは、家で勉強しないツーことか?」とかいわれ、先生には、なぜか、反対され、その案は却下になったが、その日から、みんな学校に荷物を置くようになり、次の日から、忘れ物は激減した。。。

。。。って、関係ないか、この話(^^;)

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする