MIDTERM EXAM STUDY NOTES

 

Brooks, The Mythical Man-Month Chapters 1-11

 

INTRODUCTION – SYSTEMS AND COMPLEXITY - OVERVIEW

1/24/03 - Friday

Brooks, No Silver Bullet

 

** World:  Software Engineering = Programming + Project

** Should be:  Building + Evolving Software Systems

** Complexity – software is more complex than the human body

 

Abstract

·         Software construction:  essential tasks (forming conceptual structures) and accidental tasks (representing the concepts in programming languages within space/speed constraints)

·         Most gains in removing obstacles for accidental tasks

·         Now, we must seek improvement in essential tasks

o        Exploiting mass market to avoid – COTS

o        Rapid prototyping as planned iteration

o        “Growing” software – adding as systems are run, used, distributed

o        Great designers

Introduction

·         Software progress is slow, but hardware progress is very fast

·         Essence of software:  interlocking concepts – data sets, relationships, algorithms, invocations of functions

·         Abstract (same in any representation), yet highly precise, detailed

·         The hardest part of building software is the specification, design, and testing… not the labor of representing or testing fidelity

·         Therefore, building software will always be hard – No Silver Bullet

·         Essential Difficulties:

o        Complexity

§         SW more complex than human body - no two parts are alike

§         Scaling up software – not replication, addition of new pieces

§         Two types of complexity – intricacy of detail and wealth of detail

o        Conformity – to other interfaces

o        Changeability – “soft” ware – pure thought-stuff, infinitely malleable

§         Extending it beyond its original scope

§         Porting to new hardware