約1年程前からシステムエンジニアの仕事に就きました。
一番不思議なのは、ベテランSEの人たちは、ソースコードを見て仕様がわかるということです。
例えば私なら、配属されたばかりの部署でソースコードを読んでみて、書いてあるソースを文法的にであればわかるのですが、それが業務としてどうなっているのか、言葉で説明しろと言われたらしどろもどろになってしまいます。
しかし、ベテランSEの人たちは皆、それをやってのけます。
新しい業務に携わるようになって2,3日目ぐらいで、全ての業務がわかったかのようなしゃべり方をするし、実際にそれなりにわかっています。
そういう人に何を見ているのかきくと、ソースコードを読む、という人がほどんどです。
しかし私は、文法はわかっても、仕様書も無いのに、ソースコードから業務まではわかりません。
SEのベテランの皆さん、業務が理解できるソースコードの読み方を教えて頂けないでしょうか。
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
#1さんの書かれているとおり、蓄積してきた経験…というモノではないかと。
さすがに、私は2~3日では無理ですね。
2週間くらい欲しいところです。
私の場合、解析は下記の要領で。
まず、一通り目を通す。
その際に関数名などをチェック。呼び出し元などの関係も軽く見ておく。
一通り見たらメインループを探す。メインループ見つけたら、そこより前に動いているハズの初期化処理を探して必要な初期化処理の内容を把握する。
後はメインループから状態を見ながら分岐処理している部分を追いかける。
テキストエディタなどの行マーク(関数コール追いかけるとき)とか、調べた内容をメモしたり…とか。
重要そうな処理を見つけると、ポイントとしてメモに追加してみたり。
デバッガで追うことができる場合は適当にブレークポイントで止めてみたり、変数の内容やコールスタック見てみたり…
場所によってはステップ実行してみたり。
ログ出力があればログから動作を追いかけてみたり……
そんな感じで7~8割のコードが確認できればおおよそ理解できたかな…と。
あとは必要に応じて同じ手順で調べていきます。
# 大半は解析済みですから残りを調べるのはそれほど手間ではありません。
関数コールとか追いかける際にgrepなど多用するのでテキストエディタが20とか開かれていたりして、だんだんカオスに……。
# 上記の解析中に動作不明なロジックとか見つけたら、とりあえず質問用に書き出しておきます。
# たまにバグではないか?というモノ見つけたりしますけど。
## 問題ないのか?と思って後で調べると制御の行かない死にコードだった…なんてこともよくありますが。
エラー処理なんかがあった場合は局所的に対処内容を確認してメモに追加。とか……
色々と参考になるアドバイス、ありがとうございます。
一通り目を通す、というのは重要そうですね。
一通り見ても記号にしか見えなくてすぐ細部を見てしまうのですが、これがまず、いけない気がしました。
明日からアドバイス頂いた手順で早速やってみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パソコンに詳しい方教えて下さ...
-
CSVファイルで誤って上書き保存...
-
回復ディスクを別のPCで復元で...
-
お名前(姓)」には「カタカナ(...
-
ミリ波を使用して映像をモニタ...
-
ステレオミキサーについて
-
パソコンの最適化をしたら、3~...
-
システム開発の会社で、額面24...
-
どうしたらいいか教えて下さい。
-
銀行のシステムについて。 古い...
-
バッチファイルでファイル移動...
-
スタンドアロンPCのWindows update
-
ドメイン名の「www」は、なぜホ...
-
Windows のパソコンについて。 ...
-
相手の立場に立ってシステムを...
-
vba シートの追加について
-
医療用のクラウド型システムの...
-
Switchの画面に ほかのコントロ...
-
古いWEBシステム。もう追加プロ...
-
情報システムの詳細設計書につ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fessの検索対象を動的に変更
-
C言語を学習している者ですが、...
-
【Excel関数】特定の文字を別表...
-
エンジン発電機をインバーター...
-
1から100までの自然数で、2.3.5...
-
111111を素因数分解すると 1111...
-
帰還率β
-
文字変換において、m3(立方)の...
-
エクセルで打刻(タイムレコーダ)
-
VBA カレンダー参照エラー
-
エクセルで住所の数字を漢数字...
-
DocuWorks 文字認識 検索でき...
-
マージナル不良とは?
-
PowerPointで比例記号を入力す...
-
電圧感度(V/W)?
-
(1)のやり方やるときと(3)...
-
和暦を西暦に変換する方法
-
エクセルでインチの分数表示
-
ハガキ宛名の住所の数字を漢数...
-
CMOSインバータの増幅器として...
おすすめ情報