Machine Learning in Software Development — Use Cases

Machine learning use cases

To learn about the current and future state of machine learning (ML) in software development, we gathered insights from IT professionals from 16 solution providers. We asked, "What are some real-world problems you, or your clients, are solving by using machine learning in the SDLC?" Here's what we learned:

You may also like:  Top 10 Machine Learning Use Cases (Part 1)

Applications

  • An example of a place it is very important to use ML is personalization. Older systems would call something personalization where a marketer was given the ability to give a certain experience to a segment of users. Of course, this is not ideal because the marketer may choose incorrectly, or the segment may be too broadly chosen. A better approach is to tell a system what metrics to optimize for, give it as much information as possible about each user, and let it figure out how to give each user the best, most personalized experience possible in a 1-to-1 way. 
  • We are particularly interested in using “population” level datasets to help give our customers additional context around the security and performance of their deployed applications. This could range from standard benchmarking (what is the average write performance of a given database?) to more sophisticated ML-based modeling approaches (for a given configuration, workload, and resources what are the range of expected performance values, or for a given security configuration, what are the risks of various threats?). Data and ML can also be used to assist in technology selection, for example by analyzing trends around the adoption of different tools or algorithmically identifying “stacks” of related technologies that are often used together. 
  • Core problems we are solving with ML include data extraction, image recognition and classification, natural language processing, and classification. 
  • Help with test automation. Be more agile. Release faster, run tests automatically. Automate faster. Lower maintenance costs, and spend less time on testing. 
  • We mostly see ML on the release side to optimize performance and testing to automatically generate and suggest new test cases to increase coverage. 
  • Totovist has been able to speed test creation and maintenance by 600% with its skunkworks department. They were using Selenium to test cutting edge applications. A large IT company was looking to improve developer efficiency and stability code commits, issues, bugs, feature requirements, NLP to improve time to stability and optimize testing. They are able to predict how long a bug will take to fix, where it is occurring in tens of millions of lines of code across thousands of developers. They built models to determine where the bug is occurring. 
  • We detect some common objects of interest such as people and floors in buildings, but also, we use ML to detect some non-conventional objects like wires and escalators. We research the application of ML in classical robotic methods such as Simultaneous Localization And Mapping and Motion Control. As an example, we learn the motion model of the robot how to better predict robot positioning, understand the parameters of a robot, and use reinforcement learning to solve certain difficult motion-control cases. 
  • Emulate the human eye looking at UI screens and detecting differences. Make sure changes are applied to all platforms and browsers. Self-healing locators. 
  • Pipelining is a big part of modeling. Data ingestions, prep, run model and code to see what variables look like and decide if it is sufficiently trained and determine how accurate, push to production, send an image and see if it tags correctly. Data comes from many places. We help distribute models across environments. Running the model 100 times on the same data set results in greater performance providing a stateful data layer for the models to run on. Develop models for hedge funds or marketing companies. More models = more value. 
  • Customer 360 and real-time marketing. Cross-sell, logistics optimization in retail and logistics transportation. Autonomous driving, R&D cycle to achieve autonomy. 
  • I am passionate about focusing on the end-user and the value proposition we can offer that transforms every day, mundane tasks into jobs they no longer need to think about – our products take care of this for them. Thinking more broadly about the SDLC is enabling us to do just that. The following use cases focus on where we are applying ML technologies — for example, we’re using ML for timekeeping, allowing our end-user customers (EUCs) to keep more accurate records to help service professionals optimize their billing and project costing work. Other areas include anomaly detection, collective intelligence, and fraud detection, as well as in areas like cash flow forecasting to help customers intelligently manage the health of their business based on where they are at today and where they might be, based on receivables, invoices, etc., tomorrow. We’ve also applied automation techniques on our own development processes where we use bots that take the code release to production very quickly, which has rapidly improved our deployment cycle — going from what used to take days to hours from code commitment to deployment. Other areas where ML can be applied in the SDLC include component reuse, failure or defect detection, testing and validation. 
  • ML within our SDLC drives our technology to assess risk and anomaly detection and improve the process of authentication and authorization of user identities. At the same time, this process enhances the user experience. By removing the need to authenticate at every touchpoint, we remove significant cognitive friction. Because the problem starts out highly unstructured (you don’t know what behavior for a given user looks like initially), you start with an unsupervised approach where you collect data and find ways of structuring it in a way that accurately represents a given identity’s behavior. Once you can model these patterns, you can start labeling these trends and then convert the problem into a supervised learning one. At this point, labels and rules can be developed to further support ML throughout the SDLC via a supervised learning approach.

Industries

  • Precision Innovation, a network of neurology clinics pools a population database to provide research data to pharmaceutical companies and payers to provide better patient outcomes, better research, and neurologists with ML tools to build better expectations and prediction of the trajectory of disease to provide better patient outcomes. An ML learning model can take multiple dimensions of data and provide better-predicted actions and know-how drugs are working. 
  • Dynamic pricing for an insurance client. This is exacerbated in insurance because they’re competing against FinTech start-ups. They use sophisticated models to identify their best customers. Capture quote, acceptance, rejection, and the models are refined. They’re able to quickly recycle and rebase if a product is performing poorly. They may have more than 100 models at any one time. They are constantly updating the models to reflect customer interaction. There are also regulatory considerations. They cannot have a bias against gender or race. Another client’s engineering department has single models with different apps that touch the customer, a targeting model for their website and customer service. Having their models work as independent services makes it possible. 
  • Ensure a project gets done on time and estimate with a reasonable level of accuracy for project duration and cost are areas where we are successfully employing ML in SDLC.  For example, organizations that perform professional services engagement need to analyze effort, ROI, and related cost estimation (i.e., how long would it take for us to build a product, what is the level of effort, and how does that translate into the appropriate monitoring equation?). Accuracy is incredibly important here in both estimation and execution. If you estimate the product/solution will take two weeks to build, but it ends up taking six weeks, it becomes an expensive endeavor. By deploying ML, organizations can significantly improve the accuracy of the project-cost estimations, the most efficient way to get it done is by optimizing resource utilization,  monitoring the product/solution development through its life cycle and ensuring that the product/solution gets built in the most optimal fashion. Along the way as requirements or conditions change, then factoring in change management as part of SDLC is also best accomplished with efficient ML algorithms.

Here’s who we heard from:

TechTalks With Tom Smith: How Machine Learning Has Changed Software Development

Machine learning in software development.

To learn about the current and future state of machine learning (ML) in software development, we gathered insights from IT professionals from 16 solution providers. We asked, "How has machine learning changed software development?" Here's what we learned:

You may also like:  Using Machine Learning in Software Development — Keys to Success

Testing

  • The tools they are using are smarter. Test authoring, root cause analysis AI can help and save a lot of time.
  • The lowest hanging fruit for ML is reducing maintenance work but there are broader goals. With visual testing, you can expose all the outcomes of functions. It will take a fraction of the time to offer and maintain new tests, you can automate more, you can get greater coverage. You are able to test 100 times faster on multiple devices and browsers. A visual grid the test runs once, extracts other resources and uses them to render the same UI on all browsers and devices at once. By automating the SDLC, you can actually get to great speed in delivery with better quality without human intervention. This saves resources, time and people.
  • It’s happening actively right now with the advent of X-Ops all playing a major role in the lifecycle. Having the ability to manage models as services is becoming more critical. Moving more towards open systems. The testing impact is critical in the lifecycle. Suggestive AI algorithms help users be faster and more productive.
  • ML can be used effectively in SDLC around automation, testing. You can have developers write a test or write them automatically. Diagnosis is an important area where ML is used. There are scenarios you may not be able to simulate with simple tools. ML can rerun thousands of permutations. Determine how much value it will add before you do it. Test to see what level of improvement you achieve.
  • Applying ML in the SDLC enables better access to what your data can provide insights to. Particularly, ML in the SDLC allows for rapid prototyping to perform immediate testing to highlight areas of concern or possible future ineffective outcomes.

Automation

  • By implementing algorithms to self-correct code, ML is useful for significantly improving identifying and fixing bugs. In addition, ML can help improve and reduce the time required for code fixing and optimization. Finally, ML can be incredibly powerful in generating and automating testing. 
  • We in the stage of learning and experiencing ML. We’ll see it in the planning stage and during design, there will be automatic code development. In testing, they will be able to auto-generate test cases and able to predict the outcomes of feature steps. Automate deployment pipelines. Decrease defects during release and optimize the performance of the software. Use computer vision for the UI after you ideate and get the business requirements using computer vision to create the UI codes. 
  • ML has undoubtedly changed the SDLC. Take the typical construction of a software product – at the elemental level, you have an input (data input or user input), a piece of logic that operates on the input and produces an output. By combining the data input with some logic, you create the output. This is so old school now. AI and ML present a dramatic altering of this landscape. With ML-enabled technology, organizations can now employ smart SDLC techniques to create outcome-driven processes. Specify an objective, feed the train/test scenarios and data set, systems can now self-compose and build certain types of applications.  Such systems, empowered with smart agents can self-compose appropriate product modules — including anticipating variations in inputs, types of interactions and optimizing and building interfaces to cater to such needs. Such systems can auto-choreograph what needs to happen during the development lifecycle to meet that objective with a high degree of precision and accuracy. For example, we built an application where an interactor would respond to a specific type of information asks, and the system would automatically act/react and capture secondary and supplemental information in an iterative fashion. To achieve this mode of self-composting systems, we only created a knowledge base for the system, and employing AI and ML, the system built appropriate interaction interfaces, form layout, object compositions, error handling and even morphing its interaction patterns to suit the host medium. All by just leveraging a knowledge base and user actions/reactions. By using ML, versus physically creating and testing several such interaction interfaces, we saved a lot of time and labor, as well as reduced critical human errors. 
  • The SDLC used to be a cyclical, almost step-wise, function-driven process, where you run certain activities, complete them and move onto the next. Applying ML brings together the functional aspects and the data-driven aspects, and allows for more feedback loops, which in turn enables the process to be more iterative and drive toward solutions faster. As you think about the SDLC, we have the traditional stages of analysis, design, as well as implementation, testing, deployment, and maintenance. ML allows us to bring more data-driven driven decisions into each of these stages — enabling us toward the desired outcomes — more quickly and easily than ever before. This is sometimes talked about as Software 2.0 — instead of writing direct code, the machine processes the data and fine-tunes the algorithms. Applications, where this has been applied in the industry, include things like image classification or language translation.

Optimization

  • On the product management side for the definition and design especially in organizations that are agile or want to be. Train observation models based on user behavior. Use machines to remove drudgery.

Other

  • There is a class of problems in software development which do not have simple, rule-based answers because there are far too much complexity and corner cases. This is the sort of problem where in the past, engineers might have tried to lay out long lists of rules that would quickly become untenable, but ML provides a much better solution: teaching a service to predict a correct answer, and carefully measuring and designing the rest of the system around how often the service is correct.
  • We are able to inject ML learning models into even legacy applications. Take an old legacy app, migrate and power on our platform and inject ML so that it becomes part of the fabric of the application. First-gen applications were greenfield built on low-level components on Hadoop. We can now inject ML into legacy applications.
  • We’ve seen huge explosions in libraries like TensorFlow and Pytorch along with cloud computing. You need to be able to process large amounts of data. Leverage cloud compute to make accurate ML models.
  • Since data is the first-class flight passenger in ML approaches, it requires a company to adapt or even drastically change some software development practices. You have to be quite organized since software development tooling does not yet support all required functionality for such cases.
  • We see companies at different ends of the maturity cycle. The more mature are changing the organizational structure, roles, and responsibilities, how to code review, bias, ethics, and fairness, the onus is on the developer to understand data more than in the past.

Here’s who we heard from: