The document discusses tools for improving CFML code quality through static code analysis, specifically focusing on the CFLint tool which analyzes CFML code by checking it against configurable linting rules to identify potential issues, it also discusses other metrics and tools for measuring code quality factors like complexity, performance and maintainability.
This slides show
1. How to obtain code coverage information for Java code
2. What kind of code coverage it is possible to get
3. Is 100% block coverage feasible, is it useful
4. How the code coverage could be used for more than discovering a percentage of uncovered code
CSUN 2018 Analyzing and Extending WCAG Beyond 3 DigitsBill Tyler
Slide deck from Bill Tyler's presentation of the Benefits of Analyzing & Extending WCAG 2.0 Beyond Three Digits from CSUN 2018 Conference (Friday, March 23, 2017)
Ph.D. Thesis Defense: Studying Reviewer Selection and Involvement in Modern ...The University of Adelaide
Patanamon's Ph.D. thesis defense at Graduate School of Infomation Science, Nara Institute of Science and Technology, Japan. The thesis title is Studying Reviewer Selection and Involvement in Modern Code Review Processes. This presentation takes 20 minutes.
Revisiting Code Ownership and Its Relationship with Software Quality in the S...The University of Adelaide
This work was presented at The 38th International Conference on Software Engineering (ICSE2016).
Abstract: Code ownership establishes a chain of responsibility for modules in large software systems. Although prior work uncovers a link between code ownership heuristics and software quality, these heuristics rely solely on the authorship of code changes. In addition to authoring code changes, developers also make important contributions to a module by reviewing code changes. Indeed, recent work shows that reviewers are highly active in modern code review processes, often suggesting alternative solutions or providing updates to the code changes. In this paper, we complement traditional code ownership heuristics using code review activity. Through a case study of six releases of the large Qt and OpenStack systems, we find that: (1) 67%-86% of developers did not author any code changes for a module, but still actively contributed by reviewing 21%-39% of the code changes, (2) code ownership heuristics that are aware of reviewing activity share a relationship with software quality, and (3) the proportion of reviewers without expertise shares a strong, increasing relationship with the likelihood of having post-release defects. Our results suggest that reviewing activity captures an important aspect of code ownership, and should be included in approximations of it in future studies.
This presentation describes the history and background behind the introduction of model checking. Transition systems workflow is also illustrated in terms of model checking.
This presentation provides an overview of such basic terms as "test design" and "test cases", software design testing lifecycle and test design techniques. Next, the focus is set on four black-box techniques, namely Boundary value analysis, Equivalence partitioning, Decision tables and State transition.
This presentation by Tetiana Trushchenko (Test Engineer, Consultant, GlobalLogic), was delivered at GlobalLogic Mykolaiv QA Workshop on July 7, 2018.
This presentation has been prepared to share knowledge about JetBrains UpSource tool usage on HTML project for back-end developers. Also code review process description has been provided to share good/bad experience of code review procedure.
How to apply machine learning into your CI/CD pipelineAlon Weiss
A quick introduction to AIOps, the business reasons why the CI/CD pipeline needs to constantly improve, and how this can be accomplished with data that's already available with existing Machine Learning and other algorithms.
This slides show
1. How to obtain code coverage information for Java code
2. What kind of code coverage it is possible to get
3. Is 100% block coverage feasible, is it useful
4. How the code coverage could be used for more than discovering a percentage of uncovered code
CSUN 2018 Analyzing and Extending WCAG Beyond 3 DigitsBill Tyler
Slide deck from Bill Tyler's presentation of the Benefits of Analyzing & Extending WCAG 2.0 Beyond Three Digits from CSUN 2018 Conference (Friday, March 23, 2017)
Ph.D. Thesis Defense: Studying Reviewer Selection and Involvement in Modern ...The University of Adelaide
Patanamon's Ph.D. thesis defense at Graduate School of Infomation Science, Nara Institute of Science and Technology, Japan. The thesis title is Studying Reviewer Selection and Involvement in Modern Code Review Processes. This presentation takes 20 minutes.
Revisiting Code Ownership and Its Relationship with Software Quality in the S...The University of Adelaide
This work was presented at The 38th International Conference on Software Engineering (ICSE2016).
Abstract: Code ownership establishes a chain of responsibility for modules in large software systems. Although prior work uncovers a link between code ownership heuristics and software quality, these heuristics rely solely on the authorship of code changes. In addition to authoring code changes, developers also make important contributions to a module by reviewing code changes. Indeed, recent work shows that reviewers are highly active in modern code review processes, often suggesting alternative solutions or providing updates to the code changes. In this paper, we complement traditional code ownership heuristics using code review activity. Through a case study of six releases of the large Qt and OpenStack systems, we find that: (1) 67%-86% of developers did not author any code changes for a module, but still actively contributed by reviewing 21%-39% of the code changes, (2) code ownership heuristics that are aware of reviewing activity share a relationship with software quality, and (3) the proportion of reviewers without expertise shares a strong, increasing relationship with the likelihood of having post-release defects. Our results suggest that reviewing activity captures an important aspect of code ownership, and should be included in approximations of it in future studies.
This presentation describes the history and background behind the introduction of model checking. Transition systems workflow is also illustrated in terms of model checking.
This presentation provides an overview of such basic terms as "test design" and "test cases", software design testing lifecycle and test design techniques. Next, the focus is set on four black-box techniques, namely Boundary value analysis, Equivalence partitioning, Decision tables and State transition.
This presentation by Tetiana Trushchenko (Test Engineer, Consultant, GlobalLogic), was delivered at GlobalLogic Mykolaiv QA Workshop on July 7, 2018.
This presentation has been prepared to share knowledge about JetBrains UpSource tool usage on HTML project for back-end developers. Also code review process description has been provided to share good/bad experience of code review procedure.
How to apply machine learning into your CI/CD pipelineAlon Weiss
A quick introduction to AIOps, the business reasons why the CI/CD pipeline needs to constantly improve, and how this can be accomplished with data that's already available with existing Machine Learning and other algorithms.
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...Fwdays
The main goal for a startup's engineering team is to rapidly develop and release quality products. Using our project as an example, I will share insights on how the speed of task delivery evolved with the introduction of QA, the challenges we encountered, and why we opted to proceed without a dedicated QA specialist.
We will also discuss the principles and approaches that help us uphold a high standard of product quality: - SDLC and the 'built-in quality' approach to processes; - managing incidents and postmortems; - test strategy for automation: E2E tests on Cypress, FE component testing, BE integration tests; - CI/CD: GitLab review apps, canary releases on Argo Rollouts; - observability: logs, metrics, alerts, tracing, canary metrics.
These strategies have shortened the task's time to market by an average of a day, without any increase in the number of incidents. My presentation will appeal not only to startups or companies without a dedicated QA team but to a broader audience. In conclusion, attendees will receive a list of universal tips to enhance product quality.
Learn what formal methods are and how they make developing bug-free, impenetrable source code a possibility in this webinar by TrustInSoft, the leading provider of formal methods-based code analysis tools.
YouTube channel : https://www.youtube.com/c/prelrik
This course of slides are very useful for beginners or less experienced testers. The course focuses to teach how actually testers work in LIVE environment.
Presentation on the promises and pitfalls of applying Agile in a Quality Management System. How do you get the benefits of agile while maintaining quality and regulatory compliance?
Quality Jam: BDD, TDD and ATDD for the EnterpriseQASymphony
During Quality Jam 2016 I had the privilege of presenting with one of QASymphony's earliest customers, Better Cloud, on how methodologies like BDD, TDD and ATDD scale for the enterprises. Adam Satterfield is the VP of Quality Assurance at Bettercloud and has been in QA for many years; he has taught me a lot about Behavior Driven Development, Test Driven Development, Acceptance Test Driven Development. In the session we share a new way of testing-- what Adam and I believe to be the next generation of testing development.
We know that there are several ways to do testing and we are just showing one new way to do it - If this session doesn't inspire action, hopefully it will at least give you and your team something to think about.
Infrastructure as Code Maturity Model v1Gary Stafford
Systematically Evolving an Organization’s Infrastructure . The original version of the IaC Maturity Model. See the latest version here: https://www.slideshare.net/garystafford/how-mature-is-your-infrastructure.
The Automation Firehose: Be Strategic & Tactical With Your Mobile & Web TestingPerfecto by Perforce
The widespread adoption of test automation has created many challenges — for everything from development lifecycle integration to scripting strategy.
One pitfall of automation is that teams often rush to automate everything they can. This is the automation firehose.
However, just because a scenario CAN be automated does not mean it SHOULD be automated. For scenarios that should be automated, teams must adopt implementation plans to ensure tests are reliable and deriving value.
Join this webinar led by Perfecto’s Chief Evangelist, Eran Kinsbruner, along with Thomas Haver, Manager of Automation & Delivery. In this session, the audience will:
-Understand which test scenarios to automate.
-Learn how to maximize the benefits of automation.
-Receive a checklist to determine automation feasibility and ROI.
Why a whole country skipped a day - Fun with Timezones Kai Koenig
Droidcon UK 2018
The correct handling of timezones and locales is one of the most under-appreciated parts of software development. Commonly known as internationalisation (i18n), a lot of people underestimate the impact that getting it wrong can have for your users as well as your systems.
Drawn from experiences with working on a global network of backend systems, websites and mobile apps in more than 30 locales for the last 10 years, this talk will start with an introduction to the concepts behind time zones and locales.
You’re going to learn about the history of time measurement and time synchronisation and how the world eventually ended up with the global system of time zones of today. Today’s model is full of interesting and sometimes outright bizarre quirks and you’ll look at some of best and worst of them. From there you’ll learn about the ideas behind locales and why cultural context is at least as important as a locale’s common collection of purely technical data such a number formats or text direction. After this, the talk will cover how common runtime environments like Android and Java represent these ideas.
Kotlin Coroutines and Android sitting in a tree - 2018 versionKai Koenig
Since the release of Kotlin 1.1 there is now the language feature of Kotlin Coroutines available for use in Java and Android projects. Coroutines are a new way to write asynchronous and non-blocking code. They can be thought of as light-weight threads without having to deal with all the problems that threads bring to the table.
A lot of developers think that Kotlin Coroutines are mainly or only useful for Kotlin on the JVM, but that’s not true. There are a variety of use cases in which the application of Coroutines can make a lot of sense on Android.
This talk is introducing the ideas behind Kotlin Coroutines, showing how to use them in Kotlin code for both the JVM and Android via the kotlinx-coroutines APIs and then exploring specific applications in Android. Part of this is a deeper look into the use of Coroutines in higher-level frameworks such as AsyncAwait and Anko and how they stack up against other concepts of asynchrony such as rxJava.
Kotlin Coroutines and Android sitting in a treeKai Koenig
Since the release of Kotlin 1.1 there is now the new language feature of Kotlin Coroutines available for use in Java and Android projects. Coroutines are a new way to write asynchronous and non-blocking code. They can be thought of as light-weight threads without having to deal with all the problems that threads bring to the table.
A lot of developers think that Kotlin Coroutines are mainly or only useful for Kotlin on the JVM, but that’s not true. There are a variety of use cases in which the application of Coroutines can make a lot of sense on Android.
This talk is introducing the ideas behind Kotlin Coroutines, showing how to use them in Kotlin code for both the JVM and Android via the kotlinx-coroutines APIs and then exploring specific applications in Android. Part of this is a deeper look into the use of Coroutines in higher-level frameworks such as AsyncAwait and Anko.
It's 2017. Kotlin, a great language for the JVM, has been around for more than 6 years now and has changed the way a lot of developers look at the features and evolutionary progress of Java. Kotlin has become a very popular alternative to Java for Android developers and with Kotlin 1.1 being on its way, thing are going to become more exciting.
This talk will start with a brief introduction into Kotlin and its core language features. After this brief foray into concepts like Kotlin's immutable variables, null behaviour and other smarts like the syntactic sugar it provides for dealing with types and properties we'll have a look into what in store for Android developers and into new features in Kotlin 1.1, such as Kotlin Coroutines, Jack support for Android and lots of improvements to the standard library.
Anko - The Ultimate Ninja of Kotlin Libraries?Kai Koenig
Kotlin is a new language for the JVM that aims to be a ””better Java”“. Made in-house by Jetbrains, the company behind IntelliJ IDEA and also Android Studio, it’s been in development for more than 5 years. Just a few weeks ago the final version of Kotlin 1.0 saw the light of day.
The language itself gives one so much niceness and syntactic sugar that you’d probably never want to go back to coding in Java again. Things get even better with Anko. Anko is pretty much the ultimate Ninja of Kotlin libraries. The feature it’s best know for is its Layout DSL that allows one to programatically write UI code in Kotlin. No more XML layout and no awkward piecing together of your UI through clunky Java APIs. We will look at how to use and how to extend the Layout DSL for your own requirements and then move on to Anko’s advanced, non-layout-related features:
- Intent wrappers
- Shortcuts to system services
- Asynchronous task management
- Anko SQLite and more
Coding for Android on steroids with KotlinKai Koenig
Kotlin is a new language for the JVM that aims to be a "better Java". Made in-house by Jetbrains, the company behind IntelliJ IDEA and also Android Studio, it's been in development for more than 5 years. Just a few weeks ago the final version of Kotlin 1.0 saw the light of day.
This talk will start with a brief introduction into Kotlin and its core language features. After this brief foray into concepts like Kotlin's immutable variables, null behaviour and other smarts like the syntactic sugar it provides for dealing with types and properties you'll discover what's in store for Android developers.
Particularly noteworthy are the decrease in annoying Java boilerplate code, fewer of the irritating "Process has stopped unexpectedly" messages and the easily available Kotlin Android Extensions. You will also explore the toolchain and compiler tools Kotlin provides for Android development, the differences to using Kotlin for Java development as well as the integration into Android Studio.
API management with Taffy and API BlueprintKai Koenig
Introduction to API development with Taffy, a developer-friendly and convention-based framework for ColdFusion and Lucee.
Code samples at: https://github.com/TheRealAgentK/taffydemos
Little Helpers for Android Development with KotlinKai Koenig
Kotlin is a new language for the JVM that aims to be a "better Java". Made in-house by Jetbrains, the company behind IntelliJ IDEA and also Android Studio, it's been in development for more than 5 years. Just a few months ago the final version of Kotlin 1.0 saw the light of day.
Starting off with Kotlin for Java development and for Android is actually quite straight forward. There's a lot of well written documentation, there are the Kotlin Koans and blogs seem to pick up Kotlin-related topics more and more. What a lot of people are not aware of though is that there are a bunch of really useful libraries and tools for Kotlin developers, in particular on Android (the most common and well known one being Ando).
This session from Droidcon Germany 2016 in Berlin will start with a quick introduction into Kotlin and its benefits over Java. Then we'll dive into the Kotlin-Android-ecosystem and look at a variety of Kotlin tools and libraries that can make one's life much easier - even to a level going beyond what core Kotlin already has to offer.
A lot of people talk about Data Mining, Machine Learning and Big Data. It clearly must be important, right?
A lot of people are also trying to sell you snake oil - sometimes half-arsed and overpriced products or solutions promising a world of insight into your customers or users if you handover your data to them. Instead, trying to understanding your own data and what you could do with it, should be the first thing you’d be looking at.
In this talk, we’ll introduce some basic terminology about Data and Text Mining as well as Machine Learning and will have a look at what you can on your own to understand more about your data and discover patterns in your data.
An introduction into the Garbage First (G1) garbage collector for the JVM. The session covers general GC concepts, the fundamentals of G1 and how to setup and tune the JVM for G1.
This talk is about time, time zones, locales, translations, regions and all sorts of stuff that is related to it. Full of history and fun fact goodness.
Clojure - an introduction (and some CFML)Kai Koenig
This is a talk I gave at CFCAMP 2012 in Munich. It's an introduction to Clojure for CFML developers and how to leverage Clojure from a CFML developer's point of view.
There are various examples and demo code that's not on the slides, contact me if you're interested in it.
Artificia Intellicence and XPath Extension FunctionsOctavian Nadolu
The purpose of this presentation is to provide an overview of how you can use AI from XSLT, XQuery, Schematron, or XML Refactoring operations, the potential benefits of using AI, and some of the challenges we face.
Utilocate offers a comprehensive solution for locate ticket management by automating and streamlining the entire process. By integrating with Geospatial Information Systems (GIS), it provides accurate mapping and visualization of utility locations, enhancing decision-making and reducing the risk of errors. The system's advanced data analytics tools help identify trends, predict potential issues, and optimize resource allocation, making the locate ticket management process smarter and more efficient. Additionally, automated ticket management ensures consistency and reduces human error, while real-time notifications keep all relevant personnel informed and ready to respond promptly.
The system's ability to streamline workflows and automate ticket routing significantly reduces the time taken to process each ticket, making the process faster and more efficient. Mobile access allows field technicians to update ticket information on the go, ensuring that the latest information is always available and accelerating the locate process. Overall, Utilocate not only enhances the efficiency and accuracy of locate ticket management but also improves safety by minimizing the risk of utility damage through precise and timely locates.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Hand Rolled Applicative User ValidationCode KataPhilip Schwarz
Could you use a simple piece of Scala validation code (granted, a very simplistic one too!) that you can rewrite, now and again, to refresh your basic understanding of Applicative operators <*>, <*, *>?
The goal is not to write perfect code showcasing validation, but rather, to provide a small, rough-and ready exercise to reinforce your muscle-memory.
Despite its grandiose-sounding title, this deck consists of just three slides showing the Scala 3 code to be rewritten whenever the details of the operators begin to fade away.
The code is my rough and ready translation of a Haskell user-validation program found in a book called Finding Success (and Failure) in Haskell - Fall in love with applicative functors.
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Launch Your Streaming Platforms in MinutesRoshan Dwivedi
The claim of launching a streaming platform in minutes might be a bit of an exaggeration, but there are services that can significantly streamline the process. Here's a breakdown:
Pros of Speedy Streaming Platform Launch Services:
No coding required: These services often use drag-and-drop interfaces or pre-built templates, eliminating the need for programming knowledge.
Faster setup: Compared to building from scratch, these platforms can get you up and running much quicker.
All-in-one solutions: Many services offer features like content management systems (CMS), video players, and monetization tools, reducing the need for multiple integrations.
Things to Consider:
Limited customization: These platforms may offer less flexibility in design and functionality compared to custom-built solutions.
Scalability: As your audience grows, you might need to upgrade to a more robust platform or encounter limitations with the "quick launch" option.
Features: Carefully evaluate which features are included and if they meet your specific needs (e.g., live streaming, subscription options).
Examples of Services for Launching Streaming Platforms:
Muvi [muvi com]
Uscreen [usencreen tv]
Alternatives to Consider:
Existing Streaming platforms: Platforms like YouTube or Twitch might be suitable for basic streaming needs, though monetization options might be limited.
Custom Development: While more time-consuming, custom development offers the most control and flexibility for your platform.
Overall, launching a streaming platform in minutes might not be entirely realistic, but these services can significantly speed up the process compared to building from scratch. Carefully consider your needs and budget when choosing the best option for you.
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Łukasz Chruściel
No one wants their application to drag like a car stuck in the slow lane! Yet it’s all too common to encounter bumpy, pothole-filled solutions that slow the speed of any application. Symfony apps are not an exception.
In this talk, I will take you for a spin around the performance racetrack. We’ll explore common pitfalls - those hidden potholes on your application that can cause unexpected slowdowns. Learn how to spot these performance bumps early, and more importantly, how to navigate around them to keep your application running at top speed.
We will focus in particular on tuning your engine at the application level, making the right adjustments to ensure that your system responds like a well-oiled, high-performance race car.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteGoogle
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
✅Deploy AI expert bots in Any Niche With Just A Click
✅With one keyword, generate complete funnels, websites, landing pages, and more.
✅More than 85 AI features are included in the AI pilot.
✅No setup or configuration; use your voice (like Siri) to do whatever you want.
✅You Can Use AI Pilot To Create your version of AI Pilot And Charge People For It…
✅ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
✅ZERO Limits On Features Or Usages
✅Use Our AI-powered Traffic To Get Hundreds Of Customers
✅No Complicated Setup: Get Up And Running In 2 Minutes
✅99.99% Up-Time Guaranteed
✅30 Days Money-Back Guarantee
✅ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Looking for a reliable mobile app development company in Noida? Look no further than Drona Infotech. We specialize in creating customized apps for your business needs.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
Software Engineering, Software Consulting, Tech Lead, Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Transaction, Spring MVC, OpenShift Cloud Platform, Kafka, REST, SOAP, LLD & HLD.
What is Augmented Reality Image Trackingpavan998932
Augmented Reality (AR) Image Tracking is a technology that enables AR applications to recognize and track images in the real world, overlaying digital content onto them. This enhances the user's interaction with their environment by providing additional information and interactive elements directly tied to physical images.
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
👉👉 Click Here To Get More Info 👇👇
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
✅Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
✅Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
✅Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
✅Fully automated AI articles bulk generation!
✅Auto-post or schedule stunning AI content across all your accounts at once—WordPress, Facebook, LinkedIn, Blogger, and more.
✅With one keyword or URL, generate complete websites, landing pages, and more…
✅Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
✅Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
✅Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
✅Save over $5000 per year and kick out dependency on third parties completely!
✅Brand New App: Not available anywhere else!
✅ Beginner-friendly!
✅ZERO upfront cost or any extra expenses
✅Risk-Free: 30-Day Money-Back Guarantee!
✅Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
7. CONDITION OF EXCELLENCE IMPLYING
FINE QUALITY
AS DISTINCT FROM BAD QUALITY
https://www.flickr.com/photos/serdal/14863608800/
8. SOFTWARE AND CODE QUALITY
TYPES OF QUALITY
▸ Quality can be objective or subjective
▸ Subjective quality: dependent on personal experience to recognise
excellence. Subjective quality is ‘universally true’ from the observer’s point of
view.
▸ Objective quality: measure ‘genius’, quantify and repeat -> Feedback loop
9. SOFTWARE AND CODE QUALITY
CAN RECOGNISING QUALITY BE LEARNED?
▸ Chicken sexing seems to be something industry professionals lack objective
criteria for
▸ Does chicken sexing as process of quality determination lead to subjective or
objective quality?
▸ What about code and software?
▸ How can we improve in determining objective quality?
10. “ANY FOOL CAN WRITE CODE THAT A COMPUTER CAN
UNDERSTAND. GOOD PROGRAMMERS WRITE CODE
THAT HUMANS CAN UNDERSTAND.”
Martin Fowler
SOFTWARE AND CODE QUALITY
13. METRICS AND MEASURING
DIFFERENT TYPES OF METRICS
▸ There are various categories to measure software quality in:
▸ Completeness
▸ Performance
▸ Aesthetics
▸ Maintainability and Support
▸ Usability
▸ Architecture
14. METRICS AND MEASURING
COMPLETENESS
▸ Fit for purpose
▸ Code fulfils requirements: use cases,
specs etc.
▸ All tests pass
▸ Tests cover all/most of the code
execution
▸ Security
https://www.flickr.com/photos/chrispiascik/4792101589/
15. METRICS AND MEASURING
PERFORMANCE
▸ Artefact size and efficiency
▸ System resources
▸ Behaviour under load
▸ Capacity limitations
https://www.flickr.com/photos/dodgechallenger1/2246952682/
16. METRICS AND MEASURING
AESTHETICS
▸ Readability of code
▸ Matches agreed coding style guides
▸ Organisation of code in a class/
module/component etc.
https://www.flickr.com/photos/nelljd/25157456300/
17. METRICS AND MEASURING
MAINTAINABILITY / SUPPORT
▸ Future maintenance of the code
▸ Documentation
▸ Stability/Lifespan
▸ Scalability
https://www.flickr.com/photos/dugspr/512883136/
18. METRICS AND MEASURING
USABILITY
▸ Positive user experience
▸ Positive reception
▸ UI leveraging best practices
▸ Support for impaired users
https://www.flickr.com/photos/baldiri/5734993652/
19. METRICS AND MEASURING
ARCHITECTURE
▸ System complexity
▸ Module cohesion
▸ Module dependency
https://www.flickr.com/photos/mini_malist/14416440852/
21. “YOU CAN'T CONTROL WHAT YOU CAN'T
MEASURE.”
Tom DeMarco
METRICS AND MEASURING
22. METRICS AND MEASURING
WHY WOULD WE WANT TO MEASURE ELEMENTS OF QUALITY?
▸ It’s impossible to add quality later, start early to:
▸ identify potential technical debt
▸ find and fix bugs early in the development work
▸ track your test coverage.
23. METRICS AND MEASURING
COST OF FIXING ISSUES
▸ Rule of thumb: The later you find a
problem in your software the more
effort, time and money is involved in
fixing it.
▸ Note: There has NEVER been any
scientific study into what the
appropriate ratios are - it’s all
anecdotal/made up numbers… the
zones of unscientific fluffiness!
24. METRICS AND MEASURING
HOW CAN WE MEASURE?
▸ Automated vs. manual
▸ Tools vs. humans
▸ Precise numeric values vs. ‘gut feeling’
… but what about those ‘code smells’?
25. METRICS AND MEASURING
WHAT CAN WE MEASURE?
▸ Certain metric categories lend themselves to being taken at design/code/
architecture level
▸ Others might have to be dealt with on others levels, e.g. acceptance criteria, ’fit
for purpose’, user happiness, etc.
26. METRICS AND MEASURING
COMPLETENESS
▸ Fit for purpose — Stakeholders/customers/users
▸ Code fulfils requirements: use cases, specs etc — BDD (to some level)
▸ All tests pass — TDD/BDD/UI tests
▸ Tests cover all/most of the code execution? — Code Coverage tools
▸ Security — Code security scanners
27. METRICS AND MEASURING
PERFORMANCE
▸ Artefact size and efficiency — Deployment size
▸ System resources — Load testing/System monitoring
▸ Behaviour under load — Load testing/System monitoring
▸ Capacity limitations — Load testing/System monitoring
28. METRICS AND MEASURING
AESTHETICS
▸ Readability of code — Code style checkers (to some level) & Human review
▸ Matches agreed coding style guides — Code style checkers
▸ Organisation of code in a class|module|component etc. — Architecture checks &
Human review
29. METRICS AND MEASURING
MAINTAINABILITY/SUPPORT
▸ Future maintenance of the code — Code style checkers & Human review
▸ Documentation — Documentation tools
▸ Stability/Lifespan — System monitoring
▸ Scalability — System monitoring/Architecture checks
30. METRICS AND MEASURING
USABILITY
▸ Positive user experience — UI/AB tests & Human review
▸ Positive reception — Stakeholders/customers/users
▸ UI leveraging best practices — UI/AB tests & Human review
▸ Support for impaired users — a11y checker & UI/AB tests & Human review
32. METRICS AND MEASURING
LINES OF CODE
▸ LOC: lines of code
▸ CLOC: commented lines of code
▸ NCLOC: not commented lines of code
▸ LLOC: logic lines of code
LOC = CLOC + NCLOC
LLOC <= NCLOC
33. METRICS AND MEASURING
COMPLEXITY
▸ McCabe (cyclomatic) counts number of decision points in a function: if/else,
switch/case, loops, etc.
▸ low: 1-4, normal: 5-7, high: 8-10, very high: 11+
▸ nPath tracks number of unique execution paths through a function
▸ values of 150+ are usually considered too high
▸ McCabe usually much small value than nPath
▸ Halstead metrics, lean into maintainability index metric - quite involved calculation
38. “THE PROBLEM WITH ‘QUICK AND DIRTY’ FIXES
IS THAT THE DIRTY STAYS AROUND FOREVER
WHILE THE QUICK HAS BEEN FORGOTTEN”
Common wisdom among software developers
TOOLING AND ANALYSIS
39. TOOLING AND ANALYSIS
TOOLING
▸ Testing: TDD/BDD/Spec tests, UI tests, user tests, load tests
▸ System management & monitoring
▸ Security: Intrusion detection, penetration testing, code scanner
▸ Code and architecture reviews and style checkers
40. TOOLING AND ANALYSIS
CODE ANALYSIS
▸ Static analysis: checks code that is not currently being executed
▸ Linter, syntax checking, style checker, architecture tools
▸ Dynamic/runtime analysis: checks code while being executed
▸ Code coverage, system monitoring
Test tools can fall into either category
41. TOOLING AND ANALYSIS
TOOLS FOR STATIC ANALYSIS
▸ CFLint: Linter, checking code by going through a set of rules
▸ CFML Complexity Metric Tool: McCabe index
42. TOOLING AND ANALYSIS
TOOLS FOR DYNAMIC ANALYSIS
▸ Rancho: Code coverage from Kunal Saini
▸ CF Metrics: Code coverage and statistics
44. STATIC CODE ANALYSIS FOR CFML
A STATIC CODE ANALYSER FOR CFML
▸ Started by Ryan Eberly
▸ Sitting on top of Denny Valiant's CFParser project
▸ Mission statement:
▸ ‘Provide a robust, configurable and extendable linter for CFML’
▸ Currently works with ACF and Lucee, main line of support is for ACF though
▸ Team of 4-5 regular contributors
45. STATIC CODE ANALYSIS FOR CFML
CFLINT
▸ Written in Java, requires Java 8+ to compile and run
▸ Unit tests can be contributed/executed without Java knowledge
▸ CFLint depends on CFParser to grok the code to analyse
▸ Various tooling/integration through 3rd party plugins
▸ Source is on Github
▸ Built with Gradle, distributed via Maven
47. STATIC CODE ANALYSIS FOR CFML
LINTING (I)
▸ CFLint traverses the source tree depth first:
▸ Component → Function → Statement → Expression → Identifier
▸ CFLint maintains its own scope during listing:
▸ Curent directory/filename
▸ Current component
▸ Current function
▸ Variables that are declared/attached to the scope
48. STATIC CODE ANALYSIS FOR CFML
LINTING (II)
▸ The scope is called the CFLint Context
▸ Provided to linting plugins
▸ Plugins do the actual work and feed reporting information back to CFLint
based on information in the Context and the respective plugin
▸ TLDR: plugins ~ liniting rules
49. STATIC CODE ANALYSIS FOR CFML
CFPARSER
▸ CFParser parses CFML code using two different approaches:
▸ CFML Tags: Jericho HTMLParser
▸ CFScript: ANTLR 4 grammar
▸ Output: AST (abstract syntax tree) of the CFML code
▸ CFLint builds usually rely on a certain CFParser release
▸ CFML expressions, statements and tags end up in CFLint being represented as
Java classes: CFStatement, CFExpression etc.
50. STATIC CODE ANALYSIS FOR CFML
REPORTING
▸ Currently four output formats:
▸ Text-based for Human consumption
▸ JSON object
▸ CFLint XML
▸ FindBugs XML
51. STATIC CODE ANALYSIS FOR CFML
TOOLING
▸ Various IDE and CI server integrations
▸ 3rd party projects: SublimeLinter (Sublime Text 3), ACF Builder extension,
AtomLinter (Atom), Visual Studio Code
▸ IntelliJ IDEA coming later this year or early 2018 — from me
▸ Jenkins plugin
▸ TeamCity (via Findbugs XML reporting)
▸ SonarQube
▸ NPM wrapper
52. STATIC CODE ANALYSIS FOR CFML
CONTRIBUTING
▸ Use CFLint with your code and provide feedback
▸ Talk to us and say hello!
▸ Provide test cases in CFML for issues you find
▸ Work on some documentation improvements
▸ Fix small and beginner-friendly CFLint tickets in Java code
▸ Become part of the regular dev team! :-)
53. STATIC CODE ANALYSIS FOR CFML
ROADMAP
▸ 1.0.1 — March 2017; first release after 2 years of betas :)
▸ 1.1 — June 2017; internal release
▸ 1.2.0-3 — August 2017
▸ Documentation/output work
▸ Internal changes to statistics tracking
▸ 1.3 — In progress; parsing/linting improvements, CommandBox
54. STATIC CODE ANALYSIS FOR CFML
ROADMAP
▸ 2.0 — 2018
▸ Complete rewrite of output and reporting
▸ Complete rewrite and clean up of configuration
▸ Performance improvements (parallelising linting)
▸ API for tooling
▸ Code metrics
55. STATIC CODE ANALYSIS FOR CFML
ROADMAP
▸ 3.0 — ???
▸ Support for rules in CFML
▸ Abstract internal DOM
▸ New rules based on the DOM implementation