Thursday, 13 June 2013

Computer System

The Terms "hardware" and "software" are used frequently in connection with computer.Hard wares refer to the physical devices of a computer system.Thus,input,storage,processing,control and output devices are hardware.In fact,what we have learnt so far in earlier chapters is actually the hardware of computer systems.The term "software" will be introduced and will be discussed at length in the  next few articles.

What Is Software?

A computer can not do anything on its own,it must be instructed to do a job desired by us.Hence,it is necessary to specify a sequence of instructions written in a language understood by a computer is called Computer Program.A program controls a computer's processing activity and the computer performs precisely what the program want it to do.When a computer is using a program to perform a task,we say,it is running or executing the program.
The term software refers to a set of computer programs,procedures and associated documents (flowcharts,manuals etc) describing the programs and how they are to be used.
A Software Package is a group of programs that solve a specific problem or perform a specific type of a job.For example,a word-processing package contain programs for text editing,text formatting,drawing graphics and spelling checking etc.Hence,a multipurpose computer system like a personal computer in your home has several software packages on each for every type of job it can perform.
Relationship Between Hardware and Software:
For A Computer to produce useful output its hardware and software must work together.Nothing useful can be done with the hardware on its own and software cannot be utilized without supporting hardware.

To take an an analogy,a cassette player and its cassettes purchased from the market as hardware.Hence, the songs recorded on the cassettes are its software.To listen to a song,that song has to be recorded on one of the cassettes first,which is then mounted on the cassette player and played.Similarly,to get a job done by a computer,the corresponding software has to be loaded in the hardware first and then executed.
Following important points regarding the relationship between the hardware and software are brought out by this analogy:

1-Both hardware and software are necessary for a computer to do useful jobs.Both are complementary to each other.
2-Same hardware can be loaded with different software to make a computer perform different types of jobs just as different songs can by played using the same cassette player.
3-Except for upgrades (like increasing main memory and hard disk capacities,or adding speakers and moderns etc) hardware is normally a one-time expense whereas software is a continuing expense.Like we buy new cassettes for newly released songs or for songs whose cassettes,we do not have,we buy,new software to be run on the same hardware as and when need arises or funds become available.

Types Of Software:

Although the range of software available today is vast and varied most software can be divided into two major categories:

1-System Software
2-Application Software

System Software:
System Software is a set of one or more program designed to control the operation and extend the processing capability of a computer system.In general,a computer's system software performs one or more of the following functions:
1-Supports the development of other application software.
2-Supports execution of other application software.
3-Monitors effective use of various hardware resources such as CPU,memory,peripherals etc.
4-Communicates with and controls operations of peripheral devices such as printers,disk and tape etc.

Hence,system software makes the operation of a computer system more effective and efficient.It helps the hardware components work together,and provides support for the development and execution of application software (programs).The program included in a system software package are called system program.The programmers who prepare system software are referred to as System Programmers.
Some commonly known types of system software are:

1-Operating System:
Operating system takes care of effective and efficient utilization of all hardware and software components of a computer system.
2-Programming Language Translators:

Programming Language translators perform the instructions prepared by programmers in a programming language into a form that can inter-connected and executed by a computer system.
3-Communication Software:

In a network environment where multiple computers are interconnected together by communications network) communicates software enables transfer of data and programs from one computer system to another.
4-Utility Programs:

Utility Programs (also known as utilities)are set of programs that help users in system maintenance tasks, and in performing tasks of routine nature.Some tasks commonly performed by utility programs include formatting of hard disks or floppy disks,taking backup files stored on hard disk on to a tape or floppy disk,sorting of the records stored in a file based on some key fields.

Application Software:
Application Software is a set of one or more programs designed to solve a specific problem,or do a specific task.For Example,payroll processing software,examination results processing software,railway/airline reservation software,computer games software are all application software.Similarly,a program written by a scientist to solve a research a problem is also application software.The programs included in an application software package are called application programs.The programmers who prepare application software are referred to as Application Software.

These are literally millions of application software available for a wide range of applications.They range from simple applications such as word processing ,inventory management,preparation of tax returns,banking,hospital,administration.insurance,publishing,to complex scientific and engineering applications such as weather forecasting,space shuttle launching,oil and natural gas exploration,design of complex structures like air crafts,ships,bridges,sky-rise buildings etc.With so many applications available,it is not possible to categorize them all and to cover them here.Some commonly known application software are:

1-Word-Processing Software:
word-Processing software enables us to make us of a computer for creating,editing,viewing,formatting,storing,retrieving and printing documents (written material such as letters,reports and books etc).

2-Spreadsheet Software:
Spreadsheet software is numeric-data analysis tool that allows us to create a kind of computerized ledger.A manual ledger is a book having rows and columns that accountants use for keeping a record of financial transactions and for preparing financial statements.

3-Database Software:
A database is a collection of related data stored treated as a unit for information retrieval purposes.A database software is a set of programs that enable us to create a database,maintain it (add,delete and update its records) organize its data in desired fashion (for example,sort it records alphabetically name-wise) and selectively useful information from it.For example,queries such as get the telephone number of the person named Kashyap Rana from the address database,or get the names of all currently enrolled students whose birthdays fall today from the student database can be handled easily.

4-Graphic Software:
Graphic Software enables us to use a computer system for creating,editing,viewing,storing,retrieving and printing of designs,drawings,graphs etc.

5-Personal Assistance Software:
Personal assistance software allows us to use personal computer for storage and retrieval of our personal information as well as planning and management of our schedules,contacts,finances and inventory of important items.

6-Education Software:
Education software allows a computer to be used as teaching and learning tool.A few examples of such software include those used for teaching mathematics,grammar,language or any other subject.

7-Entertainment Software:
Entertainment Software allows a computer to be used as an entertainment tool.Computer video games belong to this category of software.

Logical System Architecture:
It depicts the relationship among hardware system software,application software and users of computer system.At the centre is hardware comprising of the physical devices/components of the computer system.Surrounding the hardware is system software later that constitutes the operating and programming environment of the computer system.It hides the software details of the system from application programmers and coordinates the operations of various hardware devices for optimizing the performance of all devices.Surrounding the system software is application software layer consisting of a wide range of application software.Finally,the users later consists of user interfaces provided by the application software.Different application software usually provide different user interface.Hence,how a user interacts with the computer system depends on which application he/she is using.

Acquiring Software:
Earlier,application and system software were included in the purchase price of a computer.Today,software is usually not included in the purchase price of a computer.For most Computer manufactures,the purchase price of a computer includes only its hardware and a minimum of system software.A customer normally has to pay extra charges for additional system software and application software that he/she may wish to purchase.
Desired software is obtained today in one or more of the ways discussed below.The relative advantages and limitation of each way of obtaining software are also discussed.

Buying Pre-written Software:
Thousands of pre-written software packages are available today.If you can find a software package that meets your requirements,purchasing it is the best option.Following steps are followed in selecting and buying a pre-written software package.

1-Prepare a list of all available software packages that can perform the desired tasks.
2-From the list,select those software packages only that meet the system specifications.For example,compatibility with the user's available/planned hardware,I/O devices,Operating System etc.
3-Now choose the best one (based on factors such as supported features,duration of warranty support,cost etc) from the list of those selected in step 2.
4-Now find out the source from where you can purchase the finally selected software at the cheapest price.Different vendors normally offer different discount rates on the list price and selecting the best vendor in terms of price and after-sale support is very important.
Following are advantages and limitations of buying a pre-written software package:
1-Pre-written software packages usually cost less because many customers share their development and maintenance cost.

2-With a pre-written software package,a user can start the planned activity almost immediately.The user need not wait for the software to be developed and tested.This may be very important,if the development and testing efforts involve several months.
3-Pre-written software packages are usually general purpose,so that they can meet the requirements of as many potential users as possible.Due to this,many times,the operating efficiency and capability to meet the specific needs of user more effectively is not as good of pre-written software package as for in-house developed software package.

Ordering Customized Software:
If none of available pre-written software packages meet the specific requirements of a user (an organization or an individual),it becomes necessary for the user to create a customized software package.If the user has an in-house software development team,the software package can be created in-house.However,if such a team doesn't exist in-house,the user must get it created by another organization by placing an order for it.Following steps are followed for this:

1-The user prepare a list of all requirements carefully.
2-The user team floats a tender for inviting quotations for creation of the requisite software.Sometimes,the user directly contacts few software houses instead of floating a tender for quotations.
3-After receiving the quotations,the user selects a few of them for further interaction based on the cost quoted by them,their reputation in the market,their submitted proposal etc.
4-The user then personally interacts with the representative of each of the selected vendors.Based on this interaction,the user makes a final choice of the vendor to offer the contract for creation of the requisite software.
5-The selected vendor then creates the software package and delivers it to the user.Often,the vendor has to interact closely with the user during the software development process.

Often,the user has to order for both hardware and software.In this case,the user may choose to place the order for both to a single vendor.The vendor develops the software on the chosen hardware and delivers the software along with the hardware to the user.The is normally to as an end to end solution or a Turkey Solution.
Following are the advantages and limitations of ordering a customized software package rather than developing it in house:

1-The user need not maintain its own software development team.Maintaining and managing such a team is expensive and may not be justified for an organization not needing to develop software on a regular basis.
2-It is easier to carry out changes in the software,if an in-house team develops it.For ordered customized software,the user needs to depend always on the vendor for carrying out the changes, and the vendor may charge separately for every request for change.

Developing Customized Software:
If none of the available pre written software packages meets the specific requirements of an organization, and if the organization has an in-house software development team,the organization may choose to develop a customized software package in-house for its requirements.Following steps are followed for in-house development of a software package:

1-The organization constitutes a project team first to carry out the development activity.
2-The team studies the requirements carefully and plans the functional modules for the software.
3-It then analyzes which of functional modules need to be developed and which of the functional modules requirements are met with existing pre written software.
4-For the functional modules that need to be developed,the team next plans their programs and oes the coding,testing,debugging and documentation for the planned programs.
5-The team then tests all the modules in an integrated manner.
6-The software is then implemented used and maintained.
Following are the advantages and limitation of a developing a customized software package in-house rather than getting it developed by an outside party:
1-It is easier to carry out changes in the software,if it is developed in-house.
2-Developing software in-house means a major commitment of time,money and resources because an in-house software development team needs to be maintained and managed.

Downloading Public-domain Software:
Public-domain software is available free or for normal charge from the bulletin boards or user-group libraries on the Internet.Basic objective of creators of such software is to popularize their software to as many users as possible.Users are encouraged to copy such software and try them out.The software can usually be shared freely with other users.Hence,public-domain software is also referred to as shareware/freeware.They are also known as commonly supported software as mostly the authors do not support the product directly and users of the software support and help each other,while some shareware software remain full-features and free perpetually,some other have to be bought to use all features (such partial packages are referred to as Life/Free/Personal Edition) or after some use (referred to as trial period).

Other type of public-domain software becoming popular among users and fellow programmers equally are those that come with their source code as well.Such software is referred to as Open Source Software (OSS).They usually allow a user to download,view,modify and distribute modified source code to others.Such software and their source code are covered usually under a licensing system that promotes open source movement and protects the copyright of original and subsequent authors.General Public License (GPL) of GNU organization and BSD license from Berkeley Software Division of University of California are some of the most popular licensing systems is place and use word over.

One fact to be bome in mind is that all open source software are not necessarily free and vise-verse.
Often a user may find public-domain software suitable for his/her requirements.In this case,he/she can obtain it by downloading it from the Internet.
Following are the advantafes and limitations of downloading and using public-domain software packages:

1-They are usually free and accompanied with their source code.
2-They can be downloaded and used immediately.The user need not wait for the software to be developed and tested before the planned activity can be started.
3-They may not be tested before release,and their support is normally poor as compared to commercial software.Hence,they may fail during operation and the bug not be fixed soon.

Software Development Steps:
All software needs to be developed by someone.Developing software and putting it to use is complex process involving following steps:
1-Analyzing the problem at hand,and planning the programs to solve the problem.
2-Coding the program.
3-Testing,debugging and documenting the programs.
4-Implementing the programs.
5-Evaluating the maintaining the programs.

Firmware:
Firmware refers to a sequence of instructions substituted for hardware.For example,when cost is more important than performance,a computer system architect might decide not to use special electronic circuits to multiply two numbers,but instead write instructions to cause the machine to accomplish the same function by repeated use of circuits designed already to perform addition.This software is stored in a read-only memory (ROM) chip of the computer and is executed whenever the computer has to multiply hardware and stored in read-only memory.

Initially,only system software was supplied in form of software.However,today even application programs are supplied in firmware.Dedicated applications are also programmed in this fashion and made available in firmware.Because of the rapid improvement in memory technology,firmware is frequently a cost-effective alternative to wired electronic circuits,and its use in computer design has been gradually increasing.In fact,the increase is of firmware has today made it possible to produce smart machines of all types.These machines have microprocessor chips with embedded software.

Middle-ware:
In early days of computer network,the two-tier,client-server system architecture was used to implement distributed applications.In this two-tier system architecture,several client computers were connected to and serviced by one or more server computers for meeting the objectives of the applications.This architecture was inflexible and had its own limitations due to following reasons:

1-Management and support devices,such as directories for locating resources,authentication for handling security,exception management for handling failures,and co-scheduling of networked resources for better performance,had to be programmed within the client and server parts of the application software.
2-Client and server had to be properly synchronized for exchange of messages between them (they used synchronous mode of communication rather than asynchronous mode,which is more flexible).
3-Business application logic had to be programmed inside the user interface on the client,or within the application software on the server,on both.
As a result,the client and server systems were closely knit together,making independent development of interoperable client and server software increasingly difficult.Hence,rapid development and deployment,ease of management,and portability of distributed applications were difficult.

The three-tier system architecture was invented to overcome these problems.The basic idea here was to have a separate software layer that acts as "glue" between the client and server parts of an application and provides a programming abstraction as well ass masks the heterogeneity of underlying networks,hardware and operating systems from application programmers.This software layer is known as middle ware because it sits in the middle,between the operating system and applications.In general, middle-ware is defined as a set of tools and data that helps applications use networked resources and services.

No comments:

Post a Comment