Computer Software

By Suresh Chand

 Important Questions
  • Software is a collection of set of programs, which are used to execute all kinds of specific instruction. It consists of a number of machine instructions, array in a specific order to perform a particular task. Software is used to describe all the programs and its associated documents which run on a computer. So, a computer needs both software and hardware for its proper functioning.
  • Software means computer instructions or data. Anything that can be stored electronically is software.
  • Firmware are software (programs or data) that has been permanently written onto read-only memory (ROM)
  • All  software  falls  into  two  general  types  or  categories:  System  Software  and Application Software. System software consists of low-level programs that interact with the computer at very basic level. This includes operating systems, compilers, and utilities for managing resources. On the other hand, application software includes database programs, word processors, and spreadsheets.

Examples of System software

Examples of System software are as follows:

1) Operating Systems

Operating systems are the most important programs that run 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 tracks of files and directories on the disk and controlling peripheral devices such as disk drives and printers. Most commonly used operating systems include Microsoft Windows, DOS, Xenix, Mac OS, OS/2, UNIX, MVS, etc.

2) Compilers and Interpreters

Compiler is a program that translates source code into object code. The compiler takes the entire piece of source code and collects and recognizes the instructions. In contrast, the interpreter analyzes and executes each line of source code in succession, without looking at the entire program. The advantage of interpreters is that they can execute a program immediately but compilers require some time before an executable program emerges. However, programs produced by compilers run much faster than the same programs executed by an interpreter.

3) Device Drivers

Device drivers are the software to run the particular peripheral devices like printers, wireless mouse, modems, and Ethernet cards etc. Most of the peripheral devices attached with the CPU needs device drivers to carry out the functions. Mostly we get device drivers at the time of buying these devices. For example we get the printer driver when we buy the printer. Device driver lets the CPU know the type of hardware and the type of instruction for a particular device attached with it.

Examples of Application Software

Examples of Application Software are as follows:

1) Word Processors

A word processor is a program that makes us possible to perform word processing functions. We can create, edit, and print documents using word processors. We have many features that help us to prepare a fine document. Some of the important features of word processors are: editing, spelling checking, page setup, paragraph alignments, merging documents, typing in columns etc.

MS-Word is the word’s most popular word-processor. Although every word processor provides almost the same features, MS-Word is most flexible to work with. It is used to write documents or letter. A file in Ms-Word is called a document. When a file is saved, MS-Word attaches the extension .doc to the file.

2) Spreadsheets

A spreadsheet is a table of values arranged in rows and columns. Each value can have a predefined relationship to the other values. If one value is changed, others values need to be changed as well.

Spreadsheet applications are computer programs that let you create and manipulate spreadsheets electronically. In a spreadsheet application, each value sits in a cell. We can define what type of data is in each cell and how different cells depend on one another. The relationships between cells are called formulas, and the names of the cells are called labels. Once we have defined the cells and the formulas for linking them together, we can enter the data. We can then modify selected values to see how all the other values change accordingly. What-if analysis makes the complex decision-making a very easy process. MS-Excel is one of the most popular spreadsheet applications.

3) Multimedia applications

Multimedia applications make us possible to run audio and video files. This application recognizes the digital signals and provides necessary signal to output devices and movie signals to the monitor and audio to the audio devices. Along with the video data we also get the text information about the file we are running. In windows operating system Windows Media Player is a good option to play the multimedia files.

4) Presentation Graphics

Presentation Graphics enable users to create highly stylized images for slide shows and
reports. The software includes functions for creating various types of charts and graphs
and for inserting text in variety of fonts. Most systems enable us to import data from a
spreadsheet application to create the charts and graphs. Presentation graphics is often
called  business  graphics.  Some  of  the  popular  presentation  graphics  software  are
Microsoft PowerPoint, Lotus Freelance Graphics, Harvard Presentation Graphics, etc.

Utility Software

Utility is a program that performs a very specific task, usually related to managing system resources. Antivirus software, Disk Partition tools are the examples of utility software.

 

Operating System

OS is an important system software package found in every computer systems. It is a set of
programs that controls and supervises a computer system‟s hardware and it provides services to
computer users. It permits the computer to supervise its own operations by automatically calling
in application programs and managing data needed to produce the output desired by users. OS is
an interface between the user and the computer. OS 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. OS, as
a resource manager keeps track of who is using which resource, to grant resource requests, to
account for usage and to mediate conflicting requests from different programs and users.

 

Functions of an Operating System:

Job Management: OS manages the jobs waiting to be processed. It recognizes the jobs,
identifies their priorities, determines whether the appropriate main memory and secondary
storage capability they require is available, and schedules and finally runs each job at the
appropriate moment.

Batch Processing: Data are accumulated and processed in groups. The printing tasks in the
printer are also done in groups. Most of the tasks of OS are grouped and performed one by one.

On-line Processing: In on-line processing, data are processed instantaneously. Most on-line operating systems have multi-user and multitasking capabilities. Now a day we can access the data from the remote sites using on-line processing.

Data Management: OS manages the storage and retrieval of data. As the system software handles many of the details associated with this process, such details are not a primary concern for users or programmers writing application programs.

Virtual Storage: Using this method the capacity of main memory increases without actually increasing its size. This is done by breaking a job into sequences of instructions, called pages or segments, and keeping only a few of these in main memory at a time; the remaining are kept on secondary storage devices. Thus, relatively large jobs can be processed by a CPU.

Input/ Output Management: OS manages the input to and output from a computer system. This
applies to the flow of data among computers, terminals, and other devices such as printers.
Application programs used the operating system extensively to handle input and output devices
as needed.

 

Function of operating system can be further listed as follows:

  1. User interface implementation
  2. Share hardware implementation
  3. Allows users to share data.
  4. Prevent users from interfering with one another.    Scheduling resources among users.
  5. Facilitate input/output
  6. Facilitate parallel operations
  7. Organize data for secure and rapid access.
  8. Handle network communications

 

Classification of Operating System:

Multi-user: These systems allow two or more users to run programs at the same time. Some OS permit hundreds or even thousands of concurrent users. The operating systems of mainframes and minicomputer are multi-user systems. Examples are MVS, UNIX, etc. Another term for multi-user is time-sharing.

Multiprocessing: It refers to a computer system‟s ability to support more than one process (program) at the same time. This system allows the simultaneous execution of programs on a computer that has several CPUs. Mainframe, Supercomputers have more than one CPU.

Multitasking:  This system allows a single CPU to execute what appears to be more than one program at the same time when, in fact, only one program is being executed. In multitasking, only one CPU is involved, but it switches from one program to another so quickly that it gives the appearance of executing all of the programs at the same time.

Multithreading:  Multithreading allows different parts of a single program to run concurrently. Multithreading is the ability of an OS to execute different parts of a program, called threads, simultaneously.

Real-time: These operating systems are system that responds to input immediately. It allows a computer to control or monitor tasks performed by other machines and people by responding to the input data in the required amount of time.

 

Programming Languages

Programming Language is a set of rules that provides a way of instructing the computer to
perform certain operations. Programming languages are said to be lower or higher, depending on
whether they are closer to the language the computer itself uses or to the language that people
uses.

We can study the programming languages under five levels (or generations) of language:

  1. Machine Languages / First generation Languages
  2. Assembly languages / 2nd Generation Languages
  3. Procedural Languages/ Third-generation Languages
  4. Problem-oriented Languages / Fourth generation Languages
  5. Natural Languages / Fifth Generation Languages.

The characteristics & trends of these five languages are summarized in the following table:

First Generation Second

Generation

Third

Generation

Fourth

Generation

Fifth

Generation

Trend : Towards Conversational natural programming language
 

 

 

Software

Trends

User-written

programs

Packaged

Programs

Operating

Systems

Database

Management

Systems

Natural

Languages

Machine

Language

Symbolic

Language

High-Level

Languages

Fourth

Generation

Languages

Microcomputer

Packages

Natural

Languages

 

Multipurpose

graphic-

interfaced

packages.

Trend: Towards easy to use multi-purposed application packages

 

Computer programming languages are developed with the primary objectives without the need to know in detail the internal structure of the computer.

Machine Language

A program written using the binary codes specified for a processor’s operations and absolute binary addresses is known as machine language of the computer. The programs written in Machine languages are machine dependent. Programming using Machine Language is very tedious and time consuming. The programmer must keep track of a tremendous amount of detail and one must understand the technical operations of the computer. Programming in machine code has one advantage over programming at other language levels – its execution is very fast and efficient because the computer can accept the machine code as it is.

Assembly Language

Assembly languages are also known as symbolic languages as they use abbreviations or
mnemonic code which replace the 0s and 1s of machine language.  An assembly language has a
one-to-one correspondence with the machine language of a computer and is thus machine
dependent. Assembly languages are more standardized and easier to use than machine languages.

Though more standardized than machine languages, assembly languages are still machine dependent.

High Level Languages

High level languages are the programming languages that use predefined common English words
and clauses to write a program. They assisted programmers by reducing further the number of
computer operations details they has to specify, so that they could concentrate more on the logic
needed to solve the problem. We can classify the high level languages into three levels:

  • Procedural-oriented or third generation
  • Problem-oriented or fourth generation
  • Natural or fifth generation

1) Procedural oriented Languages

General-purpose programming languages are called procedural languages or third generation languages. They are the languages such as Pascal, BASIC, COBOL, and FORTAN, C which are designed to express the logic, the procedure, of a problem. Because of their flexibility, procedural languages are able to solve a variety of problems. More focus is given to module while programming in Procedural-oriented languages.

2) Problem-oriented Languages

Fourth-generation languages are also known as problem-oriented languages. These are the languages designed to solve specific problems or develop specific applications by enabling one to describe what he wants rather than step-by-step procedures for getting there. Thus the problem should be considered most rather than procedures so as to get the solution to the particular problem. Visual Basic and PERL are Problem-oriented languages. These languages may be categorized into several kinds of application development tools:

  • Personal computer application software
  • Query languages and report generators
  • Decision support system and financial planning languages
  • Application generators

3) Natural Languages

Natural languages are very near to the human conversational language. Natural languages are still in the development stages. These languages will be used most in the areas of artificial intelligence and expert systems. Natural languages have two characteristics:

  • They are designed to make the connections that humans have with computers more natural – more humanlike.
  • They are designed to allow the computer to become “smarter” – to actually simulate the  learning process by remembering and improving upon earlier information.

Two popular natural languages are LISP and PROLOG.

Compilers and Interpreters

Compiler is a program that translates source code into object code. The compiler takes the entire
piece of source code and collects and recognizes the instructions. In contrast, the interpreter
analyzes and executes each line of source code in succession, without looking at the entire
program. The advantage of interpreters is that they can execute a program immediately but
compilers require some time before an executable program emerges. However, programs
produced by compilers run much faster than the same programs executed by an interpreter.

 

General Software Features and Trends

Introduction

Now a days software projects are becoming more and more complex – in size, sophistication,
and technologies used. Most software products are used by huge number of people, not only that,
these software support different national languages and come in different sizes and shapes –
desktop, standard, professional, Enterprise Resource Planning (ERP) packages and so on. Almost
all application software products (like word processors, ERP packages) support more than on
hardware and/or software platform. For example, we have web browsers for the PC and Mac; we
have database management systems that run on MVS, UNIX, Windows NT, and Linux and so
on. The competition and the advancements in technology are driving software vendors to include
additional functionality and new features to their products- just to stay in business.

The Information Technology is revolutionizing the way we live and work. The digital technology has given mankind the ability to treat information with mathematical precision, to transmit it at very high accuracy and to manipulate it at will.

Features: The following are the trends that play a vital role in the development of software
products:

Ease of use

The software systems are applications are becoming more and more easy to use. Software developers and system analysts are concerned for ensuring that the software they develop are user-friendly than their competitor‟s products. The user interfaces are more intuitive, the error messages are more descriptive, there is context sensitive help, and there are wizards and templates to help the user when one encounters a problem.

Graphical User Interface (GUI)

Today‟s software applications and products provide users with intuitive, graphical and easy-
to-use interfaces. Now the users do not have to remember the cryptic system commands or
shortcut keys that were a must in the character based era. Now almost any tasks can be
accomplished by a mouse click. For example, in a DOS environment, to copy a file one
needs to know the command for copying files, its exact syntax and so on, whereas in the
Windows environment, you just have to drag the files you want to copy from the source to
destination.

Requirement of more powerful hardware

Because software vendors are incorporating more and more features into their products these software need more and powerful machines to run. They need more main memory, more secondary storage, and faster and powerful processors. It is also not very difficult to go for new powerful computers as the price of computers are decreasing day by day.

Multi-platform capability

Today‟s software applications are not developed for just one platform. Most of the software applications supports multiple platforms- both hardware and software platforms. There are software applications that support hardware platforms ranging from mainframes to PCs and different software platforms like MVS, Solaris, AIX, UNIX, Windows and so on. Database like IBM‟s DB2 Universal is available for a variety of hardware and software platforms. Another important feature of today‟s software application is that they support multiple languages and multiple currencies. Many vendors are providing their application in many languages like English, Arabic, Japanese and Chinese and so on.

Network Capabilities

Network computers are becoming popular as they can work with minimal memory, disk storage and processor power. These computers are connected to a network especially the Internet. The idea behind network computers is that many users who are connected to a network don‟t need all the computer power they get from a typical personal computer. Instead, they can rely on the power of the network servers. As the popularity of network computers increase, the demand for software that can run these computers are increasing and the software applications of today and tomorrow will have that capability.

Compatibility with other software

Now a day‟s most of the software products are compatible with each other. For example, we can import HTML documents and other text documents into a Microsoft Word document. Also  as  newer  versions  of  software  are  released,  most  vendors  maintain  backward compatibility  i.e.  compatibility  with  earlier  versions.  These  two  features-  backward compatibility and compatibility with other products make it easier for the users, as they can choose the application they want and still use the old files they created using other applications or using older versions of the same application.

Object Linking and Embedding

We have mechanism to interact with other software systems. One of the methods to integrate
external tolls into an application is using the Object Linking and Embedding (OLE)
architecture to link or embed a component from another application running on the computer.
OLE is a compound document standard developed by Microsoft Corporation. It enables us to
create objects with one application and then link or embed them into a second application.
This embedding and linking of components enables applications to share components.

Groupwork capabilities

Technologies, which support collaboration, are in greater demand today than ever before.
Therefore, vendors are integrating collaborating technologies into their products. Distributed
workforces, information overload, and getting products to market as quickly as possible are
just a few of the motivational aspects pushing collaboration technology development.

Mail Enabling

The mail enabling of an application is the process through which email is gradually replacing
many of the single purpose applications now used on personal computers. In its simplest
form, a mail-enabled application is a Windows program that has a „Send‟ command in its
„File‟ menu. For example, the Microsoft Word 2000 has a „Send To‟ menu item in the „File‟
menu where we can choose to send the document to a mail recipient, fax recipient and son
on.

Web Enabling

With the ever-increasing popularity of Internet and the amount of information that is available on the net, most software application is now web-enabled. Web enabling helps the user in many different ways. During installation, most of the applications will automatically connect the Internet and to the vendor‟s web site and will register their products (earlier one had to fill in a paper form and mail or fax it to the vendor).

Important Questions
Comments
Subscribe
Notify of
1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments