Refactoring is altering the internal structure of code without changing its external behavior or functionality. It improves code quality by increasing readability and maintainability. Refactoring should be done continuously and in small increments to prevent breaking code. It requires knowledge of the codebase and unit tests to safeguard against unintended consequences. A rewrite completely replaces large portions of code, while refactoring preserves existing code and functionality through disciplined transformations.
OpenTuesday: Aktuelle Standards der agilen SoftwareentwicklungDigicomp Academy AG
Dieses OpenTuesday-Referat von Michael Palotas ging gezielt auf die sogenannten «Agile Engineering Practices» ein und zeigte anhand praktischer Beispiele auf, wie die Anwendung dieser Praktiken als Enabler für agile Softwareentwicklung fungieren.
Es gibt wohl kaum eine Firma, bei der agile Softwareentwicklung kein Thema ist. Viele Organisationen haben sich schon auf den Weg begeben, agil zu werden. Im ersten Schritt bedeutet dies in der Regel, die Prozesse auf eine agile Methodik wie z.B. SCRUM zu ändern.
Auf der Strecke bleiben jedoch oft die (agilen) Entwicklungs-, Test- und Liefermethoden wie Continuous Integration, Test-Automatisierung, Test Driven Development, Pair Programming etc., die eine agile Vorgehensweise erst richtig ermöglichen.
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...JKI
Slides from JKI's NIWeek 2012 technical session, "Fire and Forget: Bulletproof Builds Using Continuous Integration With LabVIEW," presented by Omar Mussa.
With continuous integration (CI), you never have to manually build code. A build server automatically builds the application when new code changes are checked in and sends reports when problems are encountered. Learn how JKI created an automated CI system for LabVIEW code using free, off-the- shelf tools.
OpenTuesday: Aktuelle Standards der agilen SoftwareentwicklungDigicomp Academy AG
Dieses OpenTuesday-Referat von Michael Palotas ging gezielt auf die sogenannten «Agile Engineering Practices» ein und zeigte anhand praktischer Beispiele auf, wie die Anwendung dieser Praktiken als Enabler für agile Softwareentwicklung fungieren.
Es gibt wohl kaum eine Firma, bei der agile Softwareentwicklung kein Thema ist. Viele Organisationen haben sich schon auf den Weg begeben, agil zu werden. Im ersten Schritt bedeutet dies in der Regel, die Prozesse auf eine agile Methodik wie z.B. SCRUM zu ändern.
Auf der Strecke bleiben jedoch oft die (agilen) Entwicklungs-, Test- und Liefermethoden wie Continuous Integration, Test-Automatisierung, Test Driven Development, Pair Programming etc., die eine agile Vorgehensweise erst richtig ermöglichen.
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...JKI
Slides from JKI's NIWeek 2012 technical session, "Fire and Forget: Bulletproof Builds Using Continuous Integration With LabVIEW," presented by Omar Mussa.
With continuous integration (CI), you never have to manually build code. A build server automatically builds the application when new code changes are checked in and sends reports when problems are encountered. Learn how JKI created an automated CI system for LabVIEW code using free, off-the- shelf tools.
NIWeek 2012: Secret Sauce / Tools to Make You a Better LabVIEW DeveloperJKI
Slides from JKI's NIWeek 2012 technical session, "Secret Sauce: Tools to Make You a Better LabVIEW Developer," presented by Justin Goeres.
If you could save one hour a day by working smarter, how much more value could you create and how much less stress would you feel? LabVIEW Champion Justin Goeres shows you how to manage your code, projects, and commitments using the same free and low-cost tools JKI engineers use.
A very big thank you to Michael Palotas from Grid Fusion & eBay International for taking the time and effort to travel across the globe to present at the Australian Test Managers Forum 2014. If you would like any information on TMF please email tmf@kjross.com.au
Introduction to Continuous Integration. Combining with Acceptance Test Driven Development, Test Driven Development, Showing how a developer in agile team does the work.
An introduction to code refactoring, the process of restructuring existing computer code without changing its external behavior. This keynote will also include common techniques of doing code refactoring, with real-code demonstration.
Антон Семенченко | (EPAM Systems, DPI.Solutions )Сравнительный анализ инстру...RIF-Technology
Доклад будет посвящен выбору инструментов Автоматизации Desktop-ных приложений. Какие критерии (22) выбора инструмента существуют, подмножество наиболее важных и интересных заказчику, «исполнителю», менеджеру. Какие инструменты (16) представлены сегодня на рынке? Сравнительные характеристики каждого из инструментов по 22 критериям. Также затронем тренды в Автоматизации тестирования Desktop-ных приложений.
Introduction to the fundamentals of eXtreme programming (XP). XP is a software development approach which stresses on improving software quality and respond according to changing business requirements.
CLA Summit 2013: Connecting LabVIEW to Everything ElseJKI
Slides from JKI's CLA Summit 2013 presentation, "Connecting LabVIEW to Everything Else," presented by Jim Kring.
Our consulting customers want the software we create to be “open,” in the sense that they need to integrate it into other business systems, or they need to use it from their own system development, or they just need to get data out in the way they want. This means providing an external API that users/clients can access – especially from tools other than LabVIEW. In this presentation from the Americas CLA Summit 2013, Jim Kring explains why external APIs are a fundamental part of professional software development, and explores how different types of APIs are useful at different stages of development all the way from proof-of-concept to final shipment.
This presentation is part of one of my webinar in clean code webinar series. The contents are slightly edited to share the information in public domain. In this presentation, I tried to provide detailed introduction to code refactoring practice.
This presentation will be useful for software architects/Managers,developers and QAs. Do share your feedback in comments.
NIWeek 2012: Secret Sauce / Tools to Make You a Better LabVIEW DeveloperJKI
Slides from JKI's NIWeek 2012 technical session, "Secret Sauce: Tools to Make You a Better LabVIEW Developer," presented by Justin Goeres.
If you could save one hour a day by working smarter, how much more value could you create and how much less stress would you feel? LabVIEW Champion Justin Goeres shows you how to manage your code, projects, and commitments using the same free and low-cost tools JKI engineers use.
A very big thank you to Michael Palotas from Grid Fusion & eBay International for taking the time and effort to travel across the globe to present at the Australian Test Managers Forum 2014. If you would like any information on TMF please email tmf@kjross.com.au
Introduction to Continuous Integration. Combining with Acceptance Test Driven Development, Test Driven Development, Showing how a developer in agile team does the work.
An introduction to code refactoring, the process of restructuring existing computer code without changing its external behavior. This keynote will also include common techniques of doing code refactoring, with real-code demonstration.
Антон Семенченко | (EPAM Systems, DPI.Solutions )Сравнительный анализ инстру...RIF-Technology
Доклад будет посвящен выбору инструментов Автоматизации Desktop-ных приложений. Какие критерии (22) выбора инструмента существуют, подмножество наиболее важных и интересных заказчику, «исполнителю», менеджеру. Какие инструменты (16) представлены сегодня на рынке? Сравнительные характеристики каждого из инструментов по 22 критериям. Также затронем тренды в Автоматизации тестирования Desktop-ных приложений.
Introduction to the fundamentals of eXtreme programming (XP). XP is a software development approach which stresses on improving software quality and respond according to changing business requirements.
CLA Summit 2013: Connecting LabVIEW to Everything ElseJKI
Slides from JKI's CLA Summit 2013 presentation, "Connecting LabVIEW to Everything Else," presented by Jim Kring.
Our consulting customers want the software we create to be “open,” in the sense that they need to integrate it into other business systems, or they need to use it from their own system development, or they just need to get data out in the way they want. This means providing an external API that users/clients can access – especially from tools other than LabVIEW. In this presentation from the Americas CLA Summit 2013, Jim Kring explains why external APIs are a fundamental part of professional software development, and explores how different types of APIs are useful at different stages of development all the way from proof-of-concept to final shipment.
This presentation is part of one of my webinar in clean code webinar series. The contents are slightly edited to share the information in public domain. In this presentation, I tried to provide detailed introduction to code refactoring practice.
This presentation will be useful for software architects/Managers,developers and QAs. Do share your feedback in comments.
Have you ever wondered how large software companies with an engineering culture make sure they are able to deliver software over and over to production? How do you coordinate 100+ software engineers so that there are no bottlenecks and quality is not compromised?
In this talk you will see how a Continuous Delivery system was implemented at Criteo, the fastest growing IT company in EMEA 2012. Before starting the project there were 160+ code repositories with dependency hell. They were being built independently and releases to production were error prone and painful. You will see the technical architecture behind a successful implementation of a Continuous Delivery system. The system was made up of a Gerrit code review tool connected to a Jenkins build pipeline, building 160 repositories with over 7M lines of code.
We will explore different architectural choices such as branching system, hot fixes, sandbox and pre-production environments, and how these were developed and used by the large R&D department.
Authors: Adrian Perreau de Pinninck, Manu Cupcic
Authors: Adrian Perreau de Pinninck, Manu Cupcic
Conference: CAS 2014 (Barcelona)
Have you ever wondered how large software companies with an engineering culture make sure they are able to deliver software over and over to production? How do you coordinate 100+ software engineers so that there are no bottlenecks and quality is not compromised?
In this talk you will see how a Continuous Delivery system was implemented at Criteo, the fastest growing IT company in EMEA 2012. Before starting the project there were 160+ code repositories with dependency hell. They were being built independently and releases to production were error prone and painful. You will see the technical architecture behind a successful implementation of a Continuous Delivery system. The system was made up of a Gerrit code review tool connected to a Jenkins build pipeline, building 160 repositories with over 7M lines of code.
We will explore different architectural choices such as branching system, hot fixes, sandbox and pre-production environments, and how these were developed and used by the large R&D department.
Release software is no less important than activities that precede it.
The Continuous Delivery is a set of practices and methodologies that build an ecosystem for the software development lifecycle.
We will see how to build this ecosystem around the applications developed, for which this release activities becomes a low-risk, inexpensive, fast and predictable.
One of the most boring thing in software development in large companies is following a bureaucracy. Tons of developers were melted down by that ruthless machine with its not always obvious rules. That’s why we decided to delegate all the boring work to machines instead of humans and the talk will cover the achieved results.
Software quality is critical to consistently and continually delivering new features to our users. This talk covers the importance of software quality and how to deliver it via unit testing, Test Driven Development and clean code in general.
This is the deck from a talk I gave at Desert Code Camp 2013.
Developers spend up to 20% of their time writing repetitive code that machines could generate more reliably. This presentation explores the problem of duplicated source code that stems from manual implementation of patterns and reveals how to automate the boring side of programming and get a 19x ROI.
The presentation provides insight into:
- the problem of manual implementation of patterns, resulting in boilerplate code
- the cost of boilerplate for companies
- existing technologies for pattern automation
- the key reasons to consider pattern-aware compiler extensions
The white paper was written for CTOs, software architects and senior developers in software-driven organizations—specifically in financial, insurance, healthcare, energy and IT industries that typically write a lot of repetitive code.
We've all been faced with legacy code and often decided to rewrite, feeling it will be easier. There are many reasons this can be wrong. Adam Culp will talks about the entire journey of refactoring a legacy code base. He will begin with assessment and why, move on to planning how and when, cover execution and testing, give step-by-step examples, and even show how to manage the process effectively. Attendees will gain insight and tips on how to handle their own pile of code and refactor happy.
The presentation deals with the special use cases of Vue.js, contains an overview of existing solutions like React, Angular and compare them on a high level, shows in which cases Vue.js can boost developers productivity.
This presentation by Igor Nesterenko (Lead Software Engineer, Consultant, GlobalLogic Kharkiv) was delivered at GlobalLogic Kharkiv JS TechTalk on December 18, 2017.
These are the slides of the symfony 1.4 workshop I did at Symfony Day Cologne 2010. Not sure how useful they are for people (since the workshop was more about actually developing something), but perhaps it can help someone get started.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
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.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
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.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
4. About me
Professional Services Consultant at Ibuildings
10 years of PHP experience
PHP auto didact
married, 2 kids, 6 cats, a bunch of fish
Apple lover
music addict
symfony advocate
4
6. Refactoring is a disciplined technique for restructuring
an existing body of code, altering its internal structure
without changing its external behavior. Its heart is a
series of small behavior preserving transformations.
Each transformation (called a 'refactoring') does little,
but a sequence of transformations can produce a
significant restructuring. Since each refactoring is small,
it's less likely to go wrong. The system is also kept fully
working after each small refactoring, reducing the
chances that a system can get seriously broken during
the restructuring.
(Martin Fowler - Refactoring.com)
6
7. Code refactoring is the process of changing a computer
program's code to make it amenable to change,
improve its readability, or simplify its structure, while
preserving its existing functionality.
(Wikipedia)
7
8. What
Code refactoring is the process of changing a computer
program's internal structure without modifying its
external behavior or existing functionality.
8
9. Why
This is usually done to improve code readability, simplify
code structure, change code to adhere to a given
programming paradigm, improve maintainability, or
improve extensibility.
9
14. Rewrite
A rewrite in computer programming is the act or result of
re-implementing a large portion of existing functionality
without re-use of its source code. When the rewrite is not
using existing code at all, it is common to speak of a
rewrite from scratch. When instead only parts are re-
engineered, which have otherwise become complicated to
handle or extend, then it is more precise to speak of code
refactoring.
(Wikipedia)
14
15. Refactor vs Rewrite
Refactor whenever it is possible
Big change? Try to cut it into smaller units
Still have to break the API? Go ahead, and rewrite!
Don’t take the decision in 5 minutes
15
16. Refactor vs Rewrite
Refactoring takes less effort
Nice for you
Better for the quality of your work
Breaking the API is more work
Ensure all calling code is altered as well
Update your unit tests
Update your documentation
16
19. Codebase knowledge
Know what to change quickly
Be aware of your changes
Be aware of impact of your changes on other components
19
20. Structured API
Refactoring DOES NOT REPLACE design!
You need a good API that allows internal changes
Additions to existing API’s should not change existing API
Keep small “units”
20
21. Unit testing
Unit testing is your first point of QA
They safeguard you from unexpected side effects
Test - Change - Test
21
23. Two moments of refactoring
Big chunks
Continuous refactoring
23
24. Big Chunks
As you encounter problems, you keep track
• Ticketing system
• TODO list
• Inline comments
Schedule one or more moments in your project
• Work through your list
• Refactor them
24
25. Big Chunks work?
Advantages
• Set times for refactoring
• Focus on your project when you need to
• Works well for functional changes
Disadvantages
• Refactoring gets cancelled first with tight deadlines
• You may have forgotten specific solutions already
25
27. Continuous Refactoring works?
Advantages
• No need to schedule seperate time
• Continuous improvement of your code
Disadvantages
• Danger of losing the balance between tasks and refactoring
27
35. Some tips and tricks
Write unit tests before you start refactoring
Code documentation (phpDoc) is your friend
Don’t trust your IDE’s refactoring options
35
36. Looking back
What is refactoring?
Why do we want to refactor?
Is it the holy grail?
Refactoring vs Rewriting
Requirements
How to do it
Tips and tricks
36