Introduction:
Software, By Definition, Is The Collection Of Computer Programs, Procedures And
Documentation That Performs Different Tasks On A Computer System. The Term
'Software' Was First Used By John Tukey In 1958. At The Very Basic Level,
Computer Software Consists Of A Machine Language That Comprises Groups Of Binary
Values, Which Specify Processor Instructions. The Processor Instructions Change
The State Of Computer Hardware In A Predefined Sequence. Briefly, Computer
Software Is The Language In Which A Computer Speaks. There Are Different Types
Of Computer Software.
There Are Major Types Of Software:
Programming Software:
This Is One Of The Most Commonly Known And Popularly Used Types Of Computer
Software. These Software Come In The Form Of Tools That Assist A Programmer In
Writing Computer Programs. Computer Programs Are Sets Of Logical Instructions
That Make A Computer System Perform Certain Tasks. The Tools That Help
Programmers In Instructing A Computer System Include Text Editors, Compilers And
Interpreters. Compilers Translate Source Code Written In A Programming Language
Into The Language Which A Computer Understands (Mostly The Binary Form).
Compilers Generate Objects Which Are Combined And Converted Into Executable
Programs Through Linkers. Debuggers Are Used To Check Code For Bugs And Debug
It. The Source Code Is Partially Or Completely Simulated For The Debugging Tool
To Run On It And Remove Bugs If Any. Interpreters Execute Programs. They Execute
The Source Code Or A Precompiled Code Or Translate Source Code Into An
Intermediate Language Before Execution.
System Software:
It Helps In Running Computer Hardware And The Computer System. System Software
Refers To The Operating Systems; Device Drivers, Servers, Windowing Systems And
Utilities. System Software Helps An Application Programmer In Abstracting Away
From Hardware, Memory And Other Internal Complexities Of A Computer. An
Operating System Provides Users With A Platform To Execute High-Level Programs.
Firmware And Bios Provide The Means To Operate Hardware.
Application Software:
It Enables The End Users To Accomplish Certain Specific Tasks. Business
Software, Databases And Educational Software Are Some Forms Of Application
Software. Different Word Processors, Which Are Dedicated To Specialized Tasks To
Be Performed By The User, Are Other Examples Of Application Software.
Malware:
Malware Refers To Any Malicious Software And Is A Broader Category Of Software
That Are A Threat To Computer Security. Adware, Spyware, Computer Viruses,
Worms, Trojan Horses And Scareware Are Malware. Computer Viruses Are Malicious
Programs Which Replicate Themselves And Spread From One Computer To Another Over
The Network Or The Internet. Computer Worms Do The Same, The Only Difference
Being That Viruses Need A Host Program To Attach With And Spread, While Worms
Don't Need To Attach Themselves To Programs. Trojans Replicate Themselves And
Steal Information. Spyware Can Monitor User Activity On A Computer And Steal
User Information Without Their Knowledge.
Adware:
Adware Is Software With The Means Of Which Advertisements Are Played And
Downloaded To A Computer. Programmers Design Adware As Their Tool To Generate
Revenue. They Do Extract User Information Like The Websites He Visits Frequently
And The Pages He Likes. Advertisements That Appear As Pop-Ups On Your Screen Are
The Result Of Adware Programs Tracking You. But Adware Is Not Harmful To
Computer Security Or User Privacy. The Data It Collects Is Only For The Purpose
Of Inviting User Clicks On Advertisements.
There Are Some Other Types Of Computer Software Like Inventory Management
Software, Erp, Utility Software, Accounting Software Among Others That Find
Applications In Specific Information And Data Management Systems. Let's Take A
Look At Some Of Them.
Inventory Management Software:
This Type Of Software Helps An Organization In Tracking Its Goods And Materials
On The Basis Of Quality As Well As Quantity. Warehouse Inventory Management
Functions Encompass The Internal Warehouse Movements And Storage. Inventory
Software Helps A Company In Organizing Inventory And Optimizing The Flow Of
Goods In The Organization, Thus Leading To Improved Customer Service.
Utility Software:
Also Known As Service Routine, Utility Software Helps In The Management Of
Computer Hardware And Application Software. It Performs A Small Range Of Tasks.
Disk Defragmenters, Systems Utilities And Virus Scanners Are Some Of The Typical
Examples Of Utility Software.
Data Backup And Recovery Software:
An Ideal Data Backup And Recovery Software Provides Functionalities Beyond
Simple Copying Of Data Files. This Software Often Supports User Needs Of
Specifying What Is To Be Backed Up And When. Backup And Recovery Software
Preserve The Original Organization Of Files And Allow An Easy Retrieval Of The
Backed Up Data.
Types Of Software And Their Licensing:
A Software License Determines The Way In Which That Software Can Be Accessed And
Used. Depending On The Software Licensing, The End Users Have Rights To Copy,
Modify Or Redistribute The Software. While Some Software Have To Be Bought, Some
Are Available For Free On The Internet. Some Licenses Allow You To Use, Copy And
Distribute The Software While Others Allow Only One Of The Three Operations. In
Some Software, The Source Code Is Made Available To The End Users, While In
Others It Is Not. Here We Will See The Ways In Which Different Types Of Software
Are Distributed To Users.
Custom Software:
Software That Is Developed For A Specific User Or Organization Is Custom
Software. Since It Is Built For A Specific User, Its Specifications And Features
Are In Accordance With The User's Needs.
Off-The-Shelf Software:
As Opposed To Custom Software, Off-The-Shelf Software Is Standard Software
Bought Off The Shelf. It Has Predefined Specifications That May Or May Not Cater
To Any Specific User's Requirements. When You Buy It, You Agree To Its License
Agreement.
Free Software:
Software That A User Is Free To Use, Modify And Distribute Is Known As Free
Software. Free Software Generally Comes Free Of Cost But Charges May Be Involved
In Distribution, Servicing And Maintenance. The Term Free Refers To Freedom Of
Copying, Distributing And Modifying.
Open Source And Closed Source Software:
In A Closed Source Model, The Source Code Is Not Released To Public, While The
Source Code Is Available For Modification And Use In Open Source Software. Open
Source Software Is Available In Its Source Code Form And The Rights To Change,
Improve And Sometimes Distribute Its Code Are Given Under A Software License.
Software Developed By An Individual Or An Organization, Where The Source Code Is
Closed From Public (Not Available Openly) Is Referred To As Closed Source
Software.
Proprietary Software:
In Proprietary Software, Legal Rights Remain Exclusively With The Copyright
Holder. Most Proprietary Software Are Available In The Closed Source Form. Some
Vendors Distribute Proprietary Software Source Code To The Customers, However,
With Restricted Access. Proprietary Software Is Provided As Shareware Or
Demoware Wherein Users Do Not Have To Pay For Use And It Is Distributed As
Trialware. There Are No Packaging Costs Involved. However The Programmer May Ask
You To Pay A Small Fee After Which You Are Entitled To Receive Assistance And
Updates Of That Software.
Shareware And Retail Software:
While Shareware Is Provided As A Trial Version To Users, Retail Software Is Sold
To End Users. With The Increasing Availability Of Shareware And Freeware On The
Web, The Retail Market Is Changing. Developers And Vendors Have Started Offering
Their Software Over The Internet. At Times, Shareware Is Made Available As
Crippleware, Wherein Its Main Features Do Not Work After The Trial Period Has
Ended. In Other Words, Such Shareware Has To Be Purchased To Enable Its Crippled
Features. Though Shareware Is A Very Popular Form In Which Software Is
Distributed, Retail Software Is Not Obsolete. Microsoft Office, For Example, Is
A Retail Software Package That Has To Be Bought. Retail Software May Be Given As
An Original Equipment Manufacturer (Oem) Pack. Here, The Software Developer
Gives A Licensed Copy Of The Software To A Computer Manufacturer Who Installs It
On Computers Before They Are Sold. In The Box Pack Form, A Licensed Copy Of The
Software Is Bought From An Authorized Retail Outlet.
This Was An Overview Of The Major Types Of Software And Their Ways Of
Distribution. Computer Software Are Widely Popular Today And We Cannot Imagine
Computers Without Them. We Would Not Have Been Able To Use Computers With So
Much Ease, If Not For Software. What Is Fascinating About Computers Is That They
Have Their Own Languages And Their Own Ways Of Communicating With Us Humans. And
Their Means To Communicate Are These Different Types Of Computer Software.
Application Software:
Application Software Is Developed To Perform In Any Task That Benefits From
Computation. It Is A Set Of Programs That Allows The Computer To Perform A
Specific Data Processing Job For The User. It Is A Broad Category, And
Encompasses Software Of Many Kinds, Including The Internet Browser Being Used To
Display This Page.
Software Topics
Architecture
Users Often See Things Differently Than Programmers. People Who Use Modern
General Purpose Computers (As Opposed To Embedded Systems, Analog Computers And
Supercomputers) Usually See Three Layers Of Software Performing A Variety Of
Tasks: Platform, Application, And User Software.
• Platform Software: Platform Includes The Firmware, Device Drivers, An
Operating System, And Typically A Graphical User Interface Which, In Total,
Allow A User To Interact With The Computer And Its Peripherals (Associated
Equipment). Platform Software Often Comes Bundled With The Computer. On A Pc You
Will Usually Have The Ability To Change The Platform Software.
• Application Software: Application Software Or Applications Are What Most
People Think Of When They Think Of Software. Typical Examples Include Office
Suites And Video Games. Application Software Is Often Purchased Separately From
Computer Hardware. Sometimes Applications Are Bundled With The Computer, But
That Does Not Change The Fact That They Run As Independent Applications.
Applications Are Usually Independent Programs From The Operating System, Though
They Are Often Tailored For Specific Platforms. Most Users Think Of Compilers,
Databases, And Other "System Software" As Applications.
• User-Written Software: End-User Development Tailors Systems To Meet Users'
Specific Needs. User Software Include Spreadsheet Templates And Word Processor
Templates. Even Email Filters Are A Kind Of User Software. Users Create This
Software Themselves And Often Overlook How Important It Is. Depending On How
Competently The User-Written Software Has Been Integrated Into Default
Application Packages, Many Users May Not Be Aware Of The Distinction Between The
Original Packages, And What Has Been Added By Co-Workers.
Documentation
Most Software Has Software Documentation So That The End User Can Understand The
Program, What It Does, And How To Use It. Without Clear Documentation, Software
Can Be Hard To Use—Especially If It Is Very Specialized And Relatively Complex
Like Photoshop Or Autocad.
Developer Documentation May Also Exist, Either With The Code As Comments And/Or
As Separate Files, Detailing How The Programs Works And Can Be Modified.
Library:
An Executable Is Almost Always Not Sufficiently Complete For Direct Execution.
Software Libraries Include Collections Of Functions And Functionality That May
Be Embedded In Other Applications. Operating Systems Include Many Standard
Software Libraries, And Applications Are Often Distributed With Their Own
Libraries.
Standard:
Since Software Can Be Designed Using Many Different Programming Languages And In
Many Different Operating Systems And Operating Environments, Software Standard
Is Needed So That Different Software Can Understand And Exchange Information
Between Each Other. For Instance, An Email Sent From A Microsoft Outlook Should
Be Readable From Yahoo! Mail And Vice Versa.
Execution:
Computer Software Has To Be "Loaded" Into The Computer's Storage (Such As The
Hard Drive Or Memory). Once The Software Has Loaded, The Computer Is Able To
Execute The Software. This Involves Passing Instructions From The Application
Software, Through The System Software, To The Hardware Which Ultimately Receives
The Instruction As Machine Code. Each Instruction Causes The Computer To Carry
Out An Operation – Moving Data, Carrying Out A Computation, Or Altering The
Control Flow Of Instructions.
Data Movement Is Typically From One Place In Memory To Another. Sometimes It
Involves Moving Data Between Memory And Registers Which Enable High-Speed Data
Access In The Cpu. Moving Data, Especially Large Amounts Of It, Can Be Costly.
So, This Is Sometimes Avoided By Using "Pointers" To Data Instead. Computations
Include Simple Operations Such As Incrementing The Value Of A Variable Data
Element. More Complex Computations May Involve Many Operations And Data Elements
Together.
Quality And Reliability:
Software Quality Is Very Important, Especially For Commercial And System
Software Like Microsoft Office, Microsoft Windows And Linux. If Software Is
Faulty (Buggy), It Can Delete A Person's Work, Crash The Computer And Do Other
Unexpected Things. Faults And Errors Are Called "Bugs." Many Bugs Are Discovered
And Eliminated (Debugged) Through Software Testing. However, Software Testing
Rarely – If Ever – Eliminates Every Bug; Some Programmers Say That "Every
Program Has At Least One More Bug" (Lubarsky's Law). All Major Software
Companies, Such As Microsoft, Novell And Sun Microsystems, Have Their Own
Software Testing Departments With The Specific Goal Of Just Testing. Software
Can Be Tested Through Unit Testing, Regression Testing And Other Methods, Which
Are Done Manually, Or Most Commonly, Automatically, Since The Amount Of Code To
Be Tested Can Be Quite Large. For Instance, Nasa Has Extremely Rigorous Software
Testing Procedures For Many Operating Systems And Communication Functions. Many
Nasa Based Operations Interact And Identify Each Other Through Command Programs
Called Software. This Enables Many People Who Work At Nasa To Check And Evaluate
Functional Systems Overall. Programs Containing Command Software Enable Hardware
Engineering And System Operations To Function Much Easier Together.
License:
The Software's License Gives The User The Right To Use The Software In The
Licensed Environment. Some Software Comes With The License When Purchased Off
The Shelf, Or An Oem License When Bundled With Hardware. Other Software Comes
With A Free Software License, Granting The Recipient The Rights To Modify And
Redistribute The Software. Software Can Also Be In The Form Of Freeware Or
Shareware.
Patents:
Software Can Be Patented In Some But Not All Countries; However, Software
Patents Can Be Controversial In The Software Industry With Many People Holding
Different Views About It. The Controversy Over Software Patents Is About
Specific Algorithms Or Techniques That The Software Contains, Which May Not Be
Duplicated By Others And Considered Intellectual Property And Copyright
Infringement Depending On The Severity.
Design And Implementation:
Particular Implementation Of Software. This Software Was Created To Assist The
Wikipedia Website. Also, It Does Not Use A Graphical User Interface Aside From A
Simple Console Window.
Main Articles: Software Development, Computer Programming, And Software
Engineering Design And Implementation Of Software Varies Depending On The
Complexity Of The Software. For Instance, Design And Creation Of Microsoft Word
Software Will Take Much More Time Than Designing And Developing Microsoft
Notepad Because Of The Difference In Functionalities In Each One.
Software Is Usually Designed And Created (Coded/Written/Programmed) In
Integrated Development Environments (Ide) Like Eclipse, Emacs And Microsoft
Visual Studio That Can Simplify The Process And Compile The Program. As Noted In
Different Section, Software Is Usually Created On Top Of Existing Software And
The Application Programming Interface (Api) That The Underlying Software
Provides Like Gtk+, Javabeans Or Swing. Libraries (Apis) Are Categorized For
Different Purposes. For Instance, Javabeans Library Is Used For Designing
Enterprise Applications, Windows Forms Library Is Used For Designing Graphical
User Interface (Gui) Applications Like Microsoft Word, And Windows Communication
Foundation Is Used For Designing Web Services. Underlying Computer
Programmingconcepts Like Quicksort, Hash Table, Array, And Binary Tree Can Be
Useful To Creating Software. When A Program Is Designed, It Relies On The Api.
For Instance, If A User Is Designing A Microsoft Windows Desktop Application,
He/She Might Use The .Net Windows Forms Library To Design The Desktop
Application And Call Its Apis Like Form1.Close() And Form1.Show()[6] To Close Or
Open The Application And Write The Additional Operations Him/Herself That It
Need To Have. Without These Apis, The Programmer Needs To Write These Apis
Him/Herself. Companies Like Sun Microsystems, Novell, And Microsoft Provide
Their Own Apis So That Many Applications Are Written Using Their Software
Libraries That Usually Have Numerous Apis In Them.
Computer Software Has Special Economic Characteristics That Make Its Design,
Creation, And Distribution Different From Most Other Economic Goods.[Specify][7][8]
A Person Who Creates Software Is Called A Programmer, Software Engineer,
Software Developer, Or "Code Monkey", Terms That All Have A Similar Meaning.
References:
1. ^"Wordreference.Com: Wordnet 2.0". Princeton University, Princeton, Nj.
Retrieved 2007-08-19.
2. ^"Software..(N.D.).".Dictionary.Com Unabridged (V 1.1). Retrieved 2007-04-13.
3. ^ Hally, Mike (2005). Electronic Brains/Stories From The Dawn Of The Computer
Age. London: British Broadcasting Corporation And Granta Books. P. 79. Isbn
1-86207-663-4.
4. ^ "Tying Arrangements And The Computer Industry: Digidyne Corp. Vs. Data
General". Jstor 1372482.
5. ^"What Is Software? - Definition From Whatis.Com". Searchsoa.Techtarget.Com.
2012-05-13. Retrieved 2012-05-18.
6. ^"Msdn Library". Retrieved 2010-06-14.
7. ^ V. Engelhardt, Sebastian (2008). "The Economic Properties Of Software".
Jena Economic Research Papers2 (2008–045.).
8. ^ Kaminsky, Dan (1999). "Why Open Source Is The Optimum Economic Paradigm For
Software".