Software Technology - Preface

zhaozj2021-02-08  404

("Software Technology" book is about to be published by People's Posts and Telecommunications, see http://www.china-pub.com/computers/subject/huodong/ry12.23/tyzt.htm. This article is the preface of the book. )

Foreword

Using "Technology" to metaphor software development, this can be seen as a chasing source for software development: Excellent software developers have always known that the program is indeed a craft skill. Regardless of how much the software developers have more difficult knowledge, it is still the kind of feeling and experience that is not saying that the application development is still in the end. For the simplest example: Some people can understand all the Dark Dark Technical details of the Java language, but unless this person can cultivate their own aesthetic feeling, he will never really master the development of the application. In contrast, once a person gains the feeling of software development, specific technical details become almost completely irrelevant. Excellent developers are always constantly learning, using the latest technology and techniques, for him, learning a new technology is just the home of the software developer career.

The term "software engineering" is proposed by a research group under Nato. In 1967, this research team also proposed a meeting to discuss "software faced by software." In 1968, the meeting hosted by the NATO Scientific Committee was held in Germany *, and the report submitted by the meeting was named "Software Engineering" [1]. In this report, Peter Naur and Brian Randell wrote: "We have chosen 'software engineering' this controversy, in order to hint this opinion: software production is necessary to build in certain theories On the basis and practice guidance - these theoretical foundations and practice guidance have become a traditional doctrine in some of the field of engineering's some achievements in engineering. "

As with them, the reason why the book has chosen such a controversial title (and put forward a lot of controversial perspectives), in order to impose such an opinion: software development practitioners must start paying attention to software development Process. Software technology is so important because it allows us to get rid of the "manufacturing" metaphor (this metaphor is the software engineering) and let us begin to pay attention to people engaged in software development. Software processes bring another metaphor: Having technology software developers are determined to master their own processes, responsible for their labor results and proud.

Software crafts are not relative to software engineering or computer scientific needle. Compared with science and engineering, the software process is another completely different doctrine, but it can coexist with both of them and benefit from it. Modern blacksmiths can benefit better tools, raw materials and knowledge; similarly, software processes can also benefit for better computers, can be reused components, and more advanced programming languages. The blacksmith integrates skills and art in their own work, which exceeds science and engineering; Category. For this argument, the best agreement is probably UNIX and the current GNU Linux - these two systems can get such a huge success, because their creators have a delicate craft, superb technology and selfless Dedication spirit.

For a long time, people have always tried to force the development of commercial software to adapt to software engineering requirements. This kind of approach to a suit has triggered a lot of problems, while software processes bring answers to these questions. The development of software engineering is largely to meet the needs of NATO member countries to develop a large-scale defense system. The development of commercial software and military systems, the development of government systems has a natural area: the size of commercial software is usually small, and the development time is usually not more than 18 months. Only a very small number of commercial software is developed by a team of more than 20 people, most developing teams will not exceed 10 people. For large teams with more than 200 people, software engineering can solve the problems they have encountered well; but for "how to exercise their own skills in the team", software engineering has almost no discussion. Software Engineering encourages the use of human sea tactics in software development [2]. Software Engineering has not solved "how to cultivate developers with superb skills", but try to reduce the technical requirements for software development work - software engineering believes that as long as more people have, all issues can be resolved. This is actually implicit: If you have a large number of developers with a large number of technologies, then we don't need those technological super group of "master".

Although people can sometimes be successful, the final software is mostly rubbish: they are more blind, and they are always unable to be satisfactory. The user's dazzling pictures and animations have been dizzy, but they are unable to truly master the software. Because of the unable to learn to use the entire software, they will have a strong frustration, and only a small part of the features to meet their needs, and more features are all inquiry.

The software is not necessarily like this.

I often see such a software development team: they develop truly valuable applications, providing a practical help for the user's business, but suffers from the best practice of software engineering. In fact, they can do not have to think so. In my opinion, the only standard that can be tested by teamwork is to see if they can release the software needed on time and continue to make up in subsequent time and expand this software. Posted the first version of the first version is important, but always releases subsequent versions in time, and guarantees that each new version has improved on the basis, which may be more important.

Often someone asking me "how to hire a developer." In the face of this problem, my answer is always: Go to develop several applications successfully, and still stay in the project group after delivery until the next upgrade or maintenance version released. It will be able to deliver the original product to show that this person has the ability to develop available products; the development of the second version makes him have the opportunity to reflect on the effects of his initial development. If a developer repeats such a process three times, I will bet that he has had enough skills and experience in software development process, which will make him continue to succeed.

In the book name of this book, I called software craftsmanship as "new craving." This is said that because I found that many people in the software development community began to blindly chase new technologies, and forgot the truly important thing. The ultimate goal of software development is to create a high quality, robust software program, and make it value for users. Now, our top priority is to cultivate a new generation of qualified developers, let them have the ability to achieve this goal.

The process of "creating applications for users" was once fun, exciting, but software engineering almost completely smashed this pleasing experience. Now, the software process will reallo the fun and excitement of the software development process to the software developer.

* Translator Note: Garmish, located in the Alps, Germany resort.

[1] Peter Naur, Brian Randell editing, "Software Engineering" (Software Engineering), Nato, 1969.

转载请注明原文地址:https://www.9cbs.com/read-736.html

New Post(0)