SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

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
Andrei Jechiu
 
Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12
Enkitec
 
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
 

Was ist angesagt? (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
 

Ähnlich wie Prescription4healthy.code

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
Klocwork
 
John Haggins Res2015
John Haggins Res2015John Haggins Res2015
John Haggins Res2015
John Haggins
 
Continuous Integration and development environment approach
Continuous Integration and development environment approachContinuous Integration and development environment approach
Continuous Integration and development environment approach
Aleksandr Tsertkov
 

Ähnlich wie 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"
 

Kürzlich hochgeladen

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 

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