Answers.Body: <p>An umbrella term for the application of heuristic techniques to software development is <em>Search-Based Software Engineering</em> (SBSE).</p>
  <p>SBSE emerged as a distinct activity around the turn of the century, with a strong initial focus on automating the generation/prioritization of test cases.</p>
  <p>With respect to some of your specific queries:</p>
  <ol start="2">
  <li><p>Paper on <a href="https://www.lri.fr/%7Ehansen/proceedings/2013/GECCO/companion/p205.pdf" rel="nofollow noreferrer">Automated refactoring</a></p>
  </li>
  <li><p>Automatically choosing screen colour to <a href="http://www-bcf.usc.edu/%7Ehalfond/papers/li15demobile-abstract.pdf" rel="nofollow noreferrer">minimize energy consumption</a>.</p>
  </li>
  <li><p>This sort of thing is not usually done heuristically, since it needs platform-specific code.</p>
  </li>
  <li><p>Automated <a href="https://www.computer.org/csdl/proceedings/icse/2000/2147/00/21470722.pdf" rel="nofollow noreferrer">refactoring to patterns</a>.</p>
  </li>
  <li><p>AFAIK, penetration testing has yet to be successfully automated.</p>
  </li>
  <li><p>As stated, this doesn't really require AI. More generally, I don't know of any specific work automating for HCI preferences, but something like 'Interactive Genetic Algorithms' could be used.</p>
  </li>
  <li><p>There's a lot of SBSE literature on testing. See <a href="http://www0.cs.ucl.ac.uk/staff/mharman/laser.pdf" rel="nofollow noreferrer">this paper</a> for a general overview.</p>
  </li>
  </ol>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2016-10-11T07:04:44.790Z
Answers.LastActivityDate: 2021-12-19T14:03:15.147Z
Answers.LastEditDate: 2021-12-19T14:03:15.147Z
Answers.UserDisplayName: NietzscheanAI
Body: <p>Artificial intelligence has been applied in many contexts, in particular, games.</p>
  <p>In the context of software development, there are many problems that a software developer needs to solve and that could be automated by an AI</p>
  <ol>
  <li>API design</li>
  <li>Code refactoring</li>
  <li>User interface design</li>
  <li>Hardware constraints</li>
  <li>Design patterns</li>
  <li>Security</li>
  <li>Image/animation optimization</li>
  <li>Automated testing</li>
  </ol>
  <p>I wonder if AI can help developers solve those problems. For example, for the problems above</p>
  <ol>
  <li><p>I may want to get some location of the user that is using the application, then the AI suggests the best way to do that for the specific platform.</p>
  </li>
  <li><p>The AI helps to refactor and optimize the code</p>
  </li>
  <li><p>The AI helps to design the user interface, e.g. based on the golden ratio, material themes, etc.</p>
  </li>
  <li><p>The AI suggests or determines the limit of the hardware, e.g. screen size, RAM</p>
  </li>
  <li><p>The AI converts to another suitable design pattern</p>
  </li>
  <li><p>The AI warns about the latest vulnerabilities</p>
  </li>
  <li><p>The AI helps to optimize images by learning how much can we reduce the image size, while people are still ok with it.</p>
  </li>
  <li><p>The AI automatically tests</p>
  </li>
  </ol>
  <p>Is there any solution to these problems? If not, what can we do?</p>
  
Tags: <reference-request><applications><software-development>
Title: How can artificial intelligence help software developers to develop software?
UserDisplayName: UmAnusorn
ThreadText: # How can artificial intelligence help software developers to develop software?
  
  (Asked by: username_0 on 2016-10-11)
  
  Artificial intelligence has been applied in many contexts, in particular, games.
  
  In the context of software development, there are many problems that a software developer needs to solve and that could be automated by an AI
  
  1. API design
  2. Code refactoring
  3. User interface design
  4. Hardware constraints
  5. Design patterns
  6. Security
  7. Image/animation optimization
  8. Automated testing
  
  I wonder if AI can help developers solve those problems. For example, for the problems above
  
  1. I may want to get some location of the user that is using the application, then the AI suggests the best way to do that for the specific platform.
  2. The AI helps to refactor and optimize the code
  3. The AI helps to design the user interface, e.g. based on the golden ratio, material themes, etc.
  4. The AI suggests or determines the limit of the hardware, e.g. screen size, RAM
  5. The AI converts to another suitable design pattern
  6. The AI warns about the latest vulnerabilities
  7. The AI helps to optimize images by learning how much can we reduce the image size, while people are still ok with it.
  8. The AI automatically tests
  
  Is there any solution to these problems? If not, what can we do?
  
  **Tags:** reference-request, applications, software-development
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2016-10-11. Score: 7 | Accepted answer
  
  An umbrella term for the application of heuristic techniques to software development is *Search-Based Software Engineering* (SBSE).
  
  SBSE emerged as a distinct activity around the turn of the century, with a strong initial focus on automating the generation/prioritization of test cases.
  
  With respect to some of your specific queries:
  
  2. Paper on [Automated refactoring](https://www.lri.fr/%7Ehansen/proceedings/2013/GECCO/companion/p205.pdf)
  3. Automatically choosing screen colour to [minimize energy consumption](http://www-bcf.usc.edu/%7Ehalfond/papers/li15demobile-abstract.pdf).
  4. This sort of thing is not usually done heuristically, since it needs platform-specific code.
  5. Automated [refactoring to patterns](https://www.computer.org/csdl/proceedings/icse/2000/2147/00/21470722.pdf).
  6. AFAIK, penetration testing has yet to be successfully automated.
  7. As stated, this doesn't really require AI. More generally, I don't know of any specific work automating for HCI preferences, but something like 'Interactive Genetic Algorithms' could be used.
  8. There's a lot of SBSE literature on testing. See [this paper](http://www0.cs.ucl.ac.uk/staff/mharman/laser.pdf) for a general overview.
  
  
  ---
  
  