Presentation is loading. Please wait.

Presentation is loading. Please wait.

Essence and Accident in Software Engineering By: Mike Hastings.

Similar presentations


Presentation on theme: "Essence and Accident in Software Engineering By: Mike Hastings."— Presentation transcript:

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

12

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

28


Download ppt "Essence and Accident in Software Engineering By: Mike Hastings."

Similar presentations


Ads by Google