Select this to skip to main content [CSUSB] >> [CNS] >> [Comp Sci Dept] >> [R J Botting] >> [Monograph] >> index
[ Search monograph] || [Notation] || [Copyright] Wed Mar 10 15:55:11 PST 2004

These pages are based on much reading. They have many links to my bibliography of software development. oThey are being rewritten.
PREFACE
CHAPTER 0 INTRODUCTION
Why We Need To Analyze Software Development 
: 1. Introduction 
: 2. The State of Computing 
: : 2.1 "We Can Do Better!" 
: : 2.2 "Look what we've done!" 
: : 2.3 "We're OK" 
: : 2.4 "We have a Problem" 
: : 2.5 The Software Traffic Jam 
: : 2.6 Summary 
: 3. Silver Bullets 
: : 3.1 More Software! 
: : 3.2 More Method! 
: : 3.3 Formal Methods 
: : 3.4 Software Quality Assurance 
: 4. A Profession? 
: : 4.1 Introduction 
: : 4.2 Science vs Engineering and This Monograph 
: : 4.3 The Art of Programming 
: : 4.4 Computer Science 
: : 4.5 Software Engineering 
: : : 4.5.1 Definitions 
: : : 4.5.2 Scope 
: : : 4.5.3 Mathematics and Software Engineering 
: : : 4.5.4 Graphics and Engineering 
: : 4.6 Programming as a Craft 
: : 4.7 Summary: Art, Craft, Science, or Engineering? 
: 5. Notations 
: 6. Can One Size Fit All? 
: 7. Review 
: : 7.1 Conclusions 
: : 7.2 Preview

CHAPTER 1 ANALYSIS
1.1 Introduction
1.2 Technical Methodologies 
	1.2.1 Modular Programming
	1.2.2 Stepwise Refinement(SWR)
	1.2.3 Information Hiding and ADTs
	1.2.4 Structured Design(SD)
	1.2.5 Data Flow Diagrams(DFDs)
	1.2.6 From DFDs to Code?
	1.2.7 Objects
	1.2.8 Agile and Extreme Processes
	1.2.9 Conclusions
1.3 Reality Directed Methods 
	1.3.1 Programming Language Development
	1.3.2 Syntax Directed Programming
	1.3.3 Data Directed Design
	1.3.4 Data Engineering
	1.3.5 Knowledge Engineering
	1.3.6 Dynamic Analysis and Design
	1.3.7 Object-Oriented Methodologies
	1.3.8 Formal Methods
	1.3.9 Conclusions
1.4 Models of Software Processes
	1.4.1 Software Life Cycles
	1.4.2 Important Factors in a Software Process
	1.4.3 A Systems Model of the Software Process
	1.4.4 Software Quality Assurance(SQA)
	1.4.5 Maintenance
	1.4.6 Conclusions (1) - Modeling Software
		Sketch 
		Performance model 
		Mock up 
		Breadboard 
		Scale model 
		Blue print 
		Evolutionary Prototyping 
		Operational Prototypes 
		Refactoring and eXtreme Programming 
	1.4.7 Conclusions (2)- Under Used Processes
1.5 A Model fro Software Engineering
	1.5.1 The Engineering System
	1.5.2 Software Design
1.6 Review
	1.6.1 Conclusions
	1.6.2 Requirement - Documentation is data.
	1.6.3 Preview



CHAPTER 2 MATHS+TEMPO (circa 1995)
(Much of this chapter has been split up and 
parts have been improved in other parts of this web site)
2.1 Introduction
	2.1.1 Summary
	2.1.2 Relation to other chapters
2.2 EBNF & Dictionaries
	2.2.1 Introduction
	2.2.2 A Mapping into English
	2.2.3 Syntax of a MATHS dictionary
	2.2.4 A Mapping into Graphics(TEMPO)
	2.2.5 Precedence
	2.2.6 Applications
2.3 Syntax Description
	2.3.1 Syntax
	2.3.2 Semantics
	2.3.3 Application to Files
	2.3.4 Free and Canonical Structures
2.4 An Example of Formal Analysis
	2.4.1 Introduction
	2.4.2 The Lift Problem
	2.4.3 Formal Analysis
2.5 Logic, Sets and Structures
	2.5.1 Introduction
	2.5.2 Propositions and Predicates
	2.5.3 Sets
	2.5.4 Lists, strings and n-tupls
	2.5.5 Structures
	2.5.6 Example - A University
2.6 Special Techniques
	2.6.1 Introduction
	2.6.2 SubClasses and Subtypes
	2.6.3 Specifications
	2.6.4 Binary Relations
	2.6.5 Serial Data
	2.6.6 Documentation
	2.6.7 Names
	2.6.8 Expressions
	2.6.9 Abstraction
2.7 Summary

CHAPTER 3 LANGUAGES
3.1 Introduction
	3.1.1 Outline
	3.1.2 Summary
3.2. On the Power of Data Directed Methods.
	3.2.1 Introduction
	3.2.2 Context Free Grammars
	3.2.3 Dictionaries
	3.2.4 Acceptors
	3.2.5 Acceptors & Dictionaries
	3.2.6 Power of MATHS
3.3 Grammar Theory
	3.3.1 Concurrent and communicating grammars
	3.3.2 Formal Model
	3.3.3 Intersections of CFLs
	3.3.4 Embedded intersections
	3.3.5 Multiple Grammars
3.4 MATHS as a MetaLanguage
	3.4.1 Introduction
	3.4.2 Examples
	3.4.3 Multi-Grammar Languages
	3.4.5 Traps
	3.4.6 Semantics
	3.4.7 Example - Binary
3.5 Additional Techniques
	3.5.1 Substitutions
	3.5.2 Partial Descriptions, Ellipsis, and Enthymemes
	3.5.3 Macros
	3.5.4 Parameterized Grammars
	3.5.5 Grammars on tuples.
	3.5.7 Mapping Semantics into Syntax
	3.5.8 Syntactic/Semantic Packages
3.6. Applications in MATHS
	3.6.1 MATHS_Lexemes
	3.6.2 Structure of Documentation
	3.6.3 Names
	3.6.4 ASCII Codes
3.7. Meaning of Recursion
	3.7.1 Recursion
	3.7.2 Topology and Syntax
	3.7.3 Topology of Semantics
3.8. Review
	3.8.1 Summary
	3.8.2 Conclusions
	3.8.3 Preview

CHAPTER 4 LOGIC
4.1 Introduction
	4.1.1 Outline
	4.1.2 Motivation
4.2 Lower Predicate Calculus(LPC)
	4.2.1 Propositions
	4.2.2 Predicates
	4.2.3 Quantifiers
	4.2.4 Equality, Uniqueness and "the"
	4.2.5 Numerical quantifiers
	4.2.6 Dynamic Predicates
4.3 Proof and Disproof
	4.3.1 Contradictions
	4.3.2 Deduction
	4.3.3 Arguments
	4.3.4 Reusing Proofs
	4.3.5 Proof Checking
4.4 Sets
	4.4.1 Set Expressions
	4.4.2 Quantifiers and Sets
	4.4.3 Set Operations
	4.4.4 Families of Sets
	4.4.5 Sets of pairs
4.5 Binary relations
	4.5.1 Definition
	4.5.2 Relations between Subsets
	4.5.3 Abuses of Notation
	4.5.4 Homogeneous relations
	4.5.5 Powers
	4.5.6 Invariants and Iterations
	4.5.7 Quantifying Relations
	4.5.8 Relations Defining Maps
4.6 Maps and Functions
	4.6.1 Definitions
	4.6.2 Equality of Maps
	4.6.3 Maps between subsets of types.
	4.6.4 Combining Maps
	4.6.5 Powers of maps
	4.6.6 Maps and Relations
	4.6.7 N-ary Relations and n-tuples
	4.6.8 Semantic Nets
4.7 Mathematics > Logic?
	4.7.1 Modern Mathematics
	4.7.2 Abuses of Notation
	4.7.3 Algebra
	4.7.4 Abstract Algebras
	4.7.5 Structure preserving mappings
4.8 Standard Definitions & Results
	4.8.1 Maps_and_Sets
	4.8.2 Unary operations
	4.8.3 Infix_operations
	4.8.4 Dynamic Predicates
	4.8.5 Infix Overloadings
	4.8.6 SERIAL operations
	4.8.7 Operations over Sets
	4.8.8 Relations
	4.8.9 Other Systems
4.9 Examples
	4.9.1 DFDs
	4.9.2 Outlines
4.10. Summary

CHAPTER 5 STRUCTURES
5.1 Introduction
	5.1.1 Outline
	5.1.2 Why Types?
5.2 Types
	5.2.1 Introduction
	5.2.2 Postulates
	5.2.3 Subsets of Types
	5.2.4 Type descriptions
	5.2.5 Overloading and Polymorphism
	5.2.6 Consistency
	5.2.7 Defining new types
	5.2.8 A Model of a Type
	5.2.9 Expressions
5.3 Documentation
	5.3.1 Documentation as Data
	5.3.2 Syntax
	5.3.3 Naming Documentation
	5.3.4 Semantics of Documentation
	5.3.5 Use and Re-Use
	5.3.6 Reusing Documentation
	5.3.7 Recursive documentation
	5.3.8 Automatic Validation?
5.4 Collections of Types
	5.4.1 A Type is a Category
	5.4.2 A Type is in a Category
	5.4.3 Types as a Data Base
	5.4.4 Types and Object Oriented Programming
	5.4.5 The Generic Logic Conjecture
5.5 Dynamic predicates
	5.5.1 Introduction
	5.5.2 Definition of Dynamic Predicates
	5.5.3 Arrays and functions
	5.5.4 Structures and Programs
	5.5.5 Bullet Proofing a Program
	5.5.6 Recursive Specifications
	5.5.7 Efficiency and backtracking
	5.5.8 Comments in programs
5.6 Asynchronous Communication
	5.6.1 Introduction
	5.6.2 Data Flows
	5.6.3 Acceptors
	5.6.4 Generators
	5.6.5 Filters
	5.6.6 Unnamed data flows
	5.6.7 Queues, Stacks, etc.
	5.6.8 Systems
	5.6.9 Standard Interface
5.7 Summary & Preview


CHAPTER 6 METHODS
6.1 Introduction
	6.1.1 Engineering
	6.1.2 Analysis
	6.1.3 Design
	6.1.4 Specifications
	6.1.5 Program Proving
	6.1.6 Dijkstra's Discipline of Programming
	6.1.7 CSP/CCS
6.2 Implementation Methods
	6.2.1 Relational DBMSs
	6.2.2 Shell Scripts
	6.2.3 Structured Coding
	6.2.4 Reuse and Transformation
6.3 Structured methods
	6.3.1 Stepwise Refinement
	6.3.2 Functional Programming
	6.3.3 Functional Decomposition
	6.3.4 Object Oriented Programming(OOP)
	6.3.5 Information hiding & Structured design
	6.3.6 Conclusions
6.4 Data Directed Design
	6.4.1 Generic DDD
	6.4.2 Description of DDD
	6.4.3 Syntax directed compilation
	6.4.4 Warnier/Orr/LCP
	6.4.5 Jackson Structured Programming(JSP)
	6.4.6 Theory of JSP
	6.4.7 Problems with JSP
	6.4.8 Unsolvable problems
	6.4.9 Conclusions
6.5 Dynamic Analysis and Design(DAD)
	6.5.1 Introduction
	6.5.2 Updates & Interfaces
	6.5.3 Using Life Histories in Analysis
	6.5.4 Representing Dynamics
	6.5.5 Definitions
	6.5.6 JSD and DAD
	6.5.7 DAD Method
	6.5.8 MATHS & DAD
6.6 Artificial Intelligence
	6.6.1 Introduction
	6.6.2 Expert Systems and Rule-Based Programs
	6.6.3 Logic Programming
	6.6.4 Knowledge Bases and Mirror Worlds
	6.6.5 Frame Theory
6.7 Discrete Mathematics and Z
	6.7.1 Introduction
	6.7.2 Definition of a constant in Z
	6.7.3 Z Schemas
	6.7.4 Generic Schemas
	6.7.5 Operations on Variables and Schema
	6.7.6 Pragmatics
6.8 Conclusion



CHAPTER 7 GRAPHICS
7.1 Introduction
	7.1.1 Outline
	7.1.3 An Illustration
7.2 Informal Description of TEMPO
	7.2.1 Sequential Structures
	7.2.2 Sets of elements
	7.2.3 Proofs
	7.2.4 Concurrent Constraints
	7.2.5 Entity Relationship Diagrams (ERDs)
	7.2.6 Data Flow Diagrams (DFD)
7.3 Examples
	7.3.1 MATHS Documentation
	7.3.2 Changing character codes(Hoare)
	7.3.3 Hoare's Prime Number Sieve
	7.3.4 Making a Stool
7.4 Formalism made Graphic
	7.4.1 Attributes of a Graphic
	7.4.2 Attributes of Text
	7.4.3 Grammars, Dynamics, etc
	7.4.4 Statics
7.5.Planarity
	7.5.1 D-structure==>planar
	7.5.2 Planar->D-structure
7.6 Review
	7.6.1 Summary
	7.6.2 Conclusions

CHAPTER 8 IMPLEMENTATION
8.1. Introduction
8.2. Conclusions
	8.2.1 Software Needs Engineering
	8.2.2 Non_Sequential Thinking
	8.2.3 Formal Methods Useful Throughout
	8.2.4 Modules are Communicating Dynamic Objects
	8.2.5 A World of Software Maintenance
	8.2.6 Experimental Results
8.3. Research Topics
	8.3.1 Introduction
	8.3.2 Errors in MATHS
	8.3.3 Models of the Software Process
	8.3.4 Automatic Support
	8.3.5 Theory
	8.3.6 Meta-MATHS
	8.3.7 Semantic Nets
	8.3.8 Scheduling and Performance
	8.3.9 Miscellaneous
8.4. Actions for Practitioners
	8.4.1 Create a New Profession
	8.4.2 Look for Better Tools
	8.4.3 Develop Handbooks & Repositories
	8.4.4 Use The Reality Principle
	8.4.5 Use Dynamics
	8.4.6 Use Cybernetics
	8.4.7 Improve Local Software Process
8.5. Actions for Teachers
	8.5.1 Use MATHS
	8.5.2 Use Computers Differently
	8.5.3 Change Course Content
	8.5.4 Develop Post-Graduate Software Engineering
	8.5.6 Develop a New Curriculum
	8.5.7 Summary
8.6. Improve MATHS
	8.6.1 Analysis
	8.6.2 Prototypes
	8.6.3 Design

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