Computer Software
Introduction to Software
In traditional concept, Software can be defined as the collection of program(set of instruction)
which tells the computer what to do and how to do the particular task given by the user.
It enables the hardware to work and perform or execute the instructed task.
In broad terms , software can be used to describe a collection of computer program, procedures
and documentation that perform some task on computer system.
It tells hardware to carry out the task in specific manner.
Different set of software can be loaded in the same set of hardware to perform different kind of
task.
Software is typically stored on an external long-term memory device, such as a hard drive or
magnetic diskette.
When the program is in use, the computer reads it from the storage device and temporarily places
the instructions in random access memory (RAM). The process of storing and then performing the
instructions is called “running,” or “executing,” a program.
By contrast, software programs and procedures that are permanently stored in a computer’s
memory using a read-only (ROM) technology are called firmware, or “hard software.
Types of Software
System Software
System software is a group of programs that direct the internal operations of
computer system as controlling I/o devices, managing the storage area within the
computer .
It refers to the low level software that manages and control the computer’s
hardware and provides services to the high level software.
System software is a software that provides platform to other software .
The purpose of the system software is to make the use of computer more efficient
and easier.
System software allows the users write their own program without knowing the
internal structures of hardware.
The basis purposes of the system software is to
▪ To provide the basic functionality to the computer
▪ To control computer hardware
▪ To act as the interface between the user, application software and hardware.
Types of System Software
System Software can be broadly classified into 2 types
▪ System Software for Computer Management
▪ System Software for developing software.
➢ System software for computer management:
▪ It consist of the software that is related to the functionality of different components
of the computer like processor, input and output devices .
▪ It helps to manage the operations performed by the components of the computer
and devices attached to the computer .
▪ It provides support for various services , as requested by the application software.
▪ Examples: Operating system, Device drivers and system utilities
System Software for developing software
It provides the services required for the development and execution of
application software .
It provides the software tool required for the development of the
application software .
Examples of the system software for developing software are
▪ Programming Language
▪ Language Translator Software
▪ Linker
▪ Loader
Operating System Software
Operating system is an integrated set of programs that is used to manage the
various resources and overall operation of the computer system.
It provides the interface for the user to interact with computer and application
software hence also considered as the intermediary .
It provides the level of abstraction to the users as it hides all the complexity of
the hardware to perform the task.
It manages different resources of the computer like CPU time, memory space,
file storage , I/o devices etc.
It controls the execution of different programs to prevent occurrence of error.
Function of the Operating System
➢ Scheduling and execution of all processes.
➢ Memory Management
➢ File Management
➢ Device Management
➢ Deadlock Management
➢ Command Interpretation
➢ Security Management.
Device Drivers
Device Driver in computing refers to a special kind of software program or a
specific type of software application that controls a specific hardware device
that enables different hardware devices to communicate with the computer’s
Operating System.
A device driver communicates with the computer hardware by computer
subsystem or computer bus connected to the hardware.
Device Drivers are essential for a computer system to work properly because
without a device driver the particular hardware fails to work accordingly, which
means it fails in doing the function/action it was created to do.
Utility Software
Utility software refers to small programs , which provides additional capabilities
to the computer system in addition to the ones provided by operating system.
In simpler definition, utility software is the software that take cares and maintain
the computer system.
They enable an operating system to perform some additional tasks such as
searching and printing the files and scanning the viruses etc.
Also known as system support software or service program which provide useful
services to the user of the computer.
It helps to enhance or extend the operating system’s operating system’s
capabilities or provide the new features not provided by the operating system
itself.
Classification of Utilities
Further the utility program can be classified into following sub groups :
➢ System Utilities: Some of the system utility programs are memory
manager, antivirus and firewall, registry checker and cleaner, package installer
and explorer. Also, with the help of such system utility program in computer,
users can execute functions that are crucial for smooth running of an operating
system.
➢ File Management Utilities: File management utilities include tools such as data
archivers, software backup tools, file compression tools and managers. With the
help of these, users can manage their data in the form of files and folders. These
utilities help users to sort out, store and categories files according to the
requirement.
➢ Storage Device Management Utilities: utility programs provide solutions for
enhancing disk capacity, such as disk clean-up, partition management,
formatting, disk space allocation, defragmentation, etc. With the help of this
system utility software, users can compartmentalize systems and external drives
for efficient management of programs and files that are stored within.
Function of utility software
A file compression can be used to reduce the size of the file which consumes less space disk
space but maintains the quality of file .
A backup utility can help you to copy group of files from hard disk to another medium .
Disk management utility allows you to divide a hard disk into multiple partitions so large hard
disk can work like several smaller ones.
Disk defragmenter is utility program that rearranges the fragmented pieces of data .(Defrag
software programs are tools that arrange the bits of data that make up the files on your
computer so they’re stored closer together. This allows your hard drive to access files more
quickly.)
Antivirus is also utility program that helps to scan the hidden virus.
Editors are also considered as the utility program that helps the user in entering source
program into the computers.
Dumb is the program that copies the content of the main memory to output devices.
Copy is utility for transferring data from one I/O devices into another .
Sort is utility program used for sorting record into a particular .
Linker
The purpose of a linker is to produce executable files .
A linker is an important utility program that takes the object files,
produced by the assembler and compiler, and other code to join
them into a single executable file.
It uses an input of object code produced by the assembler and
compiler.
Linker is used to join all the modules.
It is accountable for managing objects in the program’s space.
Loader
A loader is a vital component of an operating system that is
accountable for loading programs and libraries.
It uses an input of executable files produced by the linker.
The foremost purpose of a loader is to load executable files to
memory.
Loader is used to allocate the address to executable files.
It is accountable for setting up references that are utilized in the
program
Programming Language
A programming language is a set of commands, instructions, and
other syntax use to create a software program.
A programming language is a formal language that specifies a set
of instructions for a computer to perform specific tasks. It’s used to
write software programs and applications, and to control and
manipulate computer systems.
Programming language is broadly classified into two categories:
▪ Low Level Language
▪ High Level Language
Low Level Language
A low-level language is a programming language that deals with a computer's
hardware components and constraints.
Low Level Language is machine dependent.
Low level language is high memory efficient.
Execution of instruction is faster than high level language .
To do programming using low level language requires the knowledge of
hardware .
Low level Language is classified into 2 categories
▪ Machine Level Language
▪ Assembly level Language
Machine Level Language
The machine-level language is a language that consists of a set of
instructions that are in the binary form 0 or 1.
As we know that computers can understand only machine instructions,
which are in binary digits, i.e., 0 and 1, so the instructions given to the
computer can be only in binary codes.
Creating a program in a machine-level language is a very difficult task as it
is not easy for the programmers to write the program in machine
instructions. It is error-prone as it is not easy to understand, and its
maintenance is also very high.
A machine-level language is not portable as each computer has its
machine instructions, so if we write a program in one computer will no
longer be valid in another computer.
It does not require any translator as the machine code is directly executed
by the computer.
It is a first-generation programming language.
The different processor architectures use different machine codes, for
example, a PowerPC processor contains RISC architecture, which requires
different code than intel x86 processor, which has a CISC architecture.
Assembly level Language
Low level Language which uses the mnemonic codes (Human
readable codes) like mov, add, sub etc. is known as Assembly
Language .
It is easy to read, write, and maintain.
In assembly language, the assembler is used to convert the
assembly code into machine code.
It is second generation programming language
High Level Programming language
The high-level language is a programming language that allows a
programmer to write the programs which are independent of a particular
type of computer.
It is a user-friendly language as this language is written in simple English
words, which can be easily understood by humans.
The high-level languages are considered as high-level because they are
closer to human languages than machine-level languages.
It requires translator to translate the high level programming Language to
machine level language (either uses interpreter or compiler).
It is machine independent.
Debugging and maintenance are easier in a high-level language.
Procedural-Oriented Programming
Language
Procedural-Oriented Programming is also known as Third Generation
Programming Language (3GL).
It is one of the primitive and important paradigms in the
Programming Industry.
In Procedural-Oriented Programming, instead of focusing on data,
we majorly focus on the procedure of the program.
The main goal of Procedural-Oriented Programming is to solve a
problem.
It uses a Top-Down approach in order to solve any problem.
Examples of Procedural-Oriented Programming Language: Basic,
Fortran, C, Pascal, and COBOL
Top- Down Approach
In Top-down approach, the primary focus is on breaking the larger
problem into smaller units and then repeating the process with each
problem.
In this approach, the main module is first developed and then the
next level modules are developed. The procedure is continued until
all the modules are developed.
Top-down model has high level of redundancy as the size of the
project increases.
Top-down approach is mainly used in code implementation, test
case generation, debugging and module documentation.
Top-down approach, the modules do not require the modules to
have a well-established line of communication among them.
Each module and sub-module are processed separately.
Bottom Up Approach
Bottom-up approach entails designing an algorithm by starting at the very
basic level and built it up towards the complex level.
In the approach the modules are designed independently and are then
integrated together to form a complete algorithmic design
In this approach, bottom level modules are developed, tested and
debugged first, and then the next modules are developed, tested and
debugged prior to integrating them to build a concrete solution.
The same process is continued until all modules have been completed.
Bottom-up approach has less data redundancy and focus is on re-usability.
Bottom-up approach is mainly used in testing.
In the bottom-up approach, the modules must have a certain degree of
interaction and communication among them.
Works on the concept of data-hiding and encapsulation.
Object-Oriented Programming
Language
It is one of the most important Programming Paradigm in which
we make use of Classes and Objects for creating a program.
Every problem is viewed as an entity or object, by which the
designing of the program becomes more simple and easy.
Some of the basic concepts of Object-Oriented Programming are
Object, Class, Inheritance, Abstraction, Polymorphism, and
Encapsulation.
Examples of Object-Oriented Programming Language: Java,
Python, C++, C#, JavaScript, and PHP.
Problem Oriented Programming
Language
Problem-Oriented Programming Language is also known as Fourth
Generation Programming Language (4GL) or Result Oriented
Programming Language.
Here, you can directly insert or retrieve the result or data without
caring about the procedural or getting into the actual complexity of
the program.
It is usually used for managing the Databases. Here, the priority is
given to the data only.
Examples of Problem-Oriented Programming Language:
Fortran(Formula Translation), COBOL(Common Business Oriented
Language ), Pascal etc.
Language Processor Software
Computer Only understands the program written in machine level language.
Hence the program written in other languages must be translated into machine
language before the execution .
The program is always written in other languages i.e assembly and high level
language which is known as source code and the program converted by the
translator into machine level language which is known as object code.
The system software that translates the program written in either low level or high
level language into machine level language for the execution is known as
language processor Software.
It is also known as Translator .
It is classified into three classification :
They are
Assembler
Interpreter
Compiler
Assembler
Assembler is the language translator software which translates the program
written in assembly language into the machine level language .
It generates instructions by evaluating the mnemonics (symbols) in
operation field and find the value of symbol and literals to produce
machine code.
The output of assembler is in binary form .
The example of Assembler is GNA and GAS.
Assembler
if assembler do all this work in one scan then it is called single pass
assembler, otherwise if it does in multiple scans then called multiple pass
assembler. Here assembler divide these tasks in two passes:
• Pass-1:
• Define symbols and literals and remember them in symbol table and
literal table respectively.
• Keep track of location counter
• Process pseudo-operations
• Pass-2:
• Generate object code by converting symbolic op-code into respective
numeric op-code
• Generate data for literals and look for values of symbols.
Compiler
A language translator which translates the program written in the
high level language whole at a once is known as compiler.
It enlist all the errors after complete translation.
It can generate object code hence once the compiler is used in
translation , it doesn’t require translator later .
Execution is faster in compiler.
Debugging is slower in compiler .
C and C++ uses compiler
Interpreter
A language translator which translate one statement of the
program written in high level language at one time into machine
level language is known as Interpreter.
If an error is found on any line, the execution stops till it is corrected.
Here successful execution of all program is slower.
Debugging is faster in interpreter.
An Interpreter is generally used in micro computer. It helps the
programmer to find out the errors and to correct them before
control moves to the next statement.
BASIC uses interpreter.
Application Software
The software which is used to perform specific user oriented problem is
known as application software .
Computer programs intended to perform user’s tasks, as opposed to those
used by the computer itself or by programmers writing further programs.
Application software may be single program or set of programs
A set of programs that are written for a specific purpose and provide
required functionality is called software package.
Different classification of application software are as follow:
▪ General Purpose Software or Packaged Software
▪ Specialized Software or Customized Software
General Purpose or Packaged Software
Packaged software is the software which is generalized set of programs
designed and developed for general purpose
It is also known as universal software as it can be used by users and
organizations all over the world who can afford it .
Price of packaged software is generally low as compared to the
customized software.
It can’t be altered or modified if needed.
It is user friendly and easy to run .
Documentation of packaged software is poor.
There is possibility of coming new versions hence it is difficult to keep track
and bear buying new version.
Examples: Word processing package, database package
Customized or tailored software
Customized or tailored software is the software designed to meet
the specific requirements of the organization or individuals.
It serves only one organization or user .
Modification is easy.
Its cost is higher than packaged software.
Customized software is hard to use as compared to packaged
software .
Examples of Customized software are traffic control system, billing
software for particular software.
Types of Virus
Boot Sector Virus: It infects the master boot record .It’s complex task to
remove this virus and often requires the system to be formatted and
mostly spreads through removable media.
Resident Virus: A resident virus is a computer virus that stores itself within
memory, allowing it to infect other files even when the originally
infected program is no longer running. It is difficult to identify and
difficult to remove a resident Virus.
Direct Action Virus: It is non resident virus which gets installed or stays
hidden in the computer memory. It stays attached to the specific type
of files that it infect. It doesn’t affect the user experience and system’s
performance.
File infector virus : File This type of virus infects the system by appending
itself to the end of a file. It changes the start of a program so that the
control jumps to its code. After the execution of its code, the control
returns back to the main program. Its execution is not even noticed. It is
also called a Parasitic virus because it leaves no file intact but also
leaves the host functional.
Types of Virus
Multipartite Virus: It is also known as hybrid virus. It affects both file
and boot sector .
Polymorphic Virus: Poly’ refers to many and ‘morphic’ refers to
forms. Therefore as the name suggests polymorphic virus is a
complicated computer virus that changes its form as it propagates
to avoid detection by antivirus. Or you can say it alters its signature
pattern whenever it replicates it and makes difficult for the
traditional antivirus software to identify it.
Overwrite Virus: This type of the virus deletes all the files that it infects
.The only possible mechanism to remove is to delete the infected
files and the end user has to lose all the contents in it. It spreads
through emails. As the name suggest , the virus after attacking the
computer starts the overwriting files with its own code.
Space filer Virus: This is called Cavity Viruses. This is called so as they
fill up the empty spaces between the code and hence doesn’t
cause any damages to the file.
Types of Virus
Macro viruses: As the name suggests, the macro viruses particularly
target the macro language commands in application like Microsoft
[Link] macro viruses are designed to add their malicious code to
the genuine macro sequences in word file. However , as the years
went by , Microsoft Word witnessed disabling of macros by default in
more recent versions. Thus , the cybercriminals started to use social
engineering schemes to the target users. In the process, they trick
the user and enable micros to launch the virus.
Rootkit virus:It is a malware type which secretly installs the illegal
rootkit(a set of software tools that enable an unauthorized user to
gain control of a computer system without being detected.)This
opens door for attackers and give them full control to the
[Link] attacker will be able to fundamentally modify or disable
functions and [Link] is also created to bypass antivirus
software.
Antivirus Software
Antivirus software is the software utility that detects , prevents , and removes
viruses, worms and other malware from the computer.
This software is designed to be used as a proactive approach to cyber security,
preventing threats from entering your computer and causing issues.
Most antivirus software operates in the background once installed, providing
real-time protection against virus attacks.
It was originally developed to detect and remove computer viruses.
Most antivirus contain both automatic and manual scanning capabilities.
The automatic scan may also scan the entire hard drive on a regular basis.
The manual scan options allow us to scan individual files or your entire system
whenever you feel it is necessary.
The implications of a virus getting into your computer might be fatal. Viruses can
cause a wide range of malicious behavior. They can crash your device, monitor
your personal accounts, or spy on you through your webcam. So, always use
antivirus software.
How antivirus software works?
Antivirus software works by comparing your computer applications and
files to a database of known malware kinds.
Antivirus program must keep an updated database of virus types.
This database includes a list of virus definitions (Virus Definition) that the
antivirus software references when scanning files.\
Since new viruses are frequently distributed , it is important to keep your
software’s virus database up-to-date.
Fortunately, most antivirus program automatically update the virus
database on the regular basis.
Antivirus software may also be bundled with the firewall features, which
helps to prevent unauthorized access to your computer.
Utility that include both antivirus and firewall capabilities are typically
branded “Internet Security” or something similar.
Function of Antivirus Software
Scan Specific files or directories for any malware or known malicious
patterns.
Allows to schedule scans to automatically run for you.
Allows initiating a scan of particular file or your entire computer , or
of CD or flash drive at any time.
Removes any malicious code detected –sometimes user will be
notified of an infection and asked if user want to clean the file.
Shows the “Health “of the computer
Advantages of Antivirus
• Spam and advertisements are blocked: Viruses exploit pop-up advertising and
spam websites as one of the most common ways to infect your computer and
destroy your files. Antivirus acts against harmful virus-infected adverts and websites
by denying them direct access to your computer network.
• Virus protection and transmission prevention: It identifies any possible infection and
then attempts to eliminate it.
• Hackers and data thieves are thwarted: Antivirus do regular checks to see if there
are any hackers or hacking-related apps on the network. As a result, antivirus
offers complete security against hackers.
• Protected against devices that can be detached: Antivirus scans all removable
devices for potential viruses, ensuring that no viruses are transferred.
• To improve security from web, restrict website access: Antivirus restricts your online
access in order to prevent you from accessing unauthorized networks. This is done
to ensure that you only visit websites that are safe and non-harmful to your
computer.
• Password Protection: Using antivirus, you should consider using a password
manager for added security.
Disadvantages of Antivirus
• Slows down system’s speed: When you use antivirus programs, you’re using a lot of
resources like your RAM and hard drive. As a result, the computer’s overall speed
may be significantly slowed.
• Popping up of Advertisements: Apart from commercial antivirus applications, free
antivirus must make money in some way. One approach to attaining these is
through advertising. Many times these advertisements degrade the user
experience by popping up every time.
• Security Holes: When security flaws exist in the operating system or networking
software, the virus will be able to defeat antivirus protection. The antivirus
software will be ineffective unless the user takes steps to keep it updated.
• No customer care service: There will be no customer service provided unless you
pay for the premium version. If an issue arises, the only method to solve it is to use
forums and knowledge resources.
Types of Antivirus Program
Windows Antivirus Software
macOS antivirus Software
Android Antivirus Software