What is common about design in all the different areas?
It is creative – before there is nothing, afterwards there is something.
It uses science when and as necessary.
It leads to something that is usefull, or pleasing, or both.
What is program design?
- Program design is both a noun and a verb. To go about program design is to perform the act of devising the structure for a program. A program design (the noun) is the structure of the program. Program design starts with a specifications of what the program is to do and end with the structure of the program.
A program has a structure at different levels of detail. The overall structure consists of a number of functions, procedures or subprograms. The precise name of these units differs from one programming language to another. There is a more detailed structure within each of these units. The actions consist of combinations of sequences, selections (if statements) and repetitions (loops).
How does the design of computer program differ from the design of other things?
There are methods for program deign (explained in this book!).
The product of program design has no concrete existence.
Two types of program design. Architectural or high-level design is about the grand-scale structure of a program. The product of this stage is a large-scale or architectural structure for the software, expressed in terms of modules and their interconnections. Detailed or two-level design is concerned with the detailed structure of each of such modules. Also, low-level design is concerned with the detailed design of small to medium-sized programs.
1.2 Why do program design?
There are several reasons for claiming that program design is important.
Reliability - Programs are complex. It is very difficult to construct programs that work without failing and that do what is expected of them. There are lot of ways of trying to ensure that a program works reliably, but a key method is design. If a program is designed properly, it should work properly.
Cost - Another consequence of the complexity of programs is the fact that it takes a long time to write programs and therefore, if someone is being paid to do it, it cost a lot of money. Currently most of the time taken up in developing a program is spent in testing, and particularly debugging. However, if a program is designed right, it will be easier to test and debug.
Maintenance- Most useful programs are modified, once completed, and then for some considerable time afterwards. This is called program maintenance. Many professional programmers spend a lot of times maintaining programs. It is a demanding and difficult job because they have to find out how the program works, which parts to change and then how to alter the program. A program that has been well designed is easier to modify.
THE RANGE OF APPLICATION AREAS
This is the traditional area of data processing that used to be associated with massive mainframes, but which is now more associated with networks of PCs. The main characteristics of these systems is that they are dominated by file processing.
Knowledge-based systems and artificial intelligence
These are fairly novel applications of computing. To meet these applications, information is stored in complex and novel ways.
When you press a button on the screen of a GUI (Graphical User Interface) screen, a piece of software has to respond to the demand.
Numerical programs are characterized by large amounts of computational power using sometimes complex algorithms. The input and output requirements of such programs are usually rather minimal.
Real-time and embedded systems
The control system in a fly-by-wire aircraft must be highly reliable and must respond within predictable times. There is a high degree of parallelism (things that have to be done the same time). This places particularly stringent demands on the software.
Special features and strengths
A systematic method may consist of small, simple steps and therefore be easy to use. As a consequence, it may create good documentation.
The top-down approach to design or to any task means starting with the overall objective that is to be achieved.
Good or small-scale design?
Small-scale design is applicable to programs that range in length from 1 page or 50 lines up to about 40 pages or 200 lines.
Good for large-scale design
Large programs are programs over about 40 pages or 200 lines of code.