SlideShare a Scribd company logo
1 of 53
オブジェクト指向設計の原則 NPO アイネタ・ジャパン 理事 日本XPユーザ会 運営メンバー 小井土 亨
自己紹介 仕事 パッケージベンダーで、パッケージを開発 具体的な作業内容 開発のガイドラインを作る 開発プロセスを設計する 開発プロセスを支える環境を構築し、運用する 各種ツールの選択や開発 ビルド環境の整備、各種管理ツールの整備 ソフトウェア・アーキテクチャの決定する 基盤フレームワークの設計と実装 基盤の共通ライブラリの設計と実装 開発上のいろいろな相談を受ける 今日の目的 オブジェクト指向における設計の基本原則やデザインパターンなどについて、良い設計という観点で議論したいと思います 特に、アーキテクチャと設計の関係について、会場のみなさんと考えたいと思います 2
本日のアジェンダ 3
ソフトウェア開発とは ソフトウェア開発の本質 解決すべき問題をより単純な問題に分割する 分割した問題に解法を適応する 解法を適応したものを組み立てる 4
設計に関する質問 要求を完全に理解できたとした場合、 設計結果は同じとなる? Yes /No 5
設計に関する質問 機能仕様が同じ場合、設計は、だれが行っても同じ結果となる? Yes /No 6
設計に関する質問 去年の自分と今年の自分が同じ仕様に対して設計したら、同じ結果となる? Yes /No 7
設計とは 設計の本質 要求、分析の結果をどのように実現するかを解決させる活動 設計は、問題を解く作業なので、唯一の正解はなく、あるのは最適解 設計の基本 分析の全ての機能を正しく実現する ソフトウェアの完全な姿を提供すべきである 設計結果は、ドキュメントとして提供されることが多い ドキュメントベースのコミュニケーション 設計結果を利用する人が読みやすく理解しやすい 8
設計の目的 9
悪い設計 良い設計 10
設計の難しさ 11
心がけていること 12
設計の原則 プログラムをモジュールに分割する 分割することで、プログラムが複雑になるのを避ける モジュール間の依存関係を明確にする モジュール間の結合度が低い モジュール間の結合度が低いほうが良い 修正や問題が影響する範囲が少なくなる モジュールの凝集度が高い 各モジュール内の凝集度を高くすることで、モジュール間の結合度が低くなる 再利用率 モジュール分割し、モジュール間の結合度を低くして再利用率を上げる 13
イベント駆動型サービス 要求があった場合にサービスを実行する。 例は? 利点は? 14
バッチ処理型サービス 決められた計画に沿ってサービスを実行する。 例は? 利点は? 15
アーキテクチャと品質 「人を移動させる」という要求に対して、 イベント駆動型とバッチ処理型のサービスでは、品質にどのような違いがあるでしょうか? 16
イベント駆動とバッチ処理 イベント駆動によるサービス 要求があった場合にサービスを実行する イベント駆動の例 タクシーのサービス 利点 要求された時だけサービスを行うことで運用コストを減らす バッチ処理によるサービス 事前に決められた計画に沿ってサービスを実行する バッチ処理の例 ダイヤを決めて運行する電車やバスのサービス 利点 まとめて行うことでコストを減らす サービスを行う回数を少なくして運用コストを減らす 17
ソフトウェアアーキテクチャ ソフトウェアアーキテクチャとは ソフトウェア構造や構造化の原則 ソフトウェアアーキテクチャの目的 ソフトウェアの品質特性を強制(支配)する構造を構築する 品質特性とは ソフトウェアが実現するべき品質の特徴 代表的なもの パフォーマンス(性能・速度) 安全性 信頼性 可用性(Availability) 堅牢性(セキュリティ) ユーザビリティ(使いやすさ) 拡張性 18
ソフトウェアアーキテクチャの定義 ソフトウェアアーキテクチャの定義 複数の定義が必要 複数の角度からの表現を組み合わせて定義を行う ソフトウェア開発のビジョンを実現するために必要なソフトウェア構造 構造化原則 抽象的な構造やガイドライン 概念的な構造(モデリング) ANSI/IEEE Std 1471-2000 構成要素を統合したシステムの基本的な構造,構成要素の相互および構成要素と環境間の関係,そしてシステム設計と発展を導く方針 全体の分け方と、分けた部分をどのように関係づけるか 19
ソフトウェアアーキテクチャの構築 アーキテクチャへの要求 達成すべき品質特性への要求 各品質特性は、相反する項目がある トレードオフを考慮し、アーキテクチャを決定する 要求の種類 非機能要求 長期的な機能要求 アーキテクチャ構築時の考慮点 可変性 変わる要求と変わらない要求の分析 リスクの方針 さまざまの視点からリスクの洗い出しと方針を決定 20
アーキテクチャの複数のビュー ビューポイントとは ステークホルダの関心事に応じた視点 ビューとは 複数の関連した視点(ビューポイント)によって、アーキテクチャを記述するものがビューである 4つのビュー 論理ビュー システムが必要とされている機能を実現する、論理的な構造 実行ビュー 実行時のプロセスやタスクやスレッドといった実行時の単位の構造 開発ビュー システムが開発時のファイル等を単位とした構造 配置ビュー システムをどのようなマシン上で動作させ、各プロセスがどのマシン(CPU)上に配置されるか等を表した構造 21
パターンに関する質問 デザイン・パターンを勉強したことは? Yes /No 22
パターンに関する質問 パターンを書いたことは? Yes /No 23
パターンに関する質問 パタン・ランゲージを説明してください。 24
パタン・ランゲージ デザイン・パターン 経験に基づいて、繰り返し考え出されてきた、設計についての解決策を一定の形式で記述したもの 名前/目的/動機/適用可能性/構造/構成要素/協調関係/結果/実装/関連するパターン 名前/問題/解決策/効果(トレードオフ)/関連 パタン・ランゲージ 何らかの活動に必要なパターンの集まり パターンを組合わせて作られる体系 25
パターンに関する質問 アーキテクチャをパタン・ランゲージで体系化することについて? 〇(有効) or ×(有効でない) 26
設計方針に関する質問 仕様変更が繰り返されると、設計は悪くなる(設計の悪臭)? Yes /No 27
設計方針に関する質問 先を見越して、発生しそうな仕様変更に 対する仕組みを組み込むべきである? Yes /No 28
設計方針に関する質問 仕様変更は、予測できる? (予測できない、仕様変更はない)Yes /No 29
悪い設計の兆候 硬さ 変化しにくいシステム 1つの変更が全体に影響し、多くの変更が必要になる もろさ 1つの変更で、論理的には関連のない箇所まで正常動作しなくなる 扱いにくさ 正しいことをすることが難しいシステム 不透明さ 読みにくく、わかりにくい 不必要な複雑さ 本質的に意味を持たない構造が含まれているシステム 不必要な繰り返し 同じような構造が繰り返し現われ、共通化できる部分がされていない 移植性のなさ 再利用できる部分を切り出すことができない 30
良い設計とは(設計品質特性) 正確性 仕様を正しく満たしていること 理解性 設計結果が読みやすく理解しやすいこと 一貫性(統一性) 設計上の個々の概念が首尾一貫して、ぶれがない 変更容易性 機能強化などに伴う変更が容易であること 頑健性 誤った使い方に対して、システムが適切に対処できること システムの一部のバグが全体に波及しないこと 移植性 いろいろなハードウェア、ソフトウェア環境へ容易に移植できること 効率性 実行効率、資源効率ともに十分実用に適応していること 31
テスト容易性と設計 テスト容易性は設計の指針となるか? Yes /No 32
良いテストの条件 テスト目的が明確である 何をテストするか明確である その目的も明確で、更にひとつであること テストの判定が正しい テストの成功、失敗が正しく判定されている テストを独立して実行することができる テストが他のテストに依存することなく、独立している 繰り返し実行することができる 何度でも繰り返して、テストを実行することができる テストを実行しても、状態が変化しない テストを実行し、成功した場合でも失敗した場合でも、テストを実行する前と後で何も変わらない 33
良いテストの効果 メソッドが一つの機能を実現している メソッドが明確な一つの機能だけを提供する メソッドの結果を提供する 外部に対して、メソッドの処理結果を判断できるような何らかの方法を提供する クラスやメソッドの独立度が高いこと クラスやメソッドの、他のクラスやメソッドへの依存度が低い 特定の環境への依存度が低い 特定のファイルやデータベース構造などに対する依存度が低い 34
良い設計の特徴 完全性と十分性 システムが目的を達成するために必要な機能のみを含んでいる 原子性 1つのサービスを実現することに焦点があたっている 高凝集度 少数に絞られた責務を持ち、その責務を実装するためだけの機能を持つ 低結合度 他の部分との連携が必要最低限である 35
設計品質とテスト容易性 良いテストの効果と良い設計の相関関係 36
重複をなくす DRY原則(Don't Repeat Yourself.) 例は? 有効性は? 理由は? 37
DRY原則(Don't Repeat Yourself.) DRY原則 重複をなくす 重複コードを書かないための設計を行う ソフトウェア開発全般での適応 設計、プログラミング以外でも、重複をなくす 38
設計の原則 単一責任の原則 SRP(The Single Responsibility Principle) クラスは、1つの役割(責任)だけを持つ 1つの理由のみによって、クラスが変更される 役割を単独でテストできる 役割=変更理由=テスト単位 凝集(cohesion)と同意 凝集とは、モジュールに含まれる要素間の機能的な結び付き 原則の適用条件 役割の変更が確実に想定される場合 理由なく適応すると、「不必要に複雑な設計」となる 役割をテストする必要がある場合 問題の予兆(もろい設計) ある役割の変更に伴い、本来関係ないと思われる役割のクラスに変更の影響がある 独立したテストが困難なクラスがある 39
設計の原則 オープン・クローズドの法則 OCP(The Open-Closed Principle) ソフトウェアの構成要素(クラス、モジュール、関数など)は拡張に対して開いていて、修正に対して閉じていなかればならない 拡張に対して開いているとは 構成要素の振る舞いを拡張できる 修正に対して閉じているとは モジュールの振る舞いを拡張しても、既存のモジュールは変更の必要がない 原則の適用 長く使い続けられるシステムを開発する システムに機能の追加や変更をし、成長させる必要がある 確実でない変化に対応するための準備は 「無意味に複雑な設計」となる 問題の予兆(硬い設計) ちょっとした変更でさえ、修正箇所と依存関係のある全ての箇所を修正する必要がある 機能の追加や修正を行なったときに、それに伴って修正しなければならないif文やswitch文が数多くある コピー&ペーストで、大量の同じコード存在する 40
設計の原則 リスコフの置換原則 LSP(The Liskov Substitution Principle) 派生クラスは、その基本クラスと置換え可能でなければならない 派生クラスは、基本クラスが許可する全てを許可しなければならい 原則の適応条件 基本クラスの派生型を作成する場合 契約による設計 派生クラスは、基本クラスの事前条件より等しいか弱いか 派生クラスは、基本クラスの事後条件より等しいか強いか 単体テストによって契約を明記する 問題の予兆(もろい設計) 派生クラスが増えた場合に基本クラスに変更が必要 派生クラスごとの分岐処理が基本クラスに存在する 基本クラスの機能を派生クラスが無力化する 基本クラスの機能を派生クラスで何もしない動作と置き換える 41
設計の原則 依存性逆転の原則 DIP(The Dependency Inversion Principle) 上位モジュールは、下位モジュールに依存してはならない 抽象(目的)に依存させる 実装の詳細に依存させない 原則の適応条件 レイヤ構造によって、システムの複雑性を低くする 変更に耐えられるコードを構築する必要がある コードの保守が想定される 問題の予兆(もろい設計) 下位モジュールの変更が上位モジュールに影響する 42 A A IB B B
設計の原則 インターフェイス分離の原則 ISP(The Interface Segregation Principle) クライアントに、クライアント依存しないメソッドへの依存性を強制してはならない インターフェイス内の強い関連があるものをグループ化して分離する 原則の適応条件 変更に強いシステムを開発する 多目的なインターフェイスを目的ごとに分離し、不用意な結びつきを避ける クラス間の依存度を下げて、低結合度を実現する 目的ごとのテストを作成する 問題の予兆(もろい設計) クライアントが利用していないメソッドの変更に影響される インターフェイスの実装クラスの変更が広範囲に影響する インターフェイスが部分的(グループ単位)にしか強い関連を持っていない 43
テスト駆動開発とは TDDの目的 テスト利用して、良いソフトウェアを開発する TDDの定義(規則) 失敗する自動テストコードを作成するまで、プロダクトコードを書かない コードの重複をなくす TDDのテストコードとは プロダクトコードが実現しなければならないこと プロダクトコードのインターフェイスを洗練させるもの TDDの設計(シンプルな設計) すべてのテストにパスする テストにパスするのに必要なコード 最適な範囲で、最小限の数のクラス 最適な範囲で、最小限の数のメソッド 44
TDDと設計 TDDでは、設計せずに、すぐに実装を行う? Yes / No 45
誤解と実際 誤解 ,[object Object]
実装を始める前に、全てのテストを作成する
コードが唯一のドキュメントである実際 ,[object Object]
要件をテストという形で明確化する
自動テストを作成してから実装を行う
テストを単位として、小さいステップでソフトウェア開発を進める46
コードの位置づけ コードは重要なドキュメントのひとつ 目標「動作するきれいなコード」 詳細かつ正確なドキュメント ドキュメントとして認識して、クリアで読みやすくする テストコードは貴重なリソースのひとつ 継続的な開発で繰り返し利用される 運用で問題が発生した場合 テストを追加する 既存のテストを実行し、修正を確実に行う 47
リファクタリング リファクタリング(再設計)は、設計力がない人が行うものである? Yes / No 48

More Related Content

What's hot

オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
 

What's hot (20)

ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
 
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス実践に向けたドメイン駆動設計のエッセンス
実践に向けたドメイン駆動設計のエッセンス
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
ドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDDドメイン駆動設計 の 実践 Part3 DDD
ドメイン駆動設計 の 実践 Part3 DDD
 
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
 
ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善ソフトウェア開発のやり方の改善
ソフトウェア開発のやり方の改善
 
ドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみようドメイン駆動設計 コアドメインを語り合ってみよう
ドメイン駆動設計 コアドメインを語り合ってみよう
 
コンポーネント指向と余白の設計
コンポーネント指向と余白の設計コンポーネント指向と余白の設計
コンポーネント指向と余白の設計
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
 
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
 
ドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装までドメイン駆動で開発する ラフスケッチから実装まで
ドメイン駆動で開発する ラフスケッチから実装まで
 
オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来オブジェクト指向プログラミングの現在・過去・未来
オブジェクト指向プログラミングの現在・過去・未来
 

Viewers also liked

インターフェイスによるオブジェクト指向設計
インターフェイスによるオブジェクト指向設計インターフェイスによるオブジェクト指向設計
インターフェイスによるオブジェクト指向設計
Akineko Shimizu
 
ソフトウェア設計私論
ソフトウェア設計私論ソフトウェア設計私論
ソフトウェア設計私論
guestb2d5a3
 
「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界
maruyama097
 
オブジェクト指向最強
オブジェクト指向最強オブジェクト指向最強
オブジェクト指向最強
haganemetal
 

Viewers also liked (20)

良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 
オブジェクト指向アンチパターンを考えてみた
オブジェクト指向アンチパターンを考えてみたオブジェクト指向アンチパターンを考えてみた
オブジェクト指向アンチパターンを考えてみた
 
インターフェイスによるオブジェクト指向設計
インターフェイスによるオブジェクト指向設計インターフェイスによるオブジェクト指向設計
インターフェイスによるオブジェクト指向設計
 
ソフトウェア設計私論
ソフトウェア設計私論ソフトウェア設計私論
ソフトウェア設計私論
 
顧客価値って奥深いですね
顧客価値って奥深いですね顧客価値って奥深いですね
顧客価値って奥深いですね
 
概念モデルって難しいですよね
概念モデルって難しいですよね概念モデルって難しいですよね
概念モデルって難しいですよね
 
Team Foundation Server入門
Team Foundation Server入門Team Foundation Server入門
Team Foundation Server入門
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜
 
TFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょTFS超入門。いつやるの。今でしょ
TFS超入門。いつやるの。今でしょ
 
かたのはなし
かたのはなしかたのはなし
かたのはなし
 
希望の関数と絶望の副作用
希望の関数と絶望の副作用希望の関数と絶望の副作用
希望の関数と絶望の副作用
 
「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界「型の理論」と証明支援システム -- COQの世界
「型の理論」と証明支援システム -- COQの世界
 
概念モデリング再入門 + DDD
概念モデリング再入門 + DDD概念モデリング再入門 + DDD
概念モデリング再入門 + DDD
 
オブジェクト指向最強
オブジェクト指向最強オブジェクト指向最強
オブジェクト指向最強
 
擬人化で考えるオブジェクト指向
擬人化で考えるオブジェクト指向擬人化で考えるオブジェクト指向
擬人化で考えるオブジェクト指向
 
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数
 
第3回勉強会 オブジェクト指向
第3回勉強会 オブジェクト指向第3回勉強会 オブジェクト指向
第3回勉強会 オブジェクト指向
 
ソフトウェア設計のすすめ
ソフトウェア設計のすすめソフトウェア設計のすすめ
ソフトウェア設計のすすめ
 

Similar to オブジェクト指向設計の原則

Information20120312
Information20120312Information20120312
Information20120312
b-slash
 
20151018 study-設計を学ぶための最初の一冊はなにがいいのだろうか
20151018 study-設計を学ぶための最初の一冊はなにがいいのだろうか20151018 study-設計を学ぶための最初の一冊はなにがいいのだろうか
20151018 study-設計を学ぶための最初の一冊はなにがいいのだろうか
bonjin6770 Kurosawa
 
No006-01-Suc3rum-20091021
No006-01-Suc3rum-20091021No006-01-Suc3rum-20091021
No006-01-Suc3rum-20091021
Sukusuku Scrum
 

Similar to オブジェクト指向設計の原則 (20)

Modeling in the Agile Age and casual astah models
Modeling in the Agile Age and casual astah modelsModeling in the Agile Age and casual astah models
Modeling in the Agile Age and casual astah models
 
20050809
2005080920050809
20050809
 
BPSttudy#84 アイデアをカタチにする方法
BPSttudy#84 アイデアをカタチにする方法BPSttudy#84 アイデアをカタチにする方法
BPSttudy#84 アイデアをカタチにする方法
 
JANOG37 Pattern BoF text
JANOG37 Pattern BoF textJANOG37 Pattern BoF text
JANOG37 Pattern BoF text
 
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門とりあえず30分でひととおり分かった気にはなれるアジャイル入門
とりあえず30分でひととおり分かった気にはなれるアジャイル入門
 
Automated testingindevopsstrategy.20210506
Automated testingindevopsstrategy.20210506Automated testingindevopsstrategy.20210506
Automated testingindevopsstrategy.20210506
 
(講演資料)開発現場で役立つ論文の書き方のお話
(講演資料)開発現場で役立つ論文の書き方のお話(講演資料)開発現場で役立つ論文の書き方のお話
(講演資料)開発現場で役立つ論文の書き方のお話
 
DL-D_ver1.pdf
DL-D_ver1.pdfDL-D_ver1.pdf
DL-D_ver1.pdf
 
Information20120312
Information20120312Information20120312
Information20120312
 
20151018 study-設計を学ぶための最初の一冊はなにがいいのだろうか
20151018 study-設計を学ぶための最初の一冊はなにがいいのだろうか20151018 study-設計を学ぶための最初の一冊はなにがいいのだろうか
20151018 study-設計を学ぶための最初の一冊はなにがいいのだろうか
 
Agile insepction
Agile insepctionAgile insepction
Agile insepction
 
はじめてのScrumこれから大切にしたいこと Release#2
はじめてのScrumこれから大切にしたいこと Release#2はじめてのScrumこれから大切にしたいこと Release#2
はじめてのScrumこれから大切にしたいこと Release#2
 
No006-01-Suc3rum-20091021
No006-01-Suc3rum-20091021No006-01-Suc3rum-20091021
No006-01-Suc3rum-20091021
 
人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2人工知能のコードをハックする会 #2
人工知能のコードをハックする会 #2
 
改訂版:開発現場で役立つ論文の書き方のお話
改訂版:開発現場で役立つ論文の書き方のお話改訂版:開発現場で役立つ論文の書き方のお話
改訂版:開発現場で役立つ論文の書き方のお話
 
アジャイルにモデリングは必要か
アジャイルにモデリングは必要かアジャイルにモデリングは必要か
アジャイルにモデリングは必要か
 
データプロダクト開発を成功に導くには
データプロダクト開発を成功に導くにはデータプロダクト開発を成功に導くには
データプロダクト開発を成功に導くには
 
社内勉強会(Git)
社内勉強会(Git)社内勉強会(Git)
社内勉強会(Git)
 
設計について学ぼう (1).pdf
設計について学ぼう (1).pdf設計について学ぼう (1).pdf
設計について学ぼう (1).pdf
 
アジャイルにプロジェクトの"なぜ"を考える、インセプションデッキワークショップ
アジャイルにプロジェクトの"なぜ"を考える、インセプションデッキワークショップアジャイルにプロジェクトの"なぜ"を考える、インセプションデッキワークショップ
アジャイルにプロジェクトの"なぜ"を考える、インセプションデッキワークショップ
 

More from Toru Koido

アジャイル開発におけるシステムテストの自動化
アジャイル開発におけるシステムテストの自動化アジャイル開発におけるシステムテストの自動化
アジャイル開発におけるシステムテストの自動化
Toru Koido
 

More from Toru Koido (13)

Keyword driventestexercisetext.20210506
Keyword driventestexercisetext.20210506Keyword driventestexercisetext.20210506
Keyword driventestexercisetext.20210506
 
Keyword test
Keyword test Keyword test
Keyword test
 
Keyword System Test
Keyword System TestKeyword System Test
Keyword System Test
 
自動テストの品質とテストパターン
自動テストの品質とテストパターン自動テストの品質とテストパターン
自動テストの品質とテストパターン
 
設計品質とアーキテクチャ
設計品質とアーキテクチャ設計品質とアーキテクチャ
設計品質とアーキテクチャ
 
キーワード駆動テストチュートリアルハンズアウト.03.06
キーワード駆動テストチュートリアルハンズアウト.03.06キーワード駆動テストチュートリアルハンズアウト.03.06
キーワード駆動テストチュートリアルハンズアウト.03.06
 
キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015キーワード駆動によるシステムテストの自動化について 2015
キーワード駆動によるシステムテストの自動化について 2015
 
テスト自動化とアーキテクチャ
テスト自動化とアーキテクチャテスト自動化とアーキテクチャ
テスト自動化とアーキテクチャ
 
Xp2 2014版
Xp2 2014版Xp2 2014版
Xp2 2014版
 
Xp2 2013版
Xp2 2013版Xp2 2013版
Xp2 2013版
 
アジャイル開発におけるシステムテストの自動化
アジャイル開発におけるシステムテストの自動化アジャイル開発におけるシステムテストの自動化
アジャイル開発におけるシステムテストの自動化
 
Xp2
Xp2Xp2
Xp2
 
Xp2
Xp2Xp2
Xp2
 

オブジェクト指向設計の原則

Editor's Notes

  1. これは、概要スライドの 別の例です。
  2. これは、切り替えを使用した 概要スライドの例です。