How a migration to MicroServices could change the team, architecture and coding culture. What you could you do and how you could transform a "Jurassic Park" into a lightweight environment. In this talk we will explore the strategy, techniques, pattern and tools I used to transform a team and the architecture that was grown over 15yrs. This will be a mix of pattern, tools and techniques that was able to migrate old systems, used inside insurance and banks. We had to migrate fat systems with a few million lines of code...
The document discusses the evolution of asynchronous programming in Java. It covers early approaches using threads and executors, and the introduction of futures in Java 5 to simplify asynchronous programming. However, futures had limitations as their methods were blocking. The document discusses how other languages addressed this using callbacks and promises for non-blocking asynchronous code. It highlights how Java 8 introduced completable futures to provide a similar promise-based approach.
Building A Production-Level Machine Learning PipelineRobert Dempsey
With so many options to choose from how do you select the right technologies to use for your machine learning pipeline? Do you purchase bare metal and hire a devops team, install Spark on EC2 instances, use EMR and other AWS services, combine Spark and Elasticsearch?! View this talk to get a first-hand experience of building ML pipelines: what options were looked at, how the final solution was selected, the tradeoffs made and the final results.
In just over a year, siroop's engineering teams went from ever more painful releases to 100s of fast and safe production deployments per day. This presentation provides some insights into how this journey unfolded and highlights some of the systemic, cultural and technological changes that were part of it.
DevOps/Flow workshop for agile india 2015Yuval Yeret
This document discusses implementing DevOps flow by leveraging lean/agile practices across development, deployment, and operations. It emphasizes establishing continuous integration and delivery workflows to enable frequent, reliable releases through automation. Kanban techniques are presented as a way to visualize work and limit work-in-progress to improve collaboration between teams.
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...Roberto Pérez Alcolea
It is well known that organizations connect software testing with software quality: making sure that the code does what it supposed to do.
Unfortunately, many organizations believe that testing is a slow process that causes stagnancy in the project. Organizations say that due to slow testing process they are not able to meet set milestones, but it doesn’t have to be this way.
The testing stage is also part of the developer experience, and making it such that engineers are productive and continue delivering software not only fast but with confidence is crucial.
In this talk, we will explore a few approaches that we are taking in order to deliver a more consistent and delightful testing experience for JVM engineers at Netflix. The end goal: speed up engineers’ feedback loop by running tests locally constantly as much as possible.
For numerous large enterprises, the alignment of hardware and software processes is critical to managing an Agile environment. Agile Hardware implementations can be put in place by using the same framework as our typical Agile Software Development transformations. Start off with assessing the organization’s current state, then move to planning and preparing by and putting together a transition backlog, start execution with training and coaching, spread the cultural shift with change management and maintain and scale the transformation.
Technology and Digital Platform | 2019 partner summitAndrew Kumar
Technology: Andrew Kumar will share a refresher of our technology standards, documentation while highlighting what is changing in 2019 in the reference architecture and starter kits.
Digital Platform: Andrew Kumar will follow tech and design updates with a refresher on why the digital platform matters, what exists in the digital platform, what is being worked on, and what is coming next as we co-create value, save team member effort, and improve speed to market with investments in the digital platform.
The document discusses the evolution of asynchronous programming in Java. It covers early approaches using threads and executors, and the introduction of futures in Java 5 to simplify asynchronous programming. However, futures had limitations as their methods were blocking. The document discusses how other languages addressed this using callbacks and promises for non-blocking asynchronous code. It highlights how Java 8 introduced completable futures to provide a similar promise-based approach.
Building A Production-Level Machine Learning PipelineRobert Dempsey
With so many options to choose from how do you select the right technologies to use for your machine learning pipeline? Do you purchase bare metal and hire a devops team, install Spark on EC2 instances, use EMR and other AWS services, combine Spark and Elasticsearch?! View this talk to get a first-hand experience of building ML pipelines: what options were looked at, how the final solution was selected, the tradeoffs made and the final results.
In just over a year, siroop's engineering teams went from ever more painful releases to 100s of fast and safe production deployments per day. This presentation provides some insights into how this journey unfolded and highlights some of the systemic, cultural and technological changes that were part of it.
DevOps/Flow workshop for agile india 2015Yuval Yeret
This document discusses implementing DevOps flow by leveraging lean/agile practices across development, deployment, and operations. It emphasizes establishing continuous integration and delivery workflows to enable frequent, reliable releases through automation. Kanban techniques are presented as a way to visualize work and limit work-in-progress to improve collaboration between teams.
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...Roberto Pérez Alcolea
It is well known that organizations connect software testing with software quality: making sure that the code does what it supposed to do.
Unfortunately, many organizations believe that testing is a slow process that causes stagnancy in the project. Organizations say that due to slow testing process they are not able to meet set milestones, but it doesn’t have to be this way.
The testing stage is also part of the developer experience, and making it such that engineers are productive and continue delivering software not only fast but with confidence is crucial.
In this talk, we will explore a few approaches that we are taking in order to deliver a more consistent and delightful testing experience for JVM engineers at Netflix. The end goal: speed up engineers’ feedback loop by running tests locally constantly as much as possible.
For numerous large enterprises, the alignment of hardware and software processes is critical to managing an Agile environment. Agile Hardware implementations can be put in place by using the same framework as our typical Agile Software Development transformations. Start off with assessing the organization’s current state, then move to planning and preparing by and putting together a transition backlog, start execution with training and coaching, spread the cultural shift with change management and maintain and scale the transformation.
Technology and Digital Platform | 2019 partner summitAndrew Kumar
Technology: Andrew Kumar will share a refresher of our technology standards, documentation while highlighting what is changing in 2019 in the reference architecture and starter kits.
Digital Platform: Andrew Kumar will follow tech and design updates with a refresher on why the digital platform matters, what exists in the digital platform, what is being worked on, and what is coming next as we co-create value, save team member effort, and improve speed to market with investments in the digital platform.
Who Is A DevOps Engineer? | DevOps Skills You Must Master | DevOps Engineer M...Edureka!
** DevOps Engineer Masters Program: https://www.edureka.co/masters-program/devops-engineer-training **
This Edureka PPT on "DevOps Engineer" will explain what does it take to become a successful DevOps Engineer, and what industries are looking for in a DevOps Professional. We have included various DevOps job roles that you can apply for. Below are the topics included in the PPT:
1. Who is a DevOps Engineer?
2. DevOps Engineer Skills
3. DevOps Engineer Job Description
4. DevOps Masters Course At Edureka
Follow us to never miss an update in the future.
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
TJ Randall, VP of Customer Success at XebiaLabs, gives his presentation on how to express the cost of your application delivery at the DevOps Leadership Summit in Boston MA.
This document summarizes the role of a Site Reliability Engineer (SRE) at Criteo. It discusses how Criteo embraced a DevOps philosophy by breaking down barriers between development and operations teams. SREs at Criteo work in small, specialized teams to maintain infrastructure and platforms while also providing support, automation, and on-call responsibilities. Their goal is to enable development teams through ownership of the services they provide and collaboration across organizational boundaries.
Startups are continually evangelizing DevOps to be able to reduce risk, hasten feedback and deploy 1000’s of times a day. But what about the rest of the world that comes from Waterfall, Mainframes, Long Release Cycles and Risk Aversion? Learn how one company went from 480 day lead times and 6 month releases to 3 month releases with high levels of automation and increased quality across disparate legacy environments. We will discuss how Optimizing People & Organizations, Increasing the Rate of Learning, Deploying Innovative Tools and Lean System Thinking can help large scale enterprises increase throughput while decreasing cost and risk.
DOES14 - David Ashman, Blackboard Learn - Keep Your Head in the Clouds Tuesda...DevOps Enterprise Summmit
Blackboard transitioned from an on-premise enterprise software model to a cloud-based model through DevOps practices like automation, cloud infrastructure, and cultural changes. Previously, Blackboard had long development cycles of 6 months, high failure rates during testing, and poor communication between teams. By adopting automation, provisioning all environments through code in the cloud, and empowering developers, Blackboard reduced lead times to 1-2 weeks and gave developers visibility into production issues.
DOES14 - David Ashman - Blackboard Learn - Keep Your Head in the CloudsGene Kim
Blackboard, a provider of educational technology software, transitioned from an on-premise model to a cloud-based model through DevOps practices. They faced issues like long development cycles, poor communication between teams, and high failure rates during testing. By adopting automation, using cloud infrastructure, and shifting their culture, Blackboard was able to reduce lead times, improve feedback loops, and have developers take ownership of production issues. This included fully automating their testing pipeline, standardizing deployments across environments, and gaining executive support for cultural changes.
DevOpsGuys FutureDecoded 2016 - is DevOps the AnswerDevOpsGroup
This document provides information about DevOps and digital transformation. It discusses how DevOps can help organizations transform by moving from traditional command and control models to more collaborative and iterative approaches. A DevOps operating model is proposed that uses multi-disciplinary product delivery teams and platform teams to continuously deliver value to customers. Microsoft tools that can support a DevOps transformation are also highlighted. The document concludes by demonstrating how to deploy a Docker container cluster on Azure using DevOps techniques.
This document discusses various techniques for estimating software project costs, schedules, and sizes. It covers function point analysis, lines of code estimation, productivity models like COCOMO, and probabilistic techniques like PERT estimation. Key approaches mentioned include analogies, decomposition, mathematical models, mean schedule dates, and probability distributions.
The NRB Group mainframe day 2021 - DevOps on Z - Jerome Klimm - Benoit EbnerNRB
This document discusses approaches to implementing DevOps practices on the mainframe. It addresses cultural, technical, and organizational considerations, including modernizing developer tools, integrating source control management, and using metrics to measure productivity. A case study describes installing ISPW source control to reduce compilation and enable automated deployments. The document advocates treating the mainframe like other platforms by integrating it into enterprise-wide deployments.
This document provides an overview of using TensorFlow and Quarkus to build intelligent applications that serve machine learning models. It begins with an introduction and agenda. It then discusses TensorFlow and how it can be used to build and train machine learning models. It demonstrates how a TensorFlow model can be served using Quarkus and consumed via HTTP requests. The technical benefits of serving models with Quarkus are described. Finally, use cases, additional resources, and a Q&A section are outlined.
Metrics-Driven DevOps discusses how Dynatrace has shifted to continuous delivery of software using a DevOps approach. Some key points:
- Dynatrace has moved to releasing major updates 26 times per year with 170 production deployments daily, up from a previous model of major releases every 6 months.
- They implemented practices like continuous integration/delivery, performance testing pipelines, and monitoring of production metrics to optimize lead time and catch issues earlier.
- Dynatrace uses its own products to monitor pipelines and applications, enabling teams to get feedback and fail builds quickly when issues arise.
- Culture change and collaboration across teams was important to align engineers as the company transformed practices to support continuous delivery at
Automate across Platform, OS, Technologies with TaaSAnand Bagmar
Slides and link to audio from my talk + demo on how to "Automation across Platform, OS, Technologies with TaaS" at Agile India 2014, Bangalore on 1st March 2014
Jan de Vries - How to convince your boss that it is DevOps that he wantsAgile Lietuva
- We all know that we could implement DevOps a lot faster if we only would have commitment from our boss. We all know that there is a shiny business case for almost every DevOps implementation
- And we all know that the whole company will reap the benefits regarding speed, agility and stability once we implemented DevOps. Actually, it provides good, fast and cheap at the same time. So, what are we waiting for? What is your boss waiting for? What is C-level waiting for?
- That’s something we will do research on in this workshop. We will also share our research on this from the recent past.
- The workshop starts with a presentation about 7 practices that a company should adopt to be able to apply DevOps.
- The technique that we use is called Appreciative Inquiry. To tackle a problem, it discovers the best practices that work, the reason they work and how these combined practices can be used to avoid the problem ahead and create a strategic change. The aim is to build – or even rebuild – organizations around what works, rather than trying to fix what doesn’t.
- So we want to know what your boss is afraid of and what you have already tried to convince him that he is better off with DevOps. You will leave the workshop with the combined Appreciative Inquiry insights of all the attendees
This document outlines the agenda and objectives for a DevOps transformation workshop. The workshop will cover DevOps foundations, including value stream mapping exercises. It will define DevOps and discuss how to map the current software delivery lifecycle. Key aspects like cycle time, bottlenecks, wait times and processing times will be examined. The workshop aims to help organizations identify inefficiencies and develop future state solutions to reduce cycle times and implement DevOps best practices.
That DevOps and Agile bring benefit is self-evident; these slides explore how the key benefits can be quantified such that a business case can be built.
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Marcin Grzejszczak
“I have stopped counting how many times I’ve done this from scratch” - was one of the responses to the tweet about starting the project called Spring Cloud Pipelines. Every company sets up a pipeline to take code from your source control, through unit testing and integration testing, to production from scratch. Every company creates some sort of automation to deploy its applications to servers. Enough is enough - time to automate that and focus on delivering business value.
In this presentation, we’ll go through the contents of the Spring Cloud Pipelines project. We’ll start a new project for which we’ll have a deployment pipeline set up in no time. We’ll deploy to Cloud Foundry and check if our application is backward compatible so that we can roll it back on production.
The document discusses implementing research and development (RnD) teams in enterprises. It begins by defining different types of RnD, including scientific, industrial, and IT RnD. It then discusses important considerations for top management in establishing a successful RnD program, including committing to consume RnD deliverables and establishing an RnD committee and processes. The document outlines the lifecycle of an RnD project from MVP to product development. It provides guidance on setting up effective RnD teams and processes, such as prioritizing MVPs, establishing roles like the RnD lead, and ensuring a smooth handoff to product teams.
This document discusses the benefits of continuous deployment and standardized deployment pipelines. It advocates for automating deployments to reduce errors and provide faster feedback. Integrating contract and integration tests into build pipelines allows failures to be detected early. Using approaches like Cloud Foundry and standardized tools allows deployments to different environments to be consistent. Contract tests catch integration issues during builds rather than later stages. Rollbacks should focus on rolling back the application rather than the database to simplify the process. Frequent, automated deployments and early testing are presented as best practices for deployment pipelines.
This document provides an overview of testing methods for mainframe applications. It discusses how testing needs have changed from the past where testing involved examining batch job outputs or online screen outputs, to modern approaches like test automation, virtualization, and DevOps. It covers different levels of testing maturity and factors to consider when planning tests. Black box and white box testing techniques are described, such as model-based testing, use case testing, and debugging. The presentation emphasizes the importance of testing to ensure stability, reliability, and compliance with changing requirements.
Automate across Platform, OS, Technologies with TaaSThoughtworks
"TaaS" is an open-source product that allows you do achieve the "correct" way of doing integration testing across a variety of products via Test Automation.
Typically in organizations, there are multiple projects / products. Many organizations like to have a common Test Automation solution across these products in an effort to standardize the framework.
However, this is not a good idea! Each product should be tested using the tools and technologies that are "right" for it. Yet - these different products talk with each other and you need to test the integration between them in an automated way.
JUnit5 Custom TestEngines intro - version 2020-06Sven Ruppert
JUnit5 has been out for some time now, but what are the hidden pearls you can find inside the new Junit Platform? This session explores the possibilities, from @Test over custom extensions up to your own TestEngine. The presentation shows you how to manage a full-stack test in different flavours, based on the JUnit5 possibilities. The main focus is on the development of a custom TestEngine to support project-specific needs. After this, you’ll have all the bits and bytes you need for starting your journey with JUnit5.
Hidden pearls for High-Performance-PersistenceSven Ruppert
Small UseCases with a significant amount of data for internal company usage, most developers had this in their career, already. However, no Ops Team, no Kubernetes, no Cluster is available as part of the solution.
In this talk, I will show a few tech stacks that are helping to deal with persistent data without dealing with the classic horizontal scaling tech monsters like Kubernetes, Hadoop and many more.
Sit down, relax and enjoy the journey through a bunch of lightning-fast persistence alternatives for pure java devs.
Who Is A DevOps Engineer? | DevOps Skills You Must Master | DevOps Engineer M...Edureka!
** DevOps Engineer Masters Program: https://www.edureka.co/masters-program/devops-engineer-training **
This Edureka PPT on "DevOps Engineer" will explain what does it take to become a successful DevOps Engineer, and what industries are looking for in a DevOps Professional. We have included various DevOps job roles that you can apply for. Below are the topics included in the PPT:
1. Who is a DevOps Engineer?
2. DevOps Engineer Skills
3. DevOps Engineer Job Description
4. DevOps Masters Course At Edureka
Follow us to never miss an update in the future.
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
TJ Randall, VP of Customer Success at XebiaLabs, gives his presentation on how to express the cost of your application delivery at the DevOps Leadership Summit in Boston MA.
This document summarizes the role of a Site Reliability Engineer (SRE) at Criteo. It discusses how Criteo embraced a DevOps philosophy by breaking down barriers between development and operations teams. SREs at Criteo work in small, specialized teams to maintain infrastructure and platforms while also providing support, automation, and on-call responsibilities. Their goal is to enable development teams through ownership of the services they provide and collaboration across organizational boundaries.
Startups are continually evangelizing DevOps to be able to reduce risk, hasten feedback and deploy 1000’s of times a day. But what about the rest of the world that comes from Waterfall, Mainframes, Long Release Cycles and Risk Aversion? Learn how one company went from 480 day lead times and 6 month releases to 3 month releases with high levels of automation and increased quality across disparate legacy environments. We will discuss how Optimizing People & Organizations, Increasing the Rate of Learning, Deploying Innovative Tools and Lean System Thinking can help large scale enterprises increase throughput while decreasing cost and risk.
DOES14 - David Ashman, Blackboard Learn - Keep Your Head in the Clouds Tuesda...DevOps Enterprise Summmit
Blackboard transitioned from an on-premise enterprise software model to a cloud-based model through DevOps practices like automation, cloud infrastructure, and cultural changes. Previously, Blackboard had long development cycles of 6 months, high failure rates during testing, and poor communication between teams. By adopting automation, provisioning all environments through code in the cloud, and empowering developers, Blackboard reduced lead times to 1-2 weeks and gave developers visibility into production issues.
DOES14 - David Ashman - Blackboard Learn - Keep Your Head in the CloudsGene Kim
Blackboard, a provider of educational technology software, transitioned from an on-premise model to a cloud-based model through DevOps practices. They faced issues like long development cycles, poor communication between teams, and high failure rates during testing. By adopting automation, using cloud infrastructure, and shifting their culture, Blackboard was able to reduce lead times, improve feedback loops, and have developers take ownership of production issues. This included fully automating their testing pipeline, standardizing deployments across environments, and gaining executive support for cultural changes.
DevOpsGuys FutureDecoded 2016 - is DevOps the AnswerDevOpsGroup
This document provides information about DevOps and digital transformation. It discusses how DevOps can help organizations transform by moving from traditional command and control models to more collaborative and iterative approaches. A DevOps operating model is proposed that uses multi-disciplinary product delivery teams and platform teams to continuously deliver value to customers. Microsoft tools that can support a DevOps transformation are also highlighted. The document concludes by demonstrating how to deploy a Docker container cluster on Azure using DevOps techniques.
This document discusses various techniques for estimating software project costs, schedules, and sizes. It covers function point analysis, lines of code estimation, productivity models like COCOMO, and probabilistic techniques like PERT estimation. Key approaches mentioned include analogies, decomposition, mathematical models, mean schedule dates, and probability distributions.
The NRB Group mainframe day 2021 - DevOps on Z - Jerome Klimm - Benoit EbnerNRB
This document discusses approaches to implementing DevOps practices on the mainframe. It addresses cultural, technical, and organizational considerations, including modernizing developer tools, integrating source control management, and using metrics to measure productivity. A case study describes installing ISPW source control to reduce compilation and enable automated deployments. The document advocates treating the mainframe like other platforms by integrating it into enterprise-wide deployments.
This document provides an overview of using TensorFlow and Quarkus to build intelligent applications that serve machine learning models. It begins with an introduction and agenda. It then discusses TensorFlow and how it can be used to build and train machine learning models. It demonstrates how a TensorFlow model can be served using Quarkus and consumed via HTTP requests. The technical benefits of serving models with Quarkus are described. Finally, use cases, additional resources, and a Q&A section are outlined.
Metrics-Driven DevOps discusses how Dynatrace has shifted to continuous delivery of software using a DevOps approach. Some key points:
- Dynatrace has moved to releasing major updates 26 times per year with 170 production deployments daily, up from a previous model of major releases every 6 months.
- They implemented practices like continuous integration/delivery, performance testing pipelines, and monitoring of production metrics to optimize lead time and catch issues earlier.
- Dynatrace uses its own products to monitor pipelines and applications, enabling teams to get feedback and fail builds quickly when issues arise.
- Culture change and collaboration across teams was important to align engineers as the company transformed practices to support continuous delivery at
Automate across Platform, OS, Technologies with TaaSAnand Bagmar
Slides and link to audio from my talk + demo on how to "Automation across Platform, OS, Technologies with TaaS" at Agile India 2014, Bangalore on 1st March 2014
Jan de Vries - How to convince your boss that it is DevOps that he wantsAgile Lietuva
- We all know that we could implement DevOps a lot faster if we only would have commitment from our boss. We all know that there is a shiny business case for almost every DevOps implementation
- And we all know that the whole company will reap the benefits regarding speed, agility and stability once we implemented DevOps. Actually, it provides good, fast and cheap at the same time. So, what are we waiting for? What is your boss waiting for? What is C-level waiting for?
- That’s something we will do research on in this workshop. We will also share our research on this from the recent past.
- The workshop starts with a presentation about 7 practices that a company should adopt to be able to apply DevOps.
- The technique that we use is called Appreciative Inquiry. To tackle a problem, it discovers the best practices that work, the reason they work and how these combined practices can be used to avoid the problem ahead and create a strategic change. The aim is to build – or even rebuild – organizations around what works, rather than trying to fix what doesn’t.
- So we want to know what your boss is afraid of and what you have already tried to convince him that he is better off with DevOps. You will leave the workshop with the combined Appreciative Inquiry insights of all the attendees
This document outlines the agenda and objectives for a DevOps transformation workshop. The workshop will cover DevOps foundations, including value stream mapping exercises. It will define DevOps and discuss how to map the current software delivery lifecycle. Key aspects like cycle time, bottlenecks, wait times and processing times will be examined. The workshop aims to help organizations identify inefficiencies and develop future state solutions to reduce cycle times and implement DevOps best practices.
That DevOps and Agile bring benefit is self-evident; these slides explore how the key benefits can be quantified such that a business case can be built.
Continuous Deployment To The Cloud With Spring Cloud Pipelines @WarsawCloudNa...Marcin Grzejszczak
“I have stopped counting how many times I’ve done this from scratch” - was one of the responses to the tweet about starting the project called Spring Cloud Pipelines. Every company sets up a pipeline to take code from your source control, through unit testing and integration testing, to production from scratch. Every company creates some sort of automation to deploy its applications to servers. Enough is enough - time to automate that and focus on delivering business value.
In this presentation, we’ll go through the contents of the Spring Cloud Pipelines project. We’ll start a new project for which we’ll have a deployment pipeline set up in no time. We’ll deploy to Cloud Foundry and check if our application is backward compatible so that we can roll it back on production.
The document discusses implementing research and development (RnD) teams in enterprises. It begins by defining different types of RnD, including scientific, industrial, and IT RnD. It then discusses important considerations for top management in establishing a successful RnD program, including committing to consume RnD deliverables and establishing an RnD committee and processes. The document outlines the lifecycle of an RnD project from MVP to product development. It provides guidance on setting up effective RnD teams and processes, such as prioritizing MVPs, establishing roles like the RnD lead, and ensuring a smooth handoff to product teams.
This document discusses the benefits of continuous deployment and standardized deployment pipelines. It advocates for automating deployments to reduce errors and provide faster feedback. Integrating contract and integration tests into build pipelines allows failures to be detected early. Using approaches like Cloud Foundry and standardized tools allows deployments to different environments to be consistent. Contract tests catch integration issues during builds rather than later stages. Rollbacks should focus on rolling back the application rather than the database to simplify the process. Frequent, automated deployments and early testing are presented as best practices for deployment pipelines.
This document provides an overview of testing methods for mainframe applications. It discusses how testing needs have changed from the past where testing involved examining batch job outputs or online screen outputs, to modern approaches like test automation, virtualization, and DevOps. It covers different levels of testing maturity and factors to consider when planning tests. Black box and white box testing techniques are described, such as model-based testing, use case testing, and debugging. The presentation emphasizes the importance of testing to ensure stability, reliability, and compliance with changing requirements.
Automate across Platform, OS, Technologies with TaaSThoughtworks
"TaaS" is an open-source product that allows you do achieve the "correct" way of doing integration testing across a variety of products via Test Automation.
Typically in organizations, there are multiple projects / products. Many organizations like to have a common Test Automation solution across these products in an effort to standardize the framework.
However, this is not a good idea! Each product should be tested using the tools and technologies that are "right" for it. Yet - these different products talk with each other and you need to test the integration between them in an automated way.
Similar to From Mess To Masterpiece - JFokus 2017 (20)
JUnit5 Custom TestEngines intro - version 2020-06Sven Ruppert
JUnit5 has been out for some time now, but what are the hidden pearls you can find inside the new Junit Platform? This session explores the possibilities, from @Test over custom extensions up to your own TestEngine. The presentation shows you how to manage a full-stack test in different flavours, based on the JUnit5 possibilities. The main focus is on the development of a custom TestEngine to support project-specific needs. After this, you’ll have all the bits and bytes you need for starting your journey with JUnit5.
Hidden pearls for High-Performance-PersistenceSven Ruppert
Small UseCases with a significant amount of data for internal company usage, most developers had this in their career, already. However, no Ops Team, no Kubernetes, no Cluster is available as part of the solution.
In this talk, I will show a few tech stacks that are helping to deal with persistent data without dealing with the classic horizontal scaling tech monsters like Kubernetes, Hadoop and many more.
Sit down, relax and enjoy the journey through a bunch of lightning-fast persistence alternatives for pure java devs.
Vaadin Flow - How to start - a short intro for Java DevsSven Ruppert
Do you want to write a web application with Core Java? Then you are exactly right here. With Core Java and Vaadin Flow, we will develop a web application from the ground up in this session. We will only use Java, HTML and CSS will not be used during programming. The result, however, will be a web-based application based on web-components that meets the latest standards.
Functional Reactive With Core Java - Voxxed MelbourneSven Ruppert
There are a lot of reactive frameworks in the field, some with functional languages for the JVM. But Java9 give you both. But how you could combine this and use this without adding the next big framework to your project? We will have a Core Java journey to explore a lot of nice possibilities based on the the JDK.
Functional Reactive with Core Java - Workshop - SlidesSven Ruppert
The theme of this workshop is to learn the latest Java features, with an emphasis on picking up a couple of paradigms along the way - namely Functional Reactive Programming and how this fits in with the latest Java releases.
There are a lot of reactive frameworks in the field, some with functional languages for the JVM. But Java9 give you both. But how you could combine this and use this without adding the next big framework to your project? We will have a Core Java journey to explore a lot of nice possibilities based on the the JDK.
How a migration to MicroServices could change the team, architecture and coding culture.
What you could you do and how you could transform a "Jurassic Park" into a lightweight environment.
In this talk we will explore the strategy, techniques, pattern and tools I used to
transform a team and the architecture that was grown over 15yrs.
This will be a mix of pattern, tools and techniques that was able to migrate
old systems, used inside insurance and banks.
The document discusses mutation testing as a way to write better unit tests. Mutation testing involves making small changes or "mutations" to the production code and then running the test suite to see if the tests can detect the changes, or "kill" the mutations. It is recommended to generate mutants, run the unit tests, check the reports, and write more or improved tests until reaching a quality target where most or all mutants are killed. Different types of common code mutations are discussed such as replacing operators, variables, or removing conditionals. The goal of mutation testing is to help write a test suite that can detect as many small defects as possible in the code.
Dependency Injection is now part of nearly every Java project. But what is the difference between DI and CDI. How to decide what I could use better, what frameworks are available and what are the differences for me as a programmer? What could be an option for the IoT-, Desktop- or Webproject?
In this talk we will get an overview over different frameworks and how they are working. We are not checking the well known big one only, but we are looking at some small sometimes specialized implementations.
CDI (Context Dependency Injection) ermöglicht es dem Entwickler skalierbare und flexible Architekturen aufzubauen die auf einem Java(EE) Server als auch auf dem Desktop laufen. Wie aber sollten DesignPattern aufgebaut werden unter Verwendung von CDI? Was für einen Einfluss hat Java 8 auf die DesignPattern, wie wird es mit der neuen Streams API kombiniert?
Höhepunkt ist die Kombination von klassischen Reflection-Einsatzgebieten wie z.B. dynamic Proxies mit CDI und Cross-Language Injections.
Everybody knows the pattern proxy, but how can you use it effectively?
What kind of proxy patterns are available, and how can you
build patterns more effectively with it? Why is reflection needed for this?
Importantly, we need only the core JDK in most cases.
This tutorial starts from the basics and continues on to
DynamicProxies, DynamicObjectAdapter and DynamicStaticProxies at runtime, StaticObjectAdapters, and more.
The session, based on the German book Dynamic Proxies,
by Heinz Kabutz and the session’s presenter, takes a deep dive into this pattern group.
The document discusses testing JavaFX applications using TestFX and JUnit. It provides a simple "Hello World" JavaFX application example and extracts the application logic into separate classes that can be tested independently. This allows testing the logic with JUnit unit tests while avoiding the need to launch the full JavaFX application. The document also recommends using JMH microbenchmarks to test the performance of application services as part of a Test Driven Development approach.
http://www.jug.ch/html/events/2014/javafx_jumpstart.html
JavaFX - nun endlich ist es soweit. Swing ist offiziell seit Java8 im reinen Wartungsmodus, JavaFX ist der Nachfolger und nun endlich Teil des JDK. Also alles deutet auf neue Zeiten in der Desktopentwicklung hin.. ABER..
Wie kann ich mit JavaFX beginnen?
Wie kann ich es mit Swing Projekten kombinieren?
Gibt es Test-Tools?
Wie beginne ich mit der Migration von Swing auf JavaFX?
Diese oder ähnliche Fragen stellen sich zu Beginn der Arbeit mit JavaFX
Wir werden uns den Start mit JavaFX, Werkzeuge wie TestFX und Kombinationen mit CDI und Swing ansehen.
Proxy Deep Dive JUG Saxony Day 2015-10-02Sven Ruppert
Ein wenig über Proxy´s. Wer mehr Hintergrundinfos dazu haben möchte, empfehle ich das Buch von Dr. Kabutz und mir :
http://www.amazon.de/Dynamic-Proxies-Dr-Heinz-Kabutz/dp/3868021531/ref=asap_bc?ie=UTF8
At this talk we will start from the basics and come shortly to DynamicProxies, generated type-save DynamicObjectAdapterBuilder and more. We will have a deep dive to this pattern group , and I am sure you will like it ;-)
This talk is based on the german book "Dynamic Proxies" written from Dr. Heinz Kabutz and me.
Do you want Software for your Business? Visit Deuglo
Deuglo has top Software Developers in India. They are experts in software development and help design and create custom Software solutions.
Deuglo follows seven steps methods for delivering their services to their customers. They called it the Software development life cycle process (SDLC).
Requirement — Collecting the Requirements is the first Phase in the SSLC process.
Feasibility Study — after completing the requirement process they move to the design phase.
Design — in this phase, they start designing the software.
Coding — when designing is completed, the developers start coding for the software.
Testing — in this phase when the coding of the software is done the testing team will start testing.
Installation — after completion of testing, the application opens to the live server and launches!
Maintenance — after completing the software development, customers start using the software.
Flutter is a popular open source, cross-platform framework developed by Google. In this webinar we'll explore Flutter and its architecture, delve into the Flutter Embedder and Flutter’s Dart language, discover how to leverage Flutter for embedded device development, learn about Automotive Grade Linux (AGL) and its consortium and understand the rationale behind AGL's choice of Flutter for next-gen IVI systems. Don’t miss this opportunity to discover whether Flutter is right for your project.
Revolutionizing Visual Effects Mastering AI Face Swaps.pdfUndress Baby
The quest for the best AI face swap solution is marked by an amalgamation of technological prowess and artistic finesse, where cutting-edge algorithms seamlessly replace faces in images or videos with striking realism. Leveraging advanced deep learning techniques, the best AI face swap tools meticulously analyze facial features, lighting conditions, and expressions to execute flawless transformations, ensuring natural-looking results that blur the line between reality and illusion, captivating users with their ingenuity and sophistication.
Web:- https://undressbaby.com/
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
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.
Takashi Kobayashi and Hironori Washizaki, "SWEBOK Guide and Future of SE Education," First International Symposium on the Future of Software Engineering (FUSE), June 3-6, 2024, Okinawa, Japan
WhatsApp offers simple, reliable, and private messaging and calling services for free worldwide. With end-to-end encryption, your personal messages and calls are secure, ensuring only you and the recipient can access them. Enjoy voice and video calls to stay connected with loved ones or colleagues. Express yourself using stickers, GIFs, or by sharing moments on Status. WhatsApp Business enables global customer outreach, facilitating sales growth and relationship building through showcasing products and services. Stay connected effortlessly with group chats for planning outings with friends or staying updated on family conversations.
SMS API Integration in Saudi Arabia| Best SMS API ServiceYara Milbes
Discover the benefits and implementation of SMS API integration in the UAE and Middle East. This comprehensive guide covers the importance of SMS messaging APIs, the advantages of bulk SMS APIs, and real-world case studies. Learn how CEQUENS, a leader in communication solutions, can help your business enhance customer engagement and streamline operations with innovative CPaaS, reliable SMS APIs, and omnichannel solutions, including WhatsApp Business. Perfect for businesses seeking to optimize their communication strategies in the digital age.
Unveiling the Advantages of Agile Software Development.pdfbrainerhub1
Learn about Agile Software Development's advantages. Simplify your workflow to spur quicker innovation. Jump right in! We have also discussed the advantages.
Odoo ERP software
Odoo ERP software, a leading open-source software for Enterprise Resource Planning (ERP) and business management, has recently launched its latest version, Odoo 17 Community Edition. This update introduces a range of new features and enhancements designed to streamline business operations and support growth.
The Odoo Community serves as a cost-free edition within the Odoo suite of ERP systems. Tailored to accommodate the standard needs of business operations, it provides a robust platform suitable for organisations of different sizes and business sectors. Within the Odoo Community Edition, users can access a variety of essential features and services essential for managing day-to-day tasks efficiently.
This blog presents a detailed overview of the features available within the Odoo 17 Community edition, and the differences between Odoo 17 community and enterprise editions, aiming to equip you with the necessary information to make an informed decision about its suitability for your business.
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemPeter Muessig
Learn about the latest innovations in and around OpenUI5/SAPUI5: UI5 Tooling, UI5 linter, UI5 Web Components, Web Components Integration, UI5 2.x, UI5 GenAI.
Recording:
https://www.youtube.com/live/MSdGLG2zLy8?si=INxBHTqkwHhxV5Ta&t=0
OpenMetadata Community Meeting - 5th June 2024OpenMetadata
The OpenMetadata Community Meeting was held on June 5th, 2024. In this meeting, we discussed about the data quality capabilities that are integrated with the Incident Manager, providing a complete solution to handle your data observability needs. Watch the end-to-end demo of the data quality features.
* How to run your own data quality framework
* What is the performance impact of running data quality frameworks
* How to run the test cases in your own ETL pipelines
* How the Incident Manager is integrated
* Get notified with alerts when test cases fail
Watch the meeting recording here - https://www.youtube.com/watch?v=UbNOje0kf6E
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeAftab Hussain
Understanding variable roles in code has been found to be helpful by students
in learning programming -- could variable roles help deep neural models in
performing coding tasks? We do an exploratory study.
- These are slides of the talk given at InteNSE'23: The 1st International Workshop on Interpretability and Robustness in Neural Software Engineering, co-located with the 45th International Conference on Software Engineering, ICSE 2023, Melbourne Australia
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.
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesQuickdice ERP
Explore the seamless transition to e-invoicing with this comprehensive guide tailored for Saudi Arabian businesses. Navigate the process effortlessly with step-by-step instructions designed to streamline implementation and enhance efficiency.
2. @SvenRuppert
has been coding java since 1996
Projects in the field of:
•Automobile-industry
•Energy
•Finance / Leasing
•Space- Satellit-
•Government / UN / World-bank
Where?
•Europe
•Asia - from India up to Malaysia
2
4. 4
@SvenRuppertAt the time I started - 3 yrs ago
Codebase is > 13 years old
no test coverage
Code Lords
nearly 15% are retired soon
over 50% are since 15 yrs in the company
the developers learned Java at this project
hiring only students
the first feeling was like ……
6. 6
What is part of a refactoring ?
the team
the source code
the processes
the project management
the knowledge
budget and time line
infrastructure
@SvenRuppert
7. 7
What is part of a refactoring ?
the team
the source code the processes
the project management
the knowledge
budget and time line
}
}
team transformation
C-level transformation
infrastructure
@SvenRuppert
14. 14
@SvenRuppertThe way of working
20% Time have time to play or try
start learning how to practice it ?
Closed Source versus Open Source
work from everywhere at your time
we started step by step
16. 16
@SvenRuppertwork from everywhere
change your environment
use Messenger like Slack avoid mails
remote meetings with zoom
remote Pair-Programming
work async.
work at your time that is the best for you
17. 17
@SvenRuppertwork from everywhere
work at your time that is the best for you
my „normal“ day…
working05AM to 07AM
breakfast with the family07AM to 09AM
working09AM to 12AM
playing with my son12AM to 07PM
playing with my wife07PM to 09PM
working09PM to 11PM
and yes… I need only 6h sleep ;-)
18. 18
@SvenRuppertwork from everywhere
work at your time that is the best for you
my „normal“ day…
working05AM to 07AM
working09AM to 12AM
working09PM to 11PM
working with Asia
working with Europe
working with US
20. 20
@SvenRuppertThe way of working
how to make it useful ?
example : POC with the team in the Mountains
for the developer
for the company
20% Time
21. prepare for
Refactoring - Divide your code
what is the part you are earning money with
21
@SvenRuppert
22. 22
@SvenRuppertClosed- versus Open Source
Analyzing the existing Code
in our case : a lot of infrastructure…
..with this we are not earning money
we divided the
code base
dev. environment
23. 23
@SvenRuppertClosed- versus Open Source
we divided the
code base dev. environment
could write articles about it
discuss at conferences
will lead to better documentation
out of company rules
free choice of tools
higher motivation
25. 25
@SvenRuppertThe way of working
Start Learning again
for example:
functional
add a new Language
focus on a new paradigm
but not everyone want to learn
or better…. some are learning faster
reactive
this sometimes leads to …..
reactions….
26. 26
@SvenRuppertThe way of working
Start Learning again
this sometimes leads to ….. reactions….
running away
27. 27
@SvenRuppertThe way of working
Start Learning again
this sometimes leads to ….. reactions….
expecting something
28. 28
@SvenRuppertThe way of working
Start Learning again
this sometimes leads to ….. reactions….
feeling the near end
29. 29
@SvenRuppertThe way of working
Start Learning again
this sometimes leads to ….. reactions….
or only
feeling to old
30. 30
@SvenRuppertThe way of working
Start Learning again
this sometimes leads to ….. reactions….
you have to deal with this
if you don´t want
to loose them
make them
happy again
How we solved
this?
32. 32
@SvenRuppertThe way of working
we are a product company
with a lot of LTS contracts
we created three streams
Consultants - play and throw away
Core Developers - collect and clean
LTS Developers - keep alive
Why ?
33. 33
@SvenRuppertThe way of working
Consultants - play and throw away
Core Developer - collect and clean
LTS Developer - keep alive Why ?
some want to learn and experiment
some need more stabil environments
some did not want to change something
34. 34
@SvenRuppertThe way of working
Consultants - play and throw away
Core Developer - collect and clean
LTS Developer - keep alive
Why ?
some want to learn and experiment
some need more stabil environments
some did not want to change something
amount of hours paid by the customer
rated on hours the systems are stabil
fixed income - bonus based on Change Request
35. 35
@SvenRuppertThe way of working
Consultants - play and throw away
Core Developer - collect and clean
LTS Developer - keep alive
SCRUM
Kanban
customer driven
roadmap driven
36. 36
@SvenRuppertThe way of working
SCRUM
Kanban
Consultants
LTS - Developers
Core - Developers Core - Developers
Fire
Consultants
37. 37
@SvenRuppertThe way of working
SCRUM
Kanban
Consultants
LTS - Developers
Core - Developers
Consultants Consultants Consultants
LTS - Developers LTS - Developers
Core - Developers Core - Developers
time based planning fixed size time slots
version based dynamic size time slots
38. prepare for
Refactoring - Start learning again
learn how to learn together with a team again
38
@SvenRuppert
45. 45
@SvenRuppertTechnical Transformation
what is the right technology for your team?
what is the right order?
reduce complexity
scale
the team could work with
a lot more….
start with new modules ?
start with the oldest one ?
most komplex one?
… or ….
49. 49
@SvenRuppertQM / QS - TDD
Do you have bugs in your code ?
since years
you are
working hard
on this….
no
50. 50
@SvenRuppertQM / QS - TDD
Codebase is > 13 years old
no test coverage
how to decrease complexity?
remember….
how to start?
what is the right point to start?
how to increase the quality of the tests?
51. 51
TDD with jUnit @SvenRuppert
are you using jUnit?
assume that the following would make sense.. ;-)
public class Service {
public int add(int a, int b){
if(a<2){
return (a+b) * -1;
} else {
return a+b;
}
}
}
How many tests
you will need ?
it depends ;-)
52. 52
TDD with jUnit @SvenRuppert
public class Service {
public int add(int a, int b){
if(a<2){
return (a+b) * -1;
} else {
return a+b;
}
}
}
How many tests
you will need ?
for line 100% coverage 2
but will this be enough? maybe ;-)
how to find out, what will be enough?
how to find the right tests?
it depends ;-)
53. 53
Mutation Testing @SvenRuppert
generating the mutants and
practical TDD with Mutation Testing
running all junit tests
check the reports
write more / better tests
loop until quality target reached
54. 54
Mutation Testing - Hello World @SvenRuppert
public class Service {
public int add(int a, int b){
if (a<2) { return (a+b) * -1; }
else { return a+b; }
}
} 100% Line Coverage… and…
@Test
public void testAdd001() throws Exception {
final int add = new Service().add(0, 0);
Assertions.assertThat(add).isEqualTo(0);
}
@Test
public void testAdd002() throws Exception {
final int add = new Service().add(3, 0);
Assertions.assertThat(add).isEqualTo(3);
}
55. 55
Mutation Testing - Hello World @SvenRuppert
final int add = new Service().add(0, 0);
Assertions.assertThat(add).isEqualTo(0);
final int add = new Service().add(3, 0);
Assertions.assertThat(add).isEqualTo(3);
56. 56
Mutation Testing - Hello World @SvenRuppert
final int add = new Service().add(0, 0);
final int add = new Service().add(3, 0);
>> Generated mutations Killed 3
57. 57
Mutation Testing - Hello World @SvenRuppert
final int add = new Service().add(0, 0);
final int add = new Service().add(3, 0);
>> Generated mutations Killed 3
58. 58
Mutation Testing - in short words @SvenRuppert
mutation testing is an add on to normal jUnit TDD
tools are supporting it well
generating and running all tests are time consuming
but most important
will effect your project structure
59. 59
Mutation Testing - Lesson Learned @SvenRuppert
mutation tests are often leading to
…cleaner code compared to jUnit only
60. 60
Mutation Testing - Lesson Learned @SvenRuppert
public static final String[] discardCommonPrefix(String a, String b) {
String[] ret = { a, b };
int l = a.length() < b.length() ? a.length() : b.length();
for (int i = 0; i < l; i++) {
if (a.charAt(i) == b.charAt(i)) {
if (i + 1 < l) { ret[0] = a.substring(i + 1); ret[1] = b.substring(i + 1); }
else {
if (a.length() < b.length()) { ret[0] = ""; ret[1] = b.substring(i + 1); }
if (a.length() == b.length()) { ret[0] = ""; ret[1] = „"; }
if (a.length() > b.length()) { ret[0] = a.substring(i + 1); ret[1] = „"; }
}
} else break;
}
return ret;
}
61. 61
Mutation Testing - Lesson Learned @SvenRuppert
public String[] discardCommonPrefix(String a, String b) {
final String[] ret = new String[2];
int l;
if (a.length() < b.length()) { l = a.length(); }
else { l = b.length(); }
int position = 0;
for (; position < l; position++) {
final char charA = a.charAt(position);
final char charB = b.charAt(position);
if (charA != charB) { break; }
}
if (position >= a.length()) { ret[0] = ""; }
else { ret[0] = a.substring(position); }
if (position >= b.length()) { ret[1] = ""; }
else { ret[1] = b.substring(position); }
return ret;
}
62. 62
Mutation Testing - Lesson Learned @SvenRuppert
Version 1 Version 2
for {
if {
if
else {
if
if
if
}
} else
}
if else
for {
if
}
if else
if else
75. NestedBuilder - The Beginning
75
@SvenRuppert
Car car = Car.newBuilder()
.withEngine(engine)
.withWheelList(wheels)
.build();
Engine engine = Engine.newBuilder().withPower(100).withType(5).build();
List<Wheel> wheels = wheelListBuilder
.addWheel().withType(1).withSize(2).withColour(2).addWheelToList()
.addWheel().withType(1).withSize(2).withColour(2).addWheelToList()
.addWheel().withType(1).withSize(2).withColour(2).addWheelToList()
.addWheel().withType(1).withSize(2).withColour(2).addWheelToList()
.build();
WheelBuilder
WheelListBuilder
76. NestedBuilder - The Beginning
76
@SvenRuppert
Car car = Car.newBuilder()
.withEngine(engine)
.withWheelList(wheels)
.build();
Engine engine = Engine.newBuilder().withPower(100).withType(5).build();
List<Wheel> wheels = wheelListBuilder
.addWheel().withType(1).withSize(2).withColour(2).addWheelToList()
.addWheel().withType(1).withSize(2).withColour(2).addWheelToList()
.addWheel().withType(1).withSize(2).withColour(2).addWheelToList()
.addWheel().withType(1).withSize(2).withColour(2).addWheelToList()
.build();
now we have to combine all
Car car = Car.newBuilder()
.addEngine().withPower(100).withType(5).done()
.addWheels()
.addWheel().withType(1).withSize(2).withColour(2).addWheelToList()
.addWheel().withType(1).withSize(2).withColour(2).addWheelToList()
.addWheel().withType(1).withSize(2).withColour(2).addWheelToList()
.addWheel().withType(1).withSize(2).withColour(2).addWheelToList()
.done()
.build();
77. NestedBuilder - The Pattern
77
@SvenRuppert
public abstract class NestedBuilder<T, V> {
protected T parent;
public abstract V build()
public <P extends NestedBuilder<T, V>> P
withParentBuilder(T parent) {
this.parent = parent;
return (P) this;
}
parent will connect itself…
78. NestedBuilder - The Pattern
78
@SvenRuppert
public abstract class NestedBuilder<T, V> {
public T done() {
Class<?> parentClass = parent.getClass();
try {
V build = this.build();
String methodname = "with" + build.getClass().getSimpleName();
Method method = parentClass.getDeclaredMethod(
methodname, build.getClass());
method.invoke(parent, build);
} catch (NoSuchMethodException
| IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
connect itself with parent
79. NestedBuilder - The Pattern
79
@SvenRuppert
the basic steps in short words
the Parent-Builder will hold the Child-Builder
the Parent-Builder will have a addChild - Method
the Child-Builder will extend the NestedBuilder
the rest could be generated with a
default Builder-Generator
80. NestedBuilder - The Pattern
80
@SvenRuppert
public class Parent {
private KidA kidA;
private KidB kidB;
//snipp.....
public static final class Builder {
private KidA kidA;
private KidB kidB;
// to add manually
private KidA.Builder builderKidA = KidA.newBuilder().withParentBuilder(this);
private KidB.Builder builderKidB = KidB.newBuilder().withParentBuilder(this);
public KidA.Builder addKidA() {
return this.builderKidA;
}
public KidB.Builder addKidB() {
return this.builderKidB;
}
//---------
connect itself with child
switch to Child-Builder
81. NestedBuilder - The Pattern
81
@SvenRuppert
only extends on Child-Builder
public static final class Builder
extends NestedBuilder<Parent.Builder, KidA> {
82. NestedBuilder - The Pattern
82
@SvenRuppert
Parent build = Parent.newBuilder()
.addKidA().withNote("A").done()
.addKidB().withNote("B").done()
.build();
System.out.println("build = " + build);
and a child could be a parent in the same time
Parent build = Parent.newBuilder()
.addKidA().withNote("A")
.addKidB().withNote("B").done()
.done()
.build();
System.out.println("build = " + build);
100. clean your code @SvenRuppert
delete JavaDoc
use final for Attributes as much as possible
replace loops with streams
extract Functional Interfaces
remove anonymous classes
use everywhere the same language level
Why ?
101. clean your code @SvenRuppert
delete JavaDoc
use final for Attributes as much as possible
replace loops with streams
extract Functional Interfaces
remove anonymous classes
use everywhere the same language level
Why ?
know the part you want to refactor
homogeneous sources are better for machines
103. Refactoring - Summary
103
@SvenRuppert
prepare your team
change the way of working
work on your project management
build your safety belt - mutation testing
divide and conquer - @Inject
build design pattern again
extract cross functionality - Proxy's
clean your code