![]() | MSc-IT Study Material January 2011 Edition Computer Science Department, University of Cape Town | MIT Notes Home | Edition Home | |
There are many kinds of software systems. Clearly, software used by each kind of system will differ. It is useful (and common practice) to break them down into categories such as the following:
Data-processing systems
Real-time systems
Decision support systems
Knowledge-based systems
Different people and authors may break down the categories further, or provide other categories. The list above is informal but useful, since (as we shall describe below) each category of system can be distinguished from other kinds of information system.
Such a system generally has some large database of information and the purpose of the system is to provide quick, easy access and processing of data.
Depending on the degree to which data is processed and analysed, systems may be classified as either transaction processing systems or management information systems. A system which basically manages the data necessary to perform the daily business is a transaction support system. A system which summarises data in a form useful for the management of a business is a management information system.
The environment outside the boundaries of the system is not under the system's control. Therefore a system will need to be able to respond to data whenever it arrives — real time systems must respond quickly to changes in the inputs from the environment. Typical response times would be of the order of a few milliseconds or even microseconds. To achieve such a fast response the system needs to prioritise its tasks, often dividing them into several processes that may interrupt each other. However, as soon as there are several tasks, they must be able to communicate properly with one another and not interfere with each other. Because of environmental interactions, real-time systems have to be robust to accidents, errors and failures in the external parts of the system. That is, they must respond in a safe and controlled manner in (almost) all conceivable circumstances.
A typical example is an auto-pilot that must adjust the engines and ailerons of an aeroplane to keep it on course. An automated manufacturing system — such as is used in car factories — has to detect when specific parts have arrived in designated zones of the factory, and then make sure that they are correctly assembled.
Although a data-processing system may help to identify a problem in the business, it does not suggest any solution to the problem. In a decision support system, given a problem, the system attempts to fit the data on the problem into some model and thereby suggest a solution to the problem. A decision support system may have different models, say operational research or statistical models. The manager chooses the model appropriate to the problem.
Ultimately, of course, any decision is made by the manager and not the system. The manager may know or guess something which cannot be represented in the system's models, and this may affect their decision. The system is simply there to clarify the problem and suggest solutions as far as it is able.
In some situations it is not a large amount of data that needs to be handled, but a large amount of knowledge. Knowledge is a combination of rules, laws, constraints and previous experience. A knowledge-based system encapsulates a knowledge-base, like a database but filled with knowledge, and enables the user, possibly unskilled in the problem area, to use the knowledge-base to solve problems.
In business systems, the knowledge-based system often takes the form of what is called an “expert system”. Expert systems embody the knowledge of a particular class of experts, such as medical doctors, and the system (ideally) provides the same answers as an expert of that class would. In the case of a medical expert system, this could be a diagnosis of an illness, and perhaps a recommendation for a specific choice of treatment or for further tests.
Software programs can be categorised in the following manner:
System software
Application software
Engineering / scientific software
Embedded software
Product-line software
Web-applications
Artificial intelligence software
System software is software written to service and support other programs. Compilers, editors, debuggers, operating systems, hardware drivers, are examples of such software. Most system software deals heavily with computer hardware, multiple users, concurrent operations and process scheduling, resource sharing and virtualisation, complex data structures and multiple external interfaces.
Application software are programs designed to solve a specific business need. Most software operating with business and technical data are application software, as are most real-time systems.
This software supports the use and production of scientific and engineering data sets. They are used in almost all engineering and scientific disciplines, from simulating water flow, lighting conditions, and aerodynamics, to examining the large scale structure of the universe. Engineering software is also used for design purposes (such software is called CAD software, for Computer Aided Design) and for automating the manufacturing of goods (CAM: Computer Aided Manufacturing).
This is software that resides directly within some hardware component in order to provide control over the component or other vital features required for it to function. Embedded software is widespread, and can be found in everything from phones and microwave ovens to cars, aeroplanes and medical equipment.
A web application is an application accessed via a web browser over a network. Web applications offer a variety of functions, and some application software are now implemented as web applications, such as Google Docs.
Artificial intelligence software (AI) has been defined as "the science and engineering of making intelligent machines" (John McCarthy). Application domains that make use of AI software include robotics, expert systems, pattern recognition, theorem proving and game playing.