Top Banner
Essence and Accident in Software Engineering By: Mike Hastings
28

Essence and Accident in Software Engineering By: Mike Hastings.

Dec 25, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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.