SlideShare une entreprise Scribd logo
1  sur  16
Prescription for Healthy Code  by Alex Kriegel (PMP, CSM, MCTS,TOGAF8 Certified Practitioner) PH OIS Enterprise Architect October, 2009 Prepared for Software Association of Oregon Event
Code Quality “Software quality measures how well software is designed (quality of design), and how well the software conforms to that design (quality of conformance)”  Wikipedia Code Quality – necessary (but not sufficient) condition for both © Alex Kriegel
“… the broken window effect can take root when [management] begins to tolerate downtime, constant work-arounds and broken processes.”* John D. Halamka CIO at CareGroup Healthcare System, CIO and associate dean for educational technology  at Harvard Medical School (just substitute developers for management, and add some sloppy code to the mix…) Broken Window Syndrome  *  published in ComputerWorld, March 2, 2009 © Alex Kriegel
Creating a Code Quality Culture Educate developers value of standards (and their limitations) importance of development processes (and their limitations) meaningful metrics as valuable feedback for code improvement Promote trust among the team members Use right tools for the job, and automate as much as you can Educate managers about value of code quality metrics © Alex Kriegel
Code Quality First and foremost: it has to work! Start with the Standards and Processes: coding standards (naming conventions, formatting, comments etc) leveraging programming language  use of appropriate patterns full traceability  (requirements to code to bug fixes) unit testing (incl. automated Regression testing) meaningful metrics (Cyclomatic, NPath, Defects/KLOC etc. – where and when appropriate) Continue with Change Control Process © Alex Kriegel
Tools of Trade Version Control Issue Tracking Standards Compliance Coverage Analysis Code Review Process Refactoring Documentation Compiler Logging Framework Continuous Integration/Build Management Automated Testing  Change Control Board © Alex Kriegel
Code Reviews Lead code review Peer code review “Automated” code review © Alex Kriegel
Heterogeneous Development Environment(on shoestring budget) “Why not Visual Studio Team Edition?” need to support both Java and .Net development budget constraints – for a small-to-moderate team size, price for VSTS stack could easily run into tens of thousands of dollars integration with existing enterprise components © Alex Kriegel
Integrated Development Tools Stack (an example) Developer’s Workstation CheckStyle FxCop Hudson MSTest CheckStyle Build Server Environment © Alex Kriegel
Java Tools CheckStyle: compliance (coding standards) PMD: compliance (design, localization, performance, security) EMMA/Cobertura : code coverage JUnit: unit testing framework Logging: log4j JavaDoc/Doxygen: documentation compiler Maven: build management  Continuous integration: Hudson Jira: issue tracking system SVN/Subversion: version control Collaboration: Atlassian Wiki all rights reserved © Alex Kriegel
.Net/C# Tools FxCop: compliance (design, localization, performance, security) NCover: code coverage analysis Doxygen: documentation compiler MSTest/NUnit: unit testing framework Logging: log4net, Enterprise Library MSBuild: build management  Continuous integration: Hudson Jira: issue tracking system SVN/Subversion: version control Collaboration: Atlassian Wiki © Alex Kriegel
Other Free/Open Source Tools © Alex Kriegel
But what does it mean?! (an example of applied metrics) “Make everything as simple as possible but no simpler…”  Albert Einstein For instance, high Cyclomatic complexity indicates possible poor code and/or design flaws Essential complexity domain complexity, cannot be reduced Incidental complexity [a “might be”] technology induced code/design problems © Alex Kriegel
Train Your Tools Well Learn proper use of a tool – then tune up/customize it to produce metrics meaningful for your specific environment No tool is an island – integrate tools into the development process (and SDLC) Each tool has to have a master … orphaned tools wither and die © Alex Kriegel
Bigger Picture… Assembling Applications with Patterns, Models, Frameworks, and Tools  © Alex Kriegel
Questions ? alex@agilitator.com © Alex Kriegel

Contenu connexe

Tendances

A nova jornada DevOps & SRE
 A nova jornada DevOps & SRE A nova jornada DevOps & SRE
A nova jornada DevOps & SRERamon Durães
 
Top 10 Trending Tools To Supercharge Productivity of Software Engineers
Top 10 Trending Tools To Supercharge Productivity of Software EngineersTop 10 Trending Tools To Supercharge Productivity of Software Engineers
Top 10 Trending Tools To Supercharge Productivity of Software EngineersRock Interview
 
Zero to Ninety in Securing DevOps
Zero to Ninety in Securing DevOpsZero to Ninety in Securing DevOps
Zero to Ninety in Securing DevOpsDevSecOps Days
 
Behavior driven development. Testing drupal using behat
Behavior driven development. Testing drupal using behatBehavior driven development. Testing drupal using behat
Behavior driven development. Testing drupal using behatAndrei Jechiu
 
DevSecOps reference architectures 2018
DevSecOps reference architectures 2018DevSecOps reference architectures 2018
DevSecOps reference architectures 2018Sonatype
 
Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Enkitec
 
Systems Modeling Language (SysML) and Model-Based Systems Engineering (MBSE) ...
Systems Modeling Language (SysML) and Model-Based Systems Engineering (MBSE) ...Systems Modeling Language (SysML) and Model-Based Systems Engineering (MBSE) ...
Systems Modeling Language (SysML) and Model-Based Systems Engineering (MBSE) ...Tonex
 
Refactoring for Software Architecture Smells - International Workshop on Refa...
Refactoring for Software Architecture Smells - International Workshop on Refa...Refactoring for Software Architecture Smells - International Workshop on Refa...
Refactoring for Software Architecture Smells - International Workshop on Refa...Ganesh Samarthyam
 
10 things to get right for successful dev secops
10 things to get right for successful dev secops10 things to get right for successful dev secops
10 things to get right for successful dev secopsMohammed Ahmed
 
7 key features of node js
7 key features of node js7 key features of node js
7 key features of node jsIndumathySK
 
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)Hui (Henry) Chen
 
All Around Azure: DevOps with GitHub - Managing the Flow of Work
All Around Azure: DevOps with GitHub - Managing the Flow of WorkAll Around Azure: DevOps with GitHub - Managing the Flow of Work
All Around Azure: DevOps with GitHub - Managing the Flow of WorkDavide Benvegnù
 
LFX Nov 16, 2021 - Find vulnerabilities before security knocks on your door
LFX Nov 16, 2021 - Find vulnerabilities before security knocks on your doorLFX Nov 16, 2021 - Find vulnerabilities before security knocks on your door
LFX Nov 16, 2021 - Find vulnerabilities before security knocks on your doorEric Smalling
 
Test Automation Workshop with BDD Approach
Test Automation Workshop with BDD ApproachTest Automation Workshop with BDD Approach
Test Automation Workshop with BDD Approachkloia
 
DevOps Turkey Test Automation with Docker and Seleniumhub
DevOps Turkey Test Automation with Docker and SeleniumhubDevOps Turkey Test Automation with Docker and Seleniumhub
DevOps Turkey Test Automation with Docker and Seleniumhubkloia
 
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP IndonesiaStrengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP IndonesiaMohammed A. Imran
 
Enable DevSecOps using JIRA Software
Enable DevSecOps using JIRA SoftwareEnable DevSecOps using JIRA Software
Enable DevSecOps using JIRA SoftwareAUGNYC
 
Dev secops security and compliance at the speed of continuous delivery - owasp
Dev secops  security and compliance at the speed of continuous delivery - owaspDev secops  security and compliance at the speed of continuous delivery - owasp
Dev secops security and compliance at the speed of continuous delivery - owaspDag Rowe
 
ABN AMRO DevSecOps Journey
ABN AMRO DevSecOps JourneyABN AMRO DevSecOps Journey
ABN AMRO DevSecOps JourneyDerek E. Weeks
 

Tendances (20)

A nova jornada DevOps & SRE
 A nova jornada DevOps & SRE A nova jornada DevOps & SRE
A nova jornada DevOps & SRE
 
Top 10 Trending Tools To Supercharge Productivity of Software Engineers
Top 10 Trending Tools To Supercharge Productivity of Software EngineersTop 10 Trending Tools To Supercharge Productivity of Software Engineers
Top 10 Trending Tools To Supercharge Productivity of Software Engineers
 
Zero to Ninety in Securing DevOps
Zero to Ninety in Securing DevOpsZero to Ninety in Securing DevOps
Zero to Ninety in Securing DevOps
 
Behavior driven development. Testing drupal using behat
Behavior driven development. Testing drupal using behatBehavior driven development. Testing drupal using behat
Behavior driven development. Testing drupal using behat
 
DevSecOps reference architectures 2018
DevSecOps reference architectures 2018DevSecOps reference architectures 2018
DevSecOps reference architectures 2018
 
Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12
 
Systems Modeling Language (SysML) and Model-Based Systems Engineering (MBSE) ...
Systems Modeling Language (SysML) and Model-Based Systems Engineering (MBSE) ...Systems Modeling Language (SysML) and Model-Based Systems Engineering (MBSE) ...
Systems Modeling Language (SysML) and Model-Based Systems Engineering (MBSE) ...
 
Refactoring for Software Architecture Smells - International Workshop on Refa...
Refactoring for Software Architecture Smells - International Workshop on Refa...Refactoring for Software Architecture Smells - International Workshop on Refa...
Refactoring for Software Architecture Smells - International Workshop on Refa...
 
10 things to get right for successful dev secops
10 things to get right for successful dev secops10 things to get right for successful dev secops
10 things to get right for successful dev secops
 
7 key features of node js
7 key features of node js7 key features of node js
7 key features of node js
 
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
 
All Around Azure: DevOps with GitHub - Managing the Flow of Work
All Around Azure: DevOps with GitHub - Managing the Flow of WorkAll Around Azure: DevOps with GitHub - Managing the Flow of Work
All Around Azure: DevOps with GitHub - Managing the Flow of Work
 
LFX Nov 16, 2021 - Find vulnerabilities before security knocks on your door
LFX Nov 16, 2021 - Find vulnerabilities before security knocks on your doorLFX Nov 16, 2021 - Find vulnerabilities before security knocks on your door
LFX Nov 16, 2021 - Find vulnerabilities before security knocks on your door
 
Test Automation Workshop with BDD Approach
Test Automation Workshop with BDD ApproachTest Automation Workshop with BDD Approach
Test Automation Workshop with BDD Approach
 
DevOps Turkey Test Automation with Docker and Seleniumhub
DevOps Turkey Test Automation with Docker and SeleniumhubDevOps Turkey Test Automation with Docker and Seleniumhub
DevOps Turkey Test Automation with Docker and Seleniumhub
 
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP IndonesiaStrengthen and Scale Security Using DevSecOps - OWASP Indonesia
Strengthen and Scale Security Using DevSecOps - OWASP Indonesia
 
Enable DevSecOps using JIRA Software
Enable DevSecOps using JIRA SoftwareEnable DevSecOps using JIRA Software
Enable DevSecOps using JIRA Software
 
DevSecOps 101
DevSecOps 101DevSecOps 101
DevSecOps 101
 
Dev secops security and compliance at the speed of continuous delivery - owasp
Dev secops  security and compliance at the speed of continuous delivery - owaspDev secops  security and compliance at the speed of continuous delivery - owasp
Dev secops security and compliance at the speed of continuous delivery - owasp
 
ABN AMRO DevSecOps Journey
ABN AMRO DevSecOps JourneyABN AMRO DevSecOps Journey
ABN AMRO DevSecOps Journey
 

Similaire à Prescription4healthy.code

Fast, Secure Deployments with Docker on AWS
Fast, Secure Deployments with Docker on AWSFast, Secure Deployments with Docker on AWS
Fast, Secure Deployments with Docker on AWSAmazon Web Services
 
Improving Development Productivity: Static Analysis and Continuous Integration
Improving Development Productivity: Static Analysis and Continuous IntegrationImproving Development Productivity: Static Analysis and Continuous Integration
Improving Development Productivity: Static Analysis and Continuous IntegrationKlocwork
 
A Lap Around Visual Studio 2010
A Lap Around Visual Studio 2010A Lap Around Visual Studio 2010
A Lap Around Visual Studio 2010adrian8three
 
Component Based Model Driven Development of Mission Critical Defense Applicat...
Component Based Model Driven Development of Mission Critical Defense Applicat...Component Based Model Driven Development of Mission Critical Defense Applicat...
Component Based Model Driven Development of Mission Critical Defense Applicat...Remedy IT
 
Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionHenry Muccini
 
John Haggins Res2015
John Haggins Res2015John Haggins Res2015
John Haggins Res2015John Haggins
 
Introduction to vb.net
Introduction to vb.netIntroduction to vb.net
Introduction to vb.netsuraj pandey
 
Continuous Integration and development environment approach
Continuous Integration and development environment approachContinuous Integration and development environment approach
Continuous Integration and development environment approachAleksandr Tsertkov
 
Coolgen Shkehar
Coolgen ShkeharCoolgen Shkehar
Coolgen Shkeharshekhar619
 
Using Modern Tools and Technologies to Improve Your Software Architecture
Using Modern Tools and Technologies to Improve Your Software ArchitectureUsing Modern Tools and Technologies to Improve Your Software Architecture
Using Modern Tools and Technologies to Improve Your Software ArchitectureEran Stiller
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicDavid Solivan
 
Agile Software Development Overview
Agile Software Development OverviewAgile Software Development Overview
Agile Software Development Overviewsunilkumar_
 
Best software development tools in 2021
Best software development tools in 2021Best software development tools in 2021
Best software development tools in 2021Samaritan InfoTech
 
Let's banish "it works on my machine"
Let's banish "it works on my machine"Let's banish "it works on my machine"
Let's banish "it works on my machine"Stephanie Locke
 

Similaire à Prescription4healthy.code (20)

Fast, Secure Deployments with Docker on AWS
Fast, Secure Deployments with Docker on AWSFast, Secure Deployments with Docker on AWS
Fast, Secure Deployments with Docker on AWS
 
Improving Development Productivity: Static Analysis and Continuous Integration
Improving Development Productivity: Static Analysis and Continuous IntegrationImproving Development Productivity: Static Analysis and Continuous Integration
Improving Development Productivity: Static Analysis and Continuous Integration
 
A Lap Around Visual Studio 2010
A Lap Around Visual Studio 2010A Lap Around Visual Studio 2010
A Lap Around Visual Studio 2010
 
Component Based Model Driven Development of Mission Critical Defense Applicat...
Component Based Model Driven Development of Mission Critical Defense Applicat...Component Based Model Driven Development of Mission Critical Defense Applicat...
Component Based Model Driven Development of Mission Critical Defense Applicat...
 
Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstraction
 
John Haggins Res2015
John Haggins Res2015John Haggins Res2015
John Haggins Res2015
 
Resume
ResumeResume
Resume
 
Introduction to vb.net
Introduction to vb.netIntroduction to vb.net
Introduction to vb.net
 
Continuous Integration and development environment approach
Continuous Integration and development environment approachContinuous Integration and development environment approach
Continuous Integration and development environment approach
 
Ibm innovate ci for system z
Ibm innovate ci for system zIbm innovate ci for system z
Ibm innovate ci for system z
 
Profile_Ahmad2
Profile_Ahmad2Profile_Ahmad2
Profile_Ahmad2
 
Coolgen Shkehar
Coolgen ShkeharCoolgen Shkehar
Coolgen Shkehar
 
Using Modern Tools and Technologies to Improve Your Software Architecture
Using Modern Tools and Technologies to Improve Your Software ArchitectureUsing Modern Tools and Technologies to Improve Your Software Architecture
Using Modern Tools and Technologies to Improve Your Software Architecture
 
Ravindra Prasad
Ravindra PrasadRavindra Prasad
Ravindra Prasad
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs Public
 
Ensuring code quality
Ensuring code qualityEnsuring code quality
Ensuring code quality
 
Agile Software Development Overview
Agile Software Development OverviewAgile Software Development Overview
Agile Software Development Overview
 
Best software development tools in 2021
Best software development tools in 2021Best software development tools in 2021
Best software development tools in 2021
 
Coverity Data Sheet
Coverity Data SheetCoverity Data Sheet
Coverity Data Sheet
 
Let's banish "it works on my machine"
Let's banish "it works on my machine"Let's banish "it works on my machine"
Let's banish "it works on my machine"
 

Dernier

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Victor Rentea
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 

Dernier (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 

Prescription4healthy.code

  • 1. Prescription for Healthy Code by Alex Kriegel (PMP, CSM, MCTS,TOGAF8 Certified Practitioner) PH OIS Enterprise Architect October, 2009 Prepared for Software Association of Oregon Event
  • 2. Code Quality “Software quality measures how well software is designed (quality of design), and how well the software conforms to that design (quality of conformance)” Wikipedia Code Quality – necessary (but not sufficient) condition for both © Alex Kriegel
  • 3. “… the broken window effect can take root when [management] begins to tolerate downtime, constant work-arounds and broken processes.”* John D. Halamka CIO at CareGroup Healthcare System, CIO and associate dean for educational technology at Harvard Medical School (just substitute developers for management, and add some sloppy code to the mix…) Broken Window Syndrome * published in ComputerWorld, March 2, 2009 © Alex Kriegel
  • 4. Creating a Code Quality Culture Educate developers value of standards (and their limitations) importance of development processes (and their limitations) meaningful metrics as valuable feedback for code improvement Promote trust among the team members Use right tools for the job, and automate as much as you can Educate managers about value of code quality metrics © Alex Kriegel
  • 5. Code Quality First and foremost: it has to work! Start with the Standards and Processes: coding standards (naming conventions, formatting, comments etc) leveraging programming language use of appropriate patterns full traceability (requirements to code to bug fixes) unit testing (incl. automated Regression testing) meaningful metrics (Cyclomatic, NPath, Defects/KLOC etc. – where and when appropriate) Continue with Change Control Process © Alex Kriegel
  • 6. Tools of Trade Version Control Issue Tracking Standards Compliance Coverage Analysis Code Review Process Refactoring Documentation Compiler Logging Framework Continuous Integration/Build Management Automated Testing Change Control Board © Alex Kriegel
  • 7. Code Reviews Lead code review Peer code review “Automated” code review © Alex Kriegel
  • 8. Heterogeneous Development Environment(on shoestring budget) “Why not Visual Studio Team Edition?” need to support both Java and .Net development budget constraints – for a small-to-moderate team size, price for VSTS stack could easily run into tens of thousands of dollars integration with existing enterprise components © Alex Kriegel
  • 9. Integrated Development Tools Stack (an example) Developer’s Workstation CheckStyle FxCop Hudson MSTest CheckStyle Build Server Environment © Alex Kriegel
  • 10. Java Tools CheckStyle: compliance (coding standards) PMD: compliance (design, localization, performance, security) EMMA/Cobertura : code coverage JUnit: unit testing framework Logging: log4j JavaDoc/Doxygen: documentation compiler Maven: build management Continuous integration: Hudson Jira: issue tracking system SVN/Subversion: version control Collaboration: Atlassian Wiki all rights reserved © Alex Kriegel
  • 11. .Net/C# Tools FxCop: compliance (design, localization, performance, security) NCover: code coverage analysis Doxygen: documentation compiler MSTest/NUnit: unit testing framework Logging: log4net, Enterprise Library MSBuild: build management Continuous integration: Hudson Jira: issue tracking system SVN/Subversion: version control Collaboration: Atlassian Wiki © Alex Kriegel
  • 12. Other Free/Open Source Tools © Alex Kriegel
  • 13. But what does it mean?! (an example of applied metrics) “Make everything as simple as possible but no simpler…” Albert Einstein For instance, high Cyclomatic complexity indicates possible poor code and/or design flaws Essential complexity domain complexity, cannot be reduced Incidental complexity [a “might be”] technology induced code/design problems © Alex Kriegel
  • 14. Train Your Tools Well Learn proper use of a tool – then tune up/customize it to produce metrics meaningful for your specific environment No tool is an island – integrate tools into the development process (and SDLC) Each tool has to have a master … orphaned tools wither and die © Alex Kriegel
  • 15. Bigger Picture… Assembling Applications with Patterns, Models, Frameworks, and Tools © Alex Kriegel