Discovering Information Systems by Jean-Paul Van Belle, Jane Nash, et al - HTML preview

PLEASE NOTE: This is an HTML preview only and some elements such as links or page numbers may be incorrect.
Download the book in PDF, ePub, Kindle for a complete version.

Volume Serial Number is 3D63-14D1

Directory of C:\TODO

PAHEL1.JPG PAHEL2.JPG PAHEL3.JPG

PIC_003.JPG PIC_001.JPG PIC_004.JPG

PAHEL7.JPG PAHEL8.JPG VAN1.JPG

13 file(s) 638,161 bytes

0 dir(s) 708,476,928 bytes free

C:\TODO>copy van1.jpg a:

Not ready reading drive A

Abort, Retry, Fail?r

Figure 5-1:

A sample MS-DOS session.

5.1.2 Menu-driven Interface

A menu-driven user interface allows the user to select from a menu, a predefined list of available options or selections. This is already an improvement on the command-driven

interface, since the user no longer has to rely on memory to remember the available options or commands. Many applications running under command-driven operating systems are menu-driven. “Power-users” (very experienced or knowledgeable users) often prefer the command-driven interface to a graphical alternative, because it allows a greater degree of customisation and may be quicker. A menu-driven interface is also appropriate when you wish to limit the functions that are available to users.

Figure 5-2 below shows an example of the Novell Netware SYSCON utility. Novell Netware

is a popular networking operating system.

Figure 5-2: A menu-based interface (Novell)

Discovering Information Systems

53

index-66_1.png

5. Software

Section II

5.1.3 Graphical User Interface

The graphical user interface (GUI) is currently the most popular interface on PCs. It requires a high-resolution graphics monitor. The metaphor used in many GUIs is that of a “desktop” on which various tools and documents are laid out. Active applications will have their own

window, which can be re-sized at will, often overlaying windows of other applications.

(Hence the name of the dominant GUI operating system, Microsoft Windows. ) A window typically contains a document (or at least as much it as will fit in the space) and a number of tool and menu-bars. Options and commands on toolbars, as well as non-active applications or documents on the desktop, are indicated by means of icons (small graphical symbols or pictures). A GUI requires frequent use of the pointing device, usually a mouse, e.g. to move items across windows, highlight portions of a document, select specific icons or pinpoint destinations.

Figure 5-3 gives an example of a Windows desktop with a few applications open.

Figure 5-3: A GUI (MS-Windows XP)

5.1.4 Pen-based Interface

Pocket computers, handheld computers and personal digital assistants (PDAs) are generally too small to incorporate a keyboard. Instead, many combine the liquid crystal display (LCD), which is the output screen, with a pressure sensitive layer that can be used for input. All user input happens by means of a stylus or any pen-like pointing device. The pressure-sensitive LCD pad is then used in the same way as one would use a writing tablet or clipboard. Most of the interface consists of ticking off menu options, such as lists or timeslots on a diary.

However, many devices also employ advanced handwriting recognition software so that users can actually enter words and numbers in their own handwriting.

54 [Free reproduction for educational use granted]

© Van Belle, Eccles & Nash

Section II

5. Software

5.1.5 Natural Language Interface

Voice input and output based on a limited set of stored sounds is readily available across all computer platforms, and is widely used by the visually impaired, and for hands-free data input. However, the ambition of a large number of computer scientists is to provide a

completely unrestricted natural language interface to computers. Although voice recognition and voice synthesis are technically quite achievable, the major technical challenge remains to interpret standard English language statements, because this would require actual

understanding or knowledge processing on behalf of the computer. This active area of research is known as natural language processing (NLP). Although it has become relatively standard practice to develop natural language interfaces for restricted subject domains, we are still a long way from providing a natural language interface that can deal with the many ambiguities of general life.

5.2 Application Software

The type of software with which users are in general most familiar, is application software –

programs such as word processors or salary packages that do specific jobs to improve

business productivity. Because of the big variety in user needs, there is a large multitude of application software available. By comparison, there are only about 5 to 10 popular different operating systems, and probably less than 100 different ones in use world-wide. If one looks at development tools, there are about 20 to 100 fairly popular development platforms

available, although there are several thousands in use. But a quick scan of e.g. the web-site of

“shareware.com” will reveal tens if not hundreds of thousands of different applications, with several thousands of commercial applications enjoying fairly widespread use. It is therefore impractical to attempt to discuss each of the many different applications that are available.

Instead, this section will look at some of the many classification schemes used for various types of application software.

5.2.1 Classification by Function

A popular way to classify applications is to distinguish them according to application area.

§ General purpose, productivity or end-user applications assist a wide variety of users with common information processing tasks such as number crunching, word processing,

business graphics, web browsing, electronic mail, scheduling or data management.

§ Business applications aim to automate common, generic business functions or processes.

They include debtors, creditors, general ledger, inventory management, order entry and

sales processing.

§ Scientific applications are focussed on the needs of scientists and researchers: astronomy, weather forecasting, geographical information systems (GIS), statistics, simulations, engineering drawings, etc.

§ Finally, there is a large category of miscellaneous applications that do not fit neatly in any of the above categories, such as computer-based training software or games.

Trivial fact: Chess champion Gary Kasparov was beaten by a computer, Deep Blue, in 1997.

Discovering Information Systems

55

5. Software

Section II

Deep Blue considered 200 million positions per second in order to evaluate alternative outcomes before making each move.

5.2.2 Vertical vs Horizontal Classification

§ Vertical applications target a specific industry or sector with similar business processes.

Examples are packages for video store management, medical practice management,

pharmacists, retailers, commercial banks etc.

§ Horizontal applications are business applications that can be used by virtually any business because of the universality of the business needs, e.g. accounting applications, inventory management or debtors control.

§ Enterprise-wide systems, often called enterprise resource planning (ERP) systems, aim to fulfil all the information system requirements of a business. These systems consists of many different modules, covering all generic business processes, with a great degree of

standardisation of interfaces and an integrated, corporate database. Popular ERP vendors are SAP, BAAN and PeopleSoft.

§ Inter-organisational systems (IOS) are systems that cross the boundaries of individual organisations. Examples are electronic data interchange (EDI), electronic funds transfer (EFT) or the Internet.

5.2.3 Organisational Level

A popular academic classification of functional business applications looks at the hierarchical level of the organisation in which the software is used. This has already been discussed in Chapter 1.

§ Transaction Processing Systems (TPS) perform the business process-related data-processing tasks such as invoicing, statements, inventory, order and sales processing.

They assist mainly clerical staff.

§ Management Information Systems (MIS) assist the operations and line managers with the control of the business process activities, usually by means of standard, regular reports.

Virtually all TPS incorporate a MIS reporting module.

§ Decision Support Systems (DSS) are more interactive applications that actually assist with the decision making process of middle management (and professionals). Spreadsheets,

geographical information systems ( GIS) and expert systems are good examples of DSS.

§ Executive Information/Support Systems (EIS or ESS) assist top-level executives with their daily information needs for top management control as well as their strategic decision-making.

5.3 System Development Software

Many end-users never come into contact with the software that was used to create their

applications (and operating systems). However, a good understanding of the alternative

56 [Free reproduction for educational use granted]

© Van Belle, Eccles & Nash

Section II

5. Software

system development software options can help you in comparing different software packages, or in making the decision whether to have an application custom-developed for a particular business need.

5.3.1 Programming languages, source code and compilers

The majority of systems are developed by means of programming languages: artificially constructed languages to code the instructions for a computer. These languages have their own vocabulary, grammar ( syntax), constructs and have often been designed to meet the demands of developing certain types of applications.

Lately, more and more systems are being developed partially or wholly by means of

application generators. An application generator allows the system developer (or even end-users) to define problems for the computer in terms of inputs, outputs and processing

requirements, without having to specify technical implementation issues such as how to store data in memory or on file. In theory, these tools require no programming knowledge; in

practice, all but the simplest of applications produced by these generators require a substantial amount of tweaking: changes made manually, using a programming language, in order to make the program function properly.

A computer application consists of a series of detailed and unambiguous instructions. When the CPU executes a program, these instructions must be in machine language: the binary code that can be interpreted directly by the CPU. As will be shown below, it is extremely difficult to write even the simplest application directly in binary code. In addition, each different type of CPU has a different set of programming instructions (also called operation codes or op codes) which would require you to rewrite your application for each different CPU type. In practice, almost all applications today are written in a higher-level programming language.

The list of instructions in a programming language is called the source code. A translation program is then used to translate this source code into the object code i.e. the low-level machine instructions that can be interpreted by the CPU. There are two basic types of

translation programs.

Compilers – programs that translate a high-level language program in its entirety into a new, machine language program. This program is called the executable or compiled program. To run the program, the compiled program can be loaded directly by the

operating system into memory and executed as such by the CPU. The original source

code is not needed to run the program; and neither is the compiler. Of course, the source code will be needed by the developer whenever a change or modification needs to be

made to the application; in which case the application has to be re-compiled.

Interpreters – programs that convert each of the source program’s individual instructions one at a time into equivalent machine language instructions and execute them before

translating the next instruction. This is done every time the program is executed. Hence many instructions may have to be translated and executed several times during a single

execution of the program. The source program as well as the interpreter must always be

available whenever the program needs to be executed.

As can be inferred, it is usually much more efficient to compile than to interpret a program. A Discovering Information Systems

57

5. Software

Section II

compiled program also guards the intellectual property of the developer better, since the users do not have access to the source code. Most commercial software is being distributed in

compiled format. The advantages of interpreters are their interactivity (especially useful while developing and debugging the application) as well as the smaller size of the program code. An example of an interpreted language is old-style BASIC although application macros,

spreadsheets and JAVA virtual machines share many characteristics of interpreters. In

practice, hybrid models have been developed that combine the benefits of both compiler and interpreter.

With this basic terminology out of the way, let us look at the various types of programming languages.

5.3.2 First generation: machine language

The lowest level in which programs can be written is machine language (ML). This is the binary code that can be interpreted directly by the CPU. Obviously, this machine language is dependent on the type and “model” of CPU the computer is using; since each CPU has a

different instruction set. The instruction set, also called the operand set or op set, is the collection of different instructions a specific CPU is able to understand and execute.

The following is a code fragment in machine language from the MS-DOS operating system.

(A full listing of just the command interpreter alone would fill this entire book!) Each sequence of 8 bits is equivalent to a single byte.

00001110 00101110 11111111 00101110

00001100 00000001 11111011 11101000

01000011 00000000 00011110 00001110

00101110 11111111 00101110 00010000

00000001 11101000 00111001 00000000

00011110 00001110 00101110 11111111

Because these sequences of 1s and 0s are extremely difficult to read, programmers usually use hexadecimal (or hex) notation, which is actually a shorthand for binary notation. Each sequence of 4 bits is “collapsed” into (or represented by) a hexadecimal “digit” from 0 to 9, and A to F as per following table.

Binary

Hex

Binary

Hex

Code

Code

Code

Code

0000

0

1000

8

0001

1

1001

9

0010

2

1010

A

0011

3

1011

B

0100

4

1100

C

0101

5

1101

D

0110

6

1110

E

0111

7

1111

F

Thus the machine language instructions above can be represented much more compactly in

hexadecimal code groups as follows.

0E 2E FF 2E 0C 01 FB E8 43 00 1E 0E

2E FF 2E 10 01 E8 39 00 1E 0E 2E FF

58 [Free reproduction for educational use granted]

© Van Belle, Eccles & Nash

Section II

5. Software

Needless to say, this approach to software development is extremely error-prone and time-intensive: a single bit out of sequence would halt the program.

5.3.3 Second generation: assembler language

The development of assembler languages represented a big improvement by replacing the binary or hex code with mnemonics that are easier to remember. Also, instead of having to track each memory address, so-called symbolic address could be used to give more descriptive names to memory locations. E.g. instead of referring to memory location “E8 39”, one could call it “SALES”.

The following is a sample fragment of assembler language code (with lower-case comments

on the right-hand side).

LABL INFLATE

Start of program segment “Inflate”

LOAD SALES

Retrieve “SALES” value from memory

MULT 2D

Multiply it by the (constant) “2”

IFLT 1000D

Check if result is less than “1000”

JUMP INFLATE

If so, continue back at “INFLATE”

STOR BIGSALES Else, store the result in BIGSALES”

...

Although this is a great improvement on machine code, it was still very cumbersome. Hence the development of third-generation languages.

5.3.4 Third generation procedural languages

Third-generation (3GL) or procedural languages provided a much higher level of abstraction.

Although each 3GL instruction still corresponds more or less directly to a chunk of equivalent assembler instructions, a lot of the nitty-gritty detail household work is performed by the compiler. Another advantage of 3GL is that these languages are generally fairly computer-independent. Each computer manufacturer will develop a language interpreter or compiler for his own machine, so that the software developer does not have to worry about what

instruction set is supported by any particular CPU.

Many different 3GLs have been developed during the 60s and 70s. Some of the more

successful ones were BASIC (“Beginner’s All-Purpose Instruction Code”), COBOL

(“COmmon Business Oriented Language”), FORTRAN (“FORmula TRANslation

language”), ALGOL (“ALGOrithmic Language”), PASCAL, LOGO, C, PL-1 and many

more.

The following mini-program in BASIC will draw a sine curve.

SCREEN 2

VIEW (20, 2)-(620, 172), , 1

CONST PI = 3.141592653589#

WINDOW (0, -1.1)-(2 * PI, 1.1)

Style% = &HFF00 ' Use to make dashed line.

DO

PRINT TAB(20);

INPUT "Nr of cycles (0 to end): ", Cycles

CLS

LINE (2 * PI, 0)-(0, 0), , , Style%

' Draw the x (horizontal) axis.

Discovering Information Systems

59

5. Software

Section II

IF Cycles > 0 THEN

' Start at (0,0) and plot the graph:

FOR X = 0 TO 2 * PI STEP .01

Y = SIN(Cycles * X)

' Calculate the y coordinate.

LINE -(X, Y)

' Draw a line from last point to new point.

NEXT X

END IF

LOOP WHILE Cycles > 0

Anyone who has ever written any computer program or been exposed to a 3GL, will be able

to understand many of the instructions above, so the 3GL can be considered much more

programmer-friendly than the earlier generations. But they are still not friendly or natural enough, definitely not in the eye of non-specialist end-users.

5.3.5 Fourth generation languages and query languages

There is no consensus as to what qualifies a language as a “fourth generation”. Some authors argue that any non-procedural language is fourth generation, others reserve the term “fourth generation language” (4GL) for database query languages only.

A query language is a high-level language interface provided by database management systems for accessing data stored in the database. As database management systems are

getting more sophisticated, the query language is becoming increasingly natural. Here is how one would request a list of the names of all Cape Town customers who bough a Golf costing more than R40000.

• Using a fairly structured query language:

Ø TABLE FILE CUSTOMER

Ø DISPLAY CUST_NAME WHERE (PROD EQ ‘GOLF’ AND CUST_CITY EQ

‘CAPE TOWN’ AND PRICE GT ‘40000’)

• Using a Query-by-Example interface:

CUST_

CUST_

PROD

PRICE

CUST_CITY

CODE

NAME

*

GOLF

>40000

CAPE TOWN

• Using a fairly advanced 4GL natural language interface:

Ø SHOW ME ALL THE CAPE TOWN CUSTOMERS THAT BOUGHT A GOLF

COSTING MORE THAN 40000 RAND

5.3.6 Object-oriented languages

Procedural programming languages still construct a program as a list of instructions. The computer starts executing instructions at the beginning of the program, processes them more 60 [Free reproduction for educational use granted]

© Van Belle, Eccles & Nash

Section II

5. Software

or less sequentially, operating on some data set stored on a file or database outside the program, until the end of the program is reached. Object-oriented ( OO) languages take a complete different approach.

Initially, OO languages were used to simulate physical, real-world systems as studied by the natural sciences. Lately, it was found that OO languages were a natural choice for the

development of graphical user-interfaces, distributed environments and very interactive

applications. An early OO language was Smalltalk but current popular languages are C++ (for operating systems and end-user applications) and JAVA (for Internet and multiple platform applications).

The first step in developing an object-oriented application is to identify suitable objects.

These can be physical entities such as an employee or a part; or they could be informational entities such as an invoice or report. These objects then not only become independent

“holders” of the data pertaining to them, they also encapsulate or contain the methods: actions or instructions that can be performed on the data. The different data elements of each object are its attributes. Data is sent to/from an object, or an object is requested to execute a certain action by means of a message sent to it by another object.

A way to look at an object-oriented application is to view it as a managed “cloud” or

collection of objects, each sending each other messages and executing their activated

methods, in turn generating more messages to other objects etc. Because the execution of the OO program depends on certain events (e.g. a user clicking on a certain icon, or a “ready”

signal from a hardware device) to trigger other events by means of messages, the