Talking about the art of software engineering design
If life is backed with you,
If the right behavior is voyed,
Destruction will come, it is rare.
Marquivili, about 1514
As one of the most important things, if not the only most important, a system of core nature is it must
A stable structure is maintained within its life cycle.
Aval. Yauben
The above two words, one is a pragmatic politicalist from a literary revival period, and the other is from one
Contemporary design master. These two paragraphs are very good reflected in the dilemma faced by software design projects, two opposite directions
The role is like yin and yang, and the software design needs to do everything possible to reduce development time.
Make the software as soon as possible, and also respond quickly to the market and customer needs; on the other hand,
We have to take enough time to ensure that the software is designed to have a good architecture so that we can reduce
Software maintenance costs, and software can have a long life period.
Software Design Excessively emphasizes that any aspect will cause great waste of software engineering investment or even fail. Excessive
Emphasize the speed of software development, and ignoring software architecture is the lack of experience in software development projects.
Easy to make mistakes. Worse software architecture design can lead to a so-called version 1.0 version, that is, software can only be developed to
Edition. Subsequent development often dies because of the modification of the original code too difficult. Because designers lack long-term
Light and sufficient project development experience, resulting in too impatient decisions, resulting in software structure
It is very sad, often a lot of good software design, which is often like this.
Another extreme also causes disaster, because if it is too emphasized, the software structure is elegant and scalability, resulting in
Excessive development time is placed in software architecture, and the result is that the software development time is too long, waiting until the software is pushed.
At the time of the market, although the design was perfect, the competitors had already occupied the market. Software design
Perfectionists are easy to make such errors. This kind of person is usually designed
Hipster, and have a unremitting pursuit of the perfect software structure. But it is too pursuit of perfection.
Tasks in development. Not every software design has time and effort (also financial resources)
Perfect design like STL.
Usually a good software design will work hard to achieve a balance between the two mutual exclusive extremes. Just like Confucianism
Doctrine. The tension between these two extremes is the area, environment, conditions, time, and customers developed by software.
Requirements, competitors' existing horizontal, equal changes. Just like the usual change. But if you can lead
It will be the way, it is possible to grasp the art, and you can "in a noise" like a dite, "
There is more than a swim. But the key is the accumulation of experience and the comprehension of balance. Experience can be largely part from
The predecessors are there, but the grasp of the opposite is another way of thinking. Therefore, the software engineering is both a department.
Learning is also art. But it is worth noting that this is definitely not an excuse for ignoring software engineering norms.
As Yang Zhenning can talk about the art of scientific research does not mean that the so-called "life science" of Keyun Road is not
Purely crap.
Designing a software that is easy to maintain and has a strong vitality is not a very easy thing; design one can be very
The software implemented is not a small dish. Balance these two to give a feasible, robust design, making soft
The piece can be successful and survived in the market, which is a need for a miraculous force, but we must
This miracle is required to use our creativity in ordinary work.