Presentation is loading. Please wait.

Presentation is loading. Please wait.

No Silver Bullet Essence and Accidents of Software Engineering By Frederick P. Brooks Frederick P. Brooks Presentation by Yan Qi 2005-04-11.

Similar presentations


Presentation on theme: "No Silver Bullet Essence and Accidents of Software Engineering By Frederick P. Brooks Frederick P. Brooks Presentation by Yan Qi 2005-04-11."— Presentation transcript:

1 No Silver Bullet Essence and Accidents of Software Engineering By Frederick P. Brooks Frederick P. Brooks Presentation by Yan Qi 2005-04-11

2 What is “ Silver Bullet ” ? “ There is no single development, in either technology or management technique, which by itself promises even one order-of magnitude improvement within a decade in productivity, in reliability, in simplicity. ” -- Fred Brooks * According to Brooks, “ Silver Bullet ” should be a kind of technique which can lead much improvement in the software development.

3 Why no Silver Bullet? Essence and Accidents Essence and Accidents Essence Essence Difficulties inherent in the nature of software; Difficulties inherent in the nature of software; The complex conceptual structures that compose the abstract software entity. The complex conceptual structures that compose the abstract software entity. Accidents Accidents Difficulties related to the production of software Difficulties related to the production of software Representation of the abstract essences in programming language, and mapping from the abstract essences onto machine languages with space and speed constraints. Representation of the abstract essences in programming language, and mapping from the abstract essences onto machine languages with space and speed constraints.

4 Why no Silver Bullet? Difficulties of Essence Difficulties of Essence The essence of a software entity is a construct of interlocking concepts: data sets, relationships among data items, algorithms and invocation of functions. The essence of a software entity is a construct of interlocking concepts: data sets, relationships among data items, algorithms and invocation of functions. The essence is abstract, in that it may be represented in many different ways. The essence is abstract, in that it may be represented in many different ways. Even though the essence is abstract it is highly precise and richly detailed. Even though the essence is abstract it is highly precise and richly detailed.

5 Essence Four categories are divided: Four categories are divided: Complexity Complexity Compared with materials in other domains, almost no two parts in the software are alike. Compared with materials in other domains, almost no two parts in the software are alike. There are a huge number of states, much more than in the hardware. There are a huge number of states, much more than in the hardware. The number of entities increases exponentially with the size of the system. The number of entities increases exponentially with the size of the system. There are many tight interrelationships between heterogeneous artifacts: docs, code, test cases etc. There are many tight interrelationships between heterogeneous artifacts: docs, code, test cases etc.

6 Essence Four categories are divided: Four categories are divided: Conformity Conformity A lot of the complexity is arbitrary complexity in that the software product has to conform to arbitrary interfaces created by other humans. A lot of the complexity is arbitrary complexity in that the software product has to conform to arbitrary interfaces created by other humans. It ’ s hard to plan for arbitrary change. It ’ s hard to plan for arbitrary change. Changeability Changeability Software is constantly asked to change. Software is constantly asked to change.

7 Essence Four categories are divided: Four categories are divided: Invisibility Invisibility Software is invisible and unvisualizable. Software is invisible and unvisualizable. Maybe we can construct the screenshots for a software, but how to diagram a software? Maybe we can construct the screenshots for a software, but how to diagram a software? Flow of control, flow of data, patterns of dependency, etc. only reflect parts of a software, not all. Flow of control, flow of data, patterns of dependency, etc. only reflect parts of a software, not all.

8 What we have? Deal with the accidental difficulties: Deal with the accidental difficulties: High-level languages High-level languages Time-Sharing Time-Sharing Programming Environments Programming Environments OO programming OO programming AI AI Expert systems Expert systems Automatic programming Automatic programming …… ……

9 Maybe works on Essences Hopes … Hopes … Reuse Reuse Rapid prototyping Rapid prototyping Incremental Development Incremental Development Great designers !!! Great designers !!!

10 Question? Thanks Thanks


Download ppt "No Silver Bullet Essence and Accidents of Software Engineering By Frederick P. Brooks Frederick P. Brooks Presentation by Yan Qi 2005-04-11."

Similar presentations


Ads by Google