Download presentation
Presentation is loading. Please wait.
Published byJeffery Egbert Campbell Modified over 9 years ago
1
Essence and Accident in Software Engineering By: Mike Hastings
2
“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
3
Inherent Data sets, Relationships among data items, Algorithms, Invocations of functions Complexity Conformity Changeability Invisibility
4
No two parts are alike Scaling up requires increase in elements Results Communication issues Unreliability Usage difficulties Side effects from expansion
5
Must adapt to the minds of various people Must adapt with a variety of applications
6
Constant pressures for change Software is infinitely malleable All software changes Users find new uses New hardware forces change
7
Unvisualizable No floor plans Cannot display geometrically Robs the mind of powerful tools Leading cause of communication issues
8
Not inherent Three steps that attacked major difficulties High-level Languages Time Sharing Unified Programming Environments
9
What do they accomplish? Frees up most accidental complexity User friendly language Disregards problems from the machine level
10
Shortens system response time Allows for thought retention
11
Integrated libraries Unified file formats Pipes and filters Helped develop whole toolbenches Universal tools
13
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
14
Two ideas – Abstract & Hierarchial Pros Avoids displaying unnecessary syntax Allows a higher-order-sort of design Cons Makes no change to essential complexity of the design
15
Pros Using computers to solve problems only humans used to solve Cons Deciding what to say, not saying it
16
Pros Use of human experts to develop rules of thumb Inference Engine & Rule Base to solve problems Cons Difficult to develop Knowledge acquisition EXPERT SYSTEMS
17
Pros Solving a problem from problem specifications Already proven to work Cons The solution method is usually required, not the problem
18
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
19
Pros Error elimination in design phase Secure operating system kernels Cons Does not save labor Does not mean error proof
20
Pros Use of integrated databases to track details Cons Only marginal gains in efficiency
21
Pros Faster processing time Cons Still crippled by human "think time"
22
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
23
Do not construct it at all Increase in products available for purchase Delivery is immediate Sharing cuts per-user cost Adapt operation processes
24
Decide what to build Technical requirements Interfaces Obtain product requirements Rapid prototyping Simulates interfaces Performs main functions Minimizes hardware, and cost constraints
25
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
26
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
27
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.