Types Of Software

(KHURRAM SHAHBAZ, lahore)

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".

KHURRAM SHAHBAZ
About the Author: KHURRAM SHAHBAZ Currently, no details found about the author. If you are the author of this Article, Please update or create your Profile here.