software as math ryan luna javier garcia (or why you should be paying attention in this class)

15
Software as Math Ryan Luna Javier Garcia (or why you should be paying attention in this class)

Post on 20-Dec-2015

215 views

Category:

Documents


1 download

TRANSCRIPT

Software as Math

Ryan Luna

Javier Garcia

(or why you should be paying attention in this class)

Overview

• What the heck is discrete math?

• Algebraic Specifications

• Theories and Models

• Specification Morphisms

• Homomorphisms and Isomorphisms

• Useful applications!!

Discrete Mathematics

• What is discrete mathematics? Discrete mathematics is the part of mathematics devoted to

the study of discrete objects where discrete refers to consisting of distinct or unconnected elements.

• It could be said that these subjects define the mathematical basis for computing.

• A key reason for the growth in importance of discrete mathematics is that information is stored and manipulated by computing machines in a discrete fashion.

Algebraic Specifications

• An algebra consists of a set (sort) and a collection of operators defined over this set.

• A good example:Natural Numbers: {0,1,2,3,…}Operators: + - x ÷Each operator is defined over two

elements in the sort.• An algebra is multi-sorted if it includes

multiple sorts.

How does this relate to me?

• A good example of a multi-sorted algebra is the Abstract Data Type programming style.

• Remember:

When defining an ADT we define:

1) Collection of types

2) Set of functions and procedures for those types

Binary Search Tree ADT

• Sort: Any elementary or user defined data type.

BSTree <int> myTree;

BSTree <string> strTree;• Operators: The functions written for the tree.

void BSTree <ADT> insert (ADT element)

void BSTree <ADT> remove (ADT element)

void BSTree <ADT> retrieve (ADT element)

Heap ADT

• Sort: Any elementary or user defined data type.

Heap <int> myTbl;

Heap<string> strTbl;• Operators: Implementation of the Heap.

void insert (ADT element);

ADT removeMax ();

void clear();

Theories and Models

• Suppose a computer program could take an algebraic specification and from it generate all its implications; this set of true statements would be the theory associated with the algebraic specification.

• A theory models a system if:

1) Every observable behavior of the system is a theorem in the theory. (Completeness)

2) Every theorem in the theory corresponds to a behavior in the system. (Consistency)

• E=MC2

Specification Morphisms

• Why do we care, really?

• Software development is all about changing models.

• Software Design Process

• Specification morphism represents the transformation of one specification into another.

Homomorphisms

• A homomorphism exists between two specifications if every thing true in A

is true in B.• A ≠ B, but A B.

B

A

Homomorphism between A and B.A is more abstract than B.B is more general than A.

BC

A

Homomorphism between C, A and BB is more general than A or C.B represents both A and C.

Isomorphisms

• An isomorphism exists between A and B when the two specifications represent the same theory.

• Specifications are “structurally identical.”• Used less often in software engineering

because they are “too strong.”• Physical examples:

– Big Ben and a wristwatch– Two decks of cards, each a different color

A Good Example…

• Consider two data structures: a stack and a list.

• A homomorphism exists between the stack and the list.

• Stack ListList

Stack

Another Good Example…

• Consider several data structures:

A queue, a stack, and a list.• We can define a homomorphism between the

queue and the list, as well as the stack and the list.

• Stack List and Queue ListList

Queue

Stack

No homomorphism exists between a stack and a queue!

Finally…

• Algebraic specifications relate well to ADT programming

• Knowing homomorphisms between two specifications can make life easier!

• Set Theory and Functions can have real applications!

Questions?