The document discusses various techniques for measuring and analyzing software quality metrics and complexity. It describes metrics like cyclomatic complexity, code coverage, Flesch reading scores, and tools that can be used to calculate metrics like Flog, Saikuro, and Metric-Fu. It also briefly mentions measuring bug prediction and hotspots using the Git Bugspots tool. The overall topic is selecting and calculating software metrics that provide useful insights into code quality and maintenance.
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"Daniel Bryant
All is not completely rosy in microservice-land. It is often a sign of an architectural approach’s maturity that in addition to the emergence of well established principles and practices, that anti-patterns also begin to be identified and classified. In this talk Daniel will introduce the 2016 edition of the seven deadly sins that if left unchecked could easily ruin your next microservices project... This talk will take a tour of some of the nastiest anti-patterns in microservices, giving you the tools to not only avoid but also slay these demons before they tie up your project in their own special brand of hell.
Topics covered include:
• Envy - introducing inappropriate intimacy within services by creating a shared domain model, and how many teams deploy and use data stores incorrectly;
• Wrath - failing to deal with the inevitable bad things that occur within a distributed system;
• Sloth - ignoring the importance of NFRs; and
• Lust - embracing the latest and greatest technology without evaluating the impact incurred by these choices.
DevOpsNorth 2017 "Seven (More) Deadly Sins of Microservices"Daniel Bryant
All is not completely rosy in microservice-land. It is often a sign of an architectural approach’s maturity that in addition to the emergence of well established principles and practices, that anti-patterns also begin to be identified and classified. In this talk Daniel will introduce the 2016 edition of the seven deadly sins that if left unchecked could easily ruin your next microservices project... This talk will take a tour of some of the nastiest anti-patterns in microservices, giving you the tools to not only avoid but also slay these demons before they tie up your project in their own special brand of hell.
Topics covered include:
• Envy - introducing inappropriate intimacy within services by creating a shared domain model, and how many teams deploy and use data stores incorrectly;
• Wrath - failing to deal with the inevitable bad things that occur within a distributed system;
• Sloth - ignoring the importance of NFRs; and
• Lust - embracing the latest and greatest technology without evaluating the impact incurred by these choices.
As we move further into the future of digital design, web design is no longer just about creating a single great desktop browsing experience. The interactive design industry is at a crossroads; mobile and tablet devices continue to propagate and fuel new interactions, and the web is now found on more devices than ever.
So, how do we adjust accordingly? More often than not, designers and programmers use old methodologies to tackle new problems. The real tool kit of a great web designer starts off-line and off-screen. This lecture will showcase important skills that will prepare flexible designs for future facing web projects. We will outline a set of new philosophies, collaborative processes and custom tools that enable productivity in this ever-changing world. We'll also cover the importance of creating your own tools and adapting to new needs, so you can stay ahead of the game.
By demonstrating the right workflow, the right tools and a future facing philosophy, this talk aims to help anyone who has thought to themselves: 'there has to be a better way'. The future isn't 12-column grids and pixel perfect PSDs. It's a flexible thinking model that relies on your understanding of development and a strong design philosophy.
Building Data Driven Products With Ruby - RubyConf 2012Ryan Weald
Description
Slides from RubyConf 2012 talk:
"Big data and data science have become hot topics in the developer community during the past year. This talk will show how ruby is used to build real data driven products at scale.
Data scientist Ryan Weald walks through the building of data driven products at Sharethrough, from exploratory analysis to production systems, with an emphasis on the role Ruby plays in each phase of the data driven product cycle.
He discusses how Ruby interacts with other data analysis tools -- such as Hadoop, Cascading, Python, and Javascript -- with a constructive look at Ruby's weaknesses, and presents suggestions on how Ruby can contribute more to data science in the areas of visualization and machine learning."
Devoxx US 2017 "The Seven (More) Deadly Sins of Microservices"Daniel Bryant
There is trouble brewing in the land of microservices – today’s shiny technology is tomorrow’s legacy, and there is concern that we will all be dealing with spaghetti services in 2018…
It is often a sign of an architectural approach’s maturity that, in addition to the emergence of well-established principles and practices, anti-patterns also begin to be identified and classified. In this talk we introduce the 2016 edition of the seven deadly sins that if left unchecked could easily ruin your next microservices project…
This talk will take a tour of some of the nastiest anti-patterns in microservices, giving you the tools to not only avoid but also slay these demons before they tie up your project in their own special brand of hell.
Topics covered include: Pride - selfishly ignoring the new requirements for testing; Envy - introducing inappropriate intimacy within services by creating a shared domain model; Wrath - failing to deal with the inevitable bad things that occur within a distributed system; Sloth - composing services in a lazy fashion, which ultimately leads to the creation of a “Distributed Monolith”; and Lust - embracing the latest, greatest (and costly) technology.
apidays LIVE Paris 2021 - Measuring environmental impact reductions by Gregor...apidays
apidays LIVE Paris 2021 - APIs and the Future of Software
December 7, 8 & 9, 2021
Measuring environmental impact reductions: A React-to-Svelte migration case study
Gregory Pelletier, Web Developer Fullstack at Fairness
State of Puppet - Puppet Camp Barcelona 2013Puppet
Chris Spence delivers the "State of Puppet" at Puppet Camp Barcelona 2013. Learn about upcoming Puppet Camps at http://puppetlabs.com/community/puppet-camp/
In this session we’ll leave the need for performance a foregone conclusion and take a whirlwind tour through the complexity of modern Internet architectures. The complexities lead to evil optimization problems and significant challenges troubleshooting production issues to a speedy and successful end.
Starting with the simple facts that you can’t fix what you can’t see and you can’t improve what you can’t measure, we’ll discuss what needs monitoring and why. We’ll talk about unlikely allies in the fight for time and budget to instrument systems, applications and processes for observability.
You’ll leave the session with a better understanding of what it looks like to troubleshoot the storm of a malfunctioning large architecture and some tools and techniques you can use to not be swallowed by the Kraken.
PuppetCamp SEA @ Blk 71 - Puppet: The Year That WasWalter Heck
Nigel Kersten started off the day with a very interesting and informative talk about the past, current and future of Puppet. He showed Puppet's link with the worldwide tech community and how they plan to make the Puppet experience even better. He also gave updates on what Puppet Labs has done recently, as well as elaborated on the improvements of Puppet 3.0, Puppet DB and Puppet Enterprise. Nigel also mentioned that Puppet Labs is still dedicated on fixing any issues that any updates or the community may have, and that the company also hopes to improve things moving towards the future.
PuppetCamp SEA @ Blk 71 - Puppet: The Year That WasOlinData
Nigel Kersten, CTO at Puppet Labs, started off the day with a very interesting and informative talk about the past, current and future of Puppet. He showed Puppet's link with the worldwide tech community and how they plan to make the Puppet experience even better. He also gave updates on what Puppet Labs has done recently, as well as elaborated on the improvements of Puppet 3.0, Puppet DB and Puppet Enterprise.
DrupalCon Munich, August 22nd 2012
All things that need to be operated are designed. Or at least they should be. Sometimes the design is not so obvious. In fact, many things that people need to operate on a daily bases work quirky. In this session I will discuss some real life examples of quirky design, the remarkable resemblance in the software we make and some methods for addressing them.
LJCConf 2013 "Chuck Norris Doesn't Need DevOps"Daniel Bryant
We all hear the term "DevOps" being thrown around on a daily basis, but what does it actually mean? With a little help from everyone's favourite 80's action hero, we'll undergo a whistle-stop tour of the philosophy, culture and tooling behind this buzzword, specifically aimed at Java Developers. We'll also look at a real-world case study from Instant Access Technologies Ltd, and explore the key role that DevOps has played during a successful upgrade of the epoints customer loyalty platform to support increasing traffic. The core discussion will focus on the challenges encountered as we moved from a monolithic app deployed into a data centre on a 'big bang' schedule, to a platform of loosely-coupled components, all being continuously deployed into the Cloud.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
As we move further into the future of digital design, web design is no longer just about creating a single great desktop browsing experience. The interactive design industry is at a crossroads; mobile and tablet devices continue to propagate and fuel new interactions, and the web is now found on more devices than ever.
So, how do we adjust accordingly? More often than not, designers and programmers use old methodologies to tackle new problems. The real tool kit of a great web designer starts off-line and off-screen. This lecture will showcase important skills that will prepare flexible designs for future facing web projects. We will outline a set of new philosophies, collaborative processes and custom tools that enable productivity in this ever-changing world. We'll also cover the importance of creating your own tools and adapting to new needs, so you can stay ahead of the game.
By demonstrating the right workflow, the right tools and a future facing philosophy, this talk aims to help anyone who has thought to themselves: 'there has to be a better way'. The future isn't 12-column grids and pixel perfect PSDs. It's a flexible thinking model that relies on your understanding of development and a strong design philosophy.
Building Data Driven Products With Ruby - RubyConf 2012Ryan Weald
Description
Slides from RubyConf 2012 talk:
"Big data and data science have become hot topics in the developer community during the past year. This talk will show how ruby is used to build real data driven products at scale.
Data scientist Ryan Weald walks through the building of data driven products at Sharethrough, from exploratory analysis to production systems, with an emphasis on the role Ruby plays in each phase of the data driven product cycle.
He discusses how Ruby interacts with other data analysis tools -- such as Hadoop, Cascading, Python, and Javascript -- with a constructive look at Ruby's weaknesses, and presents suggestions on how Ruby can contribute more to data science in the areas of visualization and machine learning."
Devoxx US 2017 "The Seven (More) Deadly Sins of Microservices"Daniel Bryant
There is trouble brewing in the land of microservices – today’s shiny technology is tomorrow’s legacy, and there is concern that we will all be dealing with spaghetti services in 2018…
It is often a sign of an architectural approach’s maturity that, in addition to the emergence of well-established principles and practices, anti-patterns also begin to be identified and classified. In this talk we introduce the 2016 edition of the seven deadly sins that if left unchecked could easily ruin your next microservices project…
This talk will take a tour of some of the nastiest anti-patterns in microservices, giving you the tools to not only avoid but also slay these demons before they tie up your project in their own special brand of hell.
Topics covered include: Pride - selfishly ignoring the new requirements for testing; Envy - introducing inappropriate intimacy within services by creating a shared domain model; Wrath - failing to deal with the inevitable bad things that occur within a distributed system; Sloth - composing services in a lazy fashion, which ultimately leads to the creation of a “Distributed Monolith”; and Lust - embracing the latest, greatest (and costly) technology.
apidays LIVE Paris 2021 - Measuring environmental impact reductions by Gregor...apidays
apidays LIVE Paris 2021 - APIs and the Future of Software
December 7, 8 & 9, 2021
Measuring environmental impact reductions: A React-to-Svelte migration case study
Gregory Pelletier, Web Developer Fullstack at Fairness
State of Puppet - Puppet Camp Barcelona 2013Puppet
Chris Spence delivers the "State of Puppet" at Puppet Camp Barcelona 2013. Learn about upcoming Puppet Camps at http://puppetlabs.com/community/puppet-camp/
In this session we’ll leave the need for performance a foregone conclusion and take a whirlwind tour through the complexity of modern Internet architectures. The complexities lead to evil optimization problems and significant challenges troubleshooting production issues to a speedy and successful end.
Starting with the simple facts that you can’t fix what you can’t see and you can’t improve what you can’t measure, we’ll discuss what needs monitoring and why. We’ll talk about unlikely allies in the fight for time and budget to instrument systems, applications and processes for observability.
You’ll leave the session with a better understanding of what it looks like to troubleshoot the storm of a malfunctioning large architecture and some tools and techniques you can use to not be swallowed by the Kraken.
PuppetCamp SEA @ Blk 71 - Puppet: The Year That WasWalter Heck
Nigel Kersten started off the day with a very interesting and informative talk about the past, current and future of Puppet. He showed Puppet's link with the worldwide tech community and how they plan to make the Puppet experience even better. He also gave updates on what Puppet Labs has done recently, as well as elaborated on the improvements of Puppet 3.0, Puppet DB and Puppet Enterprise. Nigel also mentioned that Puppet Labs is still dedicated on fixing any issues that any updates or the community may have, and that the company also hopes to improve things moving towards the future.
PuppetCamp SEA @ Blk 71 - Puppet: The Year That WasOlinData
Nigel Kersten, CTO at Puppet Labs, started off the day with a very interesting and informative talk about the past, current and future of Puppet. He showed Puppet's link with the worldwide tech community and how they plan to make the Puppet experience even better. He also gave updates on what Puppet Labs has done recently, as well as elaborated on the improvements of Puppet 3.0, Puppet DB and Puppet Enterprise.
DrupalCon Munich, August 22nd 2012
All things that need to be operated are designed. Or at least they should be. Sometimes the design is not so obvious. In fact, many things that people need to operate on a daily bases work quirky. In this session I will discuss some real life examples of quirky design, the remarkable resemblance in the software we make and some methods for addressing them.
LJCConf 2013 "Chuck Norris Doesn't Need DevOps"Daniel Bryant
We all hear the term "DevOps" being thrown around on a daily basis, but what does it actually mean? With a little help from everyone's favourite 80's action hero, we'll undergo a whistle-stop tour of the philosophy, culture and tooling behind this buzzword, specifically aimed at Java Developers. We'll also look at a real-world case study from Instant Access Technologies Ltd, and explore the key role that DevOps has played during a successful upgrade of the epoints customer loyalty platform to support increasing traffic. The core discussion will focus on the challenges encountered as we moved from a monolithic app deployed into a data centre on a 'big bang' schedule, to a platform of loosely-coupled components, all being continuously deployed into the Cloud.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Measuring
1. Measuring & Analyzing
Things That Matter
When You Have Too
Many Things To Keep
Track Of* (chocolate salmon)
by @chadfowler
* this title easily understood by 13-15 year old students
Thursday, February 23, 12
4. How do we fix it?
• code reviews are hard
• code reviews are time consuming
• there are too many commits to review
• bulleted lists are awesome
Thursday, February 23, 12
5. information radiator
“Coined around 2000 while standing in a Thoughtworks
office looking at all the paper on the walls around me,
“information radiator” refers to a publicly posted display
that shows people walking by what is going on.
Information radiators are best when they are big, very
easy to see (e.g. not online, generally), and change often
enough to be worth revisiting.”
http://alistair.cockburn.us/Information+radiator
Thursday, February 23, 12
6. “Chart what you care about, what you worry about,
what you want other people to know.”
http://xprogramming.com/articles/bigvisiblecharts/
Thursday, February 23, 12
9. What Should We
Measure?
• Project progress
• Code complexity
• Developer “productivity”
• Business “key performance indicators”
• Bug/error rates
• Everything important
Thursday, February 23, 12
12. Flesch-Kincaid Reading Ease
Score Notes
90-100 easily understood by an average 11-year-old student
60-70 easily understood by 13- to 15-year-old students
0-30 best understood by university graduates
Thursday, February 23, 12
14. Maurice Halstead
“Software Science”
http://en.wikipedia.org/wiki/Halstead_complexity_measures
Thursday, February 23, 12
15. Measure units of human
thought used!!!
“Stroud’s (1955, 1967) original proposal, which is
usually called a discrete-moment model, claims that
all incoming information is processed in
nonoverlapping (i.e., temporarily discrete) samples
or scans and that the temporal order of stimuli
within a scan is not preserved.”
T ' = ( n1N2( n1log2n1 +
n2log2n2) log2n) / 2n2S
http://yunus.hacettepe.edu.tr/~sencer/complexity.html
Thursday, February 23, 12
16. abc
Assignment – an explicit transfer of data into a variable
Branch – an explicit forward program branch out of scope
Condition – a logical/Boolean test
|ABC| = sqrt((A*A)+(B*B)+(C*C))
http://www.softwarerenovation.com/ABCMetric.pdf
Thursday, February 23, 12
17. Cyclomatic Complexity
M = E − N + 2P
E = the number of edges of the graph
N = the number of nodes of the graph
P = the number of connected components
Thursday, February 23, 12
18. Basis Path Testing
http://users.csc.calpoly.edu/~jdalbey/206/Lectures/BasisPathTutorial/index.html
Thursday, February 23, 12
19. Complexity
Conservation
“One of McCabe's original applications was to limit the complexity of
routines during program development; he recommended that
programmers should count the complexity of the modules they are
developing, and split them into smaller modules whenever the
cyclomatic complexity of the module exceeded 10.”
NO MORE THAN TEN GALLONS OF CYCLOMATIC
COMPLEXITY PER MODULE!!!!!
http://en.wikipedia.org/wiki/Cyclomatic_complexity#cite_note-mccabe76-2
Thursday, February 23, 12
20. Complexity &
Cohesion
“Our results support the idea that there is a relationship
between complexity and cohesion, basically that a lack of
cohesion is associated with high complexity”
Exploring the Relationship between Cohesion and Complexity - Stein, Cox, Etzkorn
- 2005
Thursday, February 23, 12
21. saikuro
http://saikuro.rubyforge.org/
Thursday, February 23, 12
26. Flog Method Reading Ease *
Score Notes
1-2 easily understood by an average Visual Basic developer
3-10 easily understood by PHP developers
10-20 best understood by Perl, Smalltalk, or Lisp developers
20+ rich hickey
* all totally contrived
Thursday, February 23, 12
27. flogtime
Not quite done, but a
fun quick hack
https://github.com/chad/flogtime
Thursday, February 23, 12
28. code coverage
https://github.com/colszowka/simplecov
Thursday, February 23, 12
29. code coverage
• C0 - every line executed
• C1 - every branch executed
• C2 - every code path across lines executed
It doesn’t matter which one. Only direction matters.
Thursday, February 23, 12
34. Bug Prediction at
Google
“Here at Google, we have thousands of
engineers working on our code base every
day. In fact, as previously noted, 50% of the
Google code base changes every month.”
http://google-engtools.blogspot.com/2011/12/bug-prediction-at-google.html
Thursday, February 23, 12
35. Bug Prediction at Google
https://github.com/igrigorik/bugspots
Thursday, February 23, 12
36. $> cd /your/git/repo
$> git bugspots -d 500
.. example output ..
Scanning /git/eventmachine repo
Found 31 bugfix commits, with 23 hotspots:
Fixes:
- Revert "Write maximum of 16KB of data to an SSL connection per tick (fixes #233)" for #273
- Do not close attached sockets (fixes #200)
- Write maximum of 16KB of data to an SSL connection per tick (fixes #233)
- Merge branch 'master' into close_schedule_fix
- Remove dependency on readbytes.rb for ruby 1.9 (fixes #167, #234)
- Fix compilation on MSVC2008 (fixes #253)
- EM::Deferrable#(callback|errback|timeout) now return self so you can chain them (closes #177)
- Make EventMachine::Connection#get_peername and #get_sockname valid for IPv6 (closes #132)
- reconnect DNS socket if closed
- Use String#bytesize in EM::Connection#send_datagram for 1.9 (closes #153)
Thursday, February 23, 12
43. graphite
Highly scalable open source real time
graphing engine.
http://graphite.wikidot.com/
Thursday, February 23, 12
44. statsd
Open source node-based daemon for
stats aggregation. UDP front-end for fault-
tolerance*.
Pushes aggregated stats into graphite.
https://github.com/etsy/statsd
Thursday, February 23, 12