SlideShare a Scribd company logo
2
CODE QUALITY IMPROVEMENTS
ZOLTAN ISZLAI, CLIENT ENGAGEMENT PLATFORM,
NOVEMBER 2019
3
3
3
 Introduction
 Challenges
 Approach
 The why
 QA tools used
 Maintaining quality
 SonarQube results
 Lessons learned
 Further reading
AGENDA
4
4
4
INTRODUCTION
DESCRIPTION
The Client Engagement Platform will be used for automatic
calculations of credit information used for further analysis for wholesale
banking specialists.
 Improve the projects quality
 Fix current critical issues
 Add new features for the MVP and later for PROD release
 Get to Production from an unstable Pilot III phase
CHALLENGES
5
CHALLENGES
ENGINE
The evaluation for deals is done
using a risk and commercial
engine based on over 50 inputs
CONTINOUS INTEGRATION
Integrate with Azure DevOps
Automate testing
Make tests visible for business
FEATURES
Deal Flow
Authentication and authorization
Notification and audit system
COMPLY WITH POLICIES
Audit policy
Security audit
Credit and Risk policy
6
APPROACH
INCREASING ENGINE STABILITY
Moving away from manual testing (1000+ tests) to automated testing, using:
 Creating functional tests within a test automation framework, which simulates the UI (using Selenium and Cucumber)
 Create unit tests to increase engine coverage above 80%
INCREATE QUALITY
Using QA automation tools and continuous integration to:
 Automate bug detection and measuring the impact of changes
 Automate code quality checking (with Azure DevOps)
7
THE WHY #1
THE COST OF BUGS
With early detection PROD issues
can be prevented.
 Automated local code verification
can be run
 Automated functional UI tests
can be run
 Reputation loss can be avoided
8
THE WHY #2
LENGTH OF THE
FEEDBACK CYCLE
Adding continuous integration into
our SDLC, we can prevent the cost
increase of finding bugs.
 Using TDD we also prevent
issues
 Design defects can be prevented
early
 With active stakeholder
participation early requirements
defects can be avoided
9
QA TOOLS
CheckStyle
Enforces a coding
standard
Code is readability
Checks for JavaDoc
issues
PMD
Static code analyzer
Find common
programming flaws
Includes a CPD to
find duplicate code
SpotBugs
Find bugs in Java
programs
Successor of
FindBugs
SonarQube
Continuous code
inspection
Application Security
Technical Dept
10
10
10
CHECKSTYLE
CHALLENGES
The code style didn’t confirm to any standard
JavaDoc comment’s where correct
Cons: Configuring the rules took 1+ hours
 On validating the code on each build Checkstyle is run
 We used IntelliJ IDEA’s default code style (autocorrection worked)
 JavaDoc comments where also validated
SOLUTIONS
11
11
11
PMD & CPD
CHALLENGES
PMD is very tough to configure, but it runs very fast
Cons: Configuring the rules took many hours, some where ignored
Some rules were biased and not compatible with each other
 The report was very large
 The 80/20 rule was applied for prioritization of issues
 The tool did find bugs and we where able to fix them before PROD
SOLUTIONS
12
12
12
SPOTBUGS
CHALLENGES
SpotBugs where the most accurate among all tools
Configuration was simple and straight forward
 The tool found: dead code, bad programming practices and NPE’s
 The tool did find bugs and we where able to fix them before PROD
SOLUTIONS
13
13
13
SONARQUBE
CHALLENGES
SonarQube was the complete QA tool
Cons: Setup and connection to Azure Devops was time consuming
The rules defined by the client’s where bank specific
 The tool categorized the issues by bugs, code smells, vulnerability's
 It was multiple filters and multiple levels of priority's automatically
assigned
 It measures also new code additions automatically
SOLUTIONS
14
SONARQUBE RESULTS
15
LESSONS LEARNED
GOLDEN HAMMER
If all you have is a hammer,
everything looks like a nail.
Not very rule is a flaw.
Design flaws
Check for architecture flaws, for:
cyclomatic and cognitive
complexity.
SILVER BULLET
There is no one fits all solution
for any project, budget and
timeline.
CONSISTENCY
Use the Pareto principle (80/20
rule) to determine what to test.
Create unit tests for new code.
16
FURTHER READING
PITEST
Real world mutation
testing
Runs unit tests
against modified
versions of the
application code
COST OF
BUGS
Caper Jones:
Applied software
measurement:
assuring productivity
and quality
FEEDBACK
CYCLE
Scott Amber:
Why Agile Software
Development
Techniques Work:
Improved Feedback
PARETO
PRINCIPLE
Vilfredo Pareto:
80% of the effects
come from 20% of
the causes
17
THANK YOU!

More Related Content

What's hot

Agile software development
Agile software developmentAgile software development
Agile software development
Rajesh Piryani
 
Agile software development
Agile software developmentAgile software development
Agile software development
Muhammad Amjad Rana
 
Agile methodology
Agile methodologyAgile methodology
Agile methodology
Payod Soni
 
Agile sdlc
Agile sdlcAgile sdlc
Agile sdlc
Bhawani N Prasad
 
Testing in Agile Development
Testing in Agile DevelopmentTesting in Agile Development
Testing in Agile Development
Hariprakash Agrawal
 
Overview of Agile Methodology
Overview of Agile MethodologyOverview of Agile Methodology
Overview of Agile Methodology
Haresh Karkar
 
Agile Software Development Overview
Agile Software Development OverviewAgile Software Development Overview
Agile Software Development Overview
DUONG Trong Tan
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
Mr SMAK
 
Agile Testing by Example
Agile Testing by ExampleAgile Testing by Example
Agile Testing by Example
Mikalai Alimenkou
 
Presentation of agile engineering practices
Presentation of agile engineering practicesPresentation of agile engineering practices
Presentation of agile engineering practices
Roberto Bettazzoni
 
Practical Guide to Scrum
Practical Guide to ScrumPractical Guide to Scrum
Practical Guide to Scrum
Pavel Dabrytski
 
Agile model in software testing
Agile model in software testingAgile model in software testing
Agile model in software testing
pooja deshmukh
 
India Agile Week 2015
India Agile Week 2015India Agile Week 2015
India Agile Week 2015
Sonata Software
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know
Richard Cheng
 
Tech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDDTech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDD
DUONG Trong Tan
 
Agile Methology Seminar Report
Agile Methology Seminar ReportAgile Methology Seminar Report
Agile Methology Seminar Report
Mohit Kumar
 
Agile manifesto
Agile manifestoAgile manifesto
Agile manifesto
Barney Loehnis
 
Engineering practices within scrum
Engineering practices within scrumEngineering practices within scrum
Engineering practices within scrum
SoftServe
 
Making quality visible in Product Engineering
Making quality visible in Product EngineeringMaking quality visible in Product Engineering
Making quality visible in Product Engineering
Jan Petter Hagberg
 
Agile tour ncr test360_degree - agile testing on steroids
Agile tour ncr test360_degree - agile testing on steroidsAgile tour ncr test360_degree - agile testing on steroids
Agile tour ncr test360_degree - agile testing on steroids
Vipul Gupta
 

What's hot (20)

Agile software development
Agile software developmentAgile software development
Agile software development
 
Agile software development
Agile software developmentAgile software development
Agile software development
 
Agile methodology
Agile methodologyAgile methodology
Agile methodology
 
Agile sdlc
Agile sdlcAgile sdlc
Agile sdlc
 
Testing in Agile Development
Testing in Agile DevelopmentTesting in Agile Development
Testing in Agile Development
 
Overview of Agile Methodology
Overview of Agile MethodologyOverview of Agile Methodology
Overview of Agile Methodology
 
Agile Software Development Overview
Agile Software Development OverviewAgile Software Development Overview
Agile Software Development Overview
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Agile Testing by Example
Agile Testing by ExampleAgile Testing by Example
Agile Testing by Example
 
Presentation of agile engineering practices
Presentation of agile engineering practicesPresentation of agile engineering practices
Presentation of agile engineering practices
 
Practical Guide to Scrum
Practical Guide to ScrumPractical Guide to Scrum
Practical Guide to Scrum
 
Agile model in software testing
Agile model in software testingAgile model in software testing
Agile model in software testing
 
India Agile Week 2015
India Agile Week 2015India Agile Week 2015
India Agile Week 2015
 
(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know(Agile) engineering best practices - What every project manager should know
(Agile) engineering best practices - What every project manager should know
 
Tech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDDTech talks #1- Unit testing and TDD
Tech talks #1- Unit testing and TDD
 
Agile Methology Seminar Report
Agile Methology Seminar ReportAgile Methology Seminar Report
Agile Methology Seminar Report
 
Agile manifesto
Agile manifestoAgile manifesto
Agile manifesto
 
Engineering practices within scrum
Engineering practices within scrumEngineering practices within scrum
Engineering practices within scrum
 
Making quality visible in Product Engineering
Making quality visible in Product EngineeringMaking quality visible in Product Engineering
Making quality visible in Product Engineering
 
Agile tour ncr test360_degree - agile testing on steroids
Agile tour ncr test360_degree - agile testing on steroidsAgile tour ncr test360_degree - agile testing on steroids
Agile tour ncr test360_degree - agile testing on steroids
 

Similar to Java Code Quality Improvements - DevWeek

Software Testing - Online Guide
Software Testing - Online GuideSoftware Testing - Online Guide
Software Testing - Online Guide
bigspire
 
Introducing: Klocwork Insight Pro | November 2009
Introducing: Klocwork Insight Pro | November 2009Introducing: Klocwork Insight Pro | November 2009
Introducing: Klocwork Insight Pro | November 2009
Klocwork
 
Rhonda Software Quality Assurance Services
Rhonda Software Quality Assurance ServicesRhonda Software Quality Assurance Services
Rhonda Software Quality Assurance Services
Rhonda Software
 
Quality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the EnterpriseQuality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the Enterprise
QASymphony
 
Future of QA
Future of QAFuture of QA
Future of QA
amitagarwal2006
 
Futureofqa
FutureofqaFutureofqa
Futureofqa
amitagarwal2006
 
"Software Quality in the Service of Innovation in the Insurance Industry"
"Software Quality in the Service of Innovation in the Insurance Industry""Software Quality in the Service of Innovation in the Insurance Industry"
"Software Quality in the Service of Innovation in the Insurance Industry"
Applitools
 
Cloud agnostic continuous quality assurance
Cloud agnostic continuous quality assuranceCloud agnostic continuous quality assurance
Cloud agnostic continuous quality assurance
jSparrow
 
Top 5 Features To Look for in a Codeless Automation Solution -- Presentation ...
Top 5 Features To Look for in a Codeless Automation Solution -- Presentation ...Top 5 Features To Look for in a Codeless Automation Solution -- Presentation ...
Top 5 Features To Look for in a Codeless Automation Solution -- Presentation ...
Applitools
 
A Complete Guide to Codeless Testing.pdf
A Complete Guide to Codeless Testing.pdfA Complete Guide to Codeless Testing.pdf
A Complete Guide to Codeless Testing.pdf
pCloudy
 
Product quality in agile project
Product quality in agile projectProduct quality in agile project
Product quality in agile project
Nhan Nguyen
 
Qa in CI/CD
Qa in CI/CDQa in CI/CD
Qa in CI/CD
Adsmurai
 
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
Parasoft .TEST, Write better C# Code Using  Data Flow Analysis Parasoft .TEST, Write better C# Code Using  Data Flow Analysis
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
Engineering Software Lab
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfEnhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
ICS
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
rupeshchanchal
 
Continuous Testing - What QA means for DevOps
Continuous Testing - What QA means for DevOpsContinuous Testing - What QA means for DevOps
Continuous Testing - What QA means for DevOps
SeaLights
 
Part5 - enforcing coding standard and best practices with jas forge v1.0
Part5 -  enforcing coding standard and best practices with jas forge v1.0Part5 -  enforcing coding standard and best practices with jas forge v1.0
Part5 - enforcing coding standard and best practices with jas forge v1.0
Jasmine Conseil
 
Software presentation
Software presentationSoftware presentation
Software presentation
JennaPrengle
 
DevOps in an Embedded World
DevOps in an Embedded WorldDevOps in an Embedded World
DevOps in an Embedded World
Sajeewa Dayaratne
 
Software Development Lifecycle Presentation
Software Development Lifecycle PresentationSoftware Development Lifecycle Presentation
Software Development Lifecycle Presentation
ssuser645e24
 

Similar to Java Code Quality Improvements - DevWeek (20)

Software Testing - Online Guide
Software Testing - Online GuideSoftware Testing - Online Guide
Software Testing - Online Guide
 
Introducing: Klocwork Insight Pro | November 2009
Introducing: Klocwork Insight Pro | November 2009Introducing: Klocwork Insight Pro | November 2009
Introducing: Klocwork Insight Pro | November 2009
 
Rhonda Software Quality Assurance Services
Rhonda Software Quality Assurance ServicesRhonda Software Quality Assurance Services
Rhonda Software Quality Assurance Services
 
Quality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the EnterpriseQuality Jam: BDD, TDD and ATDD for the Enterprise
Quality Jam: BDD, TDD and ATDD for the Enterprise
 
Future of QA
Future of QAFuture of QA
Future of QA
 
Futureofqa
FutureofqaFutureofqa
Futureofqa
 
"Software Quality in the Service of Innovation in the Insurance Industry"
"Software Quality in the Service of Innovation in the Insurance Industry""Software Quality in the Service of Innovation in the Insurance Industry"
"Software Quality in the Service of Innovation in the Insurance Industry"
 
Cloud agnostic continuous quality assurance
Cloud agnostic continuous quality assuranceCloud agnostic continuous quality assurance
Cloud agnostic continuous quality assurance
 
Top 5 Features To Look for in a Codeless Automation Solution -- Presentation ...
Top 5 Features To Look for in a Codeless Automation Solution -- Presentation ...Top 5 Features To Look for in a Codeless Automation Solution -- Presentation ...
Top 5 Features To Look for in a Codeless Automation Solution -- Presentation ...
 
A Complete Guide to Codeless Testing.pdf
A Complete Guide to Codeless Testing.pdfA Complete Guide to Codeless Testing.pdf
A Complete Guide to Codeless Testing.pdf
 
Product quality in agile project
Product quality in agile projectProduct quality in agile project
Product quality in agile project
 
Qa in CI/CD
Qa in CI/CDQa in CI/CD
Qa in CI/CD
 
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
Parasoft .TEST, Write better C# Code Using  Data Flow Analysis Parasoft .TEST, Write better C# Code Using  Data Flow Analysis
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
 
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdfEnhancing Quality and Test in Medical Device Design - Part 2.pdf
Enhancing Quality and Test in Medical Device Design - Part 2.pdf
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
 
Continuous Testing - What QA means for DevOps
Continuous Testing - What QA means for DevOpsContinuous Testing - What QA means for DevOps
Continuous Testing - What QA means for DevOps
 
Part5 - enforcing coding standard and best practices with jas forge v1.0
Part5 -  enforcing coding standard and best practices with jas forge v1.0Part5 -  enforcing coding standard and best practices with jas forge v1.0
Part5 - enforcing coding standard and best practices with jas forge v1.0
 
Software presentation
Software presentationSoftware presentation
Software presentation
 
DevOps in an Embedded World
DevOps in an Embedded WorldDevOps in an Embedded World
DevOps in an Embedded World
 
Software Development Lifecycle Presentation
Software Development Lifecycle PresentationSoftware Development Lifecycle Presentation
Software Development Lifecycle Presentation
 

More from Zoltan Iszlai

Scrum Walkthrough Internship Course
Scrum Walkthrough Internship CourseScrum Walkthrough Internship Course
Scrum Walkthrough Internship Course
Zoltan Iszlai
 
HTML Walkthrough Internship Course
HTML Walkthrough Internship CourseHTML Walkthrough Internship Course
HTML Walkthrough Internship Course
Zoltan Iszlai
 
CSS Walktrough Internship Course
CSS Walktrough Internship CourseCSS Walktrough Internship Course
CSS Walktrough Internship Course
Zoltan Iszlai
 
Java Study Group Report
Java Study Group ReportJava Study Group Report
Java Study Group Report
Zoltan Iszlai
 
[Romanian] Git Branching Strategies
[Romanian] Git Branching Strategies[Romanian] Git Branching Strategies
[Romanian] Git Branching Strategies
Zoltan Iszlai
 
Php Internship Course
Php Internship CoursePhp Internship Course
Php Internship Course
Zoltan Iszlai
 
Using Scrum Internship Course
Using Scrum Internship CourseUsing Scrum Internship Course
Using Scrum Internship Course
Zoltan Iszlai
 
Top 3 CMS Systems Compared
Top 3 CMS Systems ComparedTop 3 CMS Systems Compared
Top 3 CMS Systems Compared
Zoltan Iszlai
 
Entity and NHibernate ORM Frameworks Compared
Entity and NHibernate ORM Frameworks ComparedEntity and NHibernate ORM Frameworks Compared
Entity and NHibernate ORM Frameworks Compared
Zoltan Iszlai
 
[Hungarian] HTML Course - Sapientia University
[Hungarian] HTML Course - Sapientia University[Hungarian] HTML Course - Sapientia University
[Hungarian] HTML Course - Sapientia University
Zoltan Iszlai
 
[Hungarian] CSS Course - Sapientia University
[Hungarian] CSS Course - Sapientia University[Hungarian] CSS Course - Sapientia University
[Hungarian] CSS Course - Sapientia University
Zoltan Iszlai
 
[Hungarian] Scrum Course - Sapientia University
[Hungarian] Scrum Course - Sapientia University[Hungarian] Scrum Course - Sapientia University
[Hungarian] Scrum Course - Sapientia University
Zoltan Iszlai
 
[Hungarian] Sysgenic Introduction - Sapientia University
[Hungarian] Sysgenic Introduction - Sapientia University[Hungarian] Sysgenic Introduction - Sapientia University
[Hungarian] Sysgenic Introduction - Sapientia University
Zoltan Iszlai
 
User Centered Image Management System For Digital Libraries - DIAL 2006
User Centered Image Management System For Digital Libraries - DIAL 2006User Centered Image Management System For Digital Libraries - DIAL 2006
User Centered Image Management System For Digital Libraries - DIAL 2006
Zoltan Iszlai
 
[Romanian] OOP and Design Patterns Internship Course
[Romanian] OOP and Design Patterns Internship Course[Romanian] OOP and Design Patterns Internship Course
[Romanian] OOP and Design Patterns Internship Course
Zoltan Iszlai
 
[Romanian] HTML Internship Course
[Romanian] HTML Internship Course[Romanian] HTML Internship Course
[Romanian] HTML Internship Course
Zoltan Iszlai
 

More from Zoltan Iszlai (16)

Scrum Walkthrough Internship Course
Scrum Walkthrough Internship CourseScrum Walkthrough Internship Course
Scrum Walkthrough Internship Course
 
HTML Walkthrough Internship Course
HTML Walkthrough Internship CourseHTML Walkthrough Internship Course
HTML Walkthrough Internship Course
 
CSS Walktrough Internship Course
CSS Walktrough Internship CourseCSS Walktrough Internship Course
CSS Walktrough Internship Course
 
Java Study Group Report
Java Study Group ReportJava Study Group Report
Java Study Group Report
 
[Romanian] Git Branching Strategies
[Romanian] Git Branching Strategies[Romanian] Git Branching Strategies
[Romanian] Git Branching Strategies
 
Php Internship Course
Php Internship CoursePhp Internship Course
Php Internship Course
 
Using Scrum Internship Course
Using Scrum Internship CourseUsing Scrum Internship Course
Using Scrum Internship Course
 
Top 3 CMS Systems Compared
Top 3 CMS Systems ComparedTop 3 CMS Systems Compared
Top 3 CMS Systems Compared
 
Entity and NHibernate ORM Frameworks Compared
Entity and NHibernate ORM Frameworks ComparedEntity and NHibernate ORM Frameworks Compared
Entity and NHibernate ORM Frameworks Compared
 
[Hungarian] HTML Course - Sapientia University
[Hungarian] HTML Course - Sapientia University[Hungarian] HTML Course - Sapientia University
[Hungarian] HTML Course - Sapientia University
 
[Hungarian] CSS Course - Sapientia University
[Hungarian] CSS Course - Sapientia University[Hungarian] CSS Course - Sapientia University
[Hungarian] CSS Course - Sapientia University
 
[Hungarian] Scrum Course - Sapientia University
[Hungarian] Scrum Course - Sapientia University[Hungarian] Scrum Course - Sapientia University
[Hungarian] Scrum Course - Sapientia University
 
[Hungarian] Sysgenic Introduction - Sapientia University
[Hungarian] Sysgenic Introduction - Sapientia University[Hungarian] Sysgenic Introduction - Sapientia University
[Hungarian] Sysgenic Introduction - Sapientia University
 
User Centered Image Management System For Digital Libraries - DIAL 2006
User Centered Image Management System For Digital Libraries - DIAL 2006User Centered Image Management System For Digital Libraries - DIAL 2006
User Centered Image Management System For Digital Libraries - DIAL 2006
 
[Romanian] OOP and Design Patterns Internship Course
[Romanian] OOP and Design Patterns Internship Course[Romanian] OOP and Design Patterns Internship Course
[Romanian] OOP and Design Patterns Internship Course
 
[Romanian] HTML Internship Course
[Romanian] HTML Internship Course[Romanian] HTML Internship Course
[Romanian] HTML Internship Course
 

Recently uploaded

Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
Data Hops
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
Public CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptxPublic CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptx
marufrahmanstratejm
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
Dinusha Kumarasiri
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 

Recently uploaded (20)

Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3FREE A4 Cyber Security Awareness  Posters-Social Engineering part 3
FREE A4 Cyber Security Awareness Posters-Social Engineering part 3
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
Public CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptxPublic CyberSecurity Awareness Presentation 2024.pptx
Public CyberSecurity Awareness Presentation 2024.pptx
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Azure API Management to expose backend services securely
Azure API Management to expose backend services securelyAzure API Management to expose backend services securely
Azure API Management to expose backend services securely
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 

Java Code Quality Improvements - DevWeek

  • 1.
  • 2. 2 CODE QUALITY IMPROVEMENTS ZOLTAN ISZLAI, CLIENT ENGAGEMENT PLATFORM, NOVEMBER 2019
  • 3. 3 3 3  Introduction  Challenges  Approach  The why  QA tools used  Maintaining quality  SonarQube results  Lessons learned  Further reading AGENDA
  • 4. 4 4 4 INTRODUCTION DESCRIPTION The Client Engagement Platform will be used for automatic calculations of credit information used for further analysis for wholesale banking specialists.  Improve the projects quality  Fix current critical issues  Add new features for the MVP and later for PROD release  Get to Production from an unstable Pilot III phase CHALLENGES
  • 5. 5 CHALLENGES ENGINE The evaluation for deals is done using a risk and commercial engine based on over 50 inputs CONTINOUS INTEGRATION Integrate with Azure DevOps Automate testing Make tests visible for business FEATURES Deal Flow Authentication and authorization Notification and audit system COMPLY WITH POLICIES Audit policy Security audit Credit and Risk policy
  • 6. 6 APPROACH INCREASING ENGINE STABILITY Moving away from manual testing (1000+ tests) to automated testing, using:  Creating functional tests within a test automation framework, which simulates the UI (using Selenium and Cucumber)  Create unit tests to increase engine coverage above 80% INCREATE QUALITY Using QA automation tools and continuous integration to:  Automate bug detection and measuring the impact of changes  Automate code quality checking (with Azure DevOps)
  • 7. 7 THE WHY #1 THE COST OF BUGS With early detection PROD issues can be prevented.  Automated local code verification can be run  Automated functional UI tests can be run  Reputation loss can be avoided
  • 8. 8 THE WHY #2 LENGTH OF THE FEEDBACK CYCLE Adding continuous integration into our SDLC, we can prevent the cost increase of finding bugs.  Using TDD we also prevent issues  Design defects can be prevented early  With active stakeholder participation early requirements defects can be avoided
  • 9. 9 QA TOOLS CheckStyle Enforces a coding standard Code is readability Checks for JavaDoc issues PMD Static code analyzer Find common programming flaws Includes a CPD to find duplicate code SpotBugs Find bugs in Java programs Successor of FindBugs SonarQube Continuous code inspection Application Security Technical Dept
  • 10. 10 10 10 CHECKSTYLE CHALLENGES The code style didn’t confirm to any standard JavaDoc comment’s where correct Cons: Configuring the rules took 1+ hours  On validating the code on each build Checkstyle is run  We used IntelliJ IDEA’s default code style (autocorrection worked)  JavaDoc comments where also validated SOLUTIONS
  • 11. 11 11 11 PMD & CPD CHALLENGES PMD is very tough to configure, but it runs very fast Cons: Configuring the rules took many hours, some where ignored Some rules were biased and not compatible with each other  The report was very large  The 80/20 rule was applied for prioritization of issues  The tool did find bugs and we where able to fix them before PROD SOLUTIONS
  • 12. 12 12 12 SPOTBUGS CHALLENGES SpotBugs where the most accurate among all tools Configuration was simple and straight forward  The tool found: dead code, bad programming practices and NPE’s  The tool did find bugs and we where able to fix them before PROD SOLUTIONS
  • 13. 13 13 13 SONARQUBE CHALLENGES SonarQube was the complete QA tool Cons: Setup and connection to Azure Devops was time consuming The rules defined by the client’s where bank specific  The tool categorized the issues by bugs, code smells, vulnerability's  It was multiple filters and multiple levels of priority's automatically assigned  It measures also new code additions automatically SOLUTIONS
  • 15. 15 LESSONS LEARNED GOLDEN HAMMER If all you have is a hammer, everything looks like a nail. Not very rule is a flaw. Design flaws Check for architecture flaws, for: cyclomatic and cognitive complexity. SILVER BULLET There is no one fits all solution for any project, budget and timeline. CONSISTENCY Use the Pareto principle (80/20 rule) to determine what to test. Create unit tests for new code.
  • 16. 16 FURTHER READING PITEST Real world mutation testing Runs unit tests against modified versions of the application code COST OF BUGS Caper Jones: Applied software measurement: assuring productivity and quality FEEDBACK CYCLE Scott Amber: Why Agile Software Development Techniques Work: Improved Feedback PARETO PRINCIPLE Vilfredo Pareto: 80% of the effects come from 20% of the causes