テスト駆動開発入門 ネクストステップ

Size: px
Start display at page:

Download "テスト駆動開発入門 ネクストステップ"

Transcription

1 テスト駆動開発入門 ネクストステップ 井芹洋輝

2 謝辞 主催の今給黎さん 和田さん 会場提供 スタッフの方々 参加者の皆さま 深くお礼申しあげます

3 自己紹介 井芹洋輝 組み込みエンジニア WACATE 実行委員 /TDD 研究会 講演 / 執筆 : XP 祭り関西 ユニットテストの保守性を作りこむ Androidテスト祭り テストの活用による開発効率化 並カン FPGA/HDLを活用したソフトウェア並列処理の構築 等

4 概要 本講義はTDDの基本サイクルを学んだ方が対象です 本講義ではTDDを開発で実践するための知識 TDDについて自立して学習を進めるための知識を学び 一人前のTDD 使いへのスタートアップを手助けします

5 概要 TDD 実践のネクストステップ テストを 整える 変更に 備える 変更に 対処する TDD 学習のネクストステップ 基礎を 身につける より 活用する 応用分野 を学ぶ

6 実践のネクストステップ TDD 実践のネクストステップ テストを 整える 変更に 備える 変更に 対処する TDD 学習のネクストステップ 基礎を 身につける より 活用する 応用分野 を学ぶ

7 実践のネクストステップ TDDを継続していくと TDDの基本サイクルにテストの再利用と変更のタスクが加わります それらはしばしばTDDの効率を左右するため工夫や対策が必要です

8 テストを整える TDD 実践のネクストステップ テストを 整える 変更に 備える 変更を 対処する TDD 学習のネクストステップ 基礎を 身につける より 活用する 応用分野 を学ぶ

9 テストを整える TDDであってもテスト設計を見直し テストに穴がないか これまでの作業が適切だったかチェックする必要があります 不適切なテストは実装ミス リファクタリングでのデグレードを見逃し テストの再利用を阻害するリスクを持っています

10 テストを整える テストの網羅度をチェック 仕様ベースの網羅 テストが仕様を網羅しているか 仕様ベースのテスト設計等 4 で割り切れる N Y Y Y 100 で割り切れる N N Y Y 400 で割り切れる N N N Y うるうどし N Y N Y 構造ベースの網羅 テストがコードを網羅しているか コードカバレッジ等 // うるう年か判定する bool isleapyear(unsigned int year) if (year % 400 == 0) return true; if ((year % 4 == 0) && (year % 100!= 0)) return true; return false;

11 仕様ベースの網羅 ex) 同値分割法によるチェック 出力やふるまいで同じように扱えるグループに 入出力をグルーピングする グループを同値クラスと呼ぶ

12 仕様ベースの網羅 ex) 同値分割法によるチェック 6 歳未満は無料 6 歳以上 12 歳以下は半額 13 歳以上は定額

13 仕様ベースの網羅 ex) 同値分割法によるチェック 6 歳未満は無料 6 歳以上 12 歳以下は半額 13 歳以上は定額 出力をグルーピング 無料 半額 定額

14 仕様ベースの網羅 ex) 同値分割法によるチェック 6 歳未満は無料 6 歳以上 12 歳以下は半額 13 歳以上は定額 入力もグルーピングし 入出力のグループを抽出 年齢 ありえない無料半額定額 4 つにグルーピング

15 仕様ベースの網羅 ex) 同値分割法によるチェック 6 歳未満は無料 6 歳以上 12 歳以下は半額 13 歳以上は定額 グループごとに代表値を決めてテストの入力値を抽出 ありえない無料半額定額 代表値 -1 代表値 0 代表値 5 代表値をテストの入力に指定 代表値 6 代表値 12 代表値 13

16 仕様ベースの網羅 ex) 同値分割法によるチェック TEST(HogeTest, Invalid) EXPECT_EQ(, checkfee(-1)) TEST(HogeTest, Free) EXPECT_EQ(, checkfee(0)) EXPECT_EQ(, checkfee(5) TEST(HogeTest, Half) EXPECT_EQ(, checkfee(6)) EXPECT_EQ(, checkfee(12)) テストコードがグループや代表値を網羅しているかチェック穴があれば埋める あるいは最初から意識してテストを書く TEST(HogeTest, Full) EXPECT_EQ(, checkfee(13))

17 構造ベースの網羅 コードカバレッジを用いる テストが妥当なブランチカバレッジやループカバレッジの網羅性を持つことをチェック 穴があれば埋める

18 変更に備える TDD 実践のネクストステップ テストを 整える 変更に 備える 変更に 対処する TDD 学習のネクストステップ 基礎を 身につける より 活用する 応用分野 を学ぶ

19 変更に備える TDDではテストをリファクタリングや自動回帰テストとして再利用するため テストに保守性が要求されます 柔軟な開発を支えるためにも プロダクト / テストを区別せずコードを洗練させる必要があります

20 変更に備える テストは変更を支える砦となりえますが 同時にテストは変更の障害ともなりえます テストコードも保守困難なレガシーコードとなります

21 変更に備える 読みやすくする 危ないコードを分離する 重複をなくす 影響範囲を限定する / 副作用をなくす

22 変更に備える 読みやすくする 危ないコードを分離する 重複をなくす 影響範囲を限定する / 副作用をなくす

23 読みやすくする 何をテストしているのかわかりやすい 変更箇所の特定が楽 変更ミスを防げる テストのバグを見つけやすい

24 読みやすくする TEST(HogeTest, Test1) TEST(testHoge, Test2)

25 読みやすくする TEST(HogeTest, Test1) TEST(testHoge, Test2) なんのテストかわからない

26 読みやすくする TEST(HogeTest, commandinputinvaliderror) TEST(HogeTest, commandinputboferror) 適切な名前を与える

27 読みやすくする TEST(HogeTest, Fuga) MotorStatus motorstatus(133, 232); InspectionFuga inspector; inspector.set(createmaintenanceinfo(motorstatus); EXPECT_EQ(START, inspector.getstate()); EXPECT_EQ(true, inspector.isempty()); inspector.initialize(); EXPECT_EQ(INFO, inspector.getstate()); EXPECT_EQ(false, inspector.isempty());

28 読みやすくする TEST(HogeTest, Fuga) MotorStatus motorstatus(133, 232); InspectionFuga inspector; inspector.set(createmaintenanceinfo(motorstatus); EXPECT_EQ(START, inspector.getstate()); EXPECT_EQ(true, inspector.isempty()); inspector.initialize(); 何をテストしているかが散漫 テストのバグをみつけにくい EXPECT_EQ(INFO, inspector.getstate()); EXPECT_EQ(false, inspector.isempty());

29 読みやすくする TEST(HogeTest, FugaConstractor) InspectionFuga inspector = createinspectionfugadummy(); EXPECT_EQ(START, inspector.getstate()); EXPECT_EQ(true, inspector.isempty()); TEST(HogeTest, FugaInitialize) InspectionFuga inspector = createinspectionfugadummy(); inspector.initialize(); EXPECT_EQ(INFO, inspector.getstate()); EXPECT_EQ(false, inspector.isempty()); 分離し適切な名前を与える

30 変更に備える 読みやすくする 危ないコードを分離する 重複をなくす 影響範囲を限定する / 副作用をなくす

31 危ないコードを分離する TEST(FooTest, Bar) MotorStatus motorstatus(0, 0); MaintenanceData mtdata; MaintenanceType mttype(createregionid(eu)); setinitialdata(mtdata, mttype); InspectionFuga inspector; inspector.set(maintenanceinfo(mtdata, mttype), motorstatus); EXPECT_EQ(inspector)

32 危ないコードを分離する プロダクトコードに過依存 TEST(FooTest, Bar) MotorStatus motorstatus(0, 0); MaintenanceData mtdata; MaintenanceType mttype(createregionid(eu)); setinitialdata(mtdata, mttype); InspectionFuga inspector; inspector.set(maintenanceinfo(mtdata, mttype), motorstatus); その他 : 変更リスクの高いコード堅牢性の劣るコード

33 危ないコードを分離する [ テスト側でラッピング ] TEST(FooTest, Bar) InspectionFuga inspector = CreateInspectionFuga(0, EU); inspector.set(maintenanceinfo(mtdata, mttype), motorstatus);

34 危ないコードを分離する [ プロダクト側のインターフェースを改善 ] TEST(FooTest, Bar) InspectionFuga inspector(0, 0, EU); inspector.set(maintenanceinfo(mtdata, mttype), motorstatus);

35 変更に備える 読みやすくする 危ないコードを分離する 重複をなくす 影響範囲を限定する / 副作用をなくす

36 重複をなくす [Test Utility Method] TEST_F(BuyerTest, addsamestatus) Buyer buyer; Customer customer1("taro", "Yamada", 15, 2, "HOGE FUGA"); customer1.addcategory(state_active); Customer customer2("taro", "Yamada", 15, 2, "HOGE FUGA HOGEHOGE"); customer2.addcategory(state_active);. buyer.add(customer1); buyer.add(customer2);. EXPECT_EQ(0, buyer.getsection());

37 重複をなくす [Test Utility Method] TEST_F(BuyerTest, addsamestatus) Buyer buyer; Customer customer1 = createcustomer("hoge FUGA"); Customer customer2 = createcustomer("hoge FUGA HOGEHOGE"); buyer.add(customer1); buyer.add(customer2); EXPECT_EQ(0, buyer.getsection()); Customer createcustomer(string status) Customer customer("taro", "Yamada", 15, 2, status); customer.addcategory(state_active); return customer; Parameterized Creation Method

38 重複をなくす [Parameterized Test] TEST_P(HogeTest, InvalidValueMinus) Hoge hoge(-1); EXPECT_EQ(0, hoge.size()); TEST_P(HogeTest, InvalidValueZero) Hoge hoge(0); EXPECT_EQ(0, hoge.size()); TEST_P(HogeTest, InvalidValueTooBig) Hoge hoge(124566); EXPECT_EQ(0, hoge.size());

39 重複をなくす [Parameterized Test] class HogeTest : public testing::testwithparam<int> ; INSTANTIATE_TEST_CASE_P(InvalidValueInstance, HogeTest, testing::values(-1, 0, )); TEST_P(HogeTest, hogehoge) Hoge hoge(getparam()); EXPECT_EQ(0, hoge.size()); Parameterized Test

40 変更に備える 読みやすくする 危ないコードを分離する 重複をなくす 影響範囲を限定する / 副作用をなくす

41 影響範囲を限定する / 副作用をなくす Foo foo; TEST_F(HogeTest, Fuga) TEST_F(HogeTest, Piyo)

42 影響範囲を限定する / 副作用をなくす TEST_F(HogeTest, Fuga) Foo foo; TEST_F(HogeTest, Piyo) Foo foo; ローカル変数にするテストクラスのメンバにする

43 影響範囲を限定する / 副作用をなくす Void SetUp() 外部コンポーネントの初期状態を記録する TEST_F(Buyer, test_add_samestatus) 外部コンポーネントを使ってテスト. Void TearDown() 外部コンポーネントを初期状態にロールバックする 構造的にも時間軸的にも独立させる他のテストコードを変更しても結果が変わらない順序を変えても どのようなタイミングでも結果が変わらない

44 テストを整える & 変更に備える 実施タイミング TDDではプロダクト / テストを区別せずコードを洗練させていくべきです テストコードであっても良いコードを目指すべきですし プロダクトコードのリファクタリングと同じ扱いで設計改善すべきです

45 テストを整える & 変更に備える 実施タイミング RED Assert ファーストによる追加 変更 (RED GREEN) リファクタリング (Refactor) REFACT OR GREEN Green

46 テストを整える & 変更に備える 実施タイミング RED Assert ファーストによる追加 変更 (RED GREEN) テストコードの設計改善 (REFACTOR[TEST]) REFACTOR TEST PRODUCT GREEN Green テストを 整える リファクタリング (Refactor[PRODUCT]) テストを整える

47 変更に対処する TDD 実践のネクストステップ テストを 整える 変更に 備える 変更に 対処する TDD 学習のネクストステップ 基礎を 身につける より 活用する 応用分野 を学ぶ

48 変更 TDDでは開発の進展 リファクタリング 仕様変更などによりしばしばプロダクトコードの変更が発生します TDDではプロダクトコードに依存するテストが早期から作られるため テストを以下に効率よく変更に対応させるかが効率確保の鍵となりえます

49 変更に対処する 1. よく考える (1.5. 変更を受け入れられるように設計改善 ) 2. RED 3. GREEN 4. REFACTOR

50 変更に対処する Class TestTarget void TestTarget(int hoge). TEST() TestTarget target(0); TEST() TestTarget target(1);.

51 変更に対処する Class TestTarget void TestTarget(int hoge). TEST() TestTarget target(0); TEST() TestTarget target(1);. TestTarget(int hoge) から TestTarget(int hoge, int fuga) に変更 Int fuga に応じて複雑な処理を

52 変更に対処する Class TestTarget void TestTarget(int hoge). よく考える TEST() TestTarget target(0); TEST() TestTarget target(1); TEST() 無理のない小さなステップで 効率よく変更できるように TestTarget target(2);. TestTarget(int hoge) から TestTarget(int hoge, int fuga) に変更 Int fuga に応じて複雑な処理を

53 変更に対処する [1] Parallel Change Class TestTarget void TestTarget(int hoge). void TestTarget(int hoge, int fuga) 新旧共存で TDD 逐次テストを置き換えていく TEST() TestTarget target(0); TEST() TestTarget target(1); TEST() TestTarget target(2);. TestTarget(int hoge) から TestTarget(int hoge, int fuga) に変更 Int fuga に応じて複雑な処理を

54 変更に対処する [1] Parallel Change Class TestTarget void TestTarget(int hoge). void TestTarget(int hoge, int fuga) 新旧共存で TDD 逐次テストを置き換えていく TEST() TestTarget target(0, 0); TEST() TestTarget target(1); TEST() TestTarget target(2);. TestTarget(int hoge) から TestTarget(int hoge, int fuga) に変更 Int fuga に応じて複雑な処理を

55 変更に対処する [2] TDD のための事前変更 Class TestTarget void TestTarget(int hoge, int fuga). Dummy で置き換えつつインターフェースを変更その後 TDD TEST() TestTarget target(0, 0); TEST() TestTarget target(1, 0); TEST() TestTarget target(2, 0);. TestTarget(int hoge) から TestTarget(int hoge, int fuga) に変更 Int fuga に応じて複雑な処理を

56 変更に対処する 無理のない小さなステップで 効率よく変更できるように考える 事前対策 Pallalel Change や前倒しのインターフェース変更等 テストの保護を壊さない変更にもテストで戦う

57 学習のネクストステップ TDD 実践のネクストステップ テストを 整える 変更に 備える 変更に 対処する TDD 学習のネクストステップ 基礎を 身につける より 活用する 応用分野 を学ぶ

58 TDD を学ぶ TDDは文献 情報発信源 コミュニティから学ぶことができます TDDはシンプルな開発手法ですが 様々な関連分野 応用分野とリンクしているため 勉強の余地を大いに持っています

59 基礎を身につける TDD 実践のネクストステップ テストを 整える 変更に 備える 変更を 対処する TDD 学習のネクストステップ 基礎を 身につける より 活用する 応用分野 を学ぶ

60 Id:t-wada

61 より活用する TDD 実践のネクストステップ テストを 整える 変更に 備える 変更に 対処する TDD 学習のネクストステップ 基礎を 身につける より 活用する 応用分野 を学ぶ

62 より活用する テスト設計

63 より活用する テストコードの実装 xutp magagine ぺけま Coming soon! xunit Test Patterns 読書会 Wiki

64 より活用する 変更への対処

65 応用分野を学ぶ TDD 実践のネクストステップ テストを 整える 変更に 備える 変更に 対処する TDD 学習のネクストステップ 基礎を 身につける より 活用する 応用分野 を学ぶ

66 応用分野を学ぶ テストの活用 TDD WACATE( もうすぐ募集開始!) Testing Engineer's Forum st.jp/wiki/forum

67 応用分野を学ぶ DVCS TDD SCM Boot camp

68 応用分野を学ぶ BDD/Outside-In TDD Growing Object-Oriented Software, Guided by Tests(goos) 読書会

69 その他 TDDBC 運営コミュニティ TDDBC

70 ご清聴ありがとうございました TDD 実践のネクストステップ テストを 整える 変更に 備える 変更に 対処する TDD 学習のネクストステップ 基礎を 身につける より 活用する 応用分野 を学ぶ

スライド 1

スライド 1 ユニットテストの保守性を作りこむ ~ 設計 実装の工夫で支えるユニットテストの継続的活用 ~ 井芹 洋輝 謝辞 声をかけて頂いた細谷さん 機会を提供頂いている XPJUG 関西の皆様 素晴らしい場を作り上げている登壇者 参加者の方々 今回のテーマに関して様々なことを学ばせて頂いている xutp 読書会の方々 深くお礼申し上げます 自己紹介 井芹洋輝 ( いせりひろき ) 組込みエンジニア 所属 WACATE

More information

テスト駆動開発入門

テスト駆動開発入門 テスト駆動開発入門 ハンズオン講座 goyoki 概要 イントロダクション ハンズオン課題 1 TDDの概要 定義 / 手順 / 利益など ハンズオン課題 2 ソフトウェアテストとしてのTDD 後編について 以下は後編で扱う予定です TDDが抱える課題 レガシーコード上でのTDD テストコードの改善 TDDで確保したテストコードの活用 TDDの諸目的 イントロダクション テスト駆動開発 (TDD)

More information

JUnit 概要 2015/4/16 版今泉俊幸 2015 bbreak Systems 1

JUnit 概要 2015/4/16 版今泉俊幸 2015 bbreak Systems 1 JUnit 概要 2015/4/16 版今泉俊幸 1 目次 1. 手動テストと自動テスト 2. JUnitの機能 3. 検証用メソッド 4. 基本的なJUnitテストケース 5. 実践的なJUnitテストケース 6. よく使う検証用メソッド 7. テストクラスの命名 配置など 2 手動テスト 手動テストと自動テスト テスト仕様書に基づいて 人手で値を入力 結果を検証する プログラム修正の度に実施するのはコストが高い

More information

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを メトリクス利用によるリファクタリング対象の自動抽出 ローランドディー. ジー. 株式会社 第 4 開発部 SC02 小林光一 e-mail:kouichi.kobayashi@rolanddg.co.jp 2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない

More information

メソッドの外部設計とテストファースト

メソッドの外部設計とテストファースト メソッドの外部設計と テストフゔースト ~ 上手く TDD するために ~ 2009.9.12 biac http://www.tdd-net.jp/ 自己紹介 山本康彦 ( biac ) いまだにプログラムを書きたがる 52 歳 http://bluewatersoft.cocolog-nifty.com/ ハンドルでぐぐってもらえば見つかる ( 経済産業諮問委員会じゃないほう ) 名古屋のとある

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 5 回 繰り返し (while ループ ) 授業開始前に ログオン後 不要なファイルを削除し て待機してください Java 1 第 5 回 2 参考書について 参考書は自分にあったものをぜひ手元において自習してください 授業の WEB 教材は勉強の入り口へみなさんを案内するのが目的でつくられている これで十分という訳ではない 第 1 回に紹介した本以外にも良書がたくさんある

More information

スライド 1

スライド 1 SPI Japan 2013 in 東京 Software Product Line の実践 ~ テスト資産の構築 ~ 住友電工情報システム株式会社 QCD 改善推進部品質改善推進グループ服部悦子 2013.10.17 P.1/24 目次 1. テスト資産構築に至る背景 2. テスト資産の構築 ~ 自動テストの実現 ~ 3. 結果と評価 P.2/24 テスト資産構築に至る 背景 P.3/24 背景

More information

メソッドのまとめ

メソッドのまとめ メソッド (4) 擬似コードテスト技法 http://java.cis.k.hosei.ac.jp/ 授業の前に自己点検以下のことがらを友達に説明できますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか

More information

デベロッパーテスティング ソフトウエア開発者の基礎体力

デベロッパーテスティング ソフトウエア開発者の基礎体力 デベロッパーテスティング ~ ソフトウエア開発者の基礎体力 タワーズ クエスト株式会社プログラマ兼取締役社長和田卓人 2006 年 6 月 29 日 @ オブジェクト倶楽部 2006 夏イベント 自己紹介の前に 4 年前の出来事 ワールドカップ イングランド vs. アルゼンチンの日 IBM のイベント テスト関係のセッション そこで出会った人は 故石井勝さん (a.k.a masarl さん )

More information

<4D F736F F F696E74202D20835C CC967B8EBF2E B8CDD8AB B83685D>

<4D F736F F F696E74202D20835C CC967B8EBF2E B8CDD8AB B83685D> ソフトウェアテストの本質を振り返る 43 Agenda ソフトウェアテストとは ソフトウェアのテスト技法とは 技法の振り返り 同値分割法 境界値分析 デシジョンテーブルテスト CFD 法 まとめ 44 1 ソフトウェアテストとは? 1. 欠陥を検出する 検出した欠陥を修正すれば ソフトウェアの品質が確保できる 2. 対象となるソフトウェアの品質レベルが十分であることを確認し その情報を示す 適切に設計したテストを実施して欠陥が検出されなければ

More information

はじめてのコンコリックテスト

はじめてのコンコリックテスト JaSST 15 Tokai はじめてのコンコリックテスト ~ 基本原理から知るホワイトボックステストの新技術とその応用 ~ 2015 年 11 月 6 日植月啓次 はじめに コンピュータの処理能力の飛躍的な向上により プログラムコードにたいする解析技術は大きく進化しています 近年 実用段階に入り盛り上がりを見せている解析技術およびその応用技術が コンコリックテスト (Concolic Test)

More information

Using VectorCAST/C++ with Test Driven Development

Using VectorCAST/C++ with Test Driven Development ホワイトペーパー V2.0 2018-01 目次 1 はじめに...3 2 従来型のソフトウェア開発...3 3 テスト主導型開発...4 4...5 5 TDD を可能にするテストオートメーションツールの主要機能...5 5.1 テストケースとソースコード間のトレーサビリティー...5 5.2 テストケースと要件間のトレーサビリティー...6 6 テスト主導型開発の例...7 2 1 はじめに 本書では

More information

8 / 0 1 i++ i 1 i-- i C !!! C 2

8 / 0 1 i++ i 1 i-- i C !!! C 2 C 2006 5 2 printf() 1 [1] 5 8 C 5 ( ) 6 (auto) (static) 7 (=) 1 8 / 0 1 i++ i 1 i-- i 1 2 2.1 C 4 5 3 13!!! C 2 2.2 C ( ) 4 1 HTML はじめ mkdir work 作業用ディレクトリーの作成 emacs hoge.c& エディターによりソースプログラム作成 gcc -o fuga

More information

28th Embarcadero Developer Camp

28th Embarcadero Developer Camp RAD Studio で実践する 継続的インテグレーション アプリとデベロッパーの価値 を拡張するエッセンス 長沢 智治 テクニカル エバンジェリスト アトラシアン株式会社 re-workstyle.com @tomohn ビジネスとアプリケーションの進化 90s 00s Business 10s Business Business Apps Apps Apps C/S コード品質 開発者中心 分業

More information

Visual Studio と.NET Framework 概要 Runtime Libraries Languag es Tool.NET Visual Studio 概要 http://download.microsoft.com/download/c/7/1/c710b336-1979-4522-921b-590edf63426b/vs2010_guidebook_pdf.zip 1.

More information

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード] 第 3 回 Java 基本技術講義 クラス構造と生成 33 クラスの概念 前回の基本文法でも少し出てきたが, オブジェクト指向プログラミングは という概念をうまく活用した手法である. C 言語で言う関数に似ている オブジェクト指向プログラミングはこれら状態と振る舞いを持つオブジェクトの概念をソフトウェア開発の中に適用し 様々な機能を実現する クラス= = いろんなプログラムで使いまわせる 34 クラスの概念

More information

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - 09.pptx 情報処理 Ⅱ 第 9 回 2014 年 12 月 22 日 ( 月 ) 関数とは なぜ関数 関数の分類 自作関数 : 自分で定義する. ユーザ関数 ユーザ定義関数 などともいう. 本日のテーマ ライブラリ関数 : 出来合いのもの.printf など. なぜ関数を定義するのか? 処理を共通化 ( 一般化 ) する プログラムの見通しをよくする 機能分割 ( モジュール化, 再利用 ) 責任 ( あるいは不具合の発生源

More information

発表内容 背景 コードクローン 研究目的 4 つのテーマ 研究内容 テーマ毎に, 概要と成果 まとめ 2

発表内容 背景 コードクローン 研究目的 4 つのテーマ 研究内容 テーマ毎に, 概要と成果 まとめ 2 2012 年度ソフトウェア工学分野の先導的研究支援事業 コードクローン分析に基づくソフトウェア開発 保守支援に関する研究 大阪大学大学院情報科学研究科 楠本真二 1 発表内容 背景 コードクローン 研究目的 4 つのテーマ 研究内容 テーマ毎に, 概要と成果 まとめ 2 研究背景 ソフトウェアシステムは社会基盤として必須のもの. 現代社会で人々の日々の暮らしを支える 例 : 銀行オンラインシステム

More information

GEC-Java

GEC-Java Copyright (C) Junko Shirogane, Waseda University 2019, All rights reserved. 1 プログラミング初級 (Java) 第 14 回継承 白銀純子 第 14 回の内容 継承 オーバーライド ポリモーフィズム Copyright (C) Junko Shirogane, Waseda University 2019, All rights

More information

スライド 1

スライド 1 C# の基本 ~ ファイル読み込み ~ 今回学ぶ事 今回はファイル読み書きに必要 BinaryReader クラスについて記載する ファイル参照ダイアログである OpenFileDialog クラスについても理解を深める また Bitmap クラスを用いた Bitmap ファイルの読み込み方法についても学ぶ フォーム作り まず label picturebox を配置する ツールボックスより左クリックで選択する

More information

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java

問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 package j1.exam02; import java 問題 01 以下は コンソールより年齢を入力させ その年齢にあった料金を表示するプログラムである 年齢ごとの金額は以下の通りである 年齢の範囲金額 0 歳以上 6 歳以下 120 円 7 歳以上 65 歳未満 200 円 65 歳以上無料 public class Ex0201 { System.out.print("input> "); int input = Integer.parseInt(reader.readLine());

More information

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac Actual4Test http://www.actual4test.com Actual4test - actual test exam dumps-pass for IT exams Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN

More information

システム操作インターフェイス最適化によるテスト自動化ROI向上

システム操作インターフェイス最適化によるテスト自動化ROI向上 システム操作インターフェイス最適化によるテスト自動化 ROI 向上 株式会社 Codeer 石川達也 e-mail:ishikawa-tatsuya@codeer.co.jp ご相談を受けた企業様の悩みで多いもの システムテスト自動化やったことあるんだけど 効果が出なくて 作業と ROI 要素を分析 仕様変更等でメンテ 作成 成功 指定のケースではデグレがなかったという情報を取得できた! エラー!

More information

プログラミング基礎I(再)

プログラミング基礎I(再) 山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全

More information

Program Design (プログラム設計)

Program Design  (プログラム設計) 7. モジュール化設計 内容 : モジュールの定義モジュールの強度又は結合力モジュール連結モジュールの間の交信 7.1 モジュールの定義 プログラムモジュールとは 次の特徴を持つプログラムの単位である モジュールは 一定の機能を提供する 例えば 入力によって ある出力を出す モジュールは 同じ機能仕様を実装しているほかのモジュールに置き換えられる この変化によって プログラム全体に影響をあまり与えない

More information

人工知能入門

人工知能入門 藤田悟 黄潤和 探索とは 探索問題 探索解の性質 探索空間の構造 探索木 探索グラフ 探索順序 深さ優先探索 幅優先探索 探索プログラムの作成 バックトラック 深さ優先探索 幅優先探索 n 個の ueen を n n のマスの中に 縦横斜めに重ならないように配置する 簡単化のために 4-ueen を考える 正解 全状態の探索プログラム 全ての最終状態を生成した後に 最終状態が解であるかどうかを判定する

More information

An introduction and future of Ruby coverage library

An introduction and future of Ruby coverage library Ruby の テストカバレッジ 測定機能の 改良と展望 クックパッド株式会社遠藤侑介 yusuke-oh@cookpad.com RubyWorld Conference 2017 (2017/11/01) 発表概要 発表内容 カバレッジとは カバレッジとの付き合い方 Ruby でのカバレッジ測定方法 クックパッドでのカバレッジ利用事例 発表者について フルタイム Ruby コミッタ (2017/09~)

More information

基礎計算機演習 実習課題No6

基礎計算機演習 実習課題No6 実習課題 No.6 課題は 3 題ある. 課題 6-1 時間内提出 次の実行例のように, 名簿を出力するプログラムをつくりたい. このプログラムでは, まず人数をたずね, 次にその人数分の名前を入力し, それを再びコンソールに出力する. なお, 空の名前が入力されても終了せずにその欄は空欄で出力するものとする. 注意とヒント この課題では,string 型の配列をまず宣言する. このとき, 配列の要素はちょうど名簿に入力する人数分だけを宣言すること

More information

Visual Studio 2013 による単体テスト 2014 Microsoft Corporation. All rights reserved. 1

Visual Studio 2013 による単体テスト 2014 Microsoft Corporation. All rights reserved. 1 Visual Studio 2013 による単体テスト 2014 Microsoft Corporation. All rights reserved. 1 目次 Visual Studio 2013 による単体テスト... 1 1.1. テスト自動化の重要性... 4 1.2. 単体テストの基本的な手順... 7 1.3. カバレッジ分析を活用した単体テスト... 17 1.4. Fake を利用した高度な単体テスト...

More information

HIGIS 3/プレゼンテーション資料/J_GrayA.ppt

HIGIS 3/プレゼンテーション資料/J_GrayA.ppt 品質保証部における W モデル適用の検討と実践 2013/09/13 株式会社日立製作所情報 通信システム社 IT プラットフォーム事業本部開発統括本部プラットフォーム QA 本部ソフト品質保証部 富田貴仁, 秦泉寺貴文, 高山啓 0 品質保証部における W モデル適用の検討と実践 Contents 1. 章はじめに 2. 章現状の品質保証工程の分析 3. 章 Wモデルの適用の検討 4. 章実施と評価

More information

スライド 1

スライド 1 Test Driven Development Visual Studio 2008 でやる テスト駆動開発 2008/04/26 biac http://bluewatersoft.cocolog-nifty.com/ 機材協力 : 日本ンフォメーション 自己紹介 山本康彦 ( biac ) いまだにプログラムを書きたがる 50 歳 http://bluewatersoft.cocolog-nifty.com/blog/cat8051143/

More information

TestDesign for Web

TestDesign for Web 発行日 2012/6/21 発行元 株式会社アープ 本書は Web でのテスト自動化における Test Design の一連の操作方法まとめたものです Test Design のメニューの説明やより詳細な使い方については ユーザーズガイド を参照してください 目次 1. はじめに... 1 2. 環境構築... 2 2.1. Selenium のサイトについて... 2 2.2. Selenium

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 6 回 Switch 文 プロジェクトの持ち運び 授業開始前に ログオン後 不要なファイルを削除し て待機してください Java 1 第 6 回 2 前回のテーマ while 文を用いた繰り返し実行 for 文との使い分け 複雑な条件判定 && かつ または を使って Java 1 第 6 回 3 復習 : while 文はfor 文から 初期化式 を外に出し ステップを進める式

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 6 回目 if 文と if else 文 今日の講義で学ぶ内容 関係演算子 if 文と if~else 文 if 文の入れ子 関係演算子 関係演算子 ==,!=, >, >=,

More information

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None クイック検索検索 目次 Copyright 2013 NTT DATA INTRAMART CORPORATION 1 Top 目次 intra-mart Accel Platform イベントナビゲータ開発ガイド初版 2013-07-01 None 改訂情報概要イベントフローの作成 更新 削除をハンドリングするイベントフローを非表示にする回答を非表示にするリンクを非表示にするタイトル コメントを動的に変更するリンク情報を動的に変更するナビゲート結果のリンクにステータスを表示する

More information

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx シーケンスに基づく検索モデルの検索精度について 東京工芸大学工学部コンピュータ応用学科宇田川佳久 (1/3) (2/3) 要員数 情報システム開発のイメージソースコード検索機能 他人が作ったプログラムを保守する必要がある 実務面での応用 1 バグあるいは脆弱なコードを探す ( 品質の高いシステムを開発する ) 2 プログラム理解を支援する ( 第 3 者が書いたコードを保守する ) 要件定義外部設計内部設計

More information

1 return main() { main main C 1 戻り値の型 関数名 引数 関数ブロックをあらわす中括弧 main() 関数の定義 int main(void){ printf("hello World!!\n"); return 0; 戻り値 1: main() 2.2 C main

1 return main() { main main C 1 戻り値の型 関数名 引数 関数ブロックをあらわす中括弧 main() 関数の定義 int main(void){ printf(hello World!!\n); return 0; 戻り値 1: main() 2.2 C main C 2007 5 29 C 1 11 2 2.1 main() 1 FORTRAN C main() main main() main() 1 return 1 1 return main() { main main C 1 戻り値の型 関数名 引数 関数ブロックをあらわす中括弧 main() 関数の定義 int main(void){ printf("hello World!!\n"); return

More information

スライド 1

スライド 1 OSC2008Tokyo/Fall CodeIgniter を使った MyNETS2 の概要 日付 2008/10/04 発表者 株式会社エムズリンク辻岡国治 copy rights All Right Reserved. -2008 基本ベースは WEB 会員管理システム 会員登録されているかの判定を行う 会員向けページ リクエスト DB 非会員向けページ copy rights All Right

More information

プログラミング基礎

プログラミング基礎 C プログラミング Ⅰ 授業ガイダンス C 言語の概要プログラム作成 実行方法 授業内容について 授業目的 C 言語によるプログラミングの基礎を学ぶこと 学習内容 C 言語の基礎的な文法 入出力, 変数, 演算, 条件分岐, 繰り返し, 配列,( 関数 ) C 言語による簡単な計算処理プログラムの開発 到達目標 C 言語の基礎的な文法を理解する 簡単な計算処理プログラムを作成できるようにする 授業ガイダンス

More information

問題1 以下に示すプログラムは、次の処理をするプログラムである

問題1 以下に示すプログラムは、次の処理をするプログラムである 問題 1 次のプログラムの出力結果を a~d の中から選べ public class Problem1 { int i=2; int j=3; System.out.println("i"+j); a) 23,b) 5,c) i3,d) ij 問題 2 次のプログラムの出力結果を a~d の中から選べ public class Problem2 { int a=6; if((a>=2)&&(a

More information

話すこと (Topics) 私とテスティングフレームワーク (Testing frameworks and I) テスティングフレームワークの作り方 (how to create testing frameworks) 1/42

話すこと (Topics) 私とテスティングフレームワーク (Testing frameworks and I) テスティングフレームワークの作り方 (how to create testing frameworks) 1/42 テスティングフレームワークの作り方 How to create a testing framework 須藤功平 株式会社クリアコード 2011/07/18 話すこと (Topics) 私とテスティングフレームワーク (Testing frameworks and I) テスティングフレームワークの作り方 (how to create testing frameworks) 1/42 略語 (Abbr.)

More information

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の まで処理しますどれにも一致しない場合 default: から直後の まで処理します 式は byte, short, int, char 型 ( 文字または整数 ) を演算結果としますラベルには整数リテラル

More information

デバッグの工夫

デバッグの工夫 バグを減らす デバッグの工夫 ~ プログラミング実習で生き残るために ~ 2013/02/12 金森由博 よくあるプログラミングの風景 課題めんどくさい とりあえず適当に書くか エラーチェック めんどくさい あとまわし ちゃんと動くかわかんないけど全部書いちゃお ふー やっと全部書けた コンパイルしよ!? エラーメッセージの意味がわからん!! はぁ やっとコンパイルが通った 実行しよ えっ!? なんでセグメンテーション違反!?

More information

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること C プログラミング演習 1( 再 ) 4 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順

More information

システム操作インターフェイス最適化によるテスト自動化ROI向上

システム操作インターフェイス最適化によるテスト自動化ROI向上 SQiP2014 システム操作インターフェイス最適化によるテスト自動化 ROI 向上 Improvement in test automation ROI by system manipulation interface optimization 石川達也 Ishikawa-tatsuya@codeer.co.jp 株式会社 Codeer 発表要旨 : 本発表ではシステムテストを自動化する際に アプリケーションをテストプログラムから操作するインターフェイスを最適化する手法と

More information

D5-2_S _003.pptx

D5-2_S _003.pptx JaSST 14 Tokyo セッション D5-2 10:30~11:00(30 分 ) キーワード駆動テストを用いた GUI テスト自動化による工期短縮実現への取り組み 2014 年 3 月 8 日 株式会社 NTT データ 技術開発本部プロアクティブ テスティング COE 小林由依 0. 自己紹介 n 氏名 Ø 小林由依 n 所属 Ø 株式会社 NTT データ技術開発本部 プロジェクトマネジメント

More information

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   Copyright 2013 NTT DATA INTRAMART CORPORATION 1 Top 目次 intra-mart Accel Platform イベントナビゲータ開発ガイド初版 2013-07-01 改訂情報概要イベントフローの作成 更新 削除をハンドリングするイベントフローを非表示にする回答を非表示にするリンクを非表示にするタイトル コメントを動的に変更するリンク情報を動的に変更するナビゲート結果のリンクにステータスを表示する

More information

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバーコード OCX や バーコード対応レ ポートツールが豊富にありますので それほど困ることは無いと思われます

More information

コンテナでテストをまわせ! Java EE への自動テストの導入 1 小西高之 JBoss Technical Support Engineer Red Hat K.K.

コンテナでテストをまわせ! Java EE への自動テストの導入 1 小西高之 JBoss Technical Support Engineer Red Hat K.K. コンテナでテストをまわせ! Java EE への自動テストの導入 1 小西高之 JBoss Technical Support Engineer Red Hat K.K. コンテナでテストをまわせ! Twitter ハッシュタグ : #jt12_b202 小西高之 @leather_sole 2 とあるプロジェクトで... これからアプリケーションのテストを始める はい! まずはこのテストだ! 3

More information

プログラミングA

プログラミングA プログラミング A 第 5 回 場合に応じた処理 繰り返し 2019 年 5 月 13 日 東邦大学金岡晃 場合に応じた処理 1 こういうプログラムを作りたい 5 教科のテスト 100 点以上各科目の点数の合計が 100 点未満 おめでとう! これで 100 点越えのプレゼントを獲得! というメッセージを出力 残念!100 点越えのプレゼントまであと ** 点! というメッセージを出力 5 教科の点数の合計が

More information

過去問セミナーTM

過去問セミナーTM ALTM 過去問題解説 May 22, 2017 JSTQB Technical Committee 委員長谷川聡 Agenda 試験問題の出題について K2 TM-4.4.1 欠陥マネジメント K3 TM-2.7.2 テストマネジメント K4 TM-2.3.3 テストマネジメント 勉強を進めていくにあたって 2 試験問題の出題について 学習の目的 (L.O) に従ってシラバスのそれぞれの課題を試験する

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 独習 Java ( 第 3 版 ) 6.7 変数の修飾子 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 Object クラスと Class クラス 6.7 変数の修飾子 (1/3) 変数宣言の直前に指定できる修飾子 全部で 7 種類ある キーワード final private protected public static transient volatile 意味定数として使える変数同じクラスのコードからしかアクセスできない変数サブクラスまたは同じパッケージ内のコードからしかアクセスできない変数他のクラスからアクセスできる変数インスタンス変数ではない変数クラスの永続的な状態の一部ではない変数不意に値が変更されることがある変数

More information

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 (

Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 ( Method(C 言語では関数と呼ぶ ) メソッドを使うと 処理を纏めて管理することができる 処理 ( メソッド ) の再実行 ( 再利用 ) が簡単にできる y 元々はC 言語の関数であり 入力値に対する値を 定義するもの 数学では F(x) = 2x + 1 など F(x)=2x+1 入力値 ( 引数 ) x が決まれば F(x) が決まる これを応用して 複雑な処理も 外面的にはひと固まりの処理として扱う

More information

Prog2_9th

Prog2_9th 2013 年 11 月 21 日 ( 木 ) 実施例外処理 Java 言語では, 作成したプログラムを実行する際に, 記述した処理が想定しない事態によって実行できなくなる場合を例外と呼び, その例外への対処, 即ち例外処理が求められる これまでの教材に登場した例外の中で,IOException はコンパイラがチェックするため, 例外処理を必ず記述しなければコンパイルが出来ないものであるのに対して,ArithmeticException

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 12 回目クラス 今日の講義で学ぶ内容 クラスとは クラスの宣言と利用 クラスの応用 クラス クラスとは 異なる複数の型の変数を内部にもつ型です 直観的に表現すると int 型や double 型は 1 1 つの値を管理できます int 型の変数 配列型は 2 5 8 6 3 7 同じ型の複数の変数を管理できます 配列型の変数 ( 配列変数 ) クラスは double

More information

Microsoft PowerPoint - reject_talks_2007.ppt

Microsoft PowerPoint - reject_talks_2007.ppt ボブおじさんから学んだ オブジェクト指向設計の原則 RejectTalks 2007 Edition Entry [accept] [reject] Lightning Talks RejectTalks ( 株 ) 永和システムマネジメント伊藤浩一 http://www.edit.ne.jp/~koic/ 大事なことは最初に 開発の現場 vol.11(2008 年 1 月発売 ) に 保守プロジェクトとデベロッパーテスティング

More information

C C UNIX C ( ) 4 1 HTML 1

C C UNIX C ( ) 4 1 HTML 1 C 2007 4 18 C UNIX 1 2 1 1.1 C ( ) 4 1 HTML 1 はじめ mkdir work 作業用ディレクトリーの作成 emacs hoge.c& エディターによりソースプログラム作成 gcc -o fuga hoge.c コンパイルにより機械語に変換 コンパイルエラー./fuga 実行 実行時エラー 完成 1: work hooge.c fuga 1 4 4 1 1.

More information

プログラミング基礎

プログラミング基礎 C プログラミング Ⅰ 条件分岐 : if 文, if~else 文 条件分岐 条件分岐とは ある条件が成立したときとしないときで処理の内容を変更する場合に応じた, 複雑な処理を行うことができる 条件分岐 yes 成績が良かったか? no ご褒美に何か買ってもらう お小遣いが減らされる C 言語では,if 文,if~else 文,if~else if~else 文,switch 文で条件分岐の処理を実現できる

More information

プログラミングA

プログラミングA プログラミング A 第 5 回 場合に応じた処理 繰り返し 2017 年 5 月 15 日 東邦大学金岡晃 前回の復習 (1) このプログラムを作成し実行してください 1 前回の復習 (2) このプログラムを作成し実行してください 2 前回の復習 (3) 3 前回の復習 演算子 代入演算子 インクリメント シフト演算子 型変換 4 場合に応じた処理 5 こういうプログラムを作りたい 5 教科のテスト

More information

Microsoft PowerPoint - chap10_OOP.ppt

Microsoft PowerPoint - chap10_OOP.ppt プログラミング講義 Chapter 10: オブジェクト指向プログラミング (Object-Oriented Programming=OOP) の入り口の入り口の入り口 秋山英三 F1027 1 例 : 部屋のデータを扱う // Test.java の内容 public class Test { public static void main(string[] args) { double length1,

More information

Microsoft Word - 【第5分科会】ConcolicTestingグループ_付録_修正_ doc

Microsoft Word - 【第5分科会】ConcolicTestingグループ_付録_修正_ doc 付録 1 研究スケジュール 本研究は以下のスケジュールで行った. 項目内容期間論文調査 CREST に関する論文の調査 2014 年 5 月 CREST のインストール VMWare による Linux 環境の構築と,CREST 及び必要プログラムのインストール CREST の試用サンプルコードにて CREST を実行して, 出力結果を確認 SIG の準備 実施ソフトウェア品質シンポジウム SIG:

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 9 回 メソッド (3) 授業の前に自己点検 以下の質問に答えられますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか 戻り値はどのように利用しますか 変数のスコープとは何ですか

More information

JBoss と Arquillian で実現する 究極のテスト環境 レッドハット株式会社 JBoss サービス事業部 コンサルタント 山 田義和

JBoss と Arquillian で実現する 究極のテスト環境 レッドハット株式会社 JBoss サービス事業部 コンサルタント 山 田義和 JBoss と Arquillian で実現する 究極のテスト環境 レッドハット株式会社 JBoss サービス事業部 コンサルタント 山 田義和 Who am I? Hi, I m glad to see you! 2 Arquillian??? インテグレーションテストのための テスティングプラットフォーム http://www.jboss.org/arquillian.html 3 テスティングプラットフォーム?

More information

基礎プログラミング2015

基礎プログラミング2015 応用プログラミング 第 5 回 テキスト入力処理 2017 年 10 月 18 日 ( 水 ) 第 7 章 テキスト入力処理 1 文字ずつの処理 (P.58) char 型などに入力する cin >> x や fin >> x はホワイトスペースが読み飛ばされる仕様 ホワイトスペース : スペース ( 空白 ), Tab( タブ ), 改行 // sample.cpp char ch; while(cin

More information

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name クラス ( 教科書第 8 章 p.267~p.297) 前回は処理をまとめる方法として メソッドについて学習した 今回はメソッドとその処理の対象となるデータをまとめるためのクラスについて学習する このクラスはオブジェクト指向プログラミングを実現するための最も重要で基本的な技術であり メソッドより一回り大きなプログラムの部品を構成する 今回はクラスにおけるデータの扱いとクラスの作成方法 使用方法について説明していく

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅰ 8 回目 for 文 今日の講義で学ぶ内容 for 文 変数のスコープ for 文の入れ子 繰り返し文 1 for 文 for 文最初に一度だけ初期化の式を処理します条件が true の場合 文を実行し 更新の式を処理して繰り返します条件が false の場合 for 文を終了します 条件は boolean 型で 関係演算子で表現される式などを記述します for( 初期化の式

More information

スライド 1

スライド 1 R 流 Visual Studio 2008 C# の 驚異的な生産性を知る 2008 年 03 月 29 日 R 田中一郎 http://blogs.wankuma.com/rti/ Microsoft MVP for Development Tools - Visual C# アジェンダ はじめに コード比較 新機能の紹介 新機能の応用 まとめ はじめに つい先日発売した Visual Studio

More information

Microsoft PowerPoint pptx

Microsoft PowerPoint pptx PFCore(RT ミドルウェア ) トレーニング中級編 10:00-11:00 第 1 部 :RT コンポーネントプログラミングの概要 担当 : 安藤慶昭 ( 産業技術総合研究所 ) 概要 :RT コンポーネントの作成方法, 設計時の注意点などの概要について解説します 第 2 部 :RT ミドルウェア (PFcore) 開発支援ツールと RT コンポーネントの作成方法 11:00-12:00 12:00-13:00

More information

Prog2_12th

Prog2_12th 2018 年 12 月 13 日 ( 木 ) 実施クラスの継承オブジェクト指向プログラミングの基本的な属性として, 親クラスのメンバを再利用, 拡張, または変更する子クラスを定義することが出来る メンバの再利用を継承と呼び, 継承元となるクラスを基底クラスと呼ぶ また, 基底クラスのメンバを継承するクラスを, 派生クラスと呼ぶ なお, メンバの中でコンストラクタは継承されない C# 言語では,Java

More information

Microsoft PowerPoint - CproNt02.ppt [互換モード]

Microsoft PowerPoint - CproNt02.ppt [互換モード] 第 2 章 C プログラムの書き方 CPro:02-01 概要 C プログラムの構成要素は関数 ( プログラム = 関数の集まり ) 関数は, ヘッダと本体からなる 使用する関数は, プログラムの先頭 ( 厳密には, 使用場所より前 ) で型宣言 ( プロトタイプ宣言 ) する 関数は仮引数を用いることができる ( なくてもよい ) 関数には戻り値がある ( なくてもよい void 型 ) コメント

More information

Microsoft PowerPoint - Tsuzuki.ppt

Microsoft PowerPoint - Tsuzuki.ppt 探索的テストの適用事例 - まずは 探索的テストをやろまい!! - 三菱電機メカトロニクスソフトウエア株式会社 都築将夫 0/19 アジェンダ 現状分析 改善策立案 探索的テストの特徴 弱みの克服 探索的テストの強みを生かす 成果 & 効果 今後の課題 1/19 現状 担当製品のソフトウェア 規模 : 肥大 ( ライン数 : 数 10KL 数 100KL) 構造 : 複雑 ( サイクロマティック複雑度

More information

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション ソフトウェア品質シンポジウム 15 継続的システムテストについての 理解を深めるための 開発とバグのメトリクスの分析 15/9/18 荻野恒太郎 kotaro.ogino@mail.rakuten.com Test Engineering Team Service Support Section Group Core Service Department http://www.rakuten.co.jp/

More information

SQiP シンポジウム 2016 アジャイルプロジェクトにおけるペアワーク適用の改善事例 日本電気株式会社小角能史 2016 年 9 月 16 日 アジェンダ 自己紹介ペアワークとはプロジェクトへのペアワークの適用方法 スクラム適用ルール作成 最適化の流れ KPTを用いたふりかえり 適用ルールの改善事例 適用プロジェクトの概要ペアワーク適用ルール ( 初期 ) 改善例 1 - ペアのローテーション改善例

More information

5-3- 応統合開発環境に関する知識 1 独立行政法人情報処理推進機構

5-3- 応統合開発環境に関する知識 1 独立行政法人情報処理推進機構 5-3- 応統合開発環境に関する知識 1 5-3- 応統合開発環境に関する知識 統合開発環境と バグ管理ツール ビルドツールなど様々な開発ツールとの連携や MVCフレームワークなどの Javaフレームワークとの連 Ⅰ. 概要携 C 言語やスクリプト言語など Java 以外の言語での利用方法について学ぶ Ⅱ. 対象専門分野職種共通 Ⅲ. 受講対象者 本カリキュラムの 5-3- 基統合開発環境に関する知識

More information

JavaプログラミングⅠ

JavaプログラミングⅠ Java プログラミング Ⅱ 3 回目クラスの機能 (1) アクセス制限 オーバーロード課題 確認 問題次の各文は正しいか誤っているか答えなさい (1) クラスの private メンバは そのクラスからのみアクセス可能なメンバである (2) 一般に クラスのフィールドはどこからでもアクセスできるように public メンバで宣言すべきである (3) クラスは private メンバと public

More information

WPF アプリケーションの 多言語切替

WPF アプリケーションの 多言語切替 パスワード認証 YK S o f t w a r e 2015 年 8 月 3 日 @twyujiro15 プロフィール 加藤裕次郎 本職は製造業の開発業務 - 2009 年 4 月に入社 1982.03.03 生まれ ( うお座 ) 左利き ( お箸は右 ) twitter : @twyujiro15 プログラミング経験 Excel VBA MATLAB MATX C VC++ (Windows

More information

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド メソッド ( 教科書第 7 章 p.221~p.239) ここまでには文字列を表示する System.out.print() やキーボードから整数を入力する stdin.nextint() などを用いてプログラムを作成してきた これらはメソッドと呼ばれるプログラムを構成する部品である メソッドとは Java や C++ などのオブジェクト指向プログラミング言語で利用されている概念であり 他の言語での関数やサブルーチンに相当するが

More information

デザインパターン第一章「生成《

デザインパターン第一章「生成《 変化に強いプログラミング ~ デザインパターン第一章 生成 ~ 梅林 ( 高田明宏 )@ わんくま同盟 デザインパターンとは何か (1) デザインパターンの定義 ソフトウェア開発におけるデザインパターンとは 過去のソフトウェア設計者が発見し編み出した設計ノウハウを蓄積し 名前をつけ 再利用しやすいように特定の規約に従ってカタログ化したもの (Wikipedia) 参考書籍 オブジェクト指向における再利用のためのデザインパターン

More information

ML 演習 第 4 回

ML 演習 第 4 回 ML 演習第 4 回 おおいわ Mar 6, 2003 今回の内容 補足 Ocaml のモジュールシステム structure signature functor Ocaml コンパイラの利用 2 識別子について 利用可能文字 先頭文字 : A~Z, a~z, _ ( 小文字扱い ) 2 文字目以降 : A~Z, a~z, 0~9, _, 先頭の文字の case で 2 つに区別 小文字 : 変数,

More information

On-Demand Test Suite Reduction

On-Demand Test Suite Reduction make test-zesti: A Symbolic Execution Solution for Improving Regression Testing NTT ソフトウェアイノベーションセンタ丹野治門 目的と貢献 目的 ソフトウェアにおけるより多くのバグを見つけたい 現状の問題点 開発者が作るテスト ( 意味あるテスト, 高コスト ) 機械的に作るテスト ( 低コスト, 無意味なものが多い

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 2 第 6 回継承 コンストラクタ 1 講義資料について 新しい言語の機能 ( オブジェクト指向の機構 ) については 随時参考書などを参照するのがよい 過去の資料も参考になる http://java2005.cis.k.hosei.ac.jp/ 今回の範囲は 上記ページの 17 回に詳しい 2 テーマ : 継承 コンストラクタ 継承 (inheritance) インスタンス変数の継承

More information

intra-mart Accel Platform — IM-BloomMaker プログラミングガイド   初版  

intra-mart Accel Platform — IM-BloomMaker プログラミングガイド   初版   Copyright 2019 NTT DATA INTRAMART CORPORATION 1 Top 目次 1. 改訂情報 2. はじめに 2.1. 本書の目的 2.2. 対象読者 2.3. サンプルコードについて 2.4. 本書の構成 3. 前処理プログラム 3.1. 前処理を実装する 3.1.1. 前処理の実装方式 3.1.2. 前処理の実行順序と引数 3.1.3. リクエストパラメータの解析

More information

プログラミング入門1

プログラミング入門1 プログラミング入門 1 第 8 回メソッド (2) 授業開始前に自己点検 前回までの必須課題はすべてできていますか 前回までの学習項目であいまいな所はありませんか 理解できたかどうかは自分自身の基準をもとう Java 1 第 8 回 2 前回のテーマ メソッドとは いくつかの命令の列を束ねて 一つの命令として扱えるようにしたもの 今回学ぶメソッドの役割は その他のプログラミング言語では関数またはサブルーチンと呼ばれることがある

More information

Microsoft PowerPoint - C++_第1回.pptx

Microsoft PowerPoint - C++_第1回.pptx OpenFoam のための C/C++ 第 1 回メモリ管理 田中昭雄 1 目的 この勉強会の資料があれば OpenFoam カスタマイズ時に C/C++ で迷わない 2 予定 第 1 回メモリ管理 第 2 回 OpenFOAM で勉強するクラス 第 3 回 OpenFOAM で勉強するテンプレート 第 4 回 OpenFOAM カスタマイズ 第 5 回未定 第 6 回未定 3 今回のテーマ C++

More information

Microsoft Word - VBA基礎(6).docx

Microsoft Word - VBA基礎(6).docx あるクラスの算数の平均点と理科の平均点を読み込み 総点を計算するプログラムを考えてみましょう 一クラスだけ読み込む場合は test50 のようなプログラムになります プログラムの流れとしては非常に簡単です Sub test50() a = InputBox(" バナナ組の算数の平均点を入力してください ") b = InputBox(" バナナ組の理科の平均点を入力してください ") MsgBox

More information

前回のあらすじ 物理演算ライブラリ chipmunk を使って チキンが地面に落ちるところまで

前回のあらすじ 物理演算ライブラリ chipmunk を使って チキンが地面に落ちるところまで Cocos2d-x で作る物理演算ゲーム 引っ張って飛ばす編 = 2015 年 09 月 12 日 = 前回のあらすじ 物理演算ライブラリ chipmunk を使って チキンが地面に落ちるところまで 今回はチキンを 引っ張って飛ばします これ チキンにタッチして 飛ぶ! 離す! スライド AngryChicken を xcode で実行 まずは起動しよう やる処理を日本語でまとめる 1 画面へのタッチイベントを取得する

More information

PowerPoint Presentation

PowerPoint Presentation マイコンシステム 第 12 回 青森大学ソフトウェア情報学部 橋本恭能 haship@aomori-u.ac.jp 目次 講義 内部設計 3 Deviceタブ Actionタブの関数実装 例題 定義した機能を実現する方法を検討する 課題 動作確認 2 講義 内部設計 3 残りの関数を実装 3 組込みシステム開発 週テーマ内容 7 キッチンタイマーの組立キッチンタイマーのハードを製作 確認 8 9 10

More information

はじめに 原因結果グラフ技法を学ぼう まずは 原因結果グラフ について解説します 例題を使って 原因結果グラフ を描いてみます 演習問題のグラフを作ってみよう まずは一人で描いてみよう 近くの人とグラフの違いを見比べてみよう ツールを使って使ってみよう 支援ツール CEGTest を使って 演習問題

はじめに 原因結果グラフ技法を学ぼう まずは 原因結果グラフ について解説します 例題を使って 原因結果グラフ を描いてみます 演習問題のグラフを作ってみよう まずは一人で描いてみよう 近くの人とグラフの違いを見比べてみよう ツールを使って使ってみよう 支援ツール CEGTest を使って 演習問題 原因結果グラフ技法を学んでみよう! 使ってみよう! 2010 年 7 月 2 日加瀬正樹 ( ニフティ株式会社 ) はじめに 原因結果グラフ技法を学ぼう まずは 原因結果グラフ について解説します 例題を使って 原因結果グラフ を描いてみます 演習問題のグラフを作ってみよう まずは一人で描いてみよう 近くの人とグラフの違いを見比べてみよう ツールを使って使ってみよう 支援ツール CEGTest を使って

More information

アスペクトの相互作用を解消するアスペクトの提案

アスペクトの相互作用を解消するアスペクトの提案 アスペクトの相互作用を解消する アスペクトの提案 武山文信千葉滋東京工業大学大学院情報理工学研究科数理 計算科学専攻 2009/03/11 武山文信, 千葉滋, アスペクトの相互作用を解消するアスペクトの提案 @PPL2009 in 高山 1/21 アスペクト指向プログラミング (AOP) 横断的関心事をアスペクトとしてモジュール化 オブジェクト指向 (OOP) では上手く分離できない クラス階層に

More information

V8.1新規機能紹介記事

V8.1新規機能紹介記事 WebOTX V8.1 新規機能 EJB 3.0 WebOTX V8.1より Java EE 5(Java Platform, Enterprise Edition 5) に対応しました これによりいろいろな機能追加が行われていますが 特に大きな変更であるEJB 3.0 対応についてご紹介いたします なお WebOTX V7で対応したEJB 2.1についてもWebOTX V8.1で引き続き利用することが可能です

More information

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ 11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デザインパターンの主な内容 そのデザインパターンの目的と効果 どのような役割の部品 ( クラス, インタフェース

More information

Java講座

Java講座 ~ 第 1 回 ~ 情報科学部コンピュータ科学科 2 年竹中優 プログラムを書く上で Hello world 基礎事項 演算子 構文 2 コメントアウト (//, /* */, /** */) をしよう! インデントをしよう! 変数などにはわかりやすい名前をつけよう! 要するに 他人が見て理解しやすいコードを書こうということです 3 1. Eclipse を起動 2. ファイル 新規 javaプロジェクト

More information

問題1 以下に示すプログラムは、次の処理をするプログラムである

問題1 以下に示すプログラムは、次の処理をするプログラムである 問題 1 次に示すプログラムは 配列 a の値を乱数で設定し 配列 a の値が 333 より大きく 667 以下の値 の合計値を求めるプログラムである 1 と 2 に適切なコードを記述してプログラムを完 成させよ class TotalNumber { public static void main(string[] args) { int[] a = new int[1000]; // 1 解答条件

More information

040402.ユニットテスト

040402.ユニットテスト 2. ユニットテスト ユニットテスト ( 単体テスト ) ユニットテストとはユニットテストはプログラムの最小単位であるモジュールの品質をテストすることであり その目的は結合テスト前にモジュール内のエラーを発見することである テストは機能テストと構造テストの2つの観点から行う モジュールはプログラムを構成する要素であるから 単体では動作しない ドライバとスタブというテスト支援ツールを使用してテストを行う

More information

Java から見たオブジェクト指向入門 オブジェクト指向 AtoZ セミナー ( 株 ) 豆蔵井上樹

Java から見たオブジェクト指向入門 オブジェクト指向 AtoZ セミナー ( 株 ) 豆蔵井上樹 Java から見たオブジェクト指向入門 オブジェクト指向 AtoZ セミナー ( 株 ) 豆蔵井上樹 趣旨 M Java を通してオブジェクト指向に対する理解をより深め 次のステップへの足がかりとなるようにする 2000.10.20 オブジェクト指向 AtoZ 2 対象 M オブジェクト指向をこれから始めたい方 M Javaをもっと使いこなしたい方 M 必要な知識 Java の言語仕様 UML 2000.10.20

More information

2

2 プログラミング応用演習 b 10 月 5 日演習課題 2016/10/05 PAb 演習課題 プログラム仕様書作成課題 課題クラスを読み 次に示すクラスの仕様書を完成させよ なお 仕様書は クラス 1 つに付き 1 つ作成す る 加えて 図 1 のようなクラス継承の模式図を作成せよ < クラス名 のプログラム仕様書 > 作成者 : 学籍番号 名前 (1) クラスクラス名 : クラス名 説明 : クラスが何を表現しているか

More information

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do

(2) 構造体変数の宣言 文法は次のとおり. struct 構造体タグ名構造体変数名 ; (1) と (2) は同時に行える. struct 構造体タグ名 { データ型変数 1; データ型変数 2;... 構造体変数名 ; 例 : struct STUDENT{ stdata; int id; do 8 構造体と供用体 ( 教科書 P.71) 構造体は様々なデータ型,int 型,float 型や char 型などが混在したデータを一つのまとまり, 単位として扱える.( 配列は一つのデータ型しか扱えない.) 構造体は柔軟なデータ構造を扱えるので, プログラムを効率よく開発できる. つまり構造体を使用すると, コード量を抑え, バグを少なくし, 開発時間を短くし, 簡潔なプログラムが作れる. 共用体は,

More information

目次 ペトリネットの概要 適用事例

目次 ペトリネットの概要 適用事例 ペトリネットを利用した状態遷移テスト 和田浩一 東京エレクトロン SDC FA グループ 目次 ペトリネットの概要 適用事例 ペトリネットの概要 - ペトリネットとは ペトリネット (Petri Net) とは カール アダム ペトリが 1962 年に発表した離散分散システムを数学的に表現する手法である 視覚的で 数学的な離散事象システムをモデル化するツールの一つである ペトリネットの概要 - ペトリネットの表記と挙動

More information

Microsoft PowerPoint - Session4古賀様.ppt

Microsoft PowerPoint - Session4古賀様.ppt Windows Embedded CE の テスト環境と活用 マイクロソフト Windows Embedded Partner ( 株 ) サムシングプレシャス代表取締役社長古賀信哉 普段の開発の立ち位置 はじめに ミドルウェア層の開発が主 (DLNA 関連など ) 必要に応じてデバイスドライバ ( カーネルモジュール ) 概要 特定ターゲット向けの BSP も 開発環境及び開発環境を用いた動作確認

More information