Taming the Tiger: Software Engineering and Software Economics

1 Introduction.- 2 Unifying Themes.- 2.1 Software Engineering.- 2.2 Software Economics.- 2.3 Quasi-Expert Systems.- 3 Metaprogramming.- 3.1 The Problem.- 3.2 What Is a Method?.- 3.3 The Class of Programs Considered.- 3.4 Some Typical Cases.- 3.5 The Method.- 3.6 Why Metaprogramming Works.- 3.7 Limits of the Method.- 3.8 The Economic Justification.- 3.9 Comparison with the Operational Approach.- 3.10 Conclusion.- 4 The Cartesian Programmer and the Hacker.- 4.1 Introduction.- 4.2 What is Programming?.- 4.3 The Legal Status of Software.- 4.4 Multilingual Systems.- 4.5 Simplicity.- 4.6 Summing Up Simplicity.- 4.7 Conclusion.- 5 Software Engineering.- 5.1 Software Engineering: Problems.- 5.2 Design Methodology.- 5.3 Software Economics.- 6 AWK-A Prototyping Language.- 6.1 Hello World.- 6.2 Some AWK Syntax.- 6.3 Patterns.- 6.4 More of the Language.- 6.5 EXAMPLE-A Data Validator.- 6.6 Significance of the Example.- 7 Software Economics.- 7.1 Introduction.- 7.2 On Ultra-High Programmer Productivity.- 7.3 Economic Fundamentals.- 7.4 Investing in the Project.- 7.5 Risk.- 7.6 Competition.- 7.7 A Complete Example.- 8 The Model.- 8.1 Parameters of the Model.- 8.2 A Sample Run.- 8.3 A Typical Analysis.- 8.4 The Program.- 9 Transfer Pricing.- 9.1 On Estimating the Costs and Benefits of Common Tools.- 9.2 Transfer Payment.- 9.3 Conclusion.- 10 Summing Up.- 10.1 Other Software Engineering Approaches.- 10.2 Other Applications of Software Economics.- 10.3 The Role of Software Economics.