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.
<pre><code> String foo = "bar"; </code></pre>