essence and accident in software engineering by: mike hastings

28
Essence and Accident in Software Engineering By: Mike Hastings

Upload: jeffery-egbert-campbell

Post on 25-Dec-2015

218 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Essence and Accident in Software Engineering By: Mike Hastings

Essence and Accident in Software Engineering

By: Mike Hastings

Page 2: Essence and Accident in Software Engineering By: Mike Hastings

“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

InherentData sets, Relationships among data

items, Algorithms, Invocations of functions

ComplexityConformityChangeability Invisibility

Page 4: Essence and Accident in Software Engineering By: Mike Hastings

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

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

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

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

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

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

Shortens system response time

Allows for thought retention

Page 11: Essence and Accident in Software Engineering By: Mike Hastings

Integrated librariesUnified file formatsPipes and filters

Helped develop whole toolbenches Universal tools

Page 12: Essence and Accident in Software Engineering By: Mike Hastings
Page 13: Essence and Accident in Software Engineering By: Mike Hastings

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

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

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

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

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

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

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

Pros Use of integrated databases to track

detailsCons

Only marginal gains in efficiency

Page 21: Essence and Accident in Software Engineering By: Mike Hastings

Pros Faster processing time

Cons Still crippled by human "think time"

Page 22: Essence and Accident in Software Engineering By: Mike Hastings

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

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

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

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

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

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