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

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
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 DevelopmentsTrustArc
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
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.pdfEnterprise Knowledge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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 Nanonetsnaman860154
 
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 SolutionsEnterprise Knowledge
 
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.pptxHampshireHUG
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
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 RobisonAnna Loughnan Colquhoun
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 

Recently uploaded (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
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
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
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
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 

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