PART 1
Systems Methodology
Chapter 1
Introduction to System Software
System software is a collection of software tools with the goal of making computers convenient and efficient by:
- allowing programmers to develop programs using a human logic;
- allowing hardware to execute programs using a machine logic.
After more that 50 years of computer use during problem solving process the question one may raise is: does the system software really make computers convenient to computer users?
Postponing the answer to the previous question, we say that today goal of system software should be: allow application domain experts so solve their problems by manipulating concepts and abstractions of their own problem domains using a computer platform.
This means move the computer process involved within problem solving from the computer environment within the application domain environment. For example, rather than developing a C or Fortran program to solve a second degree equation ax2 + bx + x = 0 a high-school students should do by typing:
computer: solve equation ax2 + bx + c = 0
Likewise, a mechanical engineer should be able to solve differential equations without writing (conventional) Fortran programs!
So, how do we develop (engineer) system software? Is this approach amenable to developing software tools that can be used by application domain experts independent of their computer education?
While developing software tools we should use the same approach as for any other engineering activity, that is:
- Define the artifacts (objects) handled by system software;
- Develop a methodology for handling system software artifacts;
- Develop tools to perform this activity.
We use systems methodology for system software development. The rationale for using systems methodology for software tool development are:
- Systems describe complex relationship among things and systems abound in computer industry;
- A system can be formally defined in the framework of universal algebra;
- Similarity of the objects manipulated by algebra and computer science, which are abstractions;
- Reuse of the theories developed by algebraic methodology in the framework provided by system software;
- Universality of algebraic methodology for science discovery.
1.1Abstraction Manipulation
Since software objects are abstractions the first thing we need is a mechanism for abstraction manipulation. This mechanism is provided by the algebraic methodology where:
- Abstract objects are manipulated by their representations. The representation of a concrete or abstract object is an item of information that stands for that object.
- Representations are characterized by the tuple 〈Value, Literal, Type〉:
- –The Value is an entity that measures the represented object thus allowing us to relate abstract objects to each other;
- –The Literal is a notation allowing us to refer to the object while manipulating it;
- –The Type indicates a set of operations we can use while manipulating the object.
Example abstract objects:
- Numbers: values are units of, literals are strings of digits, types are operations with numbers;
- Blue prints (what do blue-prints represent?): values are concrete object represented, literals are graphic designs used to represent the objects, types are operations used to manipulate the objects;
- C-language constructs (what do C language constructs represent?): values are computation entities represented by the C language construct, literals are string of terminal characters denoting C language constructs, types are operations used to combine C language constructs getting other C language constructs.
System software tools manipulate abstractions obtained by mapping real world objects into computation representations by the mechanism of abstraction manipulation that operates with:
- Mental representations, M;
- Computational representations, C;
- Explanatory representations, E.
That is, system software tools manipulate abstractions represented by the scheme
. Here we sketch properties
Value, Literal, Type for each of M, C, and E.
V alue(
M) is a brain representation of the object represented;
Literal(
M) is the language representation of the object represented;
Type(
M) is the collection of operation brain can perform on the object represented. Similarly,
V alue(
C) is measured by the intellectual meaning of the object represented;
Literal(
C) is the language expression of the object represented, such as a natural language expression or a computational language expression, or a musical language expression, etc., depending upon what
M is;
Type(
C) is the collection of operations allowed by the language used to represent
C. The tuple 〈
V alue, Literal, Type〉 applied to
E can be defined within the framework of knowledge manipulation.
The generic approach for abstraction manipulation through system software tools consist of:
- Develop a semantic model for the object you want to represent (one world), W1.
- Develop a syntactic model for the object you want to represent (another world), W2.
- Put them together: R : W1 → W2.
- Manipulate W2 as you would do with W1.
Examples abstraction manipulation in everyday life are:
(1)Handling numbers: represent them, define operations on them i.e, develop the arithmetic as a tuple
Arithmetic = 〈Constants⊕ Variables⊕ Expressions;=, :=, +, −, etc〉
and study properties of expressions with numbers.
(2)Handling logical objects: define the logical values (true, false), constants, variables, and operations on them (∧, ∨, ¬, …) thus developing the propositional logic as the tuple
Logic = 〈{true, false} ⊕ Variables ⊕ Expressions; =, :=, ∧, ∨, ¬〉
and study the properties of logic expressions.
(3)Handling lists: define lists, define list notation, define operations for list creation and manipulation, study properties of list expressions.
Challenge: identify in each of the examples above the three elements involved in abstraction manipulation: W1 (semantics), W2 (syntax), and E : W1 → W2 their association mechanism.
1.2Systems Methodology
Informally a methodology is a collection of methods, principles and rules, as those of an art or science (see Webster). Example methodologies are a high school algebra methodology, high school geometry methodology, C language programming methodology, house building methodology, etc. Note that principles and rules of a methodology are determined by:
- the model of the problem to be solved;
- relations between agents manipulating principles and rules while solving problems.
Consequently we need to understand the concept of a problem.
1.2.1Problem solving
Following Polya [Polya (1957)] we say that to have a problem means to search consciously for some action (solution) appropriate to attain a given aim (purpose). Note that hidden in this phrase are three things that characterize a problem: unknown, action, purpose. To solve a problem means to find such an action. Example problem is C programming: unknown is the C program, action is the C program development, and the goal is solving problems by C programming. A problem is thus characterized by three elements :
(1)unknown, (what is a C program?);
(2)data, (what do we need to know in order to write C programs?);
(3)purpose, (what are conditions satisfied by unknown and data according to the goal of C program development) or (how do we or how does the C compiler recognize a valid C p...