(presentor: jee-weon Jung)

Slides:



Advertisements
Similar presentations
Using Parallel Genetic Algorithm in a Predictive Job Scheduling
Advertisements

Theoretical Program Checking Greg Bronevetsky. Background The field of Program Checking is about 13 years old. Pioneered by Manuel Blum, Hal Wasserman,
(c) 2007 Mauro Pezzè & Michal Young Ch 1, slide 1 Software Test and Analysis in a Nutshell.
Systems Analysis and Design in a Changing World, 6th Edition
Fundamentals of Python: From First Programs Through Data Structures
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
Fundamentals of Python: From First Programs Through Data Structures
Introduction to Systems Analysis and Design Trisha Cummings.
Fundamentals of Python: First Programs
System Analysis and Design
Fundamentals of Python: From First Programs Through Data Structures Chapter 14 Linear Collections: Stacks.
 Once the system has been installed it will be monitored to check whether it is working correctly. Sometimes problems with a system will not be found.
© Janice Regan, CMPT 128, February CMPT 128: Introduction to Computing Science for Engineering Students Recursion.
Davisware GlobalEdge 2008 Payroll Main Menu Time Entry and Payroll Processing.
1 Simulation Scenarios. 2 Computer Based Experiments Systematically planning and conducting scientific studies that change experimental variables together.
AVCE ICT – Unit 7 - Programming Session 12 - Debugging.
FILES AND EXCEPTIONS Topics Introduction to File Input and Output Using Loops to Process Files Processing Records Exceptions.
GP FOR ADAPTIVE MARKETS Jake Pacheco 6/11/2010. The Goal  Produce a system that can create novel quantitative trading strategies for the stock market.
Advanced Higher Computing Science
CHAPTER 5: Representing Numerical Data
Machine Learning: Ensemble Methods
Chapter 13 Recursion Copyright © 2016 Pearson, Inc. All rights reserved.
Introduction to Genetic Algorithms
Genetic Algorithm in TDR System
Software Testing Strategies for building test group
Software Testing.
OPERATING SYSTEMS CS 3502 Fall 2017
CMPT 120 Topic: Python’s building blocks -> More Statements
Chapter 2 Memory and process management
Evolution Strategies Evolutionary Programming
Performance Review Tool Updates College of Engineering
Fundamentals of Information Systems, Sixth Edition
Chapter 18 Maintaining Information Systems
Containers and Lists CIS 40 – Introduction to Programming in Python
Systems Analysis and Design
The Selection Structure
Introduction to Algorithms
Algorithm Analysis CSE 2011 Winter September 2018.
CSC 380: Design and Analysis of Algorithms
Multy- Objective Differential Evolution (MODE)
Chapter 10 Verification and Validation of Simulation Models
Genetic Improvement CHORDS GROUP Stirling University
CHAPTER 29: Multiple Regression*
Topics Introduction to File Input and Output
Introduction to Systems Analysis and Design
Objective of This Course
Unit-2 Divide and Conquer
Stat 217 – Day 28 Review Stat 217.
Critical Systems Validation
Introduction to Data Mining, 2nd Edition
Systems Analysis and Design
Coding Concepts (Basics)
Computing in COBOL: The Arithmetic Verbs and Intrinsic Functions
Software Verification, Validation, and Acceptance Testing
Please use speaker notes for additional information!
Boltzmann Machine (BM) (§6.4)
Spreadsheets, Modelling & Databases
TM111 Introduction to computing and information technology 1
Lecture 06:Software Maintenance
Introduction to Spark.
Software Requirement and Specification
Chapter 16 Maintaining Information Systems
Precise Condition Synthesis for Program Repair
Local Search Algorithms
M. Kezunovic (P.I.) S. S. Luo D. Ristanovic Texas A&M University
Topics Introduction to File Input and Output
Alex Bolsoy, Jonathan Suggs, Casey Wenner
Bug Localization with Combination of Deep Learning and Information Retrieval A. N. Lam et al. International Conference on Program Comprehension 2017.
CSC 380: Design and Analysis of Algorithms
Software Testing Strategies
Presentation transcript:

(presentor: jee-weon Jung) Fixing Bugs in Your Sleep: How Genetic Improvement Became an Overnight Success Saemundur O. Haraldsson, John R. Woodward, Alexander E.I. Brownlee, Kristin Siggeirsdottir GECCO 2017 (presentor: jee-weon Jung)

Contents Brief overview Introduction Related works Janus manager: Daily activity Janus manager: Nightly activity Summary

Brief overview Describe a self-improving system named Janus manager Daytime: Provide overview / control for specialists Schedule / observe rehabilitation process Evening: Self-analysis based on daytime interaction Generate test data for genetic improvement Fix bugs 6 months tested

Introduction Search based software engineering (SBSE) Use computational search methods  improve existing software Genetic Improvement (GI) Use of optimisation and machine learning techniques, particularly search based software engineering techniques such as genetic programming  improve existing software. [Wikipedia]

Introduction Janus Manager (JM) Daytime: collect data when user input raises exceptions Overnight : Test itself  search adaptions that do not raise exceptions  present the improved options to developers Significantly decrease the cost of maintenance Developers have the control Conduct sanity check before applying

Related work Generic improvements (GI) are used for non- functional improvements (about 1/3) Reduce execution time Bowtie2, CUDA code Reduce memory consumption Bug fixing is the largest goal of GI

Janus manager daily activity Initially started from the need for data management and statistical analysis for rehabilitation service Developed from (a) to (d)

Janus manager daily activity

Janus manager daily activity Users : employees Specialist & administrator Request or provide data Clients: answer questionnaires  specialists use the results to plan treatment / therapy Input data cause exception  log is left (trace & input data & type of exception )

Janus manager nightly activity Night process runs until All reported bugs are fixed Next morning During the night.. Analyze logs Generate test data Use GI to fix bugs

Janus manager nightly activity -log analysis Filter exceptions Obtain a set of unique errors (exception type) Exceptions can be any subclass of Exception in python Sorted in order of importance (higher frequency  more important) Assumes more frequent exceptions are the ones experience by multiple users Input: defined as the argument list At every function call

Janus manager nightly activity -generating test data Conducted with simple random search of neighbourhood of the users’ input data in the log Input data : represented in python dictionary object Objective: find various inputs that trigger the same exception

Janus manager nightly activity -generating test data Make 100 mutations Single value has been randomly changed Keep mutations that raise the same exception ө: original input (the one that raised exception) Ө: set of inputs

Janus manager nightly activity -generating test data How to mutate Change single value String: randomly add strings from a predefined dictionary Date: change the format ex) 2017-01-27  27-01-17 or randomly pick a date within a year Time: change the format or randomly pick a time within 24 hours Integer: add / subtract 1, 2 or 3 (changing scope is arbitrarily chosen) Float: add a random sample from standard normal distribution N(0, 1)

Janus manager nightly activity -generating test data Two problems exist in the proposed approach Do not check whether the generated tests are complementary Many test cases might deal with the same part of the code Assumes that no exception  output is correct Might provide false confidence to developers

Janus manager nightly activity -genetic improvement Relies on the new test cases & existing test suite Highest fitness = pass all test cases  functioning correctly Fitness: proportional to the number of test cases program passes Operates on the source code directly  no need to convert the program for GI operation

Janus manager nightly activity -genetic improvement Evolution is population based with 50 solutions in each generation Evaluated in parallel Weighted random selection is used for selecting the solution Weight is determined by the edit list’s proportional fitness w.r.t. the generation’s total fitness

Janus manager nightly activity -genetic improvement Only half of the population gets selected (=live up to next generation) Other half is randomly generated again Prevent early convergence to a local optimum May also prevent finding solutions that require more than few edits

Janus manager nightly activity -genetic improvement Single mutation of an edit list is composed of grow / prune / single edit change Grow: randomly generated edit is appended to the edit list Prune: remove one edit Single edit change: single edit is selected and one of its features is randomly changed GI stops in two conditions A program variant passes all tests User arrive to work Produces an HTML report List all exceptions encountered, possible fixes

Janus manager nightly activity -generating test data Available operators to the GI

Janus manager nightly activity -generating test data Example mutation process

Janus manager nightly activity -generating test data

Summary Janus manager worked successful 22 bugs were identified and fixed in six months Halved Janus rehabilitation’s maintenance cost >>> GI implemented in real world industry Evolution did not exceed 10 generations (500 evaluated edit list) >>> can find fixes rather quickly (if exists)