Intelligent Model-Based Software Engineering
In this project, you will build an AI-enabled domain-specific
language to model and control contempary software practices. This tool
won't just simualte the processes, but will apply AI search methods to
find best settings for those practices.
Your tool will improve on prior work that explored agile processes
(a generalization
of extreme programming). That prior work, which we will call POM (for Port, Oklov, Menzies, 2008, see below)
explored the effects
dynamism (see Boehm and Turner, 2003, figure 2, see below) but ignored four other aspects of agile processes. You will fix that:
- Your first task is to code a hacked up version of anything at
all that reproduces (or refutes) POM. Don't do anything clever here. This will be a throw-away prototype.
-
Then you need to add in the four other aspects of agile. But not it a dirty way. What you will doing is creating a domain-specific
language (DSL) for specifying a software project, then mutators to generate thousands of variants of those projects. Your highest-level
project descriptions should read like psuedo-English and display the project description in a ultra clear manner.
- Then you need to isolate the choice points in your DSL and conduct an AI-enabled Monte Carlo analysis of those projects.
And but that I mean, not just conduct random simulations but also use AI search to find a minimal set of decisions that most
changes (helps or hurts) the project.
To get you started, here's a description of POM, and the results they achived.
References