Essence and Accident in Software Engineering By: Mike Hastings.
-
Upload
jeffery-egbert-campbell -
Category
Documents
-
view
218 -
download
3
Transcript of Essence and Accident in Software Engineering By: Mike Hastings.
![Page 1: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/1.jpg)
Essence and Accident in Software Engineering
By: Mike Hastings
![Page 2: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/2.jpg)
“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.” Frederick P. Brooks, Jr. (1995)
Software Projects = Werewolves Innocent but capable of becoming a monster
No Silver Bullets in Site
![Page 3: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/3.jpg)
InherentData sets, Relationships among data
items, Algorithms, Invocations of functions
ComplexityConformityChangeability Invisibility
![Page 4: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/4.jpg)
No two parts are alike
Scaling up requires increase in elements
Results Communication issues Unreliability Usage difficulties Side effects from expansion
![Page 5: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/5.jpg)
Must adapt to the minds of various people
Must adapt with a variety of applications
![Page 6: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/6.jpg)
Constant pressures for change
Software is infinitely malleable All software changes Users find new uses New hardware forces change
![Page 7: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/7.jpg)
Unvisualizable
No floor plans
Cannot display geometrically
Robs the mind of powerful tools
Leading cause of communication issues
![Page 8: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/8.jpg)
Not inherent
Three steps that attacked major difficulties High-level Languages Time Sharing Unified Programming Environments
![Page 9: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/9.jpg)
What do they accomplish? Frees up most accidental complexity User friendly language Disregards problems from the machine
level
![Page 10: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/10.jpg)
Shortens system response time
Allows for thought retention
![Page 11: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/11.jpg)
Integrated librariesUnified file formatsPipes and filters
Helped develop whole toolbenches Universal tools
![Page 12: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/12.jpg)
![Page 13: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/13.jpg)
Ada – a high-level language of the 1980’s
Pros Improvements in language concepts Focused on step-by-step solutions Encourages modern design
Cons Just another high-level language Low payoff after accidental complexity
removal
![Page 14: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/14.jpg)
Two ideas – Abstract & HierarchialPros
Avoids displaying unnecessary syntax Allows a higher-order-sort of design
Cons Makes no change to essential complexity
of the design
![Page 15: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/15.jpg)
Pros Using computers to solve problems only
humans used to solveCons
Deciding what to say, not saying it
![Page 16: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/16.jpg)
Pros Use of human experts to develop
rules of thumb Inference Engine & Rule Base to
solve problemsCons
Difficult to develop Knowledge acquisition
EXPERT SYSTEMS
![Page 17: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/17.jpg)
Pros Solving a problem from problem
specifications Already proven to work
Cons The solution method is usually required,
not the problem
![Page 18: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/18.jpg)
Pros Applying computer graphics to software
design Flowchart construction
Cons Flow charts are poor abstractions Today’s screens are too small Software is difficult to visualize
![Page 19: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/19.jpg)
Pros Error elimination in design phase Secure operating system kernels
Cons Does not save labor Does not mean error proof
![Page 20: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/20.jpg)
Pros Use of integrated databases to track
detailsCons
Only marginal gains in efficiency
![Page 21: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/21.jpg)
Pros Faster processing time
Cons Still crippled by human "think time"
![Page 22: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/22.jpg)
Attacks on accidental difficulties are limited by the productivity equation:
Time of Task = ∑ (Frequency) x (Time)
Conceptual components are time consuming
Attacks must then address the essence of software problems
![Page 23: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/23.jpg)
Do not construct it at all
Increase in products available for purchase
Delivery is immediate
Sharing cuts per-user cost
Adapt operation processes
![Page 24: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/24.jpg)
Decide what to build Technical requirements Interfaces
Obtain product requirementsRapid prototyping
Simulates interfaces Performs main functions Minimizes hardware, and cost
constraints
![Page 25: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/25.jpg)
The brain is grown, not built Software should be similar
Incremental development Make it run Top-down growing design Allows for easy backtracking Lends itself to early prototypes New functions grow organically
Easier for teams to grow than build
![Page 26: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/26.jpg)
Great designs come from great designers Software construction is a creative process Can empower the creative mind
Great designers are rare How to grow great designers
Identify them early Assign a career mentor Devise a development plan Allow them to interact with other growing
designers
![Page 27: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/27.jpg)
Most accidental difficulties have been addressed
Focus on improving essential difficulties Exploiting the mass market Using rapid prototyping Growing software organically Developing great conceptual designers
![Page 28: Essence and Accident in Software Engineering By: Mike Hastings.](https://reader030.fdocuments.in/reader030/viewer/2022032707/56649e045503460f94aefd40/html5/thumbnails/28.jpg)