Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ソースコードを読んでみよう

1,049 views

Published on

in wacate 2017 winter

Published in: Software
  • Be the first to comment

ソースコードを読んでみよう

  1. 1. ソースコードを読んでみよう WACATE  2017  WINTER
  2. 2. 自己紹介 l名前 : l角田 俊(ツノダ シュン) l仕事 : lソフトウェア開発 l活動 : lWACATE実行委員(2回目) lNaITE(長崎IT技術社会)実行委員
  3. 3. このセッションの目的 l目標 ◦ソースコードをなんとなく読めるようになる ◦ソフトウェアがどう作れているのかを理解し、欠陥を推測 しようという気になること l本セッションでは、開発経験のある人、ベテランの人は 復習や教育の参考の場として活用してください
  4. 4. 質問 ◦普段何をインプットとしてテストを考えていますか?
  5. 5. 質問 ◦普段何をインプットとしてテストを考えていますか? ◦ 仕様書? ◦ 過去の不具合内容? ◦ 経験? ◦ 直感?
  6. 6. 質問 ◦普段何をインプットとしてテストを考えていますか? ◦ 仕様書? ◦ 過去の不具合内容? ◦ 経験? ◦ 直感? どれも大切なものです 他にもまだありますか?
  7. 7. テストをする上で大切なもの ◦普段何をインプットとしてテストを考えていますか? ◦ 仕様書 ◦ 過去の不具合内容 ◦ 経験 ◦ 直感 ... ◦ ソフトウェアの知識 ↑ 本セッションで扱うもの
  8. 8. ソフトウェアテストとは? テストには以下のような目的がある。 ◦欠陥を摘出する。 ◦対象ソフトウェアの品質レベルが十分であることを確認す る。 ◦意志決定のための情報を示す。 ◦欠陥の作りこみを防ぐ。 ISTQBテスト技術者資格制度 Foundation   Level  シラバス 日本語版 Version  2011.J02 http://jstqb.jp/dl/JSTQB-­‐SyllabusFoundation_Version2011.J02.pdf
  9. 9. ソフトウェアテストとは? テストには以下のような目的がある。 ◦欠陥を摘出する。 ◦対象ソフトウェアの品質レベルが十分であることを確認す る。 ◦意志決定のための情報を示す。 ◦欠陥の作りこみを防ぐ。 ISTQBテスト技術者資格制度 Foundation   Level  シラバス 日本語版 Version  2011.J02 http://jstqb.jp/dl/JSTQB-­‐SyllabusFoundation_Version2011.J02.pdf
  10. 10. ソフトウェアテストとは? ソフトウェアテストには、ソフトウェアの欠陥を見つける、 欠陥の作り込みを防ぐ目的があります。
  11. 11. ソフトウェア開発プロセス 要求 定義 基本 設計 詳細 設計 実装 単体 テスト 統合 テスト システム テスト 受け入れ テスト 欠陥の作り込みを防ぐ 欠陥を見つける ※プロセスモデルはSQuBOK p169  V字モデルより
  12. 12. 欠陥とは コンポーネント又はシステムに要求された機能が実 現できない原因となる、コンポーネント又はシステム に含まれる不備。 ISTQBテスト技術者資格制度 ソフトウェアテスト標準用語集 日本語版 Version  2.3.J02 http://jstqb.jp/dl/JSTQB-­‐glossary.V2.3.J02.pdf
  13. 13. ソフトウェアの知識が何故必要か 欠陥 = コンポーネント又はシステムに含まれる不備 ソフトウェア開発の知識があると、 これらが推測出来るようになることがある
  14. 14. ソフトウェアの知識とは lソフトウェアが作られる仕組み (ソースコードの仕組み) lソフトウェアが動く仕組み
  15. 15. ソフトウェアの知識とは lソフトウェアが作られる仕組み (ソースコードの仕組み) lソフトウェアが動く仕組み
  16. 16. ソースコードとは ソースコード(英:  source  code)とは、コンピュータプ ログラミング言語で書かれた、コンピュータプログラ ムである文字列(テキストないしテキストファイル)の ことである。 ASCII.jpデジタル用語辞典 https://kotobank.jp/word/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2-­‐5387
  17. 17. ソースコードを読むのは難しくない ソースコードは簡単に読むことが出来る ソースコードを読む取っ掛かり ◦コメントを読む ◦メソッド名、関数名などを読んでみる
  18. 18. コメントを読む ソースコードには大体日本語や英語でコメントが記 載されている。 // 画面に表示する処理 ← コメント fmt.println(msg); ← ソースコード # write output /* コメントの種類は他にも色々あります */
  19. 19. クラス名、メソッド名(関数名)を読んで 見る 処理ブロックとなるクラス名、メソッド名、関数名など から処理内容を推察する。 func shopping (money int,i *Item) int{←名前から推察 return money – i.price } ”main”という名前の関数はそこから処理が行われること を表している事が多い。
  20. 20. ソースコードを読むための基礎知識 大体のプログラミング言語で共通している仕組みが ある。 ◦変数 ◦条件文 ◦繰り返し文
  21. 21. 変数 値や、文字列は変数という入れ物に入れて使用す る。 var num int = 1 var food string = “食べ物” 入れ物の大きさ(など)によって、入れられるものが 違うことに注意。ここにあるintとstringは大きさが異 なるため、入るものも違う。
  22. 22. 条件分岐 条件が一致する時、処理が分岐する if food == “たこやき” { eat() } foodの中の文字列が”たこやき”だったとき、 eat関数が実行される
  23. 23. 繰り返し 条件が一致するときのみ、処理を繰り返す for i := 0; i < 10; i++ { eat() } iがループ毎に加算され、0から9までの間eat関数が実 行される。 (10回実行される)
  24. 24. 条件 条件の指定は複数の条件を組み合わせることも出 来る if food == ”たこやき” && food2 == “たいやき”{ eat() } foodがたこやきで、food2がたいやきの時、eat関数が 実行される。(論理演算子)
  25. 25. 条件 複数条件のときは、条件関係に注意する if food == ”たこやき” || food2 == “たいやき”{ eat() } foodがたこやきか、food2がたいやきの時、eat関数が 実行される。
  26. 26. 演習 時間:20分 最初10分間は一人で考えてみてください。 (スマホなどで調べながら) その後、 分かった人は直接答えを言わないで、出来ていない 人が問題を解けるようにサポートしてください。
  27. 27. 答え
  28. 28. 感想の共有 ソフトウェアの開発経験がない人から順番に演習に 挑戦してみての感想を共有してみてください。 時間:6分間
  29. 29. (おまけ)ソースコードを読むには ソースコードは頭から読むのは大変です。 出力されたエラーログなどをキッカケに解読していき ましょう。 OSやエディタに付いている検索機能を使うと簡単で す。
  30. 30. デモ
  31. 31. ソフトウェアの知識とは lソフトウェアが作られる仕組み (ソースコードの仕組み) lソフトウェアが動く仕組み
  32. 32. ソフトウェアの動く仕組み 近年のソフトウェアは一から作成することはあまりな い。 複数の既存技術が組み合わさってソフトウェアは 動作している。 既存技術 既存 技術 新規
  33. 33. 使われている技術を理解しよう 今、自分が関わっているソフトウェアはどういう技術 が使われているか理解していますか? ◦プログラム言語 ◦ライブラリ ◦データベース ◦プロトコル など
  34. 34. 使われている技術を理解しよう ソフトウェアは使われている技術によりテストが変 わってくることも有る 例) メモリ消費量に着目したテスト ◦C/C++   :メモリ増加の有無を見る ◦Java :ガーベッジコレクションの頻度を見る
  35. 35. 使われている技術を調べてみよう 今、自分が関わっているプロダクトで使用されている 技術を調べてみよう。 そこから、段々勉強して行きましょう。
  36. 36. まとめ lソフトウェアの知識があると、欠陥がありそうな場 所を推測出来るようになることがある lソフトウェアの知識とは lソフトウェアが作られる仕組み lソフトウェアが動く仕組み
  37. 37. 更なるスキルアップを目指して 知識を付けて、自分のスキルアップを考える 的確なインシデントレ ポートが書ける 欠陥が推測 できる テストが自動化 出来る
  38. 38. 更に上へ 開発、テスト、両方のスキルアップを目指して、両方 できるようになろう 開発 テスト

×