《No silver bullet: essential and supplementary work of Software Engineering(English:No silver bullet-essence and accidents of Software EngineeringIs a classic paper on software engineering published by Fred Brooks, the father of IBM mainframe. It was originally an invited paper at the ifip seminar in Dublin in 1986 [1] [2], the next year, the Institute of Electrical and Electronics Engineers "computer" also reproduced this article.ArticleThey used several (The werewolf of London[3] also adds a note to the end of the werewolf to bring out the (modern) legends of non-silver bullet. This article emphasizes the complexity of the software, so that the real silver bullet [4] does not exist; the so-called "no silver bullet" means that no technology or method can increase the productivity of software engineering by ten times in ten years.
Directory
[Hide]
- 1 abstract [5]
- 2 problem-silver bullet and Software Project
- 3. Difficulties in software development
- 3.1 causes of essential difficulties
- 3.2 past breakthroughs solved the difficulties of attaching attributes
- 3.2.1 advanced language
- 3.2.2 time-sharing technology
- 3.2.3 Unified Development Environment
- 4. Search for silver bullets
- 5. Review response
- 5.1 Harel Analysis
- 5.2 Jones's Point of View
- 6 data sources
- 6.1 references
- 6.2 footer
- 7. See
- 8 External links
[Edit] Abstract [5]
All software creations include essential tasks and supplementary tasks ). The former is to create a complex conceptual structure composed of abstract software entities, and the latter is to express these abstract entities using programming languages, and under some space and speed restrictionsProgramCorresponding to the machine language.
How much of the work done by software engineers, compared with the essential work, is spent on the supplementary work? Unless the attached property work consumes more than 9/10 of all work, even if all the attached property work is reduced to zero, the whole development work cannot be easily increased by an order of magnitude.
In the past, most of the important advances in software productivity came from the exclusion of Human barriers, such as strict hardware restrictions and hard to use.Programming LanguageThe lack of machine time is the cause of the difficulty in developing the Secondary attribute work.
[Edit] problem location-silver bullet and Software Project
Fred Brooks mentioned in "no silver bullet" [6] [7:
In folklore, none of the monsters that can fill us with dreams is more terrible than the werewolf, because they will suddenly change from an ordinary person to a horrible monster, as a result, people try to find silver bullets that can miraculously kill a wolf.
The software project we are familiar with also has similar characteristics (from the perspective of a manager who doesn't understand the technology). It usually seems simple and straightforward, however, in a twinkling of an eye, it is likely to become a monster with time delays, budget overspending, and defective products. Therefore, we hear the call of despair and desire a silver bullet, it can effectively reduce the cost of software development, just as the cost of computer hardware can be quickly reduced.
However, we foresee that, within the ten years since now, no silver bullet will be seen, either technically or in management, there will be no single major breakthrough, it can improve productivity, reliability, or conciseness, even without an order of magnitude improvement.
However, doubt is not pessimistic. Although we do not expect any major breakthroughs, and in fact, I believe that such a major breakthrough is not in line with the nature of the software, there are still a lot of exciting innovations in progress. If we can develop, spread, and use them in a step-by-step and persistent manner, we will surely get an order of magnitude of progress. There are no shortcuts, but there are only aspirations.
The first step for humans to overcome the disease is to use germ theory [8] To eliminate demon theory [9] and humors theory) [10] It is this step that has brought hope to mankind and shattered all miraculous hopes. It tells people that progress depends on step-by-step and hard work, it is the right way to develop good habits through continuous efforts in cleaning and hygiene. Today, the same is true for software engineering.
<No silver bullet> advocates and asserted that there will be no single breakthrough in software engineering within the next ten years (since the publication of the article in 1986, the productivity of program design can be improved by an order of magnitude. However, I think this assumption is no longer true.
Assume that the total workload of software development is 10, of which 1 is essential work and 9 is attached property work. Therefore, the improvement of the attached property work will be eliminated, we can reduce the software workload to 1 (because the attached job becomes 0). At this time, we can say that the degree of ease of software development has increased by an order of magnitude (from 10 to 1, 10 times less ).
[Editing] difficulties in software development
Brooks divided the difficulty of software development into two categories. The core of this classic paper is often interpreted as a complex software engineering problem that cannot be solved by a simple answer. Brooks' belief in the true difficulty of software development lies in the Specification formulation, design, and testing of this conceptual structure, rather than the presentation of this concept, and test the accuracy of the rendering method.
- Essence: the inherent difficulty of software in conceptual construction, that is, how to develop a conceptual solution from abstract problems.
- Accident: it refers to the difficulties encountered when conceptual concepts are implemented on computers.
Brooks mentioned that, in some cases, the word "accident" and "accidental" have been obfuscated. This word is derived from the ancient usage of Aristotle. [11] in terms of the word accidental, what he refers to is not accidental or unfortunate, rather, it is closer to the accompanying or secondary meaning.
[Edit] reasons for essential difficulties
Brooks believes that the additional difficulties will gradually fade out with the improvement of tools, but the essential difficulties are the most difficult to solve, because most of the activities happen in people's minds, there is a lack of effective auxiliary tools. [12]
- Complexity: the problems that software solves usually involve computing steps. This is a human-made, abstract, and intelligent activity, most of which is complex.
- Invisibility: unfinished software is invisible. Even if icons are used to describe, the structure of the software is often unable to be fully presented, making communication extremely difficult. [13]
- Conformity: In a large software environment, the interfaces of subsystems must be consistent. It is usually very difficult to maintain such consistency due to the evolution of time and environment.
- Changeability: The environment in which software is applied is often composed of various factors, such as groups, regulations, hardware devices, and application fields. These factors change rapidly.
[Editing] past breakthroughs solved the difficulty of adding attributes. [editing] advanced language
-
See Assembly Language and machine language.
What is the mission of advanced language? It makes the program no longer fall into many of the complexities that were originally attached to the program. An abstract program involves the construction of some concepts: functions, data types, sequential relationships, and message transmission methods. However, in fact, what is important to machine code is bit, temporary storage, conditions, branches, channels, floppy disks, and so on. Advanced languages can embody the necessary structures in abstract programs and avoid all lower-level things. In this case, it removes the complexity of the whole layer that has nothing to do with the program connotation.
[Edit] Time-based technology
-
See time slice
The time-sharing technology challenges another very different challenge, because time-sharing ensures real-time performance and enables us to keep our mind on a complex overview. The limitations that time-sharing technology can contribute can also be directly calculated. Because its main utility is to shorten the system response time, when this time approaches zero, at a certain point, we have crossed the threshold point in which humans can perceive the existence of a system response time, which is about a tenth of a second. If we fall below this threshold, there will be no more benefits.
[Edit] Unified Development Environment
-
See: integrated development environment
UNIX and interlisp are the first widely used integrated software development environment, and are also recognized as having increased productivity several times. The challenges in this regard include the complete library, Unified File Format, pipe and filter to facilitate software sharing, the construction of any concept can be called, transmitted, and applied to another object theoretically. In practice, this can be easily done. This breakthrough subsequently led to the development of the entire tool software, because every new tool can be applied to any program as long as it uses standard specifications.
[Edit] find silver bullet
- Progress in Ada and other advanced languages
Programming Language Ada is a general advanced language in the 1980 s. In fact, Ada not only reflects the evolution of the concept of language, but also specifically realizes some characteristics that contribute to the concept of modern design and modularization; maybe, the concept of ADA is more advanced than the language itself. The concept is: modularization, abstract data type, and hierarchical structure ).
- Object-Oriented Programming
Compared with today's popular technologies, object-oriented programming (Object-Oriented Programming) has been put more hopes by many software engineering students. [14] Mark Sherman of Dartmouth pointed out that, there are two different concepts that we must be careful to distinguish. From the names, we can see the differences between these two concepts: abstract data types and hierarchical structure types. The latter is also called a class ). Abstract data types are defined by a name, a set of appropriate values, and a set of appropriate operation methods, rather than the structure it stores, this part should be hidden, such as Ada package (using private type) or modula module ).
- Artificial Intelligence
- Expert System
- Automated Program Design
- Visual or graphical programming
- Software Verification
- Environment and tools
- Workstation
[Edit] Comment response
Although the Mythical man-month has aroused a lot of arguments, there are few controversies, but "no silver bullet" has caused many articles with the opposite opinion, including some emails sent to the Journal Editor, as well as some of the books and short reviews that have continued to appear today, most of which are refuted by the claim that "no specific medicine exists. [15]
In 1990, Brad Cox [16] published an article titled <there is a silver bullet)> [17] [18]. Cox pointed out that reusable) and replaceable components to deal with problems that are essential to the concept. Glass, vessey, and conger pointed out in a paper in 1992 that there is sufficient evidence that the meaningless research on silver bullet has not been stopped. [19]
[Edit] Harel Analysis
In a 1992 article titled biting the silver bullet [20], David Harel carefully analyzed the published article "no silver bullet. [21] Harel believes that "no silver bullet" and "parnas" Strategic Defense System Software Overview "in 1984 [22] are both too desperate, so he elaborated on the brighter side of this point. His article also uses the subtitle "Let system development go into a bright future ".
Based on harvel's cognition, he believes there are three reasons for pessimism:
- Essentially, it is a binary method of the supplementary attribute.
- Comment on each possible silver bullet individually.
- Only 10 years is predicted. This is not long enough for "any major breakthrough is expected.
Harvel also proposed a hypothetical experiment. He assumes that the idea of "no silver bullet" remains unchanged, but the time for posting is in 1952, not 1986. He used the reverse CTO ad absurdum [23] to refute the essential practices in self-attached attributes.
[Edit] Jones's Point of View
Caper Jones once put forward a keen Opinion, which was originally written in a series of informal records and later appeared in the book, as mentioned by friends who communicated with Brooks. <No silver bullet> like most papers, the focus is on productivity, that is, how much output can be achieved by the input cost per unit of the software. Jones said: "The focus is on quality, and productivity will follow ." [24] [25] He believes that, as long as it is a project with high cost and time lag, it takes a lot of extra time and effort to find and correct specification, design, and implementation errors. Jones also put forward data to prove that there is a lack of systematic quality control and a disaster that lags behind in time, and there is a strong correlation between the two.
Caper Jones believes that it takes 10 years to write two equivalent COBOL programs, but one of them uses a structured method, and the other does not, the effect will be three times different.
[Edit] data source [edit] References
- Brooks, Fred P .. no silver bullet-essence and accident in software engineering. Proceedings of the ifip Tenth World computing conference. 1986: 1069-1076.
- Brooks, Fred P .. no silver bullet-essence and accidents of software engineering. IEEE Computer. Limit l 1987,20(4): 10-19.
- Frederick p. brooks, Jr .; translator: money one by one. mythical man-month: the Way of software project management. taipei: Economic News Agency. 2004-04-01. ISBN 986-7889-18-5 (Chinese ).
[Edit] footer
-
- ^Ifip Congress 1986: Dublin, Ireland
- ^Brooks, F. P ., "no silver bullet-essence and accidents of software engineering," in information processing 86, H. j. kugler, Ed. amsterdam: Elsevier Science (North Holland), 1986, pp. 1069-1076.
-
- ^Brooks, F. P., "no silver bullet-essence and accidents of software engineering," computer 20, 4 (sort l, 1987), pp. 10-19.
-
- ^In ancient European and American legends, silver bullet can be used to kill a vampire, a werewolf, or a monster. Silver bullets can be used as an effective solution to the problem.
-
- ^This article titled "no silver bullet" is from Information Processing 1986, the proceedings of the ifip Tenth World computing conference, pp.1069-76. Edited by h.j. Kugler.
-
- ^F. p. Brooks, "no silver bullet essence and accidents of software engineering," computer, vol. 20, pp. 10-19,198 7.
-
- ^Editor's money one by one: Legend of the night of the moon, the werewolf will be converted from an ordinary animal into a wolf, into a terrible monster, to deal with the werewolf using silver bullets throughout its heart. Why use silver bullets? Because silver is regarded as the same as the moon and has the power, silver bullet is a "mandatory" to kill the werewolf ".
-
- ^The bacteria said: Louis Pasteur (1822 ~ 1895) Startup, discovering that the disease is infected by bacteria.
- ^The devil said: the devil is angry with the Devil because of the monster or the wrong thing.
-
- ^Body Fluids: The body contains four types of body fluids: Blood, phlegm, choler, and black bile, determines a person's temperament and temper. The reason for illness is that the ratio of the four body fluids is unbalanced.
-
- ^'According to the concepts of Aristotle and schlastic philosophy, a supplementary attribute is not a fundamental or necessary nature of a thing, it is the nature of the impact caused by other reasons. 'Websters' New International Dictionary of the English Language, 2d ed., Springfield, Mass.: G. C. Merriam, 1960.
-
- ^Zheng bingqiang. Software Engineering: Starting from practice (Software Engineering: A Perspective from practices). Zhi Sheng culture Co., Ltd.. 2007. ISBN 978-957-729-659-7.
-
- ^Parnas, D. L., "Designing Software for extension of extension and contraction ."
IEEE Trans. On SE, 1979 (March, 128), pp. 138-
-
- ^Booch, G., "object-oriented design," in software engineering with Ada.
Menlo Park, Calif.: Benjamin/Cummings, 1983.
- ^Some emails and responses were published in IEEE Computer in February. Bruce M. skwiersky's comment on it was selected as the best comment for "Computer reviews" in 1988. This Award and the comment were published and reproduced on E. a. weiss, "editrial" computing reviews (June, 1989), pp.283-284. there is a major error in the comment: "six times" should be "10 ^ 6"
-
- ^Brad Cox is also a master of software. He proposed the word "Software IC.
-
- ^Brad Cox. http://virtualschool.edu/cox/pub/NoSilverBulletRevisted. american programmer journal. may 10, [November 1995 ). "in one of the most influential books of this era, the mythical man-month, dr. fred Brooks observed that adding more people to a late software project only seems to make matters worse. and in an equally influential article, no silver bullet; essence and accidents of software engineering, he argued that the difficulties are inevitable, arising from software's inescapable essence, as distinct from accident; something we're doing wrong in producing it."
- ^Cox, B .j., "there is a silver bullet," byte (Oct., 1990), pp.209-218.
-
- ^Glass, R. L., and S. A. conger, "research software tasks: intellectual or clerical ?" Information and Management, 23, 4 (1992), pp.183-192.
-
- ^David Harel. biting the silver bullet: Toward brighter future for system development. may 10, [1992 ). "This article was triggered by those of Brooks and parnas. it is not a rebuttal. indeed, I agree with most of the specific points made in both papers. instead, the goal of this article is to illuminate the brighter side of the coin, please developments in the field that were too recent or immature to have influenced Brooks and parnas when they wrote their manuscripts."
-
- ^Harel, D., "Biting the silver bullet: toward a brighter future for system development," computer (Jan., 1992), pp.8-20.
- ^Parnas, D. L., "software aspects of strategic defense systems," communications of the ACM, 1985 (dec., 1326), pp. 1335.
-
- ^Editor's money one by one comments: "back to the wrong way": Starting from Q, we can deduce the logical result R. if R is in conflict, Q will be denied.
-
- ^Jones, C., Assessment and Control of software risks. Englewood Cliffs, N. J.: Prentice-Hall, 1994. p.619.
-
- ^T. caper Jones. Assessment and Control of software risks. Prentice Hall. 1993-12-17 []. ISBN 978-0137414062 (English ).
[Edit] See
- Fred Brooks
- Mythical man-month
- Software Crisis
- Werewolf
[Edit] external link
- No silver bullet: essence and accidents of software engineering, by Frederick P. Brooks, Jr.
- (Spanish) No hay balas de plata: Lo esencial y lo accidental en la ingenier ía del software, by Frederick P. Brooks, Jr.
- (Simplified Chinese) on the existence of silver bullet
- (Simplified Chinese) from no silver bullet to silver bullet Processing Site