This chapter discusses about following topics:
Introduction Types of Computer Software System Software Operating Systems Language and Language Processors Low Level language Machine Language Assembly language Assembler High Level Language Compiler Interpreter Utilities Application Software Tailored Software Packaged Software WordProcessing Systems Spreadsheet Systems Database Management Systems Presentation Systems Graphic Designing Web Browsers Email Clients Multimedia and Entertainment Customized Software Liveware Firmware Cache Memory
Software is the most important component of computer system. Without software, a computer turns into a dead body – a dead slave!
Software is a generic term for organized collections of computer data and instructions, often broken into two major categories: system software that provides the basic non-task-specific functions of the computer, and application software which is used by users to accomplish specific tasks. – Wikipedia
In other words, software is a set of programs, procedures, algorithms and its documentation concerned with the operation of a data processing system. Thus the software contains the instructions that tell a computer what to do and how to do to solve a specific problem.
In general use, by software we understand a group of programs to make a system run. A program contains instructions or commands to perform a task. The term package or suite is used to describe a group of related software.
Types of Software
System software is responsible for controlling, integrating, and managing the individual hardware components of a computer system so that other software and the users of the system see it as a functional unit without having to be concerned with the low-level details such as transferring data from memory to disk, or rendering text onto a display. Generally, system software consists of an operating system and some fundamental utilities such as disk formatters, file managers, display managers, text editors, user authentication (login) and management tools, and networking and device control software.
An operating system (OS) is a set of software that manages computer hardware resources and provides common services for computer programs. The operating system is a vital component of the system software in a computer system. Application programs require an operating system to function.
The operating system is the most important program that runs on a computer. Every general-purpose computer must have an operating system to run other programs. Operating systems perform basic tasks, such as recognizing input from the keyboard, sending output to the display screen, keeping track of files and directories on the disk, and controlling peripheral devices such as disk drives and printers.
For large systems, the operating system has even greater responsibilities and powers. It is like a traffic cop – it makes sure that different programs and users running at the same time do not interfere with each other. The operating system is also responsible for security, ensuring that unauthorized users do not access the system.
Operating systems can be classified as follows:
Multi-user operating system : Allows two or more users to run programs at the same time. Some operating systems permit hundreds or even thousands of concurrent users.
Multiprocessing operating system: Supports running a program on more than one CPU.
Multitasking operating system: Allows more than one program to run concurrently.
Multithreading operating system: Allows different parts of a single program to run concurrently.
Real time operating system: Responds to input instantly. General-purpose operating systems, such as DOS, Windows and UNIX, are not real-time.
Operating systems provide a software platform on top of which other programs, called application programs, can run. The application programs must be written to run on top of a particular operating system. Your choice of operating system, therefore, determines to a great extent the applications you can run. For PCs, the most popular operating systems are DOS, OS/2, and Windows, but others are available, such as Linux.
As a user, you normally interact with the operating system through a set of commands. For example, the DOS operating system contains commands such as COPY and RENAME for copying files and changing the names of files, respectively. The commands are accepted and executed by a part of the operating system called the command processor or command line interpreter. Graphical user interfaces allow you to enter commands by pointing and clicking at objects that appear on the screen.
Language and Language Processors
There are 2 types of computer languages: low level language and High level language.
Low Level Language
Machine language and assembly language are called low level language because they are used to write programs that deal with the low level tasks such as transferring data from memory to disk, or rendering text onto a display. Low level language is machine dependent i.e. a program written for one type of computer does not work on other computers. You need to know the details of a computer rather than problem for which you are writing programs.
The lowest-level programming language. Machine languages are the only languages understood by computers. While easily understood by computers, machine languages are almost impossible for humans to use because they consist entirely of numbers. It is tiresome and error prone to program in machine language. Programmers, therefore, use either a high-level programming language or an assembly language.
Every CPU has its own unique machine language. Because machine language is directly understood by computer you don’t need to convert it to run.
Assembly languages are between machine languages and high-level languages. Assembly languages are similar to machine languages, but they are much easier to program in because they allow a programmer to substitute names for numbers. Machine languages consist of numbers only.
So, assembly language is a much more readable rendition of machine language. It uses mnemonic codes to refer to machine code instructions, rather than using the instructions’ numeric values directly.
Assembly language is the most basic programming language available for any processor. With assembly language, a programmer works only with operations implemented directly on the physical CPU. Assembly language lacks high-level conveniences such as variables and functions, and it is not portable between various families of processors.
High Level Language
High level language is a machine-independent programming language, such as C, C++, Java, Perl and COBOL. It lets the programmer concentrate on the logic of the problem to be solved rather than the intricacies of the machine architecture such as is required with low-level assembly languages.
High level languages uses English like statements and mathematical notations. Because a programmer now does not need to remember the machine architecture and operations implemented directly on the physical CPU, high level languages are machine independent. They are often called problem oriented languages or business oriented language.
High level languages were developed towards the end of second generation of computers (COBOL and FORTRAN) and flourished during third and fourth generations. Pascal, C, C++, C#, LISP, Java, Basic etc. are the examples of high level language.
High level language is completely different than what machines can understand. To run a program written in high level language, you need to convert it into machine code. There are two kinds of language processors to convert high level language into machine language – interpreter and compiler.
A compiler is a language processor that converts the instruction of a high level language into machine language as a whole. Programs written in high level language is called source program and after it is converted into machine language by the compiler, it is called an object program.
Compiler checks each statement in the source program to generate machine instructions. Any syntax errors if existing in source program are discovered while analyzing. A source program containing an error cannot be compiled into an object program.
Each high level language has its own compiler. A compiler can translate the programs of only that language for which it is written. For example C++ compiler can translate only those programs, which are written in C++.
An interpreter is a language processor that converts one statement of high level language program at a time. It executes this statement before translating the next statement of the source program. If there is an error in the statement, the interpreter will stop working and displays an error message.
The advantage of interpreters over compilers is that an error is found immediately. So the programmer can make corrections during program development. Thus, interpreters are often used to debug program while debugging.
The disadvantage of interpreter is that it is not very efficient. The interpreter does not produce an object program. It must convert the program each time it is executed. Visual basic uses interpreter.
Utility software is system software designed to help analyze, configure, optimize or maintain a computer. Utility or a tool is the term used for a single piece of utility software. Utility software are also referred to as service program, tool, service routine, or utility routine.
Utility software usually focuses on how the computer infrastructure (including the computer hardware, operating system, application software, and data storage) operates. Utility software is often targeted at technical people with an advanced level of computer knowledge.
You can find utilities in different categories, such as:
Anti-virus utilities scan for computer viruses. Backup utilities can make a copy of all information stored on a disk, and restore either the entire disk (e.g. in an event of disk failure) or selected files (e.g. in an event of accidental deletion). Data compression utilities output a shorter stream or a smaller file when provided with a stream or file. Disk checkers can scan operating hard drive. Disk cleaners can find files that are unnecessary to computer operation, or take up considerable amounts of space. Disk cleaner helps the user to decide what to delete when their hard disk is full. Disk compression utilities can transparently compress/uncompress the contents of a disk, increasing the capacity of the disk. Disk defragmenters can detect computer files whose contents are broken across several locations on the hard disk, and move the fragments to one location to increase efficiency. Disk partitions can divide an individual drive into multiple logical drives, each with its own file system which can be mounted by the operating system and treated as an individual drive. Archive utilities output a stream or a single file when provided with a directory or a set of files. File managers provide a convenient method of performing routine data management tasks, such as deleting, renaming, cataloging, uncataloging, moving, copying, merging, generating and modifying data sets. Cryptographic utilities encrypt and decrypt streams and files. Hex editors directly modify the text or data of a file. These files could be data or an actual program. Memory testers check for memory failures. Network utilities analyze the computer’s network connectivity, configure network settings, check data transfer or log events. Registry cleaners clean and optimize the Windows registry by removing old registry keys that are no longer in use. Screensavers were desired to prevent phosphor burn-in on CRT and plasma computer monitors by blanking the screen or filling it with moving images or patterns when the computer is not in use. Contemporary screensavers are used primarily for entertainment or security. System monitors for monitoring resources and performance in a computer system. System profilers provide detailed information about the software installed and hardware attached to the computer.
Application software, is used to accomplish specific tasks other than just running the computer system. Application software may consist of a single program, such as an image viewer; a small collection of programs (often called a software package) that work closely together to accomplish a task, such as a spreadsheet or text processing system; a larger collection (often called a software suite) of related but independent programs and packages that have a common user interface or shared data format, such as Microsoft Office, which consists of closely integrated word processor, spreadsheet, database, etc.; or a software system, such as a database management system, which is a collection of fundamental programs that may provide some service to a variety of other independent applications.
Software is created with programming languages and related utilities, which may come in several of the above forms: single programs like script interpreters, packages containing a compiler, linker, and other tools; and large suites (often called Integrated Development Environments) that include editors, debuggers, and other tools for multiple languages.
Types of application software:
You can group application software into two categories – tailored or customized software and packaged software. You can find other categories that lie in between the tailored and packaged.
There are many tasks in an organization or office that can be automated by writing specific software programs. For example SLC board has developed its own software solution for result processing. Provident Fund (Sanchaya Kosh) has developed its own software to record, calculate and perform many other operations. All these software developed are known as tailored software.
Tailored software are the applications developed to solve or automate a particular task of an individual or organization.
Tailored software are developed by employing or hiring a system design and development team who perform system study and find best alternative to solve the problem at hand. They analyze, design new system, develop, testing, debugging and implementation. When the software is ready to do its work, it is handed over to the organization.
Many software houses study the general requirement of computer users and develop software packages. Software packages are aimed at solving some common problem such as word-processing, spreadsheet calculation, database management, presentation systems and so on.
Package software are complex and with less bugs because it is developed often by a large professional team. So they are more reliable compared to tailored software.
Microsoft Office Suite, Lotus Suite, Open Office Suite, Adobe Creative Suite etc. and their individual applications are the examples of packaged software.
Categories of packaged software:
WordProcessing Systems – MS Word, Lotus Write, WordPerfect
Spreadsheet Systems – MS Excel, Lotus 123,
Database Management Systems – MS Access, MySql, Oracle, MS SQL Server
Presentation Systems – MS PowerPoint
Graphic Designing – Adobe PhotoShop, CorelDraw
Web Browsers – Internet Explorer, Firefox, Google Chrome
Email Clients – Microsoft Outlook, Eudora Pro
Multimedia and Entertainment –Windows Media Player, xDiv DVD Player, VLC Player, and computer games
Apart from tailored and packaged software there is another software type called customized software. These are the software applications that are modified or customized to meet your specific need after acquiring some pre-built packaged software. For example you can get MS Excel or Access and use its macro feature or write some other add-ins, or extensions, to solve your particular problem. Any software developed this way is known as customized software.
Liveware is a slang term used to denote people using (attached to) computers, and is based on the need for a human, or liveware, to operate the system using hardware and software. It was used in the computer industry as early as 1966 to refer to computer users, often in humorous contexts by analogy with hardware and software. Other words meaning the same or similar to liveware include wetware, meatware and jellyware.
The term firmware is often used to indicate the control programs stored in ROM chips. Typical examples of devices containing firmware are embedded systems, computers, computer peripherals, mobile phones, and digital cameras. The firmware contained in these devices provides the control program for the device.
Firmware is held in non-volatile memory devices such as ROM, EPROM, or flash memory. Changing the firmware of a device may rarely or never be done during its economic lifetime; some firmware memory devices are permanently installed and cannot be changed after manufacture.
Common reasons for updating firmware include fixing bugs or adding features to the device. This may require physically changing ROM integrated circuits, or reprogramming flash memory with a special procedure. Firmware such as the ROM BIOS of a personal computer may contain only elementary basic functions of a device and may only provide services to higher-level software. Firmware such as the program of an embedded system may be the only program that will run on the system and provide all of its functions.
Cache (pronounced cash) memory is extremely fast memory that is built into a computer’s central processing unit (CPU), or located next to it on a separate chip. It is usually a small amount (normally less than 1MB) of high-speed memory residing on or close to the CPU. Cache memory supplies the processor with the most frequently requested data and instructions. The CPU uses cache memory to store instructions that are repeatedly required to run programs, improving overall system speed. The advantage of cache memory is that the CPU does not have to use the motherboard’s system bus for data transfer. Whenever data must be passed through the system bus, the data transfer speed slows to the motherboard’s capability. The CPU can process data much faster by avoiding the bottleneck created by the system bus.
As it happens, once most programs are open and running, they use very few resources. When these resources are kept in cache, programs can operate more quickly and efficiently. All else being equal, cache is so effective in system performance that a computer running a fast CPU with little cache can have lower benchmarks than a system running a somewhat slower CPU with more cache. Cache built into the CPU itself is referred to as Level 1 (L1) cache. Cache that resides on a separate chip next to the CPU is called Level 2 (L2) cache. Some CPUs have both L1 and L2 cache built-in and designate the separate cache chip as Level 3 (L3) cache.
Points to Remember
- Computer in itself is nothing more than a slave in a box. Computer hardware is like a dead body which has all the machinery and mechanism but can’t do anything. A computer requires programs and instructions to do each and every tasks.
- A set of self-contained instructions that tells a computer how to solve a problem or carry out a task is called a program. A group of programs that are put into a computer to operate and control its activities is called software.
- Software are classified broadly into two types – system software and application software. Loosely, you can understand it as all the software developed to help user to perform his/her required tasks are application software. And similarly, all the software developed to operate computer and help it to be able to run user required applications are system software.
- System software is a set of programs that organizes, utilizes and controls the hardware in a computer system. It serves as intermediary between hardware and application software. System software supports – running other software, communicating with peripheral devices, development of other types of software, monitoring the use of hardware resources.
- Operating systems, utility programs, device drivers and language processors fall into the class of system software.
- Operating system is a type of system software that controls and coordinates the internal working of a computer system. The major function of operating system are – provide user interface to the user; manage disks, devices and other resources; provide platform to run other software; load applications as and when user requests.
- Microsoft launched GUI operating environment called Windows in November 20, 1985.
- Device drivers are the system software that controls a particular type of device installed in computer. Device drivers has instructions to make operating system able to recognize and operate the device. Device drivers work as intermediary between the hardware device and operating system.
- Utility software are system software that are designed to help analyze, configure, optimize and maintain the computer system. It performs the specific task related to the management of computer functions, resources, or files as password protection, memory management, virus protection and file compression.
- Many operating systems have some utility programs build directly into the operating system itself. Other utility programs are sold separately as software packages that the user must install.
- Disk tool kits, data compression utilities, backup utility programs, virus protectors and screen savers are some utility programs.
- Disk defragmenters are utilities that analyse the fragmentation (pieces of a file scattered on different location in disk surface) and move the pieces into one place to improve computer performance.
- Disk checkers like chkdsk, scandisk can scan the contents of a disk to find files or disk areas that are corrupted in some way.
- Disk cleaners can identify files that are unnecessary to computer operation and can delete them on your permission.
- Computers can understand instructions that are in machine language. Any program that is not in machine language must be translated into machine language to execute. A program that translates user’s program into machine language are language translators or language processors.
- Assembler, compiler and interpreters are the types of language processors.
- Assembler translates a program written in assembly language into machine language. It creates a converted file that is executable in computer. Smalltium, MASM, TASAM are some examples of assembler.
- Compiler is a language processor that translates a high level language program into machine code in a single operation. It creates machine language file that can be executed in computer. Programming languages like C, C++, Java, FORTRAN uses compilers.
- Interpreter is a language processor that translates each statement of user programs in turn into machine code for the computer to execute. Interpreters do not create machine code file but rather run every instruction after it is converted one after another.
- Application Software is a class of computer programs that help users to solve their problems. Application software are also known as applications or apps.
- Examples of application software are word processors, database programs, web browsers, development tools, drawing, paint, and image editing programs, communication programs.
- API (Application Programming Interface) is a formal request for services and means ofnicating with other programs that a programmer uses in writing an application program.
- Application software are further classified into packaged software and tailored or customized software.
- Packaged software is a generalized set of programs that allows the computer to perform a specific data processing job for the user. Some of the popular packaged software are Microsoft Word, Microsoft Excel, Microsoft Access and so on.
- Tailored software or customized software is the software developed to meet the specific requirement of a particular organization, institution or person. Industrial automation software, business software, payroll software of a company, banking software designed especially for a bank, result processing system for SLC exam etc are examples of some customized software.
- WordProcessing software allows users to create, edit and format documents.
- Database software allows uses to store and retrieve huge amount of data from database quickly.
- Spreadsheet software allows uses to perform complex calculation on a large electronic sheet.
- Multimedia software allows uses to create, edit and play audio, video media.
- Presentation software allows users to create and present information in the form of display slides.
- Image editing software allows uses to create and manipulate images, photographs and other graphics objects.