0% found this document useful (0 votes)
38 views

Computer Software (1)

Computer Software

Uploaded by

mwiituwaasa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
38 views

Computer Software (1)

Computer Software

Uploaded by

mwiituwaasa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 53

MULTIMEDIA UNIVERSITY OF KENYA (MMU)

Course Title: BCS/BSE 2111: Fundamentals of Computing/Software Applications


Instructor: Albert Opondo

COMPUTER SOFTWARE

INTRODUCTION
A computer system consists of hardware and software. The computer hardware cannot
perform any task on its own. It needs to be instructed about the tasks to be performed. The
computer, as a machine, can do nothing for you without the software. Software is required for
the functioning of computer. Software programs instruct computer about the actions to be
performed, so as to get the desired output. Software tells the computer how the tasks are to be
performed; hardware carries out these tasks. Different sets of software can be loaded on the
same hardware to perform different kinds of tasks.

Introduction to Computer Software

A software is a collection or set of instructions, data, or programs written in a language that


the computer understands and are used to operate computers, perform operations and specific
tasks based on the commands of the user. It enables a computer to process data, execute
commands, and deliver outputs, essentially acting as the interface between the user,
hardware, and the underlying system. Every single task that a user intends to perform is
regulated by software. Unlike hardware, which is the physical aspect of a computer, software
is intangible and comprises executable code that directs the hardware on how to perform
operations.

All programs (software) are written using programming languages. Programmers usually
write programs in Source Language (a language that is like broken English). The Source
language is then converted into Machine language; the language that the computer can
understand.

Machine language is usually in form of bits (series of 0‟s & 1‟s).

Computer Program vs Computer Software

While the terms computer program and computer software are often used interchangeably,
they have distinct meanings. Here's a breakdown of the differences:
Aspect Computer Program Computer Software
A broader term that includes not just
A set of instructions written in a
programs but also related data,
specific programming language that
Definition documentation, libraries, and other
a computer follows to perform a
components required to make the
specific task or solve a problem.
programs function.
More specific; a single program is
More general; encompasses multiple
focused on performing one
Scope programs and all associated resources
particular task or a set of related
needed for operation.
tasks.
Microsoft Office Suite (which includes
Microsoft Word, a web browser
Word, Excel, PowerPoint, etc.),
Examples like Google Chrome, or a calculator
operating systems like Windows or
program.
macOS.
Comprises just the executable code Includes the program(s), configuration
Components or the set of instructions written by files, user manuals, libraries, and support
a programmer. files.
Refers to an individual set of Refers to an entire package or collection
Usage instructions or code written to of programs and associated files used
perform a specific function. together.

Summary:

- A computer program is a specific set of coded instructions designed to perform a


particular task.
- Computer software is a comprehensive term that includes one or more computer
programs along with all necessary resources such as libraries, documentation, and
configuration data to function correctly.

In essence, all computer programs are software, but not all software consists of a single
program.

Key aspects of software:

1. Programs: Sets of instructions that tell the computer how to execute specific tasks,
like word processing or browsing the web.
2. Data: Information that is processed by the software, including input data, stored data,
and generated outputs.
3. Functionality: Software provides different types of functionalities based on its
category, such as system management, application-level operations, or development
tools.

Characteristics of Software

The characteristics of software are essential traits that define its behavior, development, and
interaction with hardware and users. Here are some key characteristics of software:
1. Intangibility: Unlike hardware, software cannot be physically touched. It consists of code,
data, and instructions that are intangible, residing in storage devices or memory.

2. Functionality: Software is designed to perform specific functions or tasks, such as word


processing, data management, or controlling hardware devices. Its functionality is determined
by its code.

3. Customizability: Software can be modified or adapted to meet specific user requirements


or preferences. For example, settings or configurations can be adjusted for different use cases.

4. Maintainability: Software can be updated and maintained over time through patches, bug
fixes, or feature enhancements. This ability ensures that software remains functional and
relevant in changing environments.

5. Reliability: A key characteristic is that software should operate consistently under specific
conditions without failure. Reliable software produces the correct output from valid inputs.

6. Scalability: Software can be scaled to handle increasing amounts of data, users, or


transactions. Well-designed software can grow without requiring a complete overhaul.

7. Complexity: Software can be extremely complex, with multiple interdependent


components, algorithms, and data structures. Its complexity often increases with the size and
functionality it offers.

8. Reusability: Software components or code modules can often be reused in different


applications or systems, reducing development time and costs.

9. Efficiency: Efficient software uses minimal computing resources (like CPU, memory, and
storage) while achieving its objectives. Efficiency affects performance, speed, and cost.

10. Portability: Software can often run on different hardware platforms and operating
systems with little or no modification. This characteristic is crucial for cross-platform
applications.

11. User Interface (UI): Software is typically designed with a user interface, which defines
how users interact with the program. A good UI improves usability and user experience.

12. Dependability: Dependable software consistently delivers the expected results without
causing unexpected failures or errors. It also ensures data integrity and security.

13. Time-Dependence: Software can become obsolete over time due to changing technology
or requirements. Periodic updates are needed to keep the software compatible with new
systems.

14. Correctness: Software is expected to perform tasks as specified, delivering accurate and
valid outputs based on the inputs provided.

15. Security: Software should include security features to protect against unauthorized
access, data breaches, and other vulnerabilities. This is critical in today’s data-driven
environment.
These characteristics collectively define the quality, usability, and effectiveness of software
in a computing system.

Importance of Software in Daily Computing and Technological Advancements

1. Enabling Daily Computing Tasks: Software plays a crucial role in enabling users to
perform everyday tasks such as word processing, browsing the internet,
communication (email, video calls), and entertainment (games, multimedia). Without
software, the hardware is essentially useless, as software provides the instructions
needed to operate the computer.
2. Automation of Tasks: Software enables automation of repetitive tasks, improving
efficiency and productivity. Applications like spreadsheet programs (e.g., Microsoft
Excel) allow users to automate complex calculations, while software like project
management tools streamlines workflows.
3. Technological Innovations: Advancements in software development drive
technological innovation across industries. Software powers emerging technologies
like artificial intelligence (AI), machine learning (ML), virtual reality (VR), and the
Internet of Things (IoT). For instance, self-driving cars rely heavily on complex
software algorithms to interpret data and make driving decisions.
4. Connectivity and Communication: Software enables global communication through
internet-based platforms such as email, messaging apps, and social media. It also
powers cloud computing services, allowing people to collaborate in real time,
regardless of location.
5. Business Operations and Digital Transformation: In businesses, software is critical
for operations management, from customer relationship management (CRM) systems
to enterprise resource planning (ERP) software. Many industries have undergone
digital transformation, where software plays a key role in improving efficiency,
decision-making, and customer engagement.
6. Security and Data Protection: Security software protects sensitive data from
cyberattacks, malware, and unauthorized access. With the increasing reliance on
digital systems, cybersecurity software has become essential in protecting individual
users, businesses, and governments.
7. Adaptability and Customization: Software is highly adaptable, allowing users to
customize and configure it to suit specific needs. This flexibility enables software to
serve a wide range of purposes, from personal use to specialized professional
applications, across diverse fields like healthcare, finance, and education.

In summary, software is fundamental to modern computing, driving both daily tasks and
large-scale technological advancements, shaping the way we live, work, and interact with the
world.

History of Software

The term software and its commercial availability have evolved significantly since the early
days of computing. Before the late 1950s, software as we know it today didn't exist, and the
term itself was yet to be coined. During this time, software was primarily developed by
scientists, researchers, and large organizations for specific computational tasks. Here's a
timeline that highlights key milestones in the history of software:

Early Developments
- 21st June 1948: Tom Kilburn, a computer scientist at the University of Manchester,
UK, wrote the world’s first piece of software. Kilburn's program ran on the
Manchester Baby computer, which performed a simple mathematical computation.

Coining the Term "Software"

- 1958: The term "software" was coined by American statistician John W. Tukey in an
article. Until then, the focus was mainly on hardware, and there was little
differentiation between physical machines and the code running on them. Tukey’s
terminology began the shift in recognizing the distinct and critical role of software in
computing.

The Rise of Personal and Commercial Software

- 1977: The release of Apple II, a major milestone in personal computing, introduced
computing to a wider audience. Shortly after, VisiCorp released VisiCalc, the first
spreadsheet software for personal computers, which helped revolutionize business
computing by automating financial calculations.
- 1981: IBM began the sale of commercial software for their personal computers (PCs).
Software was no longer the domain of scientists and engineers but was becoming
accessible to consumers for everyday use. Operating systems like IBM PC DOS
emerged, helping users manage tasks and interact with hardware more easily.

Expansion of Software Applications in the 1980s

- Mid-1980s: Key software applications such as AutoCAD (for design and drafting)
and Microsoft Word and Excel were introduced. These applications significantly
expanded the practical uses of personal computers in business, education, and
engineering.
- 1985: The release of Microsoft Windows 1.0 marked a significant step toward
graphical user interfaces (GUI) that made computers easier to use for non-technical
users. Windows allowed users to interact with computers via icons and menus, rather
than text-based commands.

Advances in Software Storage and Cloud Computing

- 1997: DVDs were introduced, offering a much larger storage capacity than CDs. This
allowed entire software suites like Microsoft Office to be stored on a single disk,
improving software distribution and installation.
- 1999: The launch of Salesforce.com pioneered the concept of cloud computing,
allowing users to access software over the internet instead of installing it on
individual machines. This laid the foundation for the Software as a Service (SaaS)
model, which became increasingly popular in the following decades.

The Rise of SaaS and Mobile Applications

- 2000: SaaS became a significant trend in the software industry, offering businesses a
subscription-based model to access applications online. This changed the way
organizations purchased, used, and maintained software, reducing the need for
physical installation and on-premise infrastructure.
- 2007: The launch of the first Apple iPhone ushered in the era of mobile computing,
leading to the rapid development and distribution of mobile applications (apps). The
introduction of the App Store in 2008 provided developers a centralized platform to
reach millions of users, revolutionizing how software was distributed and used on
mobile devices.

Present Era: Internet-Based Software Distribution

- 2010 – Present: DVDs and other physical media became obsolete for software
distribution as internet speeds improved, enabling users to download and install
software directly from the web. Platforms like Steam, Google Play, and Microsoft
Store have transformed software delivery by offering users instant access to a vast
range of applications and games. Additionally, software updates and patches are now
seamlessly distributed online.

Current Trends

- The rise of cloud-based services continues to dominate the software industry, with
companies like Amazon Web Services (AWS), Google Cloud, and Microsoft Azure
providing infrastructure for cloud-based applications and services.
- AI-powered software is becoming mainstream, with machine learning and
automation tools enhancing applications in various sectors like healthcare, finance,
and marketing.
- Open-source software has also gained popularity, enabling collaborative
development of software by the global community and making high-quality
applications accessible for free.

Conclusion: From the earliest days of computing to today's internet-based and cloud-driven
era, software has evolved dramatically. Its development has enabled personal computing,
transformed industries, and continues to drive technological innovation across every aspect of
modern life. Software is now available in many forms, from mobile apps to enterprise-grade
solutions, with an increasing focus on cloud computing, artificial intelligence, and machine
learning shaping its future.

Software Flexibility.

The Software used on a given computer is said to be flexible, i.e. it is relatively easy to
change. For example, in a home computer used for playing games, instead of buying a new
machine each time a new game is needed, you only need to „load‟ a new program into the
machine. Again, it is relatively easy to change between games at will.

Difference between software and hardware

Aspect Hardware Software


Physical components of a Programs, instructions, and data that run
Definition
computer system on the computer
Aspect Hardware Software
Tangible (can be physically Intangible (cannot be touched, only seen
Tangibility
touched) or interacted with)
CPU, RAM, motherboard, Operating systems, applications, drivers,
Components
monitor, keyboard, etc. programming languages
Provides the physical structure and Instructs hardware on how to perform
Function
capability to process data tasks and processes data
Subject to wear and tear over time Not subject to physical wear, but may
Durability
(e.g., hard drives, fans) become outdated or corrupt
Requires software to function and Requires hardware to operate and be
Dependency
execute tasks executed
Can be upgraded by adding or Can be updated or upgraded by
Upgradability
replacing physical components installing newer versions
Manufactured in factories (requires Developed using programming
Development
physical production) languages and software tools
Hardware failure is physical, like a Software failure occurs as bugs, errors,
Failure Mode
broken part or corrupt files
Hard drives, processors, memory, Operating systems (Windows, Linux),
Examples
keyboards apps (Microsoft Word, Photoshop)
Limited portability; different Highly portable; can be installed on
Portability systems require specific different devices with compatible
components hardware

This table captures the fundamental distinctions between software and hardware, reflecting
how they work together to create a functional computing system.

Classification of Computer Software.

Software can be broadly categorized into two types:

1. System Software (programs):

 Provides essential functions for the computer's operation.


 Necessary for the overall functioning of the computer.

2. Application Software (programs):

 Used by users to perform specific tasks.


 Users select the appropriate application software to achieve desired
functionalities.

Interaction:

- System software acts as a bridge between hardware and application software.


- Application software interacts with system software and the users of the comput
Note. Programming languages can also be considered part of software, because they form
the basis of grammar on which the program’s development is based.
Figure: Software hierarchy

System Software

System software is essential for the basic functioning and management of a computer. It
enables the operation of both the computer hardware and application software, providing an
interface between the user and the computer. Unlike application software, system software
operates in the background, ensuring the smooth running of hardware components and other
software programs. Users typically do not need to be aware of how the system software
works while using their computers. For example, when a user prints a document, system
software (such as the device driver) interacts with the printer hardware to process the print
request without requiring the user's direct involvement.
Figure: System software

Purpose of System Software:

1. Basic Functionality: Provides core functions necessary for running the computer. It
provides the fundamental capabilities that allow a computer to operate.
2. Hardware Control: Manages and controls the hardware components such as the
CPU, memory, input/output devices, storage etc.
3. User and Software Interface Role: Acts as a bridge/ intermediary between the user,
the application software, and the computer hardware, ensuring proper communication
and coordination.

Categories of System Software:

System software can be broadly categorized into two groups based on their functionality:

1. System Software for Computer Management and Functionality:

- This type of software controls the operations of various hardware components


and peripherals such as the processor, input/output devices, and memory.
- It provides essential services requested by application software, ensuring the
computer's hardware runs efficiently.
- Examples:

 Operating Systems (OS): Manages hardware resources, provides user


interfaces, and runs applications (e.g., Windows, Linux, macOS).

Device Drivers: These are specialized programs that facilitate
communication between the computer and hardware devices like
printers, mice, keyboards, etc.
 System Utilities: Perform maintenance tasks such as disk cleanup,
virus scans, file compression and file management.
2. System Software for Application Development:

- This type of software supports the development and execution of application


programs by providing necessary tools and services. These components are
critical for converting human-readable code into machine language that can be
executed by the computer.
- Examples (programming language compilers, assemblers, loaders, and
linkers.)

 Programming Language Compilers: Translate high-level


programming languages (e.g., C, Java) into machine code.
 Loaders and Linkers: Prepare programs for execution by loading
them into memory and linking them with necessary libraries.

Key Features of System Software:

 Control Over Hardware Resources and Automation: System software controls the
computer’s hardware and automates various operations processes to ease the
management and debugging of applications, allowing users to make efficient use of
computing resources like memory, printers, and storage devices.
 Background Operation: It runs behind the scenes, ensuring that hardware and
software interact smoothly, without the user needing to manage low-level operations
manually.
 Efficient Resource Management: Manages the allocation of system resources (such
as CPU time and memory) to different applications, improving overall system
performance.
 Manufacturer Development: System software is often developed and installed by
the hardware manufacturer, as it requires deep knowledge of the hardware
architecture. Some system software is embedded in the computer’s ROM (Read-
Only Memory) to provide initial boot functionality and is permanently stored, known
as Resident Software.
 Hardware-Oriented: System software is closely tied to the hardware, dictating how
other software interacts with the hardware components, making it closely aligned with
the specific hardware configuration of the computer.

Development and Installation of System Software:

- System software is typically developed and installed by the hardware manufacturers


themselves, as it requires an in-depth understanding of the hardware's intricacies.
- Some system software, particularly low-level routines like firmware or the BIOS
(Basic Input/Output System), are permanently stored in the ROM (Read-Only
Memory) of the computer, ensuring they are available when the computer starts up.
These are often referred to as resident software because they remain in memory at all
times.

Resident Software:

- Resident software or routines are permanently stored in the computer's memory (e.g.,
ROM). This ensures the system software that is essential for hardware initialization
(such as the BIOS) is always available.

In summary, system software plays a crucial role in managing and controlling a computer's
hardware and providing a foundation for running application software. It facilitates
communication between hardware and software, optimizing computer performance and
enabling seamless operations.

Examples of System Software Components:

1. Operating System (OS):

The operating system is a collection/set of programs designed to ensure the smooth running
of the computer system and helps execute programs and offers a computer application’s
general services.

The OS is the most critical component of system software. It manages computer hardware
and software resources, providing a user-friendly interface for managing files, running
applications, and controlling hardware. Key functions include:

 Resource Management: Managing CPU time, memory space, file storage, and I/O
devices.
 Error Prevention and Control: Ensuring that programs execute smoothly and
preventing system errors.
 User Interface: Providing a command-line or graphical interface for easy interaction
with the computer.

Some available operating systems are


- Microsoft Disk Operating System (MS-DOS),
- Windows 7,
- Windows XP,
- Linux,
- Ubuntu.
- UNIX,
- Mac OS X Snow Leopard,
- iOS.

2. Device Drivers:

Device drivers act as translators between hardware devices and the system software, enabling
the operating system to communicate with the hardware. In other words, it intermediates
between the device and the software, in order to use the device.
 Purpose of Device Drivers: Device drivers act as translators between hardware
devices (e.g., keyboard, mouse, printer, hard disk) and the operating system, enabling
communication and proper functioning of the devices.
 Functionality: When a command is given to a device, the device driver translates
high-level commands (e.g., "PRINTLN") into low-level, device-specific instructions
that the hardware can understand.
 Plug and Play: Modern operating systems come preloaded with common device
drivers (e.g., for keyboard, mouse, webcam), allowing automatic detection of devices.
These are known as plug-and-play devices.
 Installing Device Drivers: Some devices (e.g., printers) require manual installation
of specific drivers, typically provided by the device manufacturer (via CD or online
download). Most device manufacturers, host the device drivers for their devices on
their companies’ websites; users can download the relevant driver and install it on
their computer.
 Types of Device Drivers:

- Character Device Drivers: Handle character-based data transfer, such as


from a keyboard.
- Block Device Drivers: Manage block-based data transfer, such as from hard
disks.

Each hardware device requires its own specific device driver to function correctly, and new
devices need the appropriate driver to be loaded into memory for use. For instance, a printer’s
device driver translates high-level commands like "Print" into device-specific instructions the
printer can understand.

3. Firmware:

Firmware is a type of permanent low-level software that is embedded directly into a


computer's hardware, typically stored in read-only memory (ROM) or flash memory. It
provides low-level control for the device's specific hardware and acts as an intermediary
between the hardware and higher-level software. Firmware is usually a combination of
hardware and software. It deals with very low-level machine operations, such as moving
data, making comparison, etc, and thus acts as an essential substitute for additional hardware.

Key Characteristics:

 Permanent Software: Unlike regular software, firmware is fixed in the hardware and
cannot be easily modified. It is typically stored in ROM or flash memory.
 Low-Level Operations: Firmware manages essential, low-level tasks such as
controlling device hardware (e.g., printers, hard drives, or cameras), booting up a
computer, and managing input/output operations.
 Microprogram: A microprogram refers to a series of specialized instructions that
control the hardware's operation at a very basic level. These instructions are used to
interpret higher-level commands for execution by the device. The Microprogram is
held in the Control Unit (CU), and is used to interpret the external Instruction set of a
computer. The Instruction set is the list of instructions available to the programmer
that can be used to give direct orders to the computer.
 Hardware-Specific: Firmware is written specifically for the hardware it operates on.
Each hardware device, such as a router, mobile phone, or graphics card, has its own
firmware to ensure proper functionality.

Examples:

- BIOS (Basic Input/Output System): The firmware in a computer that initializes and
manages hardware during the boot process.
- Router Firmware: Controls the functioning of network routers, allowing them to
manage data traffic and connectivity.
- Printer Firmware: Manages print commands and controls the physical printing
process.

Importance:

- Acts as a Bridge: Firmware ensures smooth communication between hardware and


higher-level software, such as operating systems.
- Security and Performance: Firmware updates are occasionally released to fix bugs,
enhance device security, and improve performance.

In summary, firmware is essential software that controls the fundamental operations of


hardware devices, ensuring they function correctly and reliably. It is generally stable and
rarely changed, but critical updates can be provided to enhance security and performance.

4. System Utilities:

These are specialized programs designed for system maintenance and optimization. System
utilities are used for supporting and enhancing the programs and the data in computer. Utility
programs are used by end-users to perform many of the routine functions & operations such
as, sorting, merging, program debugging, manage computer files, diagnose and repair
computer problems that occur, etc. Some system utilities may come embedded with OS and
others may be added later on.

Some common examples include:

 Anti-virus utility to scan computer for viruses.


 Data Compression utility to compress the files.
 Cryptographic utility to encrypt and decrypt files.
 Disk Compression utility to compress contents of a disk for increasing the capacity of
a disk.
 Disk Partitioning to divide a single drive into multiple logical drives. Each drive is
then treated as an individual drive and has its own file system
 Disk Cleaners to find files that have not been used for a long time. It helps the user to
decide what to delete when the hard disk is full.
 Backup Utility to make a copy of all information stored on the disk. It also restores the
backed up contents in case of disk failure.
 System Profiling Utility provides detailed information about the software installed on
the computer and the hardware attached to it.
 Network Managers to check the computer network and to log events.
Most OS have many of the Utility programs needed to assist with the upkeep of the
computer. For example, DOS 6.x includes utilities for managing memory, protecting a
system of viruses, backing up files, restoring accidentally deleted files, etc.

The system utilities on a computer working on Windows can be viewed by clicking


<Start><All Programs><Accessories><System Tools>. Figure below shows system tools in
Windows XP.

Figure: Some system tools in Windows XP

Some of the common Utility programs are those concerned with: -

1. Searching.

They help to search for a file from one or more specified records. For example, in a Sales
record, the Search facility assists in finding the salesperson with the highest sales.

2. Moving data from one medium to another.

For example, from tape to disk & vice versa, or from a floppy disk to hard disk.

3. Spell-checking of words.

After a document is typed, the words in the document are checked against those in a ‘custom
dictionary’ in secondary storage. If any word used is not found in the dictionary, a warning is
given indicating a possible spelling error.

4. Formatting programs.

Before a storage devices/disks can be used, it must be „initialized‟ or formatted. This means
that, the system must put certain information on the disk, which helps with the storing and
retrieving user’s programs & data at a later time.

Therefore, a computer system that uses storage devices/disks would have a utility program
for initializing or formatting these disks.

5. Debugging (removing program errors).


The programming process usually includes debugging (removing errors from) a program.
Statements of the program are studied to determine the cause of an error.

Again, useful information can be obtained by studying the contents of memory at the time the
program failed.

Examples of the common Service programs.

i.Text Editors.
ii.Language Translators.
iii. Diagnostic Tools/ Programs.
iv. Sort utility.
v. Merge utility.
vi. Copy utility.
vii. Core/ Dump utility.
viii. Linker.
ix. Loader.
x. Library Program.
xi. Database management system (DBMS) – a utility program that manages data
contents.
Text Editor.

This is a utility program that enables/ allows users to create files in which they can store any
textual information they desire using the computer.

Once the files are created, the Text editor provides facilities which allow the user modify
(make changes to) the files; such as adding, deleting, or changing information in the file.

Data can be copied from one file to another. When a file is no longer needed, it can be
deleted from the system.

The operations of the Text editor are controlled by an interactive OS that provides a
‘dialogue’ between the user and the Operating system.

The Text editors are used to create, e.g. program statements through the Keyboard connected
to the computer. Editing can then be carried out using the Edit keys on the Keyboard or by
using a sequence of commands.

There are 3 major classes of Text editors:

i. Character text editors – deals with 1 character at a time.


ii. Line text editors – deals with a whole line at a time.
iii. Page text editors - deals with a whole screen full of text at a time.
Note: The Text Editor is probably the most often used utility program of an OS.

Sort utility.

The Sort utility is used to arrange the records within a file according to some predetermined
sequence. The arrangement can either be in Ascending or Descending order of the alphabets
or numerals.
For example, a user may wish to sort data into some desired sequence, such as; sort a student
file into ascending order by name or into descending order by average grade or sort a mailing
list by postal code, etc.

Merge utility.

Merging is the process by which the records in two or more sorted files are brought together
into one larger file in such a way that, the resulting file is also sorted.

The Merge utility is used to influence the combining of the contents of 2 or more input files
to produce one output file.

Copy utility.

It is usually advisable to maintain duplicate copies of the operational files so that in case
something goes wrong with the original files, then their contents can be recreated from the
duplicate/ backup copy or copies.

The duplication process, i.e. copying the contents of one file to another is done through the
influence of the Copy utility. The copying can be from one media to a different media or
from one media to another media of the same make, e.g. from USB to hard disk or from a
USB to another USB.

Dump utility.

The term Dumping is used to describe the copying of the contents of the main memory. The
Dump utility is therefore, used to transfer (copy) the contents of the computer’s internal
memory into a storage media, e.g. the disk or through the Printer (to get a Hard copy output).

The result of dumping is that the main memory ‘image’ is reflected by the stored or the
printed contents.

Language Translator.

Programs written in high-level languages have to be translated into binary code (Machine
language), before the computer can run these programs.

A Translator is a utility program written & supplied by the computer manufacturers, used to
convert the Source Codes (the program statements written in any of the computer
programming languages) to Object Codes (their computer language equivalents).

Each language needs its own translator. Most OS provide users with Compilers or
Interpreters for the common high-level languages. In addition, an Assembler is usually
available for those wishing to write programs in the Assembly language of the particular
machine.

Note: These translators are not part of the OS, but they are designed to be used under the
operating system & are accessible to it.

Linker.
Computer programs are usually developed in Modules or Subroutines (i.e. program
segments meant to carry out the specific relevant tasks).

During the program translation into their machine code, these modules are translated
separately into their object code equivalents.

The Linker is a utility software that accepts the separately translated program modules as its
input and logically combines them into one logical module, known as the Load Module that
has got all the required bits & pieces for the translated program to be obeyed by the computer
hardware.

Loader.

The Loader is a utility program that transfers the load module (i.e. the linker output) into the
computer memory, ready for it to be executed by the computer hardware.

The transfer process is from the backing store, e.g. magnetic disk into the computer’s main
memory. This is because some systems generate object codes for the program, but instead of
being obeyed straight away, they store them into the media.

Diagnostic Tools (Programs).

Diagnostic tools/programs usually come with the translators and are used to detect &
correct system faults –both hardware and software.

They provide facilities which help users to debug (remove errors from) their programs more
easily.

E.g., Dr.Watson is a diagnostic tool from Microsoft that takes a snapshot/ photograph of your
system whenever a system fault occurs. It intercepts software faults, identifies the software
that faulted, and offers a detailed description of the cause & how to repair the fault.

Other diagnostic tools for detecting hardware faults are, Norton Utilities, PC Tools, QAPlus,
etc.

Programming Languages

A computer usually “works” by executing a series of instructions called the Program. A


Computer Program is simply a sequence of numeric codes („0‟s & „1‟s). Each of these
codes can be converted directly by the hardware into simple instructions.

The set of instructions that the computer can recognize is referred to as the Instruction Set.

A Computer program can be written in a variety of programming languages.

Programming languages are formal languages used in writing computer programs comprising
a set of vocabulary and grammatical rules to specify computations and tasks a computer must
perform. These languages are essential for developing software, controlling hardware
behavior, creating user interfaces, and executing various algorithms. The programming
language should be understood, both by the programmer (who is writing the program) and the
computer. A computer understands the language of 0∙s and 1∙s, while the programmer is more
comfortable with English-like language. They offer a medium through which programmers
can communicate with computers to perform specific functions.

Each programming language has a unique syntax, rules, and keywords. Depending on its
abstraction from the hardware, a programming language may belong to one of the following
three main categories: machine language, assembly language, and high-level language. The
choice of programming language depends on the task's complexity, speed requirements, and
hardware capabilities. Programming languages fall into three categories:

Categories of Programming Languages

Figure: Programming languages

1. Machine Language (First Generation):

- Definition: The lowest-level programming language directly understood by a


computer’s central processing unit (CPU). It consists entirely of binary digits
(0s and 1s), often referred to as machine code or object code. Each kind of
CPU has its own unique machine language.
- Key Features:

 Directly executable by the CPU without the need for translation.


 Machine-dependent, meaning the code written for one type of CPU
may not work on another.
 Difficult to write, debug, and modify due to the binary format (e.g.,
00010001 11001001).

- Example: Binary code instructions like 11001001 01010101 are machine


code that directs specific CPU operations.
- Use: Mostly used in the early days of computing or in highly specialized
environments.
Figure: Machine language code

2. Assembly Language (Second Generation):

- Definition: A low-level programming language that uses symbolic names


(mnemonics) instead of binary code to represent machine instructions. The
symbolic names represent operations like adding, loading, or subtracting data.
Assembly Language falls in between machine language and high-level
language. They are similar to machine language, but easier to program in,
because they allow the programmer to substitute names for numbers.
- Key Features:

 Easier to write than machine language as it uses mnemonics (e.g.,


ADD, LOAD, SUB) instead of binary code.
 Assembly language programs are machine-dependent and need to be
translated into machine language by an assembler.
 Faster than high-level languages as they closely interact with hardware.

- Example: ADD 2, 3, LOAD A, SUB A, B.


- Use: Commonly used where performance optimization and direct hardware
control are essential, such as in embedded systems, drivers, and real-time
applications.

Figure: Assembly language code

3. High-Level Language (Third Generation):

- Definition: A language that abstracts hardware details, allowing the


programmer to focus more on problem-solving without worrying about the
system's internal architecture. High-level Language is easier to understand and
use for the programmer but difficult for the computer.
- Key Features:

 Easier to write, read, and understand due to English-like syntax.


 Portable across multiple types of computers, provided a suitable
compiler or interpreter is available.
 More abstracted from hardware, with one high-level instruction often
translating to multiple machine-level instructions.

- Examples:

 C++: General-purpose, object-oriented programming language.


 Java: Portable, object-oriented, often used for web and mobile
applications.
 Python: High-level, interpreted language known for readability and
broad use cases.
 COBOL: Used in business, finance, and administrative systems.
 FORTRAN: Specialized in numerical, scientific, and engineering
calculations.

- Use: Ideal for developing application software, operating systems, web


applications, databases, etc.

Figure: Hierarchy of Programming Languages

Generations of Programming Languages

Programming languages can be classified based on the generational evolution of languages,


reflecting increasing levels of abstraction, usability, and efficiency.

1. First Generation: Machine language (binary code), directly executed by the CPU.
Machine language uses machine codes (binary digits) that consist of 0‟s & 1‟s.
2. Second Generation/ Low-level languages/ Assembly language: Assembly
language, using mnemonic codes or labels for easier coding than machine language. ).
Words like ADD, SUM could be used in programs, and a program called an
Assembler translates these words into Machine language. It was developed (in early
1950‟s) to speed up programming. Comments can be incorporated into the program
statements to make them easier to be understood by the human programmers.
3. Third Generation: High-level languages. These languages are more abstract, using
English-like syntax, which makes them easier to understand and code. These are
languages developed to solve the problems encountered in low-level programming
languages. The grammar of High-level languages is very close to the human being’s
natural languages vocabulary, hence easy for the human beings to understand and use.
They allow a problem solution to be specified in a human & problem- oriented
manner. The programs are able to run in any family of computers provided the
relevant translator is installed. Programs written in high-level languages are shorter
than their low-level equivalents, since one statement translates into several machine
code instructions.

Examples:
 COBOL (COmmon Business Oriented Language).
 FORTRAN (FORmula TRANslation).
 BASIC (Beginners All-purpose Symbolic Instruction Code).
 PASCAL.
 C.
 C++ (Object C).
 Java
 LOGO.
 COROL.
 RPG (Report Program Generator).
 SNOBOL (String Oriented Symbolic Language).
4. Fourth Generation: Languages designed to be more user-friendly, often used for
databases and high-level application development.
- Examples: SQL, MATLAB, Visual Basic, VB.NET, C#.NET, scripting
languages like JavaScript.
5. Fifth Generation: Logic-based languages often used for artificial intelligence and
expert systems.
- Examples: Prolog, LISP (LISt Processing)., and Mercury.

First Generation Machine language


Second Generation Assembly language
Third Generation C, COBOL, Fortran, Pascal, C++, Java,
ActiveX (Microsoft) etc.
Fourth Generation NET (VB.NET, C#.NET etc.) Scripting
language (Javascript, Microsoft Frontpage
etc.)
Fifth Generation LISP, Prolog

Table: Generations of programming languages

Translator Software

Since computers can only execute machine code, programs written in higher-level languages
need to be translated into machine language. Translator software is used to convert a program
written in high-level language and assembly language to a form that the computer can
understand. Translator software converts a program written in assembly language, and high-
level language to a machine-level language program
The translated program is called the object code.
There are three different kind of translator software:
 Assembler,
 Compiler, and
 Interpreter.

Figure: Translator software

1. Assembler:
- Definition: A software that translates assembly language into machine code.
Assembly language is also referred to as a symbolic representation of the
machine code.

There is usually a one-to-one correspondence between simple assembly statements and


machine language instructions. The machine language is dependent on the processor
architecture, though computers are generally able to carry out the same functionality in
different ways. Thus the corresponding assembly language programs also differ for different
computer architectures.

- Use: Each mnemonic in assembly language is converted into a specific


machine language instruction. The assembler ensures the program runs on the
intended processor.
- Example: Converts ADD 2, 3 into binary code understandable by the
processor.

Figure: Assembler

2. Compiler:
- Definition: A translator that converts a program written in a high-level
language into machine language all at once.

The program written in high-level language is referred to as the source code and compiled
program is referred as the object code. The object code is the executable code, which can run
as a stand-alone code. It does not require the compiler to be present during execution.
In some languages, compilation using the compiler and linking using the linker are required
for creating the executable object code.

The compilation process generally involves two parts—breaking down the source code into
small pieces and creating an intermediate representation, and, constructing the object code for
the intermediate representation. The compiler also reports syntax errors, if any, in the source
code.

- Key Features:
 The entire program is compiled, producing an executable object code.
 The object code can be run multiple times without the need for
recompilation.
 Generates faster code compared to interpreted programs.
- Examples:
 C++, Java, FORTRAN, COBOL, Pascal use compilers.
- Use: Ideal for large programs where execution speed is crucial.
3. Interpreter:
- Definition: A translator that converts high-level language into machine code
line-by-line during program execution.

The purpose of interpreter is similar to that of a compiler. The interpreter is used to convert
the high-level language program into computer-understandable form. However, the
interpreter functions in a different way than a compiler. Interpreter performs line-by-line
execution of the source code during program execution. Interpreter reads the source code
line-by-line, converts it into machine understandable form, executes the line, and then
proceeds to the next line.

- Key Features:
 The interpreter translates one line at a time and immediately executes
it.
 Slower than compilers, but useful for development and debugging due
to real-time error detection.
- Examples:
 Python, Ruby, BASIC, and JavaScript use interpreters.
- Use: Used where ease of debugging is needed or where interactive execution
is essential, such as in scripting and development environments.

Difference between a Compiler and an Interpreter:

1. Execution Method:
- Compiler: Translates the entire source code into object code at once. The
object code is then executed.
- Interpreter: Translates and executes the source code line-by-line.
2. Object Code:
- Compiler: Produces object code that can be run multiple times without
recompiling.
- Interpreter: Does not produce object code; it interprets the source code each
time it's run.
3. Speed:
-Compiler: Compiled programs run faster because they are already translated
into machine code.
- Interpreter: Slower execution as each line is translated during runtime.
4. Execution Requirement:
- Compiler: After compilation, only the object code is required for execution.
- Interpreter: Both the interpreter and the source code are needed during
execution.
5. Use Case:
- Compiler: Suitable for larger programs where speed is critical.
- Interpreter: Ideal for scripting or real-time debugging due to line-by-line
execution.

Linker:

- Definition: Combines several object modules or libraries into a single


executable program.

A source code of a program is often very large consisting of several hundred or more lines.
The source code may also include reference to libraries. All these independent modules may
not be stored in a single object file. The code is broken down into many independent modules
for easy debugging and maintenance. Before execution of the program, these modules and the
required libraries are linked together using the linker software. The compiled and the linked
program are called the executable code.

- Use: Used when a program is divided into smaller modules that need to be
combined for execution.

Loader:

- Definition: A software utility that loads and re-locates executable programs


into main memory for execution.

Software has to be loaded into the main memory during execution. Loader assigns storage
space to the program in the main memory for execution. Figure below shows the working of
a Java Runtime Environment (JRE). The java source file Sample.java is compiled and
converted into a set of bytecodes and are stored in Sample.class file. At runtime, the class
loader loads the bytecodes from the hard disk, checks it, and runs it in an interpreter. The
interpreter executes the bytecode and makes calls to the underlying hardware.

NOTE: Loaders and linkers are grouped under system utilities for developing software,
rather than for general computer management. Here's why:

- System Utilities for Developing Software: These utilities assist in the process of
developing, compiling, linking, and loading software for execution. Linkers and
loaders are essential tools in transforming high-level or assembly-level code into
executable programs.
- Linker: Combines object files and resolves symbol references to create an
executable.
- Loader: Loads the executable into memory and prepares it for execution.
- System Utilities for Computer Management: These utilities are focused on
maintaining, optimizing, or managing the computer's resources and overall system
health (e.g., disk defragmenters, file compression utilities, antivirus software). They
don't directly contribute to software development but rather manage the environment
in which software operates.

So, linkers and loaders are part of the software development process, helping transform
written code into executable software, which clearly places them under system utilities for
developing software.

- Use: Once the code is compiled and linked, the loader places the executable
program into memory, ready for the CPU to run.

Figure: Working of java runtime environment


Figure: Hierarchy of program execution

Debugger:

A debugger is a specialized software tool that helps developers test and identify issues or
bugs in their code. Debuggers enable developers to examine the internal state of an
application while it is running, allowing them to trace the flow of execution, set breakpoints,
inspect variables, and step through code line by line to find errors or unexpected behavior.

Debuggers are essential in the software development process as they help ensure that the code
functions as intended, making it easier to identify and resolve bugs before the software is
released.

Categories of Debuggers

Debuggers can be categorized based on their functionality and the level at which they
operate:

1. Source-Level Debuggers
These debuggers work at the source code level, allowing developers to debug
applications by referencing the original source code. They enable the inspection of
variables, execution flow, and logic based on the actual programming language code.
- Examples: GDB (GNU Debugger), Visual Studio Debugger, Eclipse
Debugger.
2. Machine-Level (Low-Level) Debuggers
Machine-level debuggers allow debugging at the machine code or assembly
language level. These debuggers are used for low-level programming tasks, such as
debugging operating systems, device drivers, or hardware-specific code, where source
code may not be available.
- Examples: LLDB, OllyDbg, Windbg.
3. Post-Mortem Debuggers
These debuggers are used after a program has crashed. They help analyze the core
dump or memory dump files to diagnose what caused the crash. This is useful when
live debugging is not possible.
- Examples: WinDbg (with crash dump analysis), GDB with core dumps.
4. Remote Debuggers
Remote debuggers enable developers to debug an application running on a different
machine or device than the one hosting the debugger. This is commonly used in
embedded systems or when testing code on different environments or platforms.
- Examples: Visual Studio Remote Debugger, Eclipse Remote Debugger.
5. Integrated Debuggers
These debuggers are built into Integrated Development Environments (IDEs),
combining debugging functionality with other tools like editors and compilers. They
make it easier for developers to debug while coding.
- Examples: Visual Studio, Eclipse, IntelliJ IDEA.
6. Interactive Debuggers
Interactive debuggers allow developers to modify the execution flow of a program
dynamically. Developers can change variable values and even skip or rerun certain
sections of code to understand program behavior better.
- Examples: Python’s PDB (Python Debugger), Ruby's IRB Debugger.

Key Features of Debuggers:

- Breakpoints: Allow pausing the execution at a specific point in the program.


- Stepping: Step through code line by line to see the flow of execution.
- Variable Inspection: View the values of variables during program execution.
- Call Stack Inspection: Examine the chain of function calls leading to the current
point.
- Memory Inspection: Monitor the program's memory usage and specific memory
addresses.

In summary, debuggers are critical tools that assist developers in understanding and resolving
errors in their programs, and they come in various forms depending on the level and method
of debugging required.

Debuggers are categorized as system software, specifically as programming tools or


development tools. They belong to the broader category of programming software, which
supports the creation, testing, and maintenance of other software programs.

Why Debuggers Are System Software:

- System-level functionality: Debuggers interact with both the operating system and
the application being debugged, often requiring deep access to the hardware and
memory to trace, control, and monitor code execution.
- Development process: They are crucial in the software development lifecycle,
helping developers troubleshoot and fix issues within the code before an application is
finalized and deployed.

Programming software like compilers, interpreters, linkers, and debuggers serve as essential
tools for writing and improving software applications, making debuggers a key part of this
software category.

Conclusion: Programming languages are essential for instructing computers on what to do.
From low-level machine languages to high-level, user-friendly languages, they offer a range
of tools for developers based on the task's complexity and requirements. Various translator
software like assemblers, compilers, and interpreters help convert these human-readable
programs into machine-readable formats for execution.

Middleware:

Middleware is a specialized type of software that acts as an intermediary layer between


different software applications or between an application and the underlying operating
system. It facilitates communication, data management, and integration between disparate
systems, allowing them to work together more efficiently. Middleware is crucial in enabling
interoperability in complex, distributed computing environments.

Categories of Middleware

Middleware can be categorized into several types based on its functionality:

1. Message-Oriented Middleware (MOM):


- Description: Facilitates communication between distributed systems by
sending and receiving messages. It allows different applications to
communicate with each other without requiring them to be directly connected.
- Example: Apache Kafka, RabbitMQ.
2. Database Middleware:
- Description: Provides connectivity and communication between applications
and databases. It allows applications to send requests and receive responses
from database systems.
- Example: ODBC (Open Database Connectivity), JDBC (Java Database
Connectivity).
3. Transaction Middleware:
- Description: Manages transactions between multiple applications or
databases, ensuring data integrity and consistency across systems.
- Example: Tuxedo, IBM CICS.
4. Web Middleware:
- Description: Supports web-based applications by managing HTTP requests,
sessions, and user interactions, often providing APIs for developers.
- Example: Node.js, Apache Tomcat.
5. Object Middleware:
- Description: Enables communication between objects in distributed systems,
allowing for remote method invocation and object management.
- Example: CORBA (Common Object Request Broker Architecture), DCOM
(Distributed Component Object Model).
6. Remote Procedure Call (RPC) Middleware:
- Description: Allows a program to execute a procedure (subroutine) on a
remote server as if it were local, simplifying the process of network
communication.
- Example: gRPC, XML-RPC.
7. API Middleware:
- Description: Manages APIs for different applications, enabling them to
communicate and share data through standardized protocols.
- Example: API gateways like Apigee and AWS API Gateway.
Middleware serves as a crucial component in modern software architectures, particularly in
distributed systems, cloud computing, and enterprise applications. It streamlines
communication and integration among various software components, ensuring that they can
work together seamlessly and efficiently.

Middleware is considered a type of system software. However, it can also be viewed as a


bridge between system software and application software, depending on its role and
functionality.

Explanation

1. System Software:
- Middleware provides essential services that help different applications
communicate and manage data. It operates at a level that allows it to manage
interactions between system resources (like databases, servers, and networks)
and applications, which is characteristic of system software.
2. Application Software:
- In some contexts, middleware can also be viewed as application software
when it is designed to facilitate specific applications or user-driven processes.
For instance, if middleware is specifically tailored to support a certain
application’s functionality (like connecting a web application to a database), it
takes on the role of application software in that scenario.

NB:

 Primary Classification: Middleware is primarily categorized as system software.


 Role in Application Development: It serves as a bridge that enables application
software to communicate and function efficiently within a larger system environment.

In summary, middleware primarily functions as system software, but it can have


characteristics that overlap with application software depending on its specific
implementation and purpose.

Application Software

Definition: Application software or application programs are end-user programs that serve
specific functionality and is designed to help users accomplish specific tasks. It may be a
single program or a set of programs (software package) that provides required functionality
for various applications, such as word processing, image editing, database management, and
accounting.

Note:

 Application programs can be written by the user, programmers employed by the user,
or by a Software house (a company specializing in writing software).
 Application programs can be written with very little knowledge of the hardware
details of a specific computer, and can run on several different computers with little or
no modification.

Characteristics of Application Software


1. Task-Specific:
- Application software is designed to help users accomplish specific tasks, such
as word processing, data management, or graphic design.
- Example: A word processor like Microsoft Word is specifically built for
creating and editing documents.
2. User-Friendly Interface:
- Application software typically provides a user-friendly interface, making it
easier for users to interact with the software, even without advanced technical
knowledge.
- Example: Graphical User Interfaces (GUIs) like those in Microsoft Office
Suite are intuitive, allowing users to navigate easily.
3. Customization and Flexibility:
- Most application software allows customization to suit individual user
preferences or project requirements.
- Example: Spreadsheet software like Microsoft Excel allows custom formulas,
layouts, and macros based on user needs.
4. Interactivity:
- Application software is interactive, providing real-time feedback to users
based on their inputs.
- Example: In a spreadsheet program, users can immediately see the result of a
calculation once data is entered.
5. Resource-Intensive:
- Some application software requires significant system resources such as
memory (RAM), processing power (CPU), and storage space.
- Example: Video editing software like Adobe Premiere Pro may need a high-
performance computer to function smoothly.
6. Modularity:
- Application software often consists of several modules or features that work
together, allowing users to access a variety of functionalities in one program.
- Example: Microsoft Office includes separate applications like Word, Excel,
and PowerPoint, all part of the same software suite.
7. Portability:
- Many application software programs are platform-independent or can be
easily adapted to run on different operating systems (portability).
- Example: Web-based applications such as Google Docs can run on various
platforms like Windows, macOS, or Linux without the need for installation.
8. Integration with Other Software:
- Application software can often integrate or work alongside other software
applications, allowing data sharing and streamlined workflows.
- Example: Adobe Photoshop can integrate with other Adobe products like
Illustrator or After Effects.
9. Regular Updates and Maintenance:
- Application software typically undergoes regular updates for bug fixes,
security enhancements, and feature improvements.
- Example: Microsoft Windows applications receive periodic updates to fix
vulnerabilities and enhance performance.
10. Variety and Availability:
- Application software exists in a wide variety of categories, including office
productivity, entertainment, education, and business.
- Example: From word processors and video players to accounting systems and
design tools, there is a vast selection of application software available for
different needs.
11. Licensing and Distribution:
- Application software is often distributed under specific licenses such as
freeware, shareware, open-source, or proprietary software.
- Example: Google Chrome is freeware, while Adobe Photoshop is proprietary
software that requires a license purchase.
12. Minimal Hardware Dependency:
- Application software can often run on different systems with little
modification and typically requires minimal knowledge of the hardware it runs
on.
- Example: Users can install software like Google Chrome or Microsoft Word
on various computers without needing to modify the hardware.
13. Problem-Solving Focus:
- Application software is written to solve specific problems or perform
particular tasks, such as managing finances, designing graphics, or organizing
data.
- Example: Quicken is designed for personal finance management.
14. Developed by Various Entities:
- Application software can be written by individual users, programmers, or
specialized software houses.
- Example: Adobe Photoshop is developed by Adobe, while some companies
may write custom applications tailored to their business needs.

In summary, application software bridges the gap between users and the system, helping
them perform specific tasks efficiently through a user-friendly interface and providing
solutions to various problems.

Application Software Categories

1. General-Purpose Packages (Application packages):


- Pre-written programs for common tasks.
- Available off-the-shelf, developed by manufacturers or software houses.
- Examples: Word processors, spreadsheets, graphic design packages.

Advantages:

- Saves time and programming effort.


- Cost-effective due to shared development costs.
- User-friendly with extensive documentation.

Disadvantages:

- May not perfectly fit specific user needs.


- Limited control over the software.
- May include unnecessary features.
2. Special-Purpose Applications (User-developed/ in-house programs). :
- Customized programs for specific organizational needs. Targeted applications
for specific industries or tasks.
- Developed in-house or by software houses.
- Aimed at particular user groups, such as healthcare or finance.

Advantages:

- Tailored to meet specific needs.


- More control during the development process.

Disadvantages:

- Typically more expensive.


- Limited to the specific context of the organization.

Factors to Consider When Buying Application Software

1. Cost: Evaluate against expected benefits and in-house development costs.


2. Compatibility: Ensure it fits with existing hardware and software.
3. Maintenance Support: Availability of help from suppliers.
4. Documentation: Quality and comprehensiveness of accompanying guides.
5. Portability: Ability to use across different systems.
6. Ease of Use: User-friendly design to minimize training time.
7. User Feedback: Gather insights from current users about effectiveness and
reliability.

Types of Application Software

1. Word Processing Software:


- Purpose: Used for creating and editing documents such as letters, reports, and
manuscripts.
- Examples:
 Microsoft Word
 WordPerfect
 Lotus Word Pro
 WordStar
 Wang Writer
2. Text Editors:
- Purpose: Simplest form of word processor, used for creating small notes and
documents without special formatting.
- Types:
 Line Editors: Work with one line of text at a time (e.g., DOS COPY
CON).
 Screen Editors: Allow full-screen editing, featuring cut, copy, paste,
and search functionalities.
3. Spreadsheet Software:
- Purpose: Used for manipulating numerical data, typically arranged in rows
and columns. Ideal for accounting, financial planning, and data analysis.
- Examples:
 Microsoft Excel
 Lotus 1-2-3
 Quattro Pro
4. Database Management Systems (DBMS):
- Purpose: Store, track, and manage large volumes of data in an organized
manner, allowing users to create databases, enter data, and generate reports.
- Examples:
 Microsoft Access
 FoxPro
 dBase
 Paradox
5. Graphics Programs:
- Purpose: Used to create artwork, diagrams, illustrations, and presentations.
- Types:
 Clip Art Programs: Provide pre-drawn graphics for use in documents.
 Draw & Paint Programs: Tools for custom artwork creation.
 CAD Programs: Used for detailed engineering designs and
architectural drawings.
- Examples of Graphics and Presentation Software:
 Microsoft PowerPoint
 Corel Draw
 Adobe Photoshop
 Adobe Illustrator
 Harvard Graphics
6. Desktop Publishing Software (DTP):
- Purpose: Create professional documents with integrated text and graphics for
publishing purposes.
- Examples:
 Microsoft Publisher
 Adobe PageMaker
 FrameMaker
7. Computer-Aided Design (CAD) Software:
- Purpose: Used in engineering and architectural design to create, simulate, and
modify detailed drawings efficiently.
- Examples:
 AutoCAD
 ArchCAD
 Planix Home Designer 3D Deluxe
8. Multimedia Software:
- Purpose: Combines text, graphics, sound, animation, and video for
educational, entertainment, and design purposes.
- Examples:
 Animation Master
 3D Studio Max
 Extreme 3D
9. Communication Software:
- Purpose: Enables the exchange of information, messages, and ideas via
networks.
- Examples:
 WinFax Pro
 Zoc
 ProComm Plus
10. Internet Software:
- Email Software: Allows for fast and efficient electronic mail communication.
 Examples:
 Google Gmail
 Yahoo Mail
 Microsoft Outlook
- Web Browsers: Software to access the World Wide Web.
 Examples:
 Google Chrome
 Internet Explorer
 Mozilla Firefox
11. Money Management Software:
- Purpose: Helps users manage personal or business finances.
- Categories:
 Personal Finance Programs: For budgeting and planning (e.g.,
Quicken, Microsoft Money).
 Accounting Programs: For managing business finances, payrolls, and
expenditures (e.g., DAC Easy, Peachtree Accounting).
12. Personal Organizers:
- Purpose: Manage contacts, schedules, appointments, and tasks.
- Examples:
 Goldmine
 Day-Timer Organizer
 Ecco Pro
13. Geographic Information Systems (GIS):
- Purpose: Analyze and manage geographic data and images.
- Examples:
 ArcGIS
14. CAD/CAM Software:
- Purpose: Used for design and manufacturing processes, commonly in
engineering and architecture.
- Examples:
 AutoCAD
 Autodesk
15. Software Suites:
- Purpose: A bundle of related applications that provide a broad range of
functionalities.
- Examples:
 Microsoft Office (Word, Excel, PowerPoint)
 Google Docs

Application software is categorized into various types based on their functionalities, from
word processors and spreadsheets to graphics, CAD, and multimedia programs. Each type is
designed to solve specific problems and assist users in accomplishing particular tasks
efficiently.

Software Suites:

A software suite is a collection of individual but compatible programs sold together by a


software company. These programs typically share common features such as menus, buttons,
or keystrokes, making them easy to use and integrate with one another. Buying a suite is
usually more cost-effective than purchasing the programs separately.

Examples of Software Suites:

 Microsoft Office (Word, Excel, PowerPoint)


 Lotus SmartSuite
 WordPerfect Suite
 Microsoft Works
 ClarisWorks

Difference between System Software and Application Software


System Software Application Software

System Software maintains the system


Application software is built for specific
resources and gives the path for application
tasks.
software to run.

Low-level languages are used to write the While high-level languages are used to
system software. write the application software.

It is general-purpose software. While it’s a specific purpose software.

Without system software, the system stops and While Without application software
can’t run. system always runs.

System software runs when the system is


While application software runs as per
turned on and stops when the system is turned
the user’s request.
off.

Example: System software is an operating Example: Application software is


system, etc. Photoshop, VLC player, etc.

Application software programming is


System Software programming is more
simpler in comparison to system
complex than application software.
software.

The Software that is designed to control, A set of computer programs installed in


integrate and manage the individual hardware the user’s system and designed to
components and application software is perform a specific task is known as
known as system software. application software.
System Software Application Software

A system software operates the system in the


Application software runs in the front
background until the shutdown of the
end according to the user’s request.
computer.

The system software has no interaction with Application software connects an


users. It serves as an interface between intermediary between the user and the
hardware and the end user. computer.

Application software is dependent on


System software runs independently. system software because they need a set
platform for its functioning.

Conclusion: In short, both these system software and application software are integral parts
of Computer System. Each of them have a different and unique role. As system software
ensures that hardware will managed smoothly and application software ensures that user can
perform any specific task smoothly and directly without any disturbance, difference between
these two types of software helps in better understanding how computers function and how to
utilize them effectively.

Software as a Product:

Software is normally purchased directly or indirectly from either a computer manufacturer or


a Software house.

A Software house is a company that specializes in producing software and related services.

When software is purchased for use on a particular computer, the purchaser obtains a copy of
the program plus a no. of other items of documentation.

Software may therefore refer to the various programs used in a computer system together
with their associated documentation.

When software is purchased, the user typically receives the following:

(a). Licence.

The purchaser pays a Licence Fee, which gives him/her the right to use the software on a
particular computer or a specified no. of computers on a particular site.
Alternatively, a Site Licence may be paid, which entitles the purchaser to use the software on
any computer at a particular space. Sometimes, the licence may specify the no. of users that
may use the software at any one time, and in case of a Single-user licence, the users’ name
must be registered.

Note: Using software in breach of licence agreements is a serious offence for which the user
may be sued for damages or subjected to criminal prosecution.

(b). Installation Guide.

The guide provides information about what hardware is needed to enable the programs to run
satisfactorily.

It tries to describe the procedures to be followed in order to set up the software, so that it can
be used satisfactorily & efficiently on a particular kind of computer.

(c). Installation of The Software.

If the purchaser is not an expert in setting up the software, he pays an additional fee to have
the software installed.

(d). Maintenance Updates.

Sometimes, faults called Bugs may light up sometime after the software has been delivered
and put to use.

A good supplier will make every effort to correct bugs as and/or when they are discovered &
will provide a new corrected version of the program containing the necessary “Bug fixes”.

The correction of bugs (i.e. maintenance) is often combined with enhancements to the
software to make it better in some way. Enhancements normally involve increased
“functionality”, i.e. making it work faster.

Licensed purchasers may get some of these changes provided free of charge, perhaps during
the 1st year of use. Subsequently, the purchaser may be required to pay an annual fee for
maintenance and updates.

(e). User Guides.

A User Guide is usually a manual provided for the end-user to enable him/her to learn how to
use the software. Such guides usually use suitable examples to take the user through the
stages of carrying out various tasks with the software.

(f). A Reference Manual.

A reference manual is normally intended to be used by a user who already knows how to use
the software, but who needs to be reminded about a particular point or who wants to obtain
more detailed information about a particular reference.

Reference manuals normally have topics organized in alphabetical order.


(g). A Quick Reference Guide.

This may be a single sheet or card, which the user may keep for help with common tasks
carried out with the software.

(h). Training.

The software supplier may provide training courses on how to use the software. Sometimes,
some initial training is provided free as part of initial purchase.

(i). Membership of a User Group.

A User group is a club for individuals or organizations who use a particular hardware or
software product. The club is often run and partly sponsored by the supplier.

Members of user groups receive Newsletters, which enable them to find out more about the
product & how to use it.

Malware:

Malware (short for "malicious software") is a category of software specifically designed to


disrupt, damage, or gain unauthorized access to computer systems, networks, or devices. It is
a significant threat in the digital world and can take various forms, each with different
purposes and methods of attack. Here are the primary types of malware:

Types of Malware

1. Viruses:
- Description: A virus attaches itself to clean files and spreads throughout a
computer system, infecting other files and programs. It can corrupt data, steal
information, or create backdoors for other malware.
- Example: A virus that spreads through email attachments or infected USB
drives.
2. Worms:
- Description: Worms are standalone malware that replicate themselves to
spread to other computers, often exploiting network vulnerabilities. Unlike
viruses, they do not require a host program to spread. It replicates through
computer memory, crashing the system when memory is exhausted. It’s a
program that “borrows” (or sneaks) into a computer’s memory. It is designed
to search for idle computer memory, and then rewrite itself successfully
through the computer’s memory until the system crashes.
- Example: The ILOVEYOU worm that spread via email in the early 2000s.
3. Trojan Horses:
- Description: Trojans disguise themselves as legitimate software or are
embedded in legitimate software. They often create backdoors for attackers to
access the system. They are programs, which deliberately set out to destroy
data, often their trigger (activator / starter) could be specific event like time
(time bombs) or logic conditions (logic bombs). Trojans do not multiply like
viruses, but are equally harmful.
- Example: A fake antivirus program that pretends to scan your system but
actually infects it.
4. Ransomware:
- Description: Ransomware encrypts a user’s files and demands payment
(ransom) for the decryption key. It can severely disrupt personal and
organizational operations.
- Example: WannaCry, which attacked thousands of computers worldwide in
2017.
5. Spyware:
- Description: Spyware secretly monitors user activities and collects personal
information, such as login credentials and browsing habits, often without user
consent.
- Example: Keyloggers that record keystrokes to capture sensitive information.
6. Adware:
- Description: Adware automatically delivers advertisements to a user’s device.
While not always harmful, it can disrupt user experience and collect personal
data.
- Example: Software that displays pop-up ads and tracks user behavior to
deliver targeted ads.
7. Rootkits:
- Description: Rootkits are designed to gain unauthorized root access to a
system while remaining undetectable. They can hide other malware, making
removal difficult.
- Example: Malware that modifies the operating system to hide its presence and
the presence of other malicious software.
8. Botnets:
- Description: A botnet is a network of infected computers (bots) controlled by
a hacker. They can be used to execute distributed denial-of-service (DDoS)
attacks or send spam emails.
- Example: The Mirai botnet, which was used in major DDoS attacks against
internet infrastructure.
9. Variants: Programs similar to viruses that belong to the same family but have slightly
different effects. Example; a virus called HAALAND causes .COM files to increase
by 1,168 bytes, while its two variants; HAALAND1 & HAALAND2 increase them
by 128 and 1514 bytes respectively.

Prevention and Protection

1. Use Antivirus Software: Regularly update and run antivirus programs to detect and
remove malware.
2. Keep Software Updated: Ensure that operating systems and applications are up-to-
date with the latest security patches.
3. Educate Users: Inform users about safe browsing habits, phishing scams, and the
importance of not downloading untrusted software.
4. Implement Firewalls: Use firewalls to protect networks and devices from
unauthorized access.
5. Regular Backups: Regularly back up important data to recover from potential
malware attacks, especially ransomware.

Conclusion
Malware poses a serious threat to computer security and can lead to significant data loss,
financial damage, and identity theft. Understanding the different types of malware and
implementing effective security measures can help protect systems and data from these
malicious threats.

Computer Viruses:

A computer virus is a malicious program designed to replicate itself and cause damage to a
computer system without the user's knowledge.

A Computer virus is a program (or a piece of software), which attaches itself to another
program or a system.

It is designed specifically to copy itself to other programs & cause some undesirable effect on
the programs (or damage them) without the knowledge of the user. E.g., it may attach itself
to the FORMAT command, and be run every time you format a diskette.

A virus is a computer code usually designed to carry out 2 tasks: -

i. To replicate (duplicate/ copy) itself from one computer system to another.


ii. To locate itself within a computer system making it possible for it to amend/ destroy
programs & data files, by interfering with the normal processes of the Operating
system.
The program is written by people who are cruel, unethical and malicious.

Types of Viruses:

1. Destructive Viruses:
- Massive Destruction: Erases all files or damages the disk format, making
recovery difficult. The virus attacks the format of disks, or deletes all files on
the disk, making any damage to programs or data on that disk unrecoverable.
- Partial Destruction: Erases or modifies specific portions of a disk, affecting
any files stored in that location.
- Selective Destruction: Targets and modifies specific files or file groups.
- Random Havoc: Randomly alters data or system processes. Randomly
changes data on a disk or in memory during normal program execution. Also
changes keystroke values, or data from other I/O devices.
- Network Saturation: Uses system resources to slow down or crash the
network. The virus systematically uses up computer memory or space,
impeding performance or causing the system to crash.
2. Non-Destructive Viruses:
- These viruses don't cause damage but can be highly annoying.
- What Non-destructive viruses do?
1. They might lock the Keyboard.
2. Change keystroke values (e.g. changing the effect of the SHIFT key).
3. Display an obnoxious (loathsome/ horrible/ intolerable) message on the
screen.
4. Change the display colours.
5. Delete characters displayed on a visual display.
Sources of Virus Transmission (Virus transmission - ways in which a virus can spread):

The most common sources of virus transmission are: -

(a). Contact with contaminated systems.

Any disk used on a contaminated system could become contaminated. If the same disk is
used on another system, then the virus will spread.

(b). Pirated Software.

The use of rented disks containing Pirated computer software introduces the risk that the
software may be contaminated by a virus code or might have been amended to perform some
other destructive function, which may affect your system.

(c). Infected Proprietary Software.

There are cases of virus programs being introduced and contaminating software under
development in laboratories and then being installed onto diskettes containing the finished
software product.

(d). Fake Games.

Some virus programs pose as game software. Since many people like playing games on
computers, then virus can spread very fast. It can take a very short period for a game
program to spread across many countries.

(e). Freeware and Shareware.

Freeware & Shareware programs are commonly available from Bulletin Board Systems
(BBS). Using a Modem & a Telephone to dial into a public bulletin board system &
download programs onto your system may cause transmission.

Generally, a registration fee is requested to be sent directly to the author.

Such programs should be treated with care. They should first be used in a controlled
environment until it is clear that the program actually does what it is supposed to do and does
not contain either a virus or a destructive code.

(f). Updates of Software distributed using Networks.

Distribution of software through networks is an obvious target for virus programmers as they
provide a built-in method for widespread & anonymous (unidentified, unknown, secret)
propagation.

Symptoms of a Virus:

The presence of a virus can be indicated if one or more of the following symptoms appear on
your computer.
i. Unfamiliar graphics or quizzical (surprising) messages appearing on the screen.
ii. Programs taking longer than usual to load. Slow program execution.
iii. Disk access time seeming too long for simple tasks.
iv. Unusual Error messages or computer crashes occurring more frequently.
v. Less memory available than usual, e.g. Base memory may read less than 640K.
vi. Access lights turning on for non-referenced devices.
vii. Programs or files disappearing mysteriously.
viii. Executable files or data files changing size for no obvious reason.
ix. Changes of disk volume IDs.
x. Frequent Read/Write errors.
xi. Computer hags (gets stuck) anytime when executing or running a program.
Any evidence of these or similar events should be of an immediate concern. The PC should
be isolated at once and investigated.

How Viruses Work:

A virus infects a machine for which it was written, i.e. a virus that was written for a
Macintosh computer cannot infect an IBM PC or a Clone.

A virus infects files containing programs; they do not infect files containing data.

A virus-infected program attaches itself to the bottom of a normal useful program. When the
normal program is run, the portion containing the virus is the first to be run, thus infecting
other uninfected programs

The most common type of virus is the Boot Sector Virus, which is common to most disks,
e.g. disk A: The virus hides in the Boot sector of the disk (the area of the disk, which is
automatically loaded when the computer starts up). The virus resides in RAM from where it
can infect the boot sector of your hard disk & every disk you use.

Prevention against Viruses (Ways to avoid viruses).


The following steps should be followed to prevent virus infection: -
i. Never accept software from anyone.
ii. Never download software from a bulletin board or from Internet.
iii. If possible, avoid using one disk on several machines.
iv. Scan all boot disk and files using an up-to-date Anti-virus program and Write-protect
them.
v. Practice protection rules with your computer.
vi. Write-protect important disks and create "rescue disks" with clean system files.
Note: If you receive an alien disk or download a program from bulletin board onto your hard
disk, scan it with an Anti-virus.
If you suspect that your computer has been infected, reboot your computer from a clean,
write-protected disk.

Detection & Removal of Viruses.


Use Anti-virus software to detect infected files and remove known viruses.

Note: For an anti-virus to be able to detect a virus, it must know its signature.

The following steps should be taken if a virus attack is suspected: -

- Identify & isolate PCs & disks, which could be affected.


- Seek the advice of a specialist who would help you to;

a) Identify the virus code on affected disks.


b) Remove the virus code from all affected disks, including backups.
c) Evaluate the security procedures to ensure that the risk of future virus
attack is minimized.

- Determine how the virus was introduced to the system.


- If any infected diskettes could have left the site (e.g. to clients, subsidiaries,
branches or customers), the management should determine how best to inform
them that they could be having infected disks on their site, and take steps to
retrieve them.
- The management should also consider whether the matter could affect the public
image of the organization & take appropriate steps to protect the organization
from the effects of any bad publicity.

How Software Works

Software operates by processing commands (inputs) given by the user. These commands,
written in human-understandable languages, are converted into binary (machine language)
that the software and computer hardware understand. The software then processes these
inputs and provides the desired output, which depends on the nature of the commands and the
software's functionality.

How Software is Distributed

Software distribution refers to the methods and channels through which software is made
available to users based on ownership and usage rights. Here are the primary ways software is
distributed:

1. Commercial Distribution

- Description: Users are provided with a license to use the software, but they do not
own the software outright. While users can operate the software, they don’t own it,
and they are typically restricted from making modifications or adding features.
- Characteristics:
- Users cannot modify or add features to the software.
- Often involves purchasing a copy of the software or a license.
- Examples: Traditional software purchases like Microsoft Office or Adobe Creative
Suite.

2. Open-Source Distribution
- Description: Software that is available for download along with its source code,
allowing users to modify and distribute it. Open-source software is freely
distributed and includes access to the source code, allowing users to modify or
enhance the program. Some open-source software is free, while others may be
sold at a retail price.

- Characteristics:
- Users can make changes and improvements to the software.
- May be offered free of charge or sold at retail prices.
- Examples: Linux operating systems, Apache web server, and LibreOffice.

3. Freeware

- Description: Software that is available for download at no cost and can be used
indefinitely. Freeware is free for users to download and use without any licensing
fees. However, freeware often contains embedded advertising (adware) that generates
revenue for the developer.
- Characteristics:
- Typically ad-supported or offered by companies to increase their reach.
- Users can download and use it without payment, but the source code is usually
not available for modification.
- Examples: Skype, Audacity, Zoom, Adobe Reader, WhatsApp, Google Chrome,
VLC Media Player.

4. Shareware

- Description: Software that is available for download on a trial basis.


- Characteristics:
- Users can try the software for a limited time before deciding to purchase the
full version.
- Designed to give users a realistic experience of the software to encourage
them to buy the full version.
- Examples: Adobe Acrobat, WinZip, and PHP Debugger.

5. Cloud-Based Distribution

- Description: Software delivered over the internet and accessed through a web
browser or thin client.
- Characteristics:
- Users do not need to install the software on their local machines.
- Often based on subscription models, where users pay for access rather than
outright purchase.
- Examples: Google Workspace, Microsoft 365, and Salesforce.

6. Bundled Distribution

- Description: Software that is packaged and sold together with other software.
- Characteristics:
- Typically includes a suite of related applications, often at a reduced price
compared to purchasing each application separately.
-Often found in software suites.
- Examples: Microsoft Office Suite (includes Word, Excel, PowerPoint, etc.).

7. Physical Distribution

- Description: Software delivered on physical media such as CDs, DVDs, or USB


drives.
- Characteristics:
- Often used for larger software packages or operating systems.
- May include printed manuals and documentation.
- Examples: Windows operating systems, older video games, and business software.

The method of software distribution can vary significantly based on the software type, target
audience, and intended use. Each distribution model has its advantages and disadvantages,
affecting how users access, use, and pay for software.

Design and Implementation of Software

Software Development Life Cycle (SDLC)

The Software Development Life Cycle (SDLC) is a structured process used for developing
software applications. It outlines various phases that guide the planning, creation, testing,
deployment, and maintenance of software systems. Understanding the SDLC is crucial for
ensuring that software is developed efficiently, meets user requirements, and maintains high
quality throughout its life.
1. Requirements Gathering and Analysis

- Definition: The initial phase where project stakeholders, including users, developers,
and managers, come together to discuss and define the software's requirements.
- Purpose:
 Identify user needs and expectations.
 Document functional and non-functional requirements.
 Establish a clear understanding of the project scope.
- Activities:
 Conduct interviews and surveys.
 Organize workshops and focus groups.
 Analyse existing systems and gather user feedback.
- Outcome: A comprehensive requirements specification document that serves as the
foundation for all subsequent phases.

2. Design

- Definition: The phase where the architecture of the software is defined, focusing on
how the system will operate and meet the requirements identified earlier.
- Purpose:
 Outline the overall structure of the software, including user interfaces,
databases, and system interfaces.
 Create detailed design specifications that guide developers during
implementation.
- Activities:
 Create architectural diagrams and flowcharts.
 Develop user interface prototypes.
 Design database schema and data models.
- Outcome: Design documentation that provides a roadmap for developers to follow
during the implementation phase.

3. Implementation (Coding)/ Development


- Definition: The phase where actual coding takes place, translating design
specifications into executable software.
- Purpose:
 Convert design documents into working code using programming languages
and tools.
 Ensure adherence to coding standards and guidelines.
- Activities:
 Write code according to the specifications.
 Conduct code reviews and pair programming to improve quality.
 Use version control systems to manage code changes.
- Outcome: A functioning software application that is ready for testing.

4. Testing

- Definition: The phase where the software is rigorously tested to identify and fix
defects and ensure it meets the specified requirements.
- Purpose:
 Validate that the software functions as intended and meets quality standards.
 Identify and resolve any issues before deployment.
- Activities:
 Conduct various types of testing, including unit testing, integration testing,
system testing, and user acceptance testing (UAT).
 Document test results and track defects.
 Perform regression testing after fixes to ensure no new issues have been
introduced.
- Outcome: A software product that is free from critical defects and ready for
deployment.

5. Deployment

- Definition: The phase where the software is made available for use by end users.
- Purpose:
 Ensure a smooth transition from development to production environments.
 Provide users with access to the software.
- Activities:
 Install the software on user systems or deploy it to production servers.
 Provide training and documentation for users.
 Monitor the deployment process for any immediate issues.
- Outcome: The software is successfully launched and operational in a real-world
environment.

6. Maintenance

- Definition: The final phase of the SDLC, focusing on the ongoing support and
improvement of the software after it has been deployed.
- Purpose:
 Address any issues that arise post-deployment.
 Implement updates and enhancements based on user feedback and changing
requirements.
- Activities:
 Monitor system performance and user satisfaction.
 Fix bugs and vulnerabilities as they are discovered.
 Plan for future upgrades and feature enhancements.
- Outcome: A software application that remains relevant, functional, and secure over
time.

The Software Development Life Cycle (SDLC) is a vital framework that ensures software
projects are managed effectively, leading to high-quality products that meet user needs. Each
phase plays a critical role in the overall success of software development, and understanding
these phases is essential for aspiring software developers and project managers.

Software Testing:

Software testing is an essential aspect of software development, ensuring that applications


function correctly and meet specified requirements. It involves the evaluation of software at
various stages of the development lifecycle to identify defects, improve performance, and
enhance user satisfaction.

Importance of Software Testing

- Reliability: Testing ensures that the software operates as intended under various
conditions, providing assurance that it can perform consistently over time without
failures.
- Functionality: It verifies that the software performs its required functions accurately,
aligning with user expectations and business requirements.
- Cost-Effectiveness: Identifying and addressing defects during the early stages of
development helps reduce the cost and effort of fixing issues later in the software
lifecycle.
- User Satisfaction: Thorough testing enhances the user experience by delivering high-
quality software that is free from critical errors, thus fostering user trust and
satisfaction.
- Regulatory Compliance: In certain industries, software must meet specific
regulatory requirements. Testing ensures compliance with these standards, thereby
minimizing legal risks.

Types of Testing

Software testing can be categorized into various types, each serving a distinct purpose within
the software development lifecycle:

1. Unit Testing

- Definition: Unit testing involves testing individual components or modules of the


software in isolation to ensure that they function correctly.
- Objective: The primary goal is to validate that each unit of the software performs as
designed.
- Conducted By: Typically performed by developers during the coding phase.
- Tools: Common tools include JUnit (for Java), NUnit (for .NET), and pytest (for
Python).
2. Integration Testing

- Definition: Integration testing focuses on the interactions between different


components or modules of the software to identify issues that may arise when they
work together.
- Objective: The aim is to ensure that combined modules function correctly as a group.
- Conducted By: This testing is usually performed by developers or dedicated testing
teams.
- Types:
 Big Bang Integration Testing: All components are integrated simultaneously,
and the entire system is tested at once.
 Incremental Integration Testing: Components are integrated and tested one
by one.

3. System Testing

- Definition: System testing evaluates the complete and integrated software application
to verify that it meets specified requirements.
- Objective: The goal is to validate the software's end-to-end functionality,
performance, security, and usability.
- Conducted By: Typically performed by a specialized testing team.
- Types:
 Functional Testing: Validates that the software performs the required
functions.
 Non-Functional Testing: Evaluates aspects like performance, usability, and
security.

4. User Acceptance Testing (UAT)

- Definition: UAT is the final phase of testing before the software is released to users.
It involves actual users testing the software to ensure it meets their needs and
requirements.
- Objective: The aim is to confirm that the software is ready for deployment and that
users can operate it as intended.
- Conducted By: Performed by end-users or clients.
- Types:
 Alpha Testing: Conducted in-house by testers who simulate user interactions.
 Beta Testing: Conducted by a limited number of external users in a real-world
environment.

Software testing is a critical activity that ensures the quality, reliability, and functionality of
software applications. By employing various testing types—such as unit testing, integration
testing, system testing, and user acceptance testing—developers and testers can effectively
identify defects and validate that the software meets user expectations and business
requirements. This process ultimately contributes to delivering high-quality software that
enhances user satisfaction and reduces maintenance costs.

Maintaining Software Quality


Software quality testing is essential to ensure that software performs its intended functions.
Software quality can be assessed based on two primary parameters:

 Functional Requirements: Core capabilities and functionalities the software must


deliver.
 Non-Functional Requirements: Quality attributes like performance, security, and
usability.

Regular testing helps identify technical issues in the source code and ensure the software
meets performance expectations. Maintaining software quality post-development involves
continually evaluating user needs and updating the software to address any issues.

Modern Software Development

Modern software development practices embrace Lean and Agile principles, which
emphasize customer requirements and continuous improvement. Whether developing small-
scale applications or large, complex systems, these methodologies help integrate new features
quickly and ensure the software remains responsive to user needs.

Computer Maintenance Tasks

Effective computer maintenance ensures that systems run smoothly, securely, and efficiently.
Regular maintenance helps to prevent hardware and software failures, prolongs the life of the
computer, and enhances user experience.

Routine Maintenance Tasks

1. Disk Cleanup
- Purpose: Removes unnecessary files that consume disk space, such as
temporary files, system cache, and recycle bin contents.
- Benefits:
 Frees up disk space.
 Improves system performance.
 Reduces the likelihood of system slowdowns.
2. Disk Defragmentation
- Purpose: Rearranges fragmented data on the hard drive so that related data is
stored close together, enabling faster access.
- Benefits:
 Enhances file access speed.
 Increases overall system efficiency.
 Helps maintain hard drive health by reducing wear and tear.
3. Antivirus Scanning
- Purpose: Detects and removes malicious software (malware) that can
compromise system security and integrity.
- Benefits:
 Protects against viruses, spyware, and other malicious threats.
 Ensures data integrity and user privacy.
 Reduces the risk of data loss and system damage.
4. Software Updates
- Purpose: Installs the latest updates and patches for operating systems and
applications to fix bugs, improve functionality, and enhance security.
- Benefits:
 Fixes vulnerabilities that could be exploited by attackers.
 Improves software performance and stability.
 Introduces new features and capabilities.

Software Licensing, Copyright and Patents

Software Licensing
Software licenses are legal agreements that govern the use and distribution of software. They
provide users with rights to one or more copies of software and set limits on how the software
can be used. Licensing terms typically include fair use policies, warranties, liability
limitations, and protection against intellectual property infringements.

Types of Licenses

1. Proprietary Licenses
- Description: Software is owned by an individual or company, and users must
obtain permission to use it.
- Characteristics:
 Users cannot modify or distribute the software.
 Usually requires purchasing a license.
 Examples include Microsoft Windows and Adobe Photoshop.
2. Open-Source Licenses
- Description: Software is released with a license that allows users to view,
modify, and distribute the source code.
- Characteristics:
 Promotes collaboration and transparency.
 Users can customize software to fit their needs.
 Examples include the GNU General Public License (GPL) and Apache
License.
3. Shareware and Freeware
- Shareware:
 Description: Software that is available for free on a trial basis but
requires payment for continued use.
 Characteristics:
 Users can evaluate the software before purchasing.
 Examples include WinZip and Adobe Acrobat Reader.
- Freeware:
 Description: Software that is available for free and can be used
indefinitely.
 Characteristics:
 May include advertisements or limited functionality.
 Examples include Skype and Audacity.

Copyright Issues

- Importance of Intellectual Property Rights:


 Protects the rights of creators and developers by ensuring they can control the
use and distribution of their software.
 Encourages innovation and investment in software development.
 Legal implications for unauthorized use, distribution, or modification of
software.

Software Patents
While copyright laws protect against unauthorized copying of software, patents prevent
others from developing software with similar functional aspects. Patents give software
developers exclusive rights to the functional innovations described in their patents, offering
additional legal protection beyond copyright.

You might also like