Unit 1 Software Evolution: Structure Page No
Unit 1 Software Evolution: Structure Page No
Unit 1 Software Evolution: Structure Page No
1.0 Introduction 5
1.1 Objectives 6
1.2 What is Software ? 6
1.3 Software Evolution 7
1.3.1 Evolution of Software Architecture 8
1.3.1.1 Mainframe Architecture 8
1.3.1.2 File Sharing Architecture 8
1.3.1.3 Client / Server Architecture 9
1.3.1.4 Cloud Computing 12
1.3.2 Evolution of Software Design Paradigm 13
1.3.2.1 Non-structured Design Paradigm 13
1.3.2.2 Structured and Modular Design Paradigm 14
1.3.2.3 Object Oriented Design Paradigm 15
1.3.2.4 Component Based Paradigm 16
1.3.2.5 Service Oriented Paradigm 17
1.3.3 Evolution of Programming Languages 17
1.3.3.1 Procedural Language 18
1.3.3.2 Object Oriented Language 19
1.3.4 Evolution of Software Licensing 22
1.3.4.1 Introduction to Software Licensing 22
1.3.4.2 Types of Software Licensing 22
1.4 Types of Software 24
1.4.1 System Software 25
1.4.2 Programming Software 27
1.4.3 Application Software 28
1.5 Utility Software 30
1.6 Perverse Software 35
1.6.1 Ways to Counter Perverse Software 37
1.7 Open Source Software 38
1.8 Summary 40
1.9 Answers to Check Your Progress 41
1.10 Further Readings 45
1.0 INTRODUCTION
You all must have come across computers being used at many different places –
post offices, hospitals, book stores, grocery stores, universities, banks, publishing 5
Basics of Computer houses, etc. You have also studied about computers and their applications in the
Software
previous block. But, have you ever wondered how the similar looking machines
can behave so differently? What is it that makes them extremely useful machines
for varied and unlimited purposes, unlike any other machine available to us? For
example we can use a crane only to move loads – its usage is quite limited, but a
computer can be used to create a document, do calculations, give presentations,
book movie tickets, play movies, music or games and accomplish much more.
What makes computer the versatile machines that they are?
It is the software that enables a computer to perform all the useful and desired
functions. Different types of software help a computer to be used for multiple and
varied purposes, in totally different areas of work. We will study about the
software aspect of computers in detail in this unit.
1.2 OBJECTIVES
A computer system consists of two parts – hardware and software. The first part,
computer hardware, refers to all the visible components of the computer system:
keyboard, monitor, hard disc, printer, scanner, processing unit, memory, electrical
connections, etc. It does all of the physical work a computer is known for. The
second part is a set of simple and step-by-step sequence of instructions that tell
the hardware what to do and how to do it. This organized set of instructions
written in a defined order and to accomplish a specific task is called computer
software or computer program. Hence, a computer software provides
intelligence to the hardware, which otherwise is just a collection of circuits and
pieces of plastic and metal.
A computer programmer writes the software that gives a computer the ability to
solve any business or scientific problem.
A Computer System
You will study about types of software and its evolution in the following sections.
As you know that in a computer system both hardware and software complement
each other – one is of hardly any use without the other. Hence, since the very
beginning of computer history, software evolution has been closely tied to the
advances made in hardware. As hardware became faster, cheaper and with better
capacity of storage, software became more complex and sophisticated.
Over the decades computers have been used in new areas and to solve new
problems. With changing needs and improved hardware, the software has evolved
in its various aspects. The software architecture, its design paradigms,
programming languages, its usage, costing and licensing have all changed and
evolved over the years.
The software architecture has always moved in unison with the hardware
advancement.
Till a few decades back, all computing was controlled through the central
mainframes server. Multiple users could connect to the central host through
unintelligent terminals which captured the keystrokes, sent the information to the
host and displayed the text output. All the processing was done by the
applications residing on the main central server. Only large transaction-oriented
applications were developed during that time. Business tasks such as accounts
receivable, accounts payable, general ledger, credit account management and
payroll that were repetitive and could be run as batch jobs were automated.
In these centralized computing models, the host provided both the data storage
and processing power for the client systems. There was no support for graphical
user interface or access to multiple databases from geographically dispersed sites.
User User
Terminal 1 Central Host Terminal 2
(Application and
Database on Mainframe
Machine)
User
Terminal 3
Workstation 1
(Application Logic)
Shared
Resource 1
(Database)
Workstation 2 Centralized
(Application Logic) File Server
Shared
Resource 2
(Printer)
Workstation 3
(Application Logic)
As the capacity and power of personal computers improved, the need to share the
processing demands between the host server and the client workstation increased.
This need for greater computing control and more computing value led to the
evolution of client/server technology.
Clients and servers may reside in the same machine or they typically reside in
separate pieces of hardware and communicate over a computer network. A server
machine is a host that runs one or more server programs which share their
resource with clients. A client does not share any of its resources, but requests a
server function or service. The server program fulfills the client request. Clients
initiate a communication session with the server.
The client/ server system may be two-tiered, three-tiered or n-tiered.
The application or business logic in client server applications may reside on the
server (fat server – thin client) or on the client (fat client – thin server). Since,
9
Basics of Computer clients and server interact over the network, increases in the number of users often
Software
lead to network congestion. Also, maintenance of the application becomes
difficult with more users. This lack of scalability (Ability of a system to support
increased demands of work, usage or service levels almost instantly, without any
change and with no significant drop in cost effectiveness or quality of service)
and flexibility gave rise to 3-tiered and n-tiered architectures.
Request
Server Client
(Database) (User
Interface)
Response
Request
Client
Database Application (User
Server Server Interface)
Response
10
N-tiered architecture: The 3-tier architecture can be extended to N-tiers when Software Evolution
the middle tier provides connections to various types of services, integrating and
coupling them to the client, and to each other. Partitioning the application logic
among various hosts can also create an N-tiered system. Encapsulation of
distributed functionality in such a manner provides significant advantages such as
reusability, and thus reliability (Ability of a computer program to perform its
intended functions and operations for the specified period of time, in the specified
system‘s environment, without experiencing any failure).
Request
Client
Database Application Application
(Browser)
Server Server 2 Server 1
Response
The advantage of web based applications is that they do not have to be tailored to
run on specific platforms. But since the web applications cannot perform client-
side processing, they limit the user experience by turning the client computers
into ―dumb‖ terminals. Web mails, online transactions are examples of web
applications.
HTTP
Request
Client
Application Web
(Browser)
Server Server
HTTP
Response
11
Basics of Computer 1.3.1.4 Cloud Computing
Software
Here is some background for the evolution of these services. As the new software
vendors tried to establish themselves in the market, they created solution
differentiators which provide unique value to the consumers. An example is
Salesforce.com, which from the inception offered a hosted Customer Relationship
Management (CRM) solution, while its established competitors (Siebel, SAP,
PeopleSoft etc) had their traditional (also called On Premise, meaning at the
customer site in its dedicated environment) CRM solution. Another reason is that
software vendors started targeting a niche customer segment called Small &
Medium Business (SMB). SMB customers are relatively new in business, so need
to establish the core IT systems in place and also have lesser financial strength, as
a result are more open towards cloud-based solution.
Lower upfront cost to get started, lower time-to-market (as it takes less time to
get a customer going on a cloud solution), allows the company to focus on the
core business and not worry about hiring and constantly training its staff on
the new technology etc.
On the flip side for a Cloud-based solution, certain segment of customers such
as large Banks and Financial institutions, Insurance companies may have
security constraints in letting their data reside outside its premises (in their
own data centers).
As the software evolved in its complexity, architecture and use, and as the
programming languages got better, styles of software programming also changed
and improved.
One of the longest standing goals of software design is reusability which leads to
increased reliability, accelerated development and easy maintenance. Over the
years, software languages and software design paradigms which have evolved, all
encourage compartmentalization of functionality to achieve this goal. Similar
functionality is grouped together into small, independent and reusable units.
These units can be used in any application for the purpose for which they were
originally intended.
The first step towards compartmentalization was moving from line by line non
structured program design to procedure-oriented program design.
INTEGER i
i=12
1 GOTO 10
2 CONTINUE
i=i-1
IF (i = 0) GOTO 99
10 PRINT*, "Line 10"
GOTO 2
99 CONTINUE
The above fragment of code simulates a loop using GOTO statement for transfer
of control. Note that the lines are labeled/ numbered so that they can be used with
GOTO. The program executes the statements sequentially. The code simulates a
loop to decrease the value of variable i by 1 till it reaches zero.
The initial value of i is 12. Until the value of i reaches zero, it continues to print
the text ―Line 10‖.
Procedures and functions which were for similar purpose were grouped together
to get a module. A big software application consisted of multiple modules, each
performing a particular task.
14
Structural design allowed modules to be reused in the form of code libraries. Software Evolution
Step 1
Path 1 Path 2
Test
Condition
Step 2 Step 3
Step 4
Procedure
As shown in Figure 1.10, same procedure is invoked from step 3 and step 4. There
is also a selection of path to be followed. The two paths would be either steps
1,2,4 or steps 1,3.
The sample pseudo code for the above flow could be:
The next leap forward towards compartmentalization and reusability was arrival
of object oriented-design that introduced the concept of an object as an atomic
unit of functionality.
15
Basics of Computer Object oriented design is built on the premise that programming problems can be
Software
modeled in terms of the objects in the problem domain. In this design, any object
of interest in the real world is an object in the program code. This helps to
effectively model the real world and interactions of items within it. As the objects
in the real world interact with each other, similarly, the objects in the program
interact through their interfaces or messages which are very well defined and
contained in the objects. An object exposes the interface that can be called on by
other objects that need the object‘s functionality. Because an object is a self-
contained entity and because its interface is well-defined it is highly reusable
across many applications.
For example, school and student are objects in real world. They would be
considered as objects in object oriented design also and they would interact with
each other through messages.
Interacts through
Properties messages Properties
Methods Methods
Returns Address
In the Figure 1.11 each object has its own properties and methods which
constitute the interface of the object.
As the applications grew complex, code became more modular and reusable. The
applications were being broken up into pieces that were distributed across many
machines. Breaking applications into multiple parts and distributing them across
multiple platforms presented a new set of reusability problems.
Components exist at different sizes varying from single objects inside a library to
whole applications. In most cases, however, components are larger entities and
contain several objects.
As the software architecture moved from mainframes to Internet based and design
paradigms evolved from non-structured to service oriented, Programming
languages evolved to support the architecture and the design paradigms. As
design became more and more compartmentalized so that the application could be
distributed onto multiple machines, and individual components could be reused,
more and more programming languages were designed to make support these
ideas. For example COBOL is one language that evolved from procedural to
object oriented.
17
Basics of Computer 1.3.3.1 Procedural Language
Software
For trucks, the information will be similar, but slightly different. We need:
Color
Engine Size
Transmission Type
Cab Size
Towing Capacity
Make
Var Color
Var EngineSize
Var Transmission Type
Var Make
MainProg()
Begin
If requested for car
Call CarProcedure()
If requested for Truck
Call TruckProcedure()
End
CarProcedure()
18 Begin
Software Evolution
TruckProcedure()
Begin
/*Declare the Local variables*/
Var CabSize
Var TowingCapacity
If we need to add form to process information for bus, then we need to change the
MainProg() and add code for Bus Form. But if there is a change in the processing
of all the vehicles, then we need to make changes to all the forms. If we need add
any make specific information for cars, then we need to create multiple forms,
one for each make. Also, we need to be careful about any changes to the global
variables as all the forms are accessing them.
Before we consider above example in object oriented, let us understand few terms
and concepts associated with object oriented programming. There are three main
concepts that any language needs to support to be an object oriented language.
19
Basics of Computer Polymorphism: Polymorphism is the characteristic of being able to assign a
Software
different meaning specifically, to allow an entity such as a variable, a function, or
an object to have more than one form. It is the ability to process objects
differently depending on their data types and to redefine methods for derived
classes.
Following are the few terms that will help you understand object oriented
programming:
A class is a set of functions that work together to accomplish a task. It can
contain or manipulate data, but it usually does so according to a pattern
rather than a specific implementation. An instance of a class is considered an
object.
An object receives all of the characteristics of a class, including all of its
default data and any actions that can be performed by its functions. The
object is for use with specific data or to accomplish particular tasks. To
make a distinction between classes and objects, it might help to think of a
class as the ability to do something and the object as the execution of that
ability in a distinct setting.
A method simply refers to a function that is encased in a class.
A parameter is a variable that is passed into a function that instructs it how
to act or gives it information to process. Parameters are also sometimes
called arguments.
A property is a default set of data stored in a class. A class can have multiple
properties and the properties can be changed dynamically through the
methods of the class.
Smalltalk, C++, Java, C# are some of the examples of object oriented languages.
Now let us see how we create classes and use them for the automobile parts
inventory management system example.
Class Vehicle
{/*Data*/
Var Color
Var EngineSize
Var TransmissionType
Var Make
/*Methods for each data*/
Color()
{
Store and update color;
}
EngineSize()
{
20 Store and update EngineSize;
} Software Evolution
TransmissionType()
{
Store and update TransmissionType;
}
Make()
{
Store and update Make;
}
}
Class Car Inherits Vehicle
{/*Data*/
Var NumberOfDoors
/*Methods*/
NumberOfDoors()
{
Store and update NumberOfDoors;
}
}
/*Methods*/
CabSize ()
{
Store and update CabSize;
}
TowingCapacity ()
{
Store and update TowingCapacity;
}
}
Now in this case, if we need to add form to process information for bus, then we
just add one more class Bus() which is again inherited form the Vehicle class.
And if we need add any make specific information for cars, then again we can add
make specific classes which can be inherited from the Class Car() We need not
worry about mistakenly modifying any global variables. If there is change in
processing of all the vehicles, then instead of making changes at all the places, we
just modify the Vehicle() class.
21
Basics of Computer 1.3.4 Evolution of Software Licensing
Software
Software licensing has kept pace with the evolution of software solutions offered
by the vendor or the solution provider community.
Until early 1970‘s, sharing of software was the accepted norm. Hardware came
bundled with software products which could be freely redistributed and the access
to source code allowed its improvement and modification.
In late 1960‘s, the situation changed after the software cost increased and
manufacturers started to unbundle the software and hardware. A growing amount
of software was now developed for sale. In late 1970‘s and early 1980‘s
companies began imposing restrictions on programmers through copyright. They
achieved financial gains by selling rights of use of software rather than giving the
source code. This led to introduction of software licensing which governed the
usage and redistribution of software. During this time most of the companies
developed proprietary software that was actually the property of the company,
came without the source code and the users basically bought the right to use it in
the way specified under the license agreement.
In early 1980‘s the seeds for free and open software were sown as a deviation
from the proprietary software. The open source software comes with source code
and a license that allows modification and free redistribution.
We will study in the following section, about different types of licenses that
evolved with software over the period of time.
The licensing type generally depends on whether the software is open source
software, is meant for individual use or enterprise wide commercial use:
Individual License: allows you to install the software only on a single stand
alone machine. It may be a perpetual license or Subscription based. Perpetual
license allows you to install and use the software indefinitely. Subscription based
license allows you to use the license for the specified time, after which you may
renew the subscription or remove the software.
Open Source License: It grants you the right to freely modify and redistribute the
software.
Commercial License: These are mostly for the large enterprises that use software
for commercial purposes.. Following are the main licensing models:
22
Traditional model : This includes single user-single license, multi users- Software Evolution
shared license, temporary or fixed-period licenses. This has mostly been used
for large proprietary mainframe applications.
Transaction-based model : Here, the pricing is based on providing a
committed business service, for ex, processing payroll for a global company
as part of HR offering and this can be priced per employee. Larger the
employee base at a given location, lower the price / employee can be. This
model came into existence with the evolution of software architecture from
mainframes to internet based. As mentioned before, when a company
provided a particular business service, its client could access the system from
anywhere over the Internet and they need not bother about maintaining the
database or the software system. The service provider then charges them for
each transaction/ record processed through their system.
Rental model : This has come into picture as Software as a Service (SaaS)
and Platform as a Service (PaaS) models have evolved over a period of time.
Here, the buyer need not need make upfront investment in hardware and
software, rather these come as bundled service to them. Few examples where
these are prevalent are – Finance & Accounting (Core Finance), Human
Resources (Core HR), Analytics (Business Intelligence/Reporting),
Procurement etc. There are also scenarios where the software vendor provides
subscription of a given solution (ex. Windows Azure, Salesforce.com, Siebel
On Demand, Amazon Web Services etc) on a periodic (ex. monthly, annual)
basis.
Technology Partnerships : Such agreements provide the consumer un-
limited access to vendor‘s technology. Such contracts are typically multi-year
in nature where the consumer pays a fixed annual fee, which can be adjusted
in the subsequent years based on the actual usage. For example, a large
corporate customer deciding to use Oracle suite of ERP (Finance, HR),
database, CRM, Business Intelligence/ Reporting solutions can get into a
long-term multi-year partnership.
There is a wide variety of software available today. And there is no clear cut
distinction in certain software systems. Still, most computer software can be
broadly classified as:
System software
Programming software
Application software
At times the categorization is vague and some software may fall into more than
one categories.
End User
Application Software
Utility Software
Programming Software
System Software
Hardware
System software helps run the computer hardware and system. It is designed to
control the operations of a computer and coordinate all external devices like
communication devices, printers, keyboards, display units, etc. It manages all the
computer resources like memory and processor time in optimal and stable
manner.
System software provides a useful link between user and computer. It also assists
the computer in the efficient control, support, development and execution of
application software. System software is essential for computer hardware to be
functional and useful.
a) Operating Systems
Operating System is the software that manages all the computers‘ resources to
optimize its performance provides common services for efficient execution of
various application software and acts as an interpreter between the hardware,
application programs and the user.
An operating system is essential for any computer to be useful to us. When a user
or a program wants the hardware to do something, the request is always
communicated to and processed by the operating system.
Operating systems performs basic tasks, such as recognizing input from the
keyboard, sending output to the display screen, keeping track of files and
directories on the disk and controlling peripheral devices.
For large systems, the operating system has even greater responsibilities and
powers.
You will study in detail about the operating system in the following units in this
block.
25
Basics of Computer b) Server Programs
Software
Server programs are dedicated computer programs that run as services and serve
the needs or requests of other programs. These services may run on a dedicated
hardware or on the same computer as the requesting program. Also, one on more
services may run on the same computer hardware. Some common examples of
different types of server programs are:
Web server – for hosting websites.
Print server – manage multiple print requests for multiple printers.
File server – manages the storage and retrieval of shared computer files.
Database server – provide database services to other computer programs.
Mail Server – manages and transfers electronic mail messages.
c) Device Drivers
Device drivers are shared computer programs that provide an interface between
the hardware devices and operating system or other higher level programs.
You need a specific software program to control each hardware device attached to
the computer. It is very tedious to make any piece of hardware work. For example
to write to a hard disk, you need to know the specific address available, wait till
hard disk is ready to receive data and then feed it with data once it is ready. So
instead of writing the same code for a device in multiple applications you share
the code between applications. To ensure that the shared code is not
compromised, you protect it from users and programs. Such a piece of code is
called the device driver.
Device drivers are hardware dependent and operating system specific. They allow
you to add and remove devices conveniently from your computer system without
changing any of the applications using that device.
Common hardware components that require drivers are:
Keyboards
Mouse
Printers
graphics cards
sound cards
card readers
CD/ DVD drives
Network cards
Image Scanners
26
d) Communications Software Software Evolution
a) Compilers
When a compiler compiles a program, the source program does not get executed
during the process, it only gets converted to the form that can be executed by the
computer.
Compiler
b) Debuggers
A linker or link editor is a program that takes one or more Object file codes
generated by a compiler and combine them into a single executable program.
Object Code
Linker Execution
Results
External
Libraries
A text editor is a type of program used for editing plain text files.
Many text editors for software developers include source code syntax
highlighting and automatic completion to make programs easier to read and write.
Application software may be for commercial or scientific use. There is wide range
of application software available for varied purposes. Some major categories of
these applications include:
28
a) Word Processing Software can be used to create, edit, format, save, view or Software Evolution
print any text based document like letters, memos, reports, etc. MS Word is an
example of word processing software
29
Basics of Computer Check Your Progress 2
Software
Utility programs help manage, maintain and control computer resources. These
programs are available to help you with the day-to-day chores associated with
personal computing and to keep your system running at peak performance.
Computer viruses are software programs that are deliberately designed to interfere
with computer operation; record, corrupt, or delete data; or spread themselves to
other computers and throughout the Internet. Virus Scanning Software are utility
programs designed to protect your computer from computer viruses, worms and
trojan horses.
To help prevent the most current viruses, you must update your antivirus software
regularly. You can set up most types of antivirus software to update
automatically.
Most anti-virus programs use one of the following techniques to identify viruses:
1. Signature based detection: This is the most common method. It compares
the contents of the infected file to a known pattern of data. Because viruses
can embed themselves in existing files, the entire file is searched.
2. Heuristic-based detection: This method is primarily used to identify
unknown viruses by looking for malicious code or variations of such code.
3. File emulation: This is another heuristic approach in which the infected
program is run in a virtual environment and the actions it performs are
recorded. The actions are analyzed to check for any malicious actions and
carry out disinfection actions accordingly.
No matter how useful antivirus software can be, these can sometimes have some
drawbacks.
Antivirus software can impair a computer's performance. Active anti-virus
programs can cause conflicts with other programs.
A "false positive" is when antivirus software identifies a non-malicious file as
a virus. When this happens, it can cause serious problems. For example, if an
antivirus program is configured to immediately delete infected files, a false
positive in a essential file can render the operating system or some
applications unusable.
Most popular anti-virus programs are not very effective against new viruses.
The reason for this is that the virus designers test their new viruses on the
major anti-virus applications to make sure that they are not detected before
releasing them into the market.
31
Basics of Computer Some apparent antivirus programs are actually malware being sold as
Software
legitimate software, such as Win Fixer and MS Antivirus.
Some commercial antivirus software agreements include a clause that the
subscription will be automatically renewed. For example, McAfee requires
users to unsubscribe at least 60 days before the expiration of the present
subscription. Norton Antivirus also renews subscriptions automatically by
default.
Finally, antivirus software generally runs at the highly trusted kernel level of
the operating system, creating a potential avenue of attack
Despite the drawbacks, anti-virus software have become a necessity these days. A
number of popular anti-virus programs include those by Kaspersky, Symantec,
McAfee, and Norton. The cost of the program increases with the increase in the
number of virus detection and removal features and ease they offer.
Backup utilities
Backup refers to making copies of data so that these additional copies may be
used to restore the original after a data loss event. All types of data could be
backed up like pictures, word documents, files, executables or an entire database.
The main purpose is to recover data in the event of data loss or data getting
corrupt. Other purpose could be to recover historical data.
A number of Backup software are available that assist you in taking backup of
your important data on the computer. Selecting between various back-up software
is not only a based on the cost but also on the software that meeting the
requirements.
Backup could be taken on variety of media including hard drive, CDs, DVDs,
floppy disks etc. It could also be taken on FTP locations, tape or online servers. A
number of free and proprietary back-up software are available including those
from Microsoft, Symantec, Apple, IBM, and Norton.
It is important to take backup of important data regularly and also verify that it
can be restored successfully.
32
Diagnostic programs Software Evolution
In practical experience, these tools do not usually identify the exact cause of the
system problem, but they often provide some information about what is in the
system and how it is working. Some of these are free or are included with
common operating systems at no additional charge, while others are commercial
products that range from affordable to rather pricey.
33
Basics of Computer the disk. Disk defragmenters gather those free spots and put them together to
Software
enable you to continue to save your data in the most efficient manner.
Norton Diagnostics : This utility is meant to go beyond the System
Information program and actually perform tests on the hardware to identify
problems. It includes tests of the processor and motherboard and system
memory, and will identify some types of resource conflicts. In reality, it is still
quite limited in terms of the numbers of problems it will find.
QAPlus : QAPlus from DiagSoft is a more advanced diagnostic suite that
comes in several flavours, depending on what you need to do and how you
want to do it. This is a more expensive package but can give you much more
detailed information about your system and help identify problem situations as
well.
File view programs
File view utilities let you see the contents of a wide variety of documents even
when you don't have the application on your system
All the fundamental types of file viewers are filters which translate binary files
into plain text (one example antiword). Another common type of file viewer is a
picture viewer that can display picture files of various formats. Common features
here are thumbnail preview and creation, and image zooming.
The primary reason behind limited functionality is marketing and control. For
example, a popular software program, Adobe Acrobat, can be used to create
content for most computer platforms, under various operating systems. To ensure
that people can access the documents created with Adobe Acrobat, the software
publisher created a viewer program, the Acrobat Reader, and made it available for
free. This viewer application allows the content created by the proprietary
authoring software to be readable on all supported operating-system platforms,
free of charge, thus making it a more attractive solution.
There are many products which can qualify as a file viewer: Microsoft Word
viewer or Microsoft PowerPoint viewer, and the Open Office equivalents are
examples. In a sense, a web browser is a type of file viewer, which translates, or
renders, the HTML markups into a human-friendly presentation. Although HTML
is plain text, viewing an HTML file in a browser and in a text editor produces
significantly different results.
Google Docs is another very good example of online file viewer. Google Docs
Viewer supports 12 new file types in, including all remaining Microsoft Office
file types, Apple's Pages format, and Adobe's Photoshop and Illustrator files.
34
Computer performance enhancement utilities Software Evolution
Disk defragmenter utility reorganizes non contiguous files into contiguous files
and optimizes their placement on the hard drive for increased reliability and
performance.
The Windows registry can quickly become crowded and hence slower to search
when you remove unused programs that do not uninstall properly. There are
utilities like Registry Mechanic or Registry Clean Expert that can help clean
Windows registry to improve performance.
Most malware requires the user to initiate its operation. For example, sending
infectious attachments (it acts when users downloads them and runs the
attachment) in e-mails, browsing a malicious website that installs software after
the user clicks ok on a pop-up, and from vulnerabilities in the operating system.
Early infectious programs, such as Internet Worm and MS DOS viruses, were
written as experiments and were largely harmless or at most annoying. With the
spread of broadband Internet access, malicious software has been designed for a
profit, for forced advertising. Here the malware keeps track of user‘s web
browsing, and pushes related advertisements.
35
Basics of Computer Typical types of malicious software are - Computer virus, Computer Worm,
Software
Trojan horse, Rootkits, Spyware etc.
Computer Virus
Some viruses do little but replicate while others can cause severe harm or
adversely effect program and performance of the system. They can destroy files,
software, program applications, and cause the loss of data.
There are various types of computer virus that can be classified by their origins,
techniques of attack, modes of spreading, forms of infections, hiding locations
and the kind of damage caused. Examples of computer viruses are: Randex,
Melissa.A and Trj.Reboot
Computer Worm
Computer Worm is a program that is very similar to a virus. It has ability to self
replicate. It actively spreads itself over the network, copies itself from one disk
drive to another or copies using email. It does not need user action to start it
unlike virus. Examples of worms include: PSWBugbear.B, Lovgate.F, Trile.C,
Sobig.D, Mapson.
Trojan Horse
Rootkits
This is a technique using which the malware remains concealed in the system, and
continues to do the damage in a concealed manner. Rootkits can prevent a
malicious process from being visible (ex Task Bar in Windows operating system)
36
in the list of running applications. Rootkits normally attempt to allow someone to Software Evolution
gain control of a computer system. These programs are usually installed by
trojans and are generally disguised as operating system files.
Trap doors
Logic Bombs are not programs in their own right but rather camouflaged
segments of other programs. They are not considered viruses because they do not
replicate. But their objective is to destroy data on the computer once certain
conditions have been met. Logic bombs go undetected until launched, and the
results can be destructive. For example, some malicious programs are sot off
during days such as April Fools Day or Friday the 13th.
Spyware
While so far we have discussed the malware‘s intent to damage the computer
system, spyware is designed for commercial gain. These programs gather
information about the user in a concealed manner, show pop-up advertisements,
redirects the search engine results to paid advertisements etc.
Keystroke loggers
This is a program, once installed on the system, which intercepts the keys when
entering the password or the Credit Card number while shopping online. This can
be used for Credit Card fraud.
Data-stealing
This is a web threat that results in stealing of personal and proprietary information
to be used for commercial gains either directly or via underground distribution.
Some popular examples of recent data-stealing cases are – steal and sell large
number of credit card numbers from businesses such as TJX, OfficeMax, Sports
Authority etc.
37
Basics of Computer Block unwanted email viruses by installing a spam filter and spam blocker.
Software
When browsing the internet, always watch what one clicks and installs. Do
not simply click OK to dismiss pop-up windows.
Install anti-virus software; scan and update regularly. It can, in most cases,
remove and prevent viruses, worms, trojans, and (depending on the software)
some spyware.
Install anti-spyware/anti-adware; scan and update regularly. It will remove
and (depending on the software) prevent future adware and spyware.
Open Source Software (OSS) is software that comes with source code, and
importantly also provides rights (typically reserved for copyright holders) to
study, change and improve the software. This development happens in a larger
collaborative environment, without any direct objective of the software‘s
commercial success.
Open Source Initiative (OSI) is the patron of the Open Source Definiton (OSD)
and is the community-recognized body to evaluate and approve the software as
OSD compliant. Some key criterion for OSD compliance are mentioned below:
Free Redistribution : The license should allow any party to sell or give away
the software as a component of a larger software distribution containing
programs from multiple sources. The license shall not require a royalty or
other fee for such sale.
Source Code : The program must include source code, and must allow
distribution in source code as well as in executable form. Where some form of
a product is not distributed with source code, there must be a well-publicized
means of obtaining the source code for no more than a reasonable
reproduction cost preferably, downloading via the Internet without charge.
Derived Works : The license must allow changes to the existing source code
and must allow them to be distributed under the same terms as the license of
the original software.
No Discrimination against specific applications : The license must not
restrict anyone from making use of the program in a specific scenario. For
38
example, it may not restrict the program from being used in a business, or Software Evolution
from being used in drug research.
License must Not Be Specific to a Product : The rights attached to the
program must not depend on the program being part of a particular software
distribution.
License must Not Restrict Other Software : The license must not place
restrictions on other software that is distributed along with the licensed
software. For example, the license must not insist that all other programs
distributed on the same medium must be open-source software.
Programming language
PHP - Scripting language suited for the web
Operating System
GNU Project — ―a sufficient body of free software‖
Linux — operating system kernel based on Unix
Server Software
Apache — HTTP web server
Tomcat web server — web container
MySQL – database, popular for applications built on LAMP stack (Linux,
Apache, MySQL, PHP/PERL/Python)
MediaWiki — wiki server software, the software that runs Wikipedia
Client software
Mozilla Firefox — web browser
Mozilla Thunderbird — e-mail client
Some typical challenges that used to be associated with the Open Source Software
were lack of product support that typically comes with proprietary software,
future upgrades, end-user training etc. Over a period of time, industry has evolved
to overcome these challenges. For example, Red Hat Linux sells Linux operating
system and provides product support, training as well. Further, it is important to
note that Open Source Software is not always the best option for all the business
needs. However, it does provide a good alternative to the proprietary software.
One needs to do the required due-diligence to decide the right product for a
specific situation.
39
Basics of Computer Check Your Progress 3
Software
1.8 SUMMARY
Software is the brain of computer systems. Any piece of hardware is useful till it
has its associated software.
In this unit, we studied how software evolved over the years. Software grew in its
size, usage, complexity, development techniques, design and architecture. In the
early days software was developed for large centralized systems. It was generally
bundled with the hardware, since the cost of software was negligible in
comparison to the hardware. The source code was easily available for
modification, improvement and redistribution. As the hardware developed,
machines became smaller yet much more powerful, computer systems usage and
software complexity increased considerably. Higher complexity resulted in higher
software costs. Software now came at a price and with restrictive licenses.
40
One could no longer use, modify or redistribute it freely. Various licensing Software Evolution
models evolved based on whether the software would be used by an individual or
limited users or enterprise wide, whether it is for commercial or non commercial
purposes, whether it is free software or proprietary software, or how often it is
used. Companies have been selling these licenses to increase their revenues. The
changing pattern of software distribution and sharing led to a movement for free
and open source software.
c) Encapsulation: Ability to hide data and methods from outside the world
and only expose data and methods that are required. It helps in hiding all
the internal details from outside world. It also provides a way to protect
data from accidental corruption
Linker is a program that uses multiple object files created by the compiler
and predefined library object files, links them together and creates a single
executable file.
c) Compiler is a program that takes the whole source code in high level
language and converts it into the source code in low level language. Any
errors are reported at compile time for the complete code. Once the
translation is complete, only the executable version of the code runs in the
memory.
An interpreter takes the source code in high level language one line at a
time during run time, translates the instruction into low language code and
executes it before proceeding to the next instruction. Hence the interpreted
program remains in the source language and is converted into low level
language only at run time. So the translator program also needs to be in
the memory at run time.
Since the compiler translated the whole program before it is run while
interpreter translates one line at a time while the program is being run,
compiled programs run faster than the interpreted ones.
43
Basics of Computer 3. The device driver for the printer may not have been installed. You can
Software
search for the driver for the particular printer on the internet and install it on
your machine.
Open source refers to a program in which the source code is available to the
general public for use and/or modification from its original design free of
charge. Open source sprouted in the technological community as a response
to proprietary software owned by corporations. Advantages of Open source
are: 1) Low cost and no license fees; 2) Open standards that facilitate
integration with other systems; and 3) it is easily customizable. The
disadvantages are: 1) Lack of professional support; 2) Evolving developer
communities; 3) Lack of release co-ordination; and 4) Erratic updates.
3. a Install anti virus and anti spyware. Scan and update regularly.
b. Keep the windows system updated with patches and updates.
c. Browse and click only known and secure web sites. Avoid suspicious
ones.
d. Open email attachments from verified source only.
44
Software Evolution
1.10 FURTHER READINGS
http://www.opensource.org/.
http://en.wikipedia.org/wiki/Malicious_software.
45