Richard J. Botting, B.Tech, Ph. D.

- Preface
- -- Abstract
- -- History
- -- Audiences
- -- Dedication
- -- Acknowledgement
- -- Disclaimers
- Contents
- Chapters

### Preface

#### Abstract

Software must improve before more depends on it working correctly. So the software process must be improved. One process does not fit all situations. In some cases, errors are commonly accepted. Here we can rely on the growing craft of programming. But, in some situation, we need software that is*engineered*. Sadly, we cannot have an engineering discipline for software without using science and mathematics. This book looks at many methodologies to figure out strengths and weaknesses. It shows how to use mathematics to help select, design, analyze, prove, correct, and code: modules, structures, functions, objects, data bases, logic, etc.. The book argues that mathematics can support all methods by modeling the environment of the software. This domain or reality model determines a sound design. A prototype language (MATHS) has been developed. MATHS can be used on any computer system that supports ASCII. Samples can be explored on the the Internet.#### Audiences

This is*not*a text book that teaches you how to program. It is about creating a discipline to replace programming. It is for those who can help change software production. I explain ideas intuitively first and later redefine them rigorously. I also supply pointers to more information. Programmers will find chapters 1, 2, 6, and 7 plus appendices 2 and 4 useful. Managers only need chapters 0, 1, and 8. The theory is in chapter 3, 4 and 5. It may be used in Graduate Seminars, Software Improvement Workshops, and Quality Circles.#### History

This book was written in a sabbatical towards the end of 1980's. It unashamedly advocated a particular approach to developing software. It was a approach that I used and believed in. I tried to show where it fitted with previous methods. This was created as a technical monograph that was not published. As a spin off from the work done on the monograph I developed a tool for preparing hypertext materials. I tested it by translating it onto the WWW. Since this worked I took the content of of monograph and mapped it into this web site. As I did this*objects*became mainstream. It has also become clear that different situations demand different methods. Then a group of methodologists came together to raise the flag of*agility*. In the summer of 2003 I discovered that people are reading these pages. I am in the process of updating them: correcting errors, updating references, and refactoring to remove some of the dogma.#### Dedication

I didn't know who to dedicate this book to until I realized that I had probably learned most from people who are not in the bibliography. My students have suffered prototypes and gave me feedback. Jim, John, Chris, and Les at the Civil Service College in London(1979-1982) taught me to value non-academic methods. I owe much to researchers at Brunel University 1970- 1978: Alphabetically Alkis, both Bobs, both Chris's, Dave, Frank, Gordon, Ivor, John, Mike, Ricci, Ronan, Roger, Tony, Val, and Tricia. Most important was and is Tricia, my wife, who supported, discussed, improved, and put up with this book.#### Acknowledgement

MATHS & TEMPO would not have come to being without the sabbatical and equipment provided by the California State University, San Bernardino.#### Disclaimers

This book presents the author's opinions as a humble recovering programmer. It may not reflect the opinions, policies, or beliefs of any other being or organization with which he has been or is associated. It reports on an experiment with the primary goal of increasing knowledge and is not a promise of a product or a service. Errors in this text are the fault of the software that the author has been using - unless the programmers can prove otherwise.### Contents

- 00b Introduction
- I describe some problems, suggest causes, and describe what is needed.
- 01 Analysis
- I analyze software processes and methods to find solutions and problems. I develop requirements for a solution to a central problem.
- 02 MATHS+TEMPO
- I describe prototype solutions - MATHS( ASCII ) and TEMPO(graphic) by presenting many examples. Including the famous Lift problem.
- 03 Languages
- MATHS is more powerful than current meta-languages. I develop one to one relations between MATHS, TEMPO, and code.
- 04 Logic
- MATHS includes symbolic logic, proofs, and algebra. Examples: Data Flow Diagrams and Outlines.
- 05 Structure
- The MATHS theory of types gives a model of documentation, data structures, data bases, programs, and asynchronous systems.
- 06 Methods
- MATHS+TEMPO fit into, extend, and integrate other methods.
- 07 Graphics
- Many MATHS formula can be drawn automatically using the TEMPO rules.
- 08 Implementation
- Summary of key ideas. Conclusions. Cybernetics. Proposals for actions for researchers, practitioners, and teachers.
- 09 Bibliographies
- Annotated guide to sources by chapter and by subject.

##### Appendices

- 10 Manifesto
- Aims and Goals of MATHS.
- 10 Overview
- Overview and links to online MATHS MAnual.
- 11 Sample
- Where to see samples.
- 12 Code
- How to Implement Simple Non-sequential Designs.
- 13 Speculations
- Some ideas that are interesting but untested.
- 14 Reference Sheets
- A Four Page Summary of MATHS
- References
- the original 1500+ and updated (3600+) published sources.
- Index
- Index of definitions and notations

### Chapters

For more see the contents of the chapters.