SlideShare ist ein Scribd-Unternehmen logo

iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag

Schmutz im Code behindert mittel- und langfristig effiziente Software-Entwicklung. Seine Ursachen sind vielfältig. Clean Code zeigt, wie wir effizienter arbeiten und gleichzeitig höhere Komplexität handhaben können. Ein spezieller Clean-Code-Prozess hilft, Clean-Code-Maßnahmen im Projektalltag lebendig werden zu lassen. Muss wartbarer Code höher bewertet werden als funktionierender Code? Weitere Vorträge, die wir auch gern in Ihrem Unternehmen halten, finden Sie unter: https://www.iks-gmbh.com/impulsvortraege

1 von 67
Downloaden Sie, um offline zu lesen
Von der Lehre in den Alltag

von Jörg Vollmer
und Reik Oberrath             26.06.2012
Moderne Architekturen
Design Patterns
Der Code
Wofür steht                            ?

             &
 Software-            Effektive
  qualität       Softwareentwicklung
Agenda

 Einleitung

 Ursachen von Dirty Code

 Die Clean Code Developer Bewegung

 Das Team Clean Coding

 Meinungen zu Clean Code und zum Team Clean Coding

Recomendados

外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話外部キー制約に伴うロックの小話
外部キー制約に伴うロックの小話ichirin2501
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~normalian
 
HandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLHandlerSocket plugin for MySQL
HandlerSocket plugin for MySQLakirahiguchi
 
Windowsコンテナ入門
Windowsコンテナ入門Windowsコンテナ入門
Windowsコンテナ入門Kyohei Mizumoto
 
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツオブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ増田 亨
 
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。Yutaka Horikawa
 
SQL Server のインデックス設計
SQL Server のインデックス設計SQL Server のインデックス設計
SQL Server のインデックス設計Koji Yamada
 

Más contenido relacionado

Was ist angesagt?

ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版Keiichiro Shikano
 
SoftLayer バックアップ基礎(idera編)
SoftLayer バックアップ基礎(idera編)SoftLayer バックアップ基礎(idera編)
SoftLayer バックアップ基礎(idera編)Hideaki Tokida
 
Snipe itで始めるit資産管理
Snipe itで始めるit資産管理Snipe itで始めるit資産管理
Snipe itで始めるit資産管理Nozue Tomohiko
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
Sqlアンチパターン(メタデータトリブル)
Sqlアンチパターン(メタデータトリブル)Sqlアンチパターン(メタデータトリブル)
Sqlアンチパターン(メタデータトリブル)Tomoaki Uchida
 
よくわかるHopscotch hashing
よくわかるHopscotch hashingよくわかるHopscotch hashing
よくわかるHopscotch hashingKumazaki Hiroki
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計増田 亨
 
ぐるなびが活用するElastic Cloud
ぐるなびが活用するElastic Cloudぐるなびが活用するElastic Cloud
ぐるなびが活用するElastic CloudElasticsearch
 
5分でわかるクリーンアーキテクチャ
5分でわかるクリーンアーキテクチャ5分でわかるクリーンアーキテクチャ
5分でわかるクリーンアーキテクチャKenji Tanaka
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるpospome
 
はまる!!JPA #glassfish_jp #javaee
はまる!!JPA #glassfish_jp #javaeeはまる!!JPA #glassfish_jp #javaee
はまる!!JPA #glassfish_jp #javaeeToshiaki Maki
 
C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26Yoshihisa Ozaki
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?Yoshitaka Kawashima
 
Manage your bare-metal infrastructure with a CI/CD-driven approach
Manage your bare-metal infrastructure with a CI/CD-driven approachManage your bare-metal infrastructure with a CI/CD-driven approach
Manage your bare-metal infrastructure with a CI/CD-driven approachinovex GmbH
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
アンチフラジャイルの世界
アンチフラジャイルの世界アンチフラジャイルの世界
アンチフラジャイルの世界Yoshitaka Kawashima
 
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency APITaku Miyakawa
 
お小遣いでKubernetesクラスタ
お小遣いでKubernetesクラスタお小遣いでKubernetesクラスタ
お小遣いでKubernetesクラスタNobuaki Aoki
 
EPUBのナビゲーションを理解しよう
EPUBのナビゲーションを理解しようEPUBのナビゲーションを理解しよう
EPUBのナビゲーションを理解しようHiroshi Takase
 
Qiita Night 足場固めからやるマイクロサービス
Qiita Night 足場固めからやるマイクロサービスQiita Night 足場固めからやるマイクロサービス
Qiita Night 足場固めからやるマイクロサービスTomoki Kuriyama
 

Was ist angesagt? (20)

ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版ドキュメントシステムはこれを使え2015年版
ドキュメントシステムはこれを使え2015年版
 
SoftLayer バックアップ基礎(idera編)
SoftLayer バックアップ基礎(idera編)SoftLayer バックアップ基礎(idera編)
SoftLayer バックアップ基礎(idera編)
 
Snipe itで始めるit資産管理
Snipe itで始めるit資産管理Snipe itで始めるit資産管理
Snipe itで始めるit資産管理
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
Sqlアンチパターン(メタデータトリブル)
Sqlアンチパターン(メタデータトリブル)Sqlアンチパターン(メタデータトリブル)
Sqlアンチパターン(メタデータトリブル)
 
よくわかるHopscotch hashing
よくわかるHopscotch hashingよくわかるHopscotch hashing
よくわかるHopscotch hashing
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
 
ぐるなびが活用するElastic Cloud
ぐるなびが活用するElastic Cloudぐるなびが活用するElastic Cloud
ぐるなびが活用するElastic Cloud
 
5分でわかるクリーンアーキテクチャ
5分でわかるクリーンアーキテクチャ5分でわかるクリーンアーキテクチャ
5分でわかるクリーンアーキテクチャ
 
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考えるGoのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
 
はまる!!JPA #glassfish_jp #javaee
はまる!!JPA #glassfish_jp #javaeeはまる!!JPA #glassfish_jp #javaee
はまる!!JPA #glassfish_jp #javaee
 
C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
Manage your bare-metal infrastructure with a CI/CD-driven approach
Manage your bare-metal infrastructure with a CI/CD-driven approachManage your bare-metal infrastructure with a CI/CD-driven approach
Manage your bare-metal infrastructure with a CI/CD-driven approach
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
アンチフラジャイルの世界
アンチフラジャイルの世界アンチフラジャイルの世界
アンチフラジャイルの世界
 
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
 
お小遣いでKubernetesクラスタ
お小遣いでKubernetesクラスタお小遣いでKubernetesクラスタ
お小遣いでKubernetesクラスタ
 
EPUBのナビゲーションを理解しよう
EPUBのナビゲーションを理解しようEPUBのナビゲーションを理解しよう
EPUBのナビゲーションを理解しよう
 
Qiita Night 足場固めからやるマイクロサービス
Qiita Night 足場固めからやるマイクロサービスQiita Night 足場固めからやるマイクロサービス
Qiita Night 足場固めからやるマイクロサービス
 

Destacado

Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best PracticesTheo Jungeblut
 
Clean Code Workshop - Agile Bodensee Konferenz 2013
Clean Code Workshop - Agile Bodensee Konferenz 2013Clean Code Workshop - Agile Bodensee Konferenz 2013
Clean Code Workshop - Agile Bodensee Konferenz 2013Jürgen Gutsch
 
Tech Talk: Wozu Clean Code?
Tech Talk: Wozu Clean Code?Tech Talk: Wozu Clean Code?
Tech Talk: Wozu Clean Code?leanovate GmbH
 
Clean Code Developer
Clean Code DeveloperClean Code Developer
Clean Code DeveloperGFU Cyrus AG
 
ASP.NET 5 auf Raspberry PI & docker
ASP.NET 5 auf Raspberry PI & dockerASP.NET 5 auf Raspberry PI & docker
ASP.NET 5 auf Raspberry PI & dockerJürgen Gutsch
 
ASP.NET 5 on the Raspberry PI 2
ASP.NET 5 on the Raspberry PI 2ASP.NET 5 on the Raspberry PI 2
ASP.NET 5 on the Raspberry PI 2Jürgen Gutsch
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Developmentroelofr
 
WordCamp US: Clean Code
WordCamp US: Clean CodeWordCamp US: Clean Code
WordCamp US: Clean Codemtoppa
 
Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday SloveniaContinuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday SloveniaDr. John Tunnicliffe
 
Continuous integration eine Einführung für Unkundige
Continuous integration   eine Einführung für UnkundigeContinuous integration   eine Einführung für Unkundige
Continuous integration eine Einführung für Unkundigeabuwipp
 
Clean code erfolgreich einführen
Clean code erfolgreich einführenClean code erfolgreich einführen
Clean code erfolgreich einführenDaniel Rietmüller
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code SmellsMario Sangiorgio
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean ArchitectureBadoo
 
Lean Startup und agile Methodiken – Hype oder Fortschritt ?
Lean Startup und agile Methodiken – Hype oder Fortschritt ?Lean Startup und agile Methodiken – Hype oder Fortschritt ?
Lean Startup und agile Methodiken – Hype oder Fortschritt ?Heico Koch
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean ArchitectureRoc Boronat
 
Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...
Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...
Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...marcus evans Network
 

Destacado (20)

Clean code
Clean codeClean code
Clean code
 
Clean Code
Clean CodeClean Code
Clean Code
 
Clean Code I - Best Practices
Clean Code I - Best PracticesClean Code I - Best Practices
Clean Code I - Best Practices
 
Clean Code Workshop - Agile Bodensee Konferenz 2013
Clean Code Workshop - Agile Bodensee Konferenz 2013Clean Code Workshop - Agile Bodensee Konferenz 2013
Clean Code Workshop - Agile Bodensee Konferenz 2013
 
Clean coding-practices
Clean coding-practicesClean coding-practices
Clean coding-practices
 
Tech Talk: Wozu Clean Code?
Tech Talk: Wozu Clean Code?Tech Talk: Wozu Clean Code?
Tech Talk: Wozu Clean Code?
 
Clean Code Developer
Clean Code DeveloperClean Code Developer
Clean Code Developer
 
ASP.NET 5 auf Raspberry PI & docker
ASP.NET 5 auf Raspberry PI & dockerASP.NET 5 auf Raspberry PI & docker
ASP.NET 5 auf Raspberry PI & docker
 
Html 5 magic
Html 5 magicHtml 5 magic
Html 5 magic
 
ASP.NET 5 on the Raspberry PI 2
ASP.NET 5 on the Raspberry PI 2ASP.NET 5 on the Raspberry PI 2
ASP.NET 5 on the Raspberry PI 2
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
WordCamp US: Clean Code
WordCamp US: Clean CodeWordCamp US: Clean Code
WordCamp US: Clean Code
 
Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday SloveniaContinuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
Continuous Integration and the Data Warehouse - PASS SQL Saturday Slovenia
 
Continuous integration eine Einführung für Unkundige
Continuous integration   eine Einführung für UnkundigeContinuous integration   eine Einführung für Unkundige
Continuous integration eine Einführung für Unkundige
 
Clean code erfolgreich einführen
Clean code erfolgreich einführenClean code erfolgreich einführen
Clean code erfolgreich einführen
 
Clean code and Code Smells
Clean code and Code SmellsClean code and Code Smells
Clean code and Code Smells
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Lean Startup und agile Methodiken – Hype oder Fortschritt ?
Lean Startup und agile Methodiken – Hype oder Fortschritt ?Lean Startup und agile Methodiken – Hype oder Fortschritt ?
Lean Startup und agile Methodiken – Hype oder Fortschritt ?
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean Architecture
 
Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...
Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...
Die agile Organisation: Inhalt, Wege und Hürden aus Sicht eines CEO – der Fal...
 

Ähnlich wie iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag

Einführung in Clean Code mit .NET - Teil 1
Einführung in Clean Code mit .NET - Teil 1Einführung in Clean Code mit .NET - Teil 1
Einführung in Clean Code mit .NET - Teil 1Gregor Biswanger
 
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.Stephan Schmidt
 
Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...
Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...
Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...Socialbar
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerPatrick Baumgartner
 
Continuous Integration für PHP
Continuous Integration für PHPContinuous Integration für PHP
Continuous Integration für PHPSebastian Bauer
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerDennis Wilson
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungChristian Baranowski
 
Continuous Integration / Deployment mit Jenkins CI
Continuous Integration / Deployment mit Jenkins CI Continuous Integration / Deployment mit Jenkins CI
Continuous Integration / Deployment mit Jenkins CI Florian Bosselmann
 
Day CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuDay CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuCédric Hüsler
 
Testgetriebene Entwicklung
Testgetriebene EntwicklungTestgetriebene Entwicklung
Testgetriebene EntwicklungGjero Krsteski
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenOdilo Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenPatrick Baumgartner
 

Ähnlich wie iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag (20)

Mehr Softwarequalität: TeamCleanCoding
Mehr Softwarequalität: TeamCleanCodingMehr Softwarequalität: TeamCleanCoding
Mehr Softwarequalität: TeamCleanCoding
 
Mehr Softwarequalität: Team Clean Coding
Mehr Softwarequalität: Team Clean CodingMehr Softwarequalität: Team Clean Coding
Mehr Softwarequalität: Team Clean Coding
 
Design OOA OOD
Design OOA OODDesign OOA OOD
Design OOA OOD
 
Einführung in Clean Code mit .NET - Teil 1
Einführung in Clean Code mit .NET - Teil 1Einführung in Clean Code mit .NET - Teil 1
Einführung in Clean Code mit .NET - Teil 1
 
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
 
Mehr Softwarequalität: Team-Cleancoding
Mehr Softwarequalität: Team-CleancodingMehr Softwarequalität: Team-Cleancoding
Mehr Softwarequalität: Team-Cleancoding
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
 
Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...
Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...
Markus Schranner: "Das Lean Startup Prinzip - Potentiale für NGOs und soziale...
 
Advanced Continuous Integration
Advanced Continuous IntegrationAdvanced Continuous Integration
Advanced Continuous Integration
 
BED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als EntwicklerBED-Con - Tools für den täglichen Kampf als Entwickler
BED-Con - Tools für den täglichen Kampf als Entwickler
 
Das Pfadfinderprinzip in DevOps
Das Pfadfinderprinzip in DevOpsDas Pfadfinderprinzip in DevOps
Das Pfadfinderprinzip in DevOps
 
Continuous Integration für PHP
Continuous Integration für PHPContinuous Integration für PHP
Continuous Integration für PHP
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
Einführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software EntwicklungEinführung Vorgehensmodelle und Agile Software Entwicklung
Einführung Vorgehensmodelle und Agile Software Entwicklung
 
Continuous Integration / Deployment mit Jenkins CI
Continuous Integration / Deployment mit Jenkins CI Continuous Integration / Deployment mit Jenkins CI
Continuous Integration / Deployment mit Jenkins CI
 
Day CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neuDay CQ 5.3 WCM - Was ist neu
Day CQ 5.3 WCM - Was ist neu
 
Testgetriebene Entwicklung
Testgetriebene EntwicklungTestgetriebene Entwicklung
Testgetriebene Entwicklung
 
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 der Tools & Methoden - Baumgartner, Oehmichen
 
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, OehmichenJFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
JFS 2011 - Top 10 Tools & Methoden - Baumgartner, Oehmichen
 
2011 07-07 activiti
2011 07-07 activiti2011 07-07 activiti
2011 07-07 activiti
 

Mehr von IKS Gesellschaft für Informations- und Kommunikationssysteme mbH

Mehr von IKS Gesellschaft für Informations- und Kommunikationssysteme mbH (20)

Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
Thementag 2023 06 Dieses Mal machen wir alles richtig - 9 Hacks für wandelbar...
 
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdf
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdfThementag 2023 04 Lindern, heilen oder gar fit machen.pdf
Thementag 2023 04 Lindern, heilen oder gar fit machen.pdf
 
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
Thementag 2023 05 Wer zu spät kommt, den bestraft das Leben - Modernisierung ...
 
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdfThementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
Thementag 2023 01 Mut zur Modernisierung - ein Praxisbeispiel.pdf
 
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdf
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdfThementag 2023 03 Einführung in die Softwaremodernisierung.pdf
Thementag 2023 03 Einführung in die Softwaremodernisierung.pdf
 
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdfThementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
Thementag 2022 01 Verpassen Sie nicht den Anschluss.pdf
 
Thementag 2022 04 ML auf die Schiene gebracht.pdf
Thementag 2022 04 ML auf die Schiene gebracht.pdfThementag 2022 04 ML auf die Schiene gebracht.pdf
Thementag 2022 04 ML auf die Schiene gebracht.pdf
 
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdfThementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
Thementag 2022 03 Ein Modell ist trainiert - und jetzt.pdf
 
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdfThementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
Thementag 2022 02 Der Deutschen Bahn in die Karten geschaut.pdf
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine LearningDaten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
 
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
Erste Schritte in die neue Welt-So gelingt der Einstieg in Big Data und Machi...
 
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
 
Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?
 
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
Erste Schritte in die neue Welt - So gelingt der Einstieg in Big Data und Mac...
 
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
Darf es ein bisschen mehr sein - Konzepte Strategien zur Bewältigung großer u...
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine LearningDaten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
 
Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?Big Data und Machine Learning - Wer braucht das schon!?
Big Data und Machine Learning - Wer braucht das schon!?
 
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine LearningDaten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
Daten / Information / Wissen - Möglichkeiten und Grenzen des Machine Learning
 
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
Darf es ein bisschen mehr sein - Konzepte und Strategien zur Bewältigung groß...
 
Big Data und Machine Learning - Wer braucht das schon!
Big Data und Machine Learning - Wer braucht das schon!Big Data und Machine Learning - Wer braucht das schon!
Big Data und Machine Learning - Wer braucht das schon!
 

iks auf der gearconf 2012: Clean Code - Von der Lehre in den Alltag

  • 1. Von der Lehre in den Alltag von Jörg Vollmer und Reik Oberrath 26.06.2012
  • 5. Wofür steht ? & Software- Effektive qualität Softwareentwicklung
  • 6. Agenda Einleitung Ursachen von Dirty Code Die Clean Code Developer Bewegung Das Team Clean Coding Meinungen zu Clean Code und zum Team Clean Coding
  • 8. Häufige Unsitten Kommunikations- Konformitäts- Schlechte probleme brüche Infrastruktur Magie im Workarounds Code Code- anstatt Verdopplungen Behebung Unglückliche Fehlende Namensgebung Tests Unzureichendes Frühzeitiges Logging Toter Fertigmelden Code Keine Kommentare Verweiste Schlechte TODOs Fehlerbehandlung (Zu) komplizierte Implementierung Fehlende Konsistenzprüfungen Unvollständige Spaghetti- Refactorings Code
  • 10. Unvollständige Umsetzung Projektleiter: „Wie sieht‘s aus? Kann man denn schon etwas zeigen?“ Entwickler: „Ja, aber erst mal nur ein Schnellschuss, das kann nicht so bleiben…“ Kunde & Projektleiter: „…sieht doch gut aus! Mehr brauchen wir doch gar nicht!“ Welcher Entwickler hat da den Mut, sich durchzusetzen?
  • 11. Unvollständige Umsetzung Projektleiter A: „Stell‘ mir mal deinen aktuellen Stand zur Verfügung, Projektleiter B braucht den, damit sein Team weiter- arbeiten kann!“ Stimmt nicht (mehr), denn es gibt Mocks! Interface Segregation Principle (ISP) Dependency Inversion Principle (DIP) Inversion of Control Container (ICC) Test First (TF)
  • 12. Unvollständige Umsetzung „Lass gut sein, das ziehen wir später gerade. Hauptsache, es läuft!“ Die Erfahrung zeigt: Nachträgliches Refactoring funktioniert nur sehr selten, weil …es zu mühsam ist (erneutes Hineindenken) …das Risiko ist groß ist, Fehler einzubauen …größere Maßnahmen zeitlich kaum abschätzbar sind …es (deswegen) Widerstand bei der Projektleitung gibt
  • 13. Unvollständige Umsetzung Entwickler: „Fertig, es läuft!“ Projektleiter: „Prima, dann können wir endlich liefern!“
  • 14. Ein Fall läuft Die guten Fälle laufen Definition of Done Fehlerfälle wurden untersucht „Alle“ Fehlerfälle wurden berücksichtigt Unit-Tests Integrationstests Systemtests Metriken (statistische Code-Analysen) Verständlichkeit (menschliche Code-Analyse)
  • 16. Mangelnde Motivation: Broken Window Entwickler: „Ich hab damit nichts zu tun, das ist nicht von mir!“ „Darauf kommt es jetzt auch nicht mehr an!“ „Warum soll ich anfangen, hier sauber zu implementieren?“
  • 17. Mangelnde Motivation: Die x-te Änderung Entwickler: „Das war so gar nicht spezifiziert!“ „Wie oft muss ich da noch ran?“
  • 19. Unlogische Realisierung: Die Gasfabrik Entwickler: „Das muss auch noch rein, denn so wird das richtig gut!“
  • 20. Unlogische Realisierung: Konformitätsbrüche „Ich mach das aber anders als die anderen!“ „Was interessiert mich, was die anderen gemacht haben?“
  • 21. Grund 4: Schlechte Rahmenbedingungen
  • 22. Schlechte Rahmenbedingungen: Menschliche Defizite Fortbildungsdefizite  Mangelndes Interesse Kommunikationsprobleme  Sender-Empfänger-Probleme  Schlechtes Team-Klima Motivationsprobleme  Kein Bewertungssystem für Lob und Tadel
  • 23. Schlechte Rahmenbedingungen: Organisatorische Defizite Unzureichende Weiterbildungsmöglichkeiten Unklare Rollen, Unklare Prozesse, Unklare Richtlinien …
  • 25. Termine Dilemma: - Termine wird es immer geben, - Anzahl von Issues/Tickets direkt messbar, Qualität aber nicht. - Entwickler sind gehemmt, die Wahrheit zu sagen.
  • 26. Ursachen für Dirty Code Unvollständige Umsetzung Mangelnde Motivation Unlogische Realisierung Schlechte Rahmenbedingungen Termine Moment mal !!! Sind wir etwa faul, feige und unfähig??? Nein! Aber wir können besser werden!
  • 27. Agenda Einleitung Ursachen von Dirty Code Die Clean Code Developer Bewegung Das Team Clean Coding Meinungen zu Clean-Code
  • 28. Was heißt clean? Def. 1: Clean ist alles, was intuitiv verständlich ist, also (Quellcode-) Dokumente, Datenstrukturen, Konzepte, Regeln, Verfahren.... Def. 2: Intuitiv verständlich ist, was mit wenig Spezialwissen in kurzer Zeit richtig verstanden wird. Def. 3: Clean ist alles, was effizient ist, also Verfahren, die die Softwareentwicklung beschleunigen.
  • 30. Kernaussagen der Clean-Code-Developer-Bewegung Disziplin Ständige Selbstkontrolle („Bewusstsein“) durch („Professionalität“) konsequente Anwendung des inneren Wertesystems („Prinzipien“) Wertesystem Das Buch „Clean Code“ ist wert, als allgemeingültiges Wertesystem anerkannt zu werden. Programmieralltag Das CCD-Grade-System hilft, das innere Wertesystem aktiv einzusetzen und die mentale CCD-Einstellung zu verinnerlichen. www.clean-code-developer.de
  • 31. Die Clean Code Grade: Schwarz Schwarz Rot Orange Gelb Grün Blau Weiss  Don´t Repeat  Single Level of  Interface  Open Closed  Entwurf und Yourself (DRY), Abstraction Segregation Principle Implementation  Keep it simple, (SLA) Principle  Tell, don´t ask überlappen nicht stupid (KISS)  Single  Dependency  Law of Demeter  Implementa- Responsibility Inversion Principle tion spiegelt Prinzipien  Vorsicht vor Optimierungen Principle (SRP)  Liskov Entwurf  Separation of Substitution  You Ain´t (VvO) Principle  Favour Concerns (SoC) Gonna Need It  Principle of (YAGNI) Composition over  Source Code Least Inheritance (FCoI) Konventionen Astonishment  Information Hiding Principle  Die Pfadfinderregel  Issue Tracking  Automatisierte  Continuous  Continuous beachten  Automatisierte Unit Tests Integration I Integration II  Root Cause Integrationstests  Mockups  Statische  Iterative Praktiken Analysis  Lesen, Lesen, (Testattrappen) Codeanalyse Entwicklung  Ein Versionskon- Lesen (LLL)  Code Coverage (Metriken)  Komponenten- trollsystem einsetzen  Reviews Analyse  Inversion of orientierung  Einfache Refakto-  Teilnahme an Control Container  Test first risierungsmuster an- Fachveranstal-  Erfahrung wenden (ER) tungen weitergeben  Täglich reflektieren  Komplexe Re-  Messen von faktorisierungen Fehlern
  • 32. Was heißt Clean Code noch? Def. 4: Clean Code ist ein Buch mit einem umfassenden Regelwerk, das als Sprachen über- greifendes Wertesystem (Best Practices) gelten kann. Def. 5: Clean Code ist die mentale Einstellung, das gemeinsame Wertesystem im Programmier- alltag bewusst anzuwenden (der „Geist“ der Clean-Code-Developer-Bewegung).
  • 33. Was bewirkt Clean Code? Code Entwicklung Leicht verständlich flexibel Einfach änderbar wartbar Gut testbar effektiv
  • 34. Agenda Einleitung Ursachen von Dirty Code Die Clean Code Developer Bewegung Das Team Clean Coding Meinungen zu Clean Code und zum Team Clean Coding
  • 36. Das Team Clean Coding Warum?  Gute Vorsätze schwinden schnell  Verrottung  Unterschiedliche Meinungen  Wildwuchs  Mittel gegen die „Durchsetzungsstarken“ (die Stillen sind oft besser)  Motivation durch Anerkennung, Kontrolle auf Augenhöhe
  • 37. Das Team Clean Coding Basis-Konsens §1 ALLE Teammitglieder (inkl. Projektleitung) verpflichten sich, Prozesse anzuerkennen, die für ALLE gleichermaßen bindend sind. §2 Diese Prozesse können bei Bedarf jederzeit angepasst werden. §3 Als erstes muss ein effizientes Verfahren zur Entscheidungsfindung etabliert werden.
  • 38. Das Team Clean Coding Methoden zur Entscheidungsfindung Vorgabe des Projektleiters Mehrheitsbeschluss Minimierung des durchschn. Widerstands – Vetoabfrage – Konsensrunde – Thumb-Voting „Konsens bedeutet die Übereinstimmung von Menschen hinsichtlich einer Thematik ohne verdeckten oder offenen Widerspruch.“ - Wikipedia
  • 39. Das Team Clean Coding (Legislative) Was muß entschieden werden? Was bedeutet für uns die Definition of Done? Wie gehen wir mit unfertigem Code um? Code Tagging: Umgang mit „fremdem Eigentum“? Wie ist unser Was ist für uns clean? REFACTORE_MEs: FIXMEs, TODOs und FIXME jvo von rob 20.02.2011: Fall kunde == null fehlt DONE  FIXMEs raus, TODOs raus oder in den Issue-Tracker
  • 40. Das Team Clean Coding Wege zur Einigung im Team Daily Standups (Scrum-ähnlich) Regelmäßige Team-Reviews Retrospektiven Coding-Notes kommunizieren (z.B. E-Mail an Team-Verteiler) Pair-Programming von Erfahrenen und Unerfahrenen 4 -Reviews
  • 41. Das Team Clean Coding 4 -Review Am Ende der Entwicklung eines Software-Teils sucht der Autor nach einem Teammitglied, das als Reviewer dient. Dieser prüft: Funktionelle Korrektheit Ausreichende Testabdeckung FIXME- / TODO-Einträge Einhaltung der im Team abgestimmten Clean-Code-Maßnahmen Erst nach dem OK des Reviewers gilt der Teil als DONE!
  • 42. Das Team Clean Coding(Judikative) Die 1€-Regel Ein Euro wird eingezogen bei Vergehen gegen zuvor abgestimmte Regeln. Beispiele:  Build brechen und nach Hause gehen,  Tests brechen und sich nicht um deren Behebung bemühen,  Backend-Änderungen ohne Client-Anpassung,  Domain-Änderungen ohne DB-Skript-Anpassung,  etc.
  • 43. Was hilft wann? Dirty Code Ursachen Clean Code Dev. Team Clean Coding Unklare DOD DOD definieren Hauptsache, es läuft! Test first DOD anwenden, 4iReviews Gasfabrik KISS, YAGNI, VvO Team-Reviews, 4iReviews X-te Änderung Code Tagging Broken Windows Pfadfinderregel Code Tagging Konformitätsbrüche Reviews, ER, SCC 4iReviews Fortbildung LLL, TAF Team-Reviews, Pairprogramming Kommunikation Erfahrung weitergeben Wege zur Einigung im Team Organisation Rollen & Prozesse definieren Motivation Bewusstsein Anerkennung, 1€-Regel Termine Mentale Einstellung DOD anwenden
  • 44. Agenda Einleitung Ursachen von Dirty Code Die Clean Code Developer Bewegung Das Team Clean Coding Meinungen zu Clean Code und zum Team Clean Coding
  • 45. Clean-Code ist ist gut, man kann es – eher etwas für Ästheten! Clean-Code gut, aber praxisfern aber leicht übertreiben!
  • 46. Ein Organismus verträgt nur ein begrenztes Maß an Schadstoffen.
  • 47. Wichtig sind Funktionsfähigkeit, Stabilität, Wartbarkeit und Erweiterbarkeit. Clean-Code ist was für Spießer – wichtig ist nur, dass es läuft! Dazu braucht man kein Clean Code!
  • 48. Sauberer Code - Hohe Testabdeckung Produktionscode Testabdeckung Testcode Schmutz im Code stellt eine reale Gefahr dar!
  • 49. Clean Code kostet zusätzliche Zeit Clean Code spart Zeit in der Entwicklung! in der Wartung!
  • 50. Wie wirkt sich die Anwendung der Best practices aus? 1 0 011 01 00 1 1 100 1001101 0011100 0110011 1010110 01 1 01 10 1 10 0 001 0110110 1100001 11 11 0 00 1010010 1111000 10 10 01 0 01 00 011 0 1 111 01 0100011 0111101 1000011 1001010 01 010 10 1 00 11 01 0101010 1001101 ERROR
  • 51. Wofür steht ? & Software- Effektive qualität Softwareentwicklung
  • 52. Nicht-funktionale Qualitätsmerkmale von Software Das Produkt korrekt, skalierbar, performant, (finales Ziel mit stabil, effizient, sicher (Security), Selbstzweck) zuverlässig, gesetzeskonform, gut bedienbar Der Entwicklungs- wirtschaftlich, testbar, erweiterbar, prozess veränderbar, analysierbar, wartbar (Zwischenziel, nur Mittel zum Zweck)
  • 53. Take-Home-Message Möchten wir… …lesbaren & langlebigen Code?  Clean-Code-Prinzipien anwenden …effektiv & effizient arbeiten?  Clean-Code-Praktiken anwenden …effektiv & effizient bleiben?  Clean-Code-Controlling anwenden Selbstkontrolle und Wertesystem konsequent anzuwenden, ist schwer!
  • 56. Weiterführende Literatur Effective Java (2nd Edition), Joshua Bloch, Addison-Wesley, 2008 Der Weg zum Java-Profi, dpunkt-Verlag, 2011 Bug-Patterns in Java, Eric Allen, Apress, 2002 More Java Pitfalls, Wiley, 2003
  • 57. Weiterführende Literatur Clean Code, Robert C. Martin, Prentice Hall, 2008 The Clean Coder, Robert C. Martin, Prentice Hall, 2011 Clean Coder: Verhaltensregeln für professionelle Programmierer, Robert C. Martin, Addison-Wesley, 2011 The Pragmatic Programmer, Addison-Wesley, 1999 Soft Skills für Softwareentwickler, dpunkt-Verlag, 2010 http://www.clean-code-developer.de http://de.wikipedia.org/wiki/Clean_Code http://www.clean-code.info
  • 58. Diskussion Worin siehst Du Probleme in der Anwendung? Welche Art von Unterstützung brauchst Du im Programmier-Alltag? Ist diese Selbstkontrolle so schwer, dass man ein Team Clean Codingbenötigt?
  • 59. Bildernachweise Die in diesem Vortrag verwendeten Bilder stammen von folgenden Quellen: Folie 6: http://www.flickr.com/photos/pringels/3139474250/sizes/l/in/photostream/ Folie 7: http://www.flickr.com/photos/23313526@N07/4948442428/sizes/l/in/photostream/ http://www.flickr.com/photos/29747502@N03/2784238062/sizes/l/in/photostream/ Folie 8: http://www.flickr.com/photos/buridansesel/6163446452/sizes/l/in/photostream/ Folie 9: http://office.microsoft.com/en-us/images http://officeimg.vo.msecnd.net/en-us/images/MB900443111.jpg http://officeimg.vo.msecnd.net/en-us/images/MB900443251.jpg Folie 10: http://office.microsoft.com/en-us/images Folie 11: http://photos.signonsandiego.com/album55/mud02 Folie 13: http://www.sxc.hu/browse.phtml?f=download&id=1099152 Folie 14: http://upload.wikimedia.org/wikipedia/commons/9/91/22_West_-_view_from_window.jpg
  • 60. Bildernachweise Folie 16: http://www.clker.com Folie 18: http://www.sxc.hu/browse.phtml?f=download&id=866819 Folie 26: http://www.sxc.hu/browse.phtml?f=download&id=544619 Folie 27: http://commons.wikimedia.org/wiki/File:Change.jpg Folie 30: http://www.flickr.com/photos/ionics/6338284584 Folie 31: http://www.f1online.de http://www,flickr.com Folie 33: http://www.clker.com Folie 35: http://www.clker.com Folie 36: http://www.clean-code-developer.de Folie 38: http://photos.signonsandiego.com/album55/mud02
  • 61. Bildernachweise Folie 41, 43, 45: http://www.clean-code-developer.de Folie 58: http://www.flickr.com/photos/oskay/437341603/ Folie 60, 61: http://www.clker.com Folie 62: http://openclipart.org/people/DooFi/DooFi_Piggybank.png http://openclipart.org/people/lolonene/1309969161.png Folie 65: http://freepostermaker.com/uploads/saved_posters/free-poster-dnxeoi88fg-WILLIES-WASH.jpg Folie 69: http://office.microsoft.com/de-de/images/results.aspx?qu=frau+computer&ex=1&ctt=1#ai:MP900430491| http://office.microsoft.com/de-de/images/results.aspx?ex=2&qu=frau%20b%C3%BCro%20stress#ai:MP900422409|mt:2| Folie 72: http://www.hborchert.de/medihumor.htm http://hdfreewallpaper.info/fishy-ubuntu-1920-x-1080.html Folie 76: http://www.clker.com Hinweis: Sämtliche hier nicht aufgeführte Bilder (z.B. auf Folie 28) wurden von den Autoren selbst erstellt.
  • 63. Infrastruktur Entwicklung Build-System SCM Deployment Entwickler-PC Ent Abn Ref Prod
  • 64. Continuous Build / Integration 1. Diese Tools ermöglichen einen automatischen Build der eingecheckten Sourcen 2. Getriggert: Zeitgesteuert, per Hand, Einchecken 3. ANT / Maven / Skript-Integration 4. Automatisches Deploy- ment möglich TeamCity – Ab einer Größe kostenpflichtig Hudson, Jenkins – Open Source
  • 65. Qualitätssicherung Sonar – Open Source – Zusätzliches Tool zum Continuous Build – Berechnet zahlreiche Code-Metriken – Erzeugt schöne Grafiken – (Eigene) Plugins möglich
  • 66. t.addCell (new Phrase(formatDateString( sd.date == null || "".equals (sd.date) ? sh.date.substring (0, 4) : sd.date), f)); Date datum = strukturDaten.date; if (datum == null) { datum = strukturHelper.date; } String datumFormatiert = formatDate(datum); Phrase phrase = new Phrase(datumFormatiert, format); table.addCell(phrase);