SlideShare a Scribd company logo
1 of 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

More Related Content

What's hot

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
 

What's hot (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
 

Similar to 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
 

Similar to 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"
 

Recently uploaded

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 

Recently uploaded (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 

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