ここから本文です

プログラマとして他人が書いたソースとの付き合い方を教えてください

hir********さん

2008/6/300:55:02

プログラマとして他人が書いたソースとの付き合い方を教えてください

IT系の会社に入社して2年目です。
既に誰かが書いてしまった既成のプログラムの評価の仕事をやっています。

先日、とても納得のいかないことがありましたので、質問させてください。

例えば、
aaa(){
int bbb;
int ccc;
}

という10000行ぐらいのプログラムがあったので、プロジェクトチームの皆さんにメーリングリストで
「aaaという関数はなんの関数ですか?bbbとは何ですか?cccとは何ですか?」
と10000行の全ての関数、変数について質問しました。
そしたら回答は「推測してください」とのことでした。
私は「私が推測してその推測が外れたら困るでしょう。推測ではなく『確証』が得られるものを提示してください。」
と回答しました。

そのあと、上司とのコミュニケーションは無くなってしまいました。評価の仕事も進まなくなりました。

そのプログラムには仕様書は付いていません。また、受託評価のため、受託元の人と連絡を取ることは上司以上の役職の人しかできません。また、変数名に使われているアルファベットの綴りは辞書には載っていないと上司に言いました。

こういうケースでaaaの関数やbbbの変数の意味を知るにはどうしたらいいのでしょうか?

閲覧数:
7,957
回答数:
9
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

joh********さん

2008/6/317:12:57

新規でプログラムを起こすことよりも、既存に手を加えることが多いこのご時世で、
他人のソースが汚いとか、仕様書がないからわからないとかいってたら仕事になりません。

変数の意味を知りたいのであればデバッグモードか何かでいろいろ探りを入れたらいいのでは?
1年目の新人さんならわかりますが、2年目にもなってそれだと、今後が思いやられますね。

基本的に変数名は意味のある言葉にするとありますが、
C言語などではマイコン時代の名残か、3文字ルールとかまだ残ってたりします。
Javaなどはフルスペル変数が多くて意味が読みやすいですが、C言語などはまだまだです。
しかし、この業界も長いので、前にも書かれてるかと思いますが
カウンターは「Cnt」とかフラグは「Flg」など・・・
ある程度推測しやすいような名前がついているものです。

推測じゃなくて確証がほしいといってますが、確証なんてあったら
あなたの仕事はいりません。確証がないから上司はあなたに評価を頼んでいるのでは?
それをあなたは「確証がほしい」なんていうのは「俺の仕事をやってくれ」といっているように聞こえます。


とりあえず、このようなケースはイレギュラーではなく、よくあるケースです。
(仕様書がない。ソースコードが汚い。前作成者と連絡が取れない)
これを前提としていないと、この業界で仕事なんてできませんよ。

ただし、仕様書が存在すべき姿が正しいはずだというあなたの考えは間違ってません。その通りです。
でも、現実はないものが多い。これが現状です。それをどうにかするのも仕事です。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜5件/8件中

並び替え:回答日時の
新しい順
|古い順

mo5********さん

2008/6/723:20:34

私も、大学で、友人に教える際、困ったことがあります。数式計算の課題であれば、一文字は使っていいとは思いますが(ax^2+bx+c=dのときa(a!=0),b,c,d)を任意入力とし、解を求めよなど。これは普通にa,b,c,dでもと思いますが)、基本的にaaaはないでしょう。緊急用変数なんですかね?

ちなみに私は、通常のソースコードでaaaとかぬかしたものには書き直せと言います。卒業制作の際のデバック時にそんな変数では意味不明になるからです。

u36********さん

2008/6/512:45:11

リバースエンジニアリングをされているわけですよね。
はっきり言って王道はありません。
自分でこつこつと資料を作りながら解析していくしかないと思います。
現段階でわかっている大まかな仕様(何のためのソフトかということから)、をはっきりさせておく
関数毎に仕様を書き留める、
全体の大きな流れを把握する、
等がコツです。
関数は多く使われているもの、流れは、ファイルアクセスや、コンソールなど想像がつきやすいとこから切り崩していくと
全体像が見えやすいかもしれません。

k_s********さん

2008/6/510:09:04

評価の仕事をしているのですよね。

自分なら、「評価不能」ってつき返しますけどね(笑)
プログラムを追えば、何やっているか推測できますが
仕様書が無いと、書かれている機能が正しいかどうかを判定できないですから。

単につき返してしまうと、上司はどのようにして付き合えばよいか分からなくなると思うので
評価で必要となる資料を提示して、提示されるまで作業をストップしてしまうとかですね。
資料を用意する役目は上司なんで、お客にメールをする際にコピペで済むような文面のメールを送りつけてやりましょう。

den********さん

2008/6/505:55:00

プログラムの評価なら
・入出力条件(外部仕様)通りの動きをするか?
・イレギュラーな入力があったとき、仕様通りに落ちるか?
以上の2点を押さえれば良いでしょう。

ソースコード内部なんぞ、気にする必要はありません。
コーディング規約で変数名とか指定している場合がありますが、その場合は規約に従って
ソースが書かれているかを見るだけで良いのでは?

mjs********さん

編集あり2008/6/408:46:37

入社3年目ですが、私も仕様書不在のソースコードと格闘する日々です。

仕様書が無い以上、ソースコードの仕様はソースコードそのものでしょう。それは他人に聞くよりも確かだと思いますよ。
まあ、他人に聞いて、ソースコードと照らし合わせて自分の推測の裏を取る、というのはよくやります。しかし、それも聞き方でしょう。
漠然と「aaaという関数は何ですか?」なんて聞いても、大抵の場合はまともな返答は返ってきませんね。ソースコードなんて、作った本人ですら把握できてないことはざらです。

一つの方法ですが、ソースコードから仕様書を自分で起こしてしまうのも手だと思いますね。大変ですけど。。
それを元に質問したりチームでレビューしたりすれば、疑問などは大体解決すると思います。上司のこちらの質問に対するそっけない返答も格段に減りますよw

私は、この本を読んで、全部はなかなか無理ですが実践するようになりました。
http://www.amazon.co.jp/exec/obidos/ASIN/4798113743

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる