Although many software engineering projects just involve in SELECT/INSERT/UPDATE/DELETE data in databases or performing steps one by one with some loops, there are some projects involving NP-completeness problems, which mean no polynomial algorithm to be solved.
For example, paper optimization in printing industry is a usual problem. Maximizing the number of same polygons (from rectangles to irregular shapes) packed on a piece of rectangle paper which dimension is given.
The problems of handling this kind of project include
1. Optimization cannot be archieved by simple programming.
2. Difficult problems lie on much smart System analysts and programmers.
3. Schedule should include the period of research and development both, which are difficult to be estimated
4. UAT would include testing the optimization. If your algorithm cannot achieve the defined optimization, the project will fail.
5. This kind of project is usually tailor-made. Highly customization reduces the system’sreusability. The cost of this project would be much higher than that of others.
6. Usually the problem could be solved by some masters of such industries manually, they have expectation that the product would be as best as their methods are. Since their methods might not be polynomial algorithm, you have to seek alternative to implement. But different methods archieving the same result is a large difficulty.
On the other hand, such kind of projects is very valuable and sold at very high price. The question is
“How can we take this sweet fruit from the sky-high tree?”