A raw idea of making good reseach in Software Engineering area

Software Maintenance is an important subarea of Software Engineering. Researches in this area have produced a lot of amazing discoveries which are being used in software industry. Why the maintenance part is so important and so hard? There may be a bunch of answers for this question, such as requirement analysis problem, design problem, each programmer's programming style, etc.

Indeed, they together contribute this issue. However, from a high level of view, it is mistakes that contribute the large burden of maintenance. If a system has correct requirement analysis (which is impossible), correct design, and everybody does his/her own part following the standard/rules/conventions, the problem of maintenance will be significantly reduced. But How?

What I'm thinking is to make systems to be automatically generated. A simple description of the idea is as following.

Make a diagram/diagrams which summarizes the functionality of the system, then input diagram to a automatic system generator. After that, system is built with standard and conversions.

If this can be done and reach a happy level, the importance of software analysis may be decreased. The same is for other areas related with software maintenance.

From the first time I thought about this idea, I knew this can go to extremely hard. But as a normal approach to solve huge and difficult problem, this can be broken down to several different smaller problems. Here is some of them in my mind.

  • Abstraction of business workflow.
  • A diagram to represent the abstraction above.
  • A new language which can represent the diagram
  • A translator to translate the language to business model
  • Code generation module for each specific function or modularity, such as Database connect/upadte, user interface, etc
  • An approach to convert specific business model to code, by each code generation module

This is just a raw idea of mine. Is it too optimistic? I think so. Anyway, one of the difference between industry and academy is optimistic. Research is exploration, which can not guarantee a certain result. I will take a look at each small problem and see if there is any interesting area for my research.

Category >> Software Engineering  
If you want someone to read your code, please put the code inside <pre><code> and </code></pre> tags. For example:
<pre><code> 
String foo = "bar";
</code></pre>