Presentation on theme: "SBSE Course 3. EA applications to SE Analysis Design Implementation Testing Reference: Evolutionary Computing in Search-Based Software Engineering Leo."— Presentation transcript:
EA applications to SE Analysis Design Implementation Testing Reference: Evolutionary Computing in Search-Based Software Engineering Leo Rela http://www2.lut.fi/~rela/dtyo_Leo_Rela.pdf
Overview: Analysis Record and elicit customer requirements Understand customer requirements No technical decisions about the system’s implementation Includes feasibility study
Overview: Design Translate requirements into a representation of software Focuses on –Data structures –Architecture –Interfaces –Algorithmic details Also include –Resource and task allocation in a distributed system
Overview: Implementation The software design is translated into a computer program Two facets –Produce computer programs –Support work of computer programmers Typically, GP falls into this class
Overview: Testing Validation and Verification Tackles problems like: –Test case generation –Find inputs that cause failures –Find inputs that cause long running time
Applications: Analysis Prediction of software failures Exploring difficulty of the problem Software project effort prediction Project management
Applications: Design Multiprocessor scheduling Task and resource allocation in distributed systems Hardware/software co-design in embeded systems Protocol construction Architecture design
Prediction of Software Failures Fixing failures is expensive –In testing → extra coding effort –After deployment → even more expensive Applying reliability techniques is expensive Quality prediction methods identify which parts of the system need reliability techniques
◙ GP-based software quality prediction Modules are clasified as error-prone and not error prone GP is used to predict the number of expected faults, but only the resulted ranking is used as a base for decision For each module, a series of metrics are recorded For some modules, the reliability has been measured Can we predict, using the metrics, which will be the reliability for an yet untested program? Metrics used: n. of operators/operands, LOC, LOEC, cyclomatic complexity
◙ Genetic programming model for software quality classification Metrics –number of times the source code was inspected –number of LOC for different production phases –final number of commented code. Implementation note: not LISP, but pointers to functions in C
◙ Automated Knowledge Acquisition and Application for Software Development Projects Fuzzy system which classifies modules by probability of containing errors
◙ Combining Software Quality Predictive Models: An Evolutionary Approach Various studies have used various methods/metrics Combine the resulting experts into one which is able to work with partial input data. AdaBoost: Gives weights to how hard is a specific data instances, and to how good is an expert. GP: Combines decision trees
Neural Networks / GA ◙ Using the genetic algorithm to build optimal neural networks for fault-prone module detection –GA generates NN (structure, weights) ◙ Evolutionary neural networks: a robust approach to software reliability problems
Exploring difficulty of the problem In early phases developers are not aware of potential (hard) problems ahead Uncertainty about the real nature of the task Bad decisions, made early, are difficult to fix Possible solution: collect more knowledge about the problem to be solved software problem exploration using genetic programming (SPE-GP)
◙ Genetic Programming as an Explorative Tool in Early Software Development Phases GP is used to try to solve the problem For each input data, it is recorded how often the resulted programs fail to work correctly
Software project effort prediction Software is the most complex part of the system It is also the most expensive to obtain Goal: estimate cost and effort for a given project Related: COCOMO (2)
◙ Limits of the Methods in Software Cost Estimation Regression, GP, NN for software cost estimation Estimations are not too good! –Poor methods / need new methods? –Incomplete/Inconsistent input data?
◙ Can genetic programming improve software effort estimation? A comparative evaluation Data from 81 Canadian software companies Developer/manager experience, year of completion, attributes regarding size and complexity, effort (person-hours). ANN and GP performed better.
◙ Software Project Effort Estimation Using Genetic Programming Grammar Guided Genetic Programming Classic GP: “closure”: any non-terminal should be able to handle as an argument any data type and value returned from a terminal or non-terminal. Other alternative: Strongly Typed GP
Other articles ◙ An evolutionary approach to estimating software development projects –Combination of Software Project Simulator and GAs. SPS generates input data which is then used by the GA for learning and prediction. ◙ A validation of the component-based method for software size estimation.
Project management Manager has resources (time, budget, team etc.) and goal. Task: meet the goal with the given resources Or: which resources are needed to meet the goal? Or: what can be accomplished with the given resources
Software Project Management Net Automatic allocating / scheduling based on GA Input –TPG –Employee/skill database Output –Schedule
◙ Genetic Algorithms for Project Management Many-to-many relation between task and employees Partial commitment Objectives –Validity of job assignment –Minimum overtime –Minimum cost –Minimum time span
Tasks Read the survey Skim over the articles Like one? Choose it! You are not supposed to like a 2-page article, unless you can implement the techniques described in it. Don’t like any? Find your own SBSE article on the net and talk to me about it.