# Types of computer software
## System Software
### Boot Code

Boot code is used to create a working environment for the operating system. The term, "boot" is a shortening of the term, "bootstrapping" which answers the problem of a computer needing itself to be in a running state in order to start itself. Early computers required a complicated series of commands entered by hand on a switch panel followed by an "execute" command to create the system environment. Modern computers make use of boot code saved on semi-permanent memory.
A very small program, the code examines the system hardware; initializes environment variables such as date, time and device start order; identifies and starts the internal peripheral devices the computer uses, such as hard drives and video processors; enables the various communication ports and executes the operating system. Booting
Starting a computer from a powered-off state is called, "cold-booting." If the computer is already running and is being restarted, it already has the environment parameters and settings loaded and will skip the initialization routines and perform a "warm boot" by only restarting the operating system.

### Operating System

An operating system is a master program that a computer uses to execute both user-level programs as well as the environment routines and drivers necessary for the computer to run. Thus, on a standard personal computer an operating system handles signals from input and output devices, manages memory usage and controls peripherals. Therefore, the operating system is the most important program a computer must run.
DOS, Microsoft Windows XP and Mac OS are some examples of personal computer operating systems. Server-level computers use operating systems such as UNIX and Microsoft Windows Server. LINUX and BSD are versatile enough to be used either in a personal computer or as an operating system in a server, depending on which components are installed.
With the size of most present operating systems a hard disk is required to store the necessary files and programs. Should the operating system become inoperable, many offer a "boot disk" option where a simpler version of the operating system with only the necessary drivers and files is stored on removable devices, usually a CD/DVD-ROM, USB flash drive or floppy disk. Booting the computer with the boot disk allows the system to be accessed and repaired.
Portable devices, such as cellular phones and personal data assistants use specialized, "embedded" operating systems that enable them to do many tasks once only found in "platform" computers, such as email transactions, document operations and database management.

#### Examples of Personal Computer/Server Operating Systems
##### PC/Microsoft DOS

A command-line operating system, MS/PC DOS helped usher in the microcomputer age by providing an operating system that would run on the limited resources of the 8086/8088-based personal computer. MS-DOS

##### Microsoft Windows

Despite its numerous problems and irritations, Microsoft Windows is rightly credited with enabling the non-technical user to operate a computer without having to learn too many complicated commands and settings and has been instrumental to the increased popularity of the personal computer.
MS Windows versions 1.0 and 2.x
MS Windows version 3.x
MS Windows 9x
MS Windows NT
MS Windows XP
MS Windows Vista
MS Windows 7
MS Windows 8
MS Windows 8.1
MS Windows 10
MS Windows 11

#### Examples of Embedded Operating Systems
##### Palm OS

The Palm OS was preceded by the Japanese company PalmSource, and is the dominant operating system for hand-helds. Over 30.1 million PalmOS units (including licensees), according to Sept 2003 Palm Inc. financial reports; with over 22 million total USR/3Com/Palm or Palm Solutions Group branded units shipped (over 4 million per year). Palm has many security concerns due to it's mobility, such as if lost or stolen palms may have data that can retrieved by others. Also if Palm passwords are interconnected to your PC passwords, anyone has access to personal files on your PC. w:Palm_(PDA)#Security

##### Symbian OS

Symbian was a discontinued operating software which is mostly used by the mobile phones. Symbian was the biggest software producers for smart phones. There are the Symbian codes used by different companies as well, Mika Raento has huge examples of Symbian codes There are different companies that owns Symbian software: for example,Ericsson and Nokia had the highest percentage ( 47.9%) http://en.wikipedia.org/wiki/Symbian

##### MS Windows CE

Though most versions of Microsoft Windows were developed for desktop applications, a simpler version was created for hand-held devices called, "Windows CE."

### Files

A file is one of two things: 1) data file, or a named collection of data or 2) program file, or a program that exists in the secondary storage of a computer.
Computer files make it easier for the user to find and save their data.w:File_system Computer files are like paper documents that used to be kept in libraries and offices w:Computer_file.
Exporting a file puts it in a format that many programs can read. Importing a file gets data from another source and converts it to a compatible format. Example: Creating a spreadsheet in Google Docs, exporting the file to CSV (comma separated value) format, opening Microsoft Excel, importing the CSV file, saving the spreadsheet as an excel file.
Example: Certain networks are created to allow users to share files, such as audio, video and pictorial images. Networks like Limewire use a peer-to-peer file sharing method.

### Tasks

A computer may perform many different tasks at the same time. Tasks include storing, printing, and calculating. Multitasking is when a computer operates more than one task at a time with one central processor.
A task is a set of instructions (like a plan) that is brought out from memory to execute certain functions. w:Task_(computers)
In order to allow your computer to multi-task quicker the processor should have high speed(frequency). This will allow you to run more applications at once without affecting your computers performance. Nowadays multicore processors which combines two(dual core) or four(quad core) are coming which have more speed than ordinary ones.
Task is a real time application which is the study of hardware and software that are subject to real time constraint w:Task_(computers)

### Security

Security could mean confidentiality, integrity or availability of electronic information that is processed by or stored on computer systems. "The only truly secure system is one that is powered off, cast in a block of concrete and sealed in a lead-lined room with armed guards - and even then I have my doubts. ”
Eugene H. Spafford, director of the Purdue Center for Education and Research in Information Assurance and Security
w:Computer_security
EXAMPLE: FIREWALL A system that prevents unauthorized access to/from a private network. Can be implemented in both hardware and software, or both. This form of security can be used to prevent unauthorized Internet users from accessing private networks connected to the Internet/inappropriate networks. w:Internet_Firewalls

## Applications

Applications are referred to as a type of computer software where the computer's capabilities directly reflect that of the task.w:Application_software

### Custom

Custom software is under the category of application software. The word custom means that the software is specially made for the individual and/or company needs. This software is created by the programmers and software engineers. Custom software can be very expensive since it is only developed on demand. A very good example of a custom soft ware is the application of it in space crafts, ATM'S, and super market check out machines. Custom software, which can also be called bespoke software, is only created for individual companies to be used for research and other things. It is also a risk for a company to develop custom software since it is very expensive or demands huge sums of money to develop.
w:Custom_software

### Commercial

Commercial Software, also known as Proprietary Software or Packaged Software, is software that can be bought and sold. Commercial Software is copyrighted, so you must pay for it in some respect. Examples of this are Microsoft Excel or Adobe Photoshop.
Commercial software is generally bought in retails stores in a physical form. However, in some cases you can download the program you desire over the internet for a lesser fee. Commercial software programs uses things such as passwords and user registrations to make sure only paid customers are using the program. Commercial software such as Norton AntiVirus uses thirty day free trials to familiarize the user with the product before they purchase it.

### Shareware

Shareware is basically "try before you buy" software. Unlike most software where you have to buy the software before you can actually use it, the concept of Shareware lets you try a program for a short period of time before you buy it. This gives the consumer an opportunity to test out the software and see if it suits his needs or not. This not only helps the consumer get a feel for the product but is also beneficial to the company providing the Shareware Software to market their product. Shareware has the ultimate money-back guarantee - if you don't use the product, you don't pay for it!
Examples of shareware software would be a trial version of Fracture.It is a screensaver software for the Mac Os-X. In order to use the full version of the software, a ten dollar ($10) registration fee must be paid.

### Free / Open Source

Software that has released the files it was written in, usually free, so you can download and change the original code, therefore changing the program.
Viro has contributed 1,571 changes to the kernel (the piece of software that connects the hardware with the applications), over the past three years, according to a new report from the Linux Foundation. That's more than any other individual developer, the report states. In contrast, Torvalds, the kernel's creator and steward, contributed 495 changes. Viro couldn't be reached for comment about the report.
During the past three years, the top 10 individual developers have contributed nearly 15 percent of the changes to the kernel, while the top 30 developers have submitted 30 percent, the report states.

## Operating System

An operating system has two main jobs: to coordinate the computers resources and to service applications. Operating Systems were introduced in the 1950's. w:Operating_system

## Kernel

The kernel is the piece of software that connects with the drivers/programs in the user-controlled portion of the computer to the hardware outside of the computer (or in many cases, inside). w:Kernel_(operating_system)

## Utilities

Also known as service programs. Utilities perform a variety of functions like disk de-fragmenting or compressing data. When utilities become popular they are usually bundled with the operating system.

### Driver

A computer driver is a program that controls a device. There are device drivers for printers, displays, CD-ROM readers, diskette drives, and so on.For other devices, you may need to install a new driver when you connect the device to your computer. In DOS systems, drivers are often files with a .SYS extension. In Windows environments, drivers often have a .DRV extension.
Some kernels, for example, the Linux kernel, have drivers built in, which contrasts to the Windows NT kernel which requires drivers to be loaded by the kernel.
A driver acts like a translator between the device and the kernel so the user can use the device. Each device has its own set of specialized commands that only its driver knows. In contrast, most programs access devices by using generic commands. The driver, therefore, accepts generic commands from a program and then translates them into specialized commands for the device.

### Backup

Making copies of data in case the original data is lost or destroyed.
The two reasons for backing up your files are; a) disaster recovery - to restore the files to an operational state following a disaster, and b) to restore small numbers of files after they have been corrupted or accidentally deleted.
Do not confuse backups with archives or fault-tolerant systems. Archives are the first copy of data and back ups are a second copy of data. Also back up systems assume that fault will cause data loss and fault-tolerant systems will not assume fault.
A popular backup utility is Norton ghost, where a user can make an image copy of their files in case of a system crash.
A common method of backup for isolated systems without high-speed network or backup devices is to maintain the system and applications software installation disks locally, near the system, and backup only user data. In the event of a crash one then reinstalls system and application software from scratch and then restores the user data. When using this method one should not neglect to make off-site backups of the commercial software and user data so that in the event of a local disaster such as fire, flood, or earthquake that crunches the system, rapid recovery is still possible if desirable.
A backup allows the user to make a duplicate copy in case the hard-disk drive fails.

### Malware

Malware is a program that can destroy and corrupt data on a computer. It can come through a floppy disk, CD, or USB, but now usually comes through email and sometimes even over-the-air (away from the user's control).
Virus are programs that can copy themselves and create problems in one computer without the user ever knowing or authorizing it. Virus can only be spread when they are taken to an uninfected computer. Viruses are commonly confused with computer worms and Trojan horses. A worm has the capabilities to spread itself to other computers without needing to be transferred as part of a host. Trojan horses are files that appear to be harmless until they are executed.
Anti-Virus (or sometimes referred to as Anti-Malware), is a computer program that attempts to identify and eliminate computer viruses. There are two different techniques to accomplish this, examining(scanning) and identifying suspicious behavior.
An example of a Anti-Virus software program is Symantec Norton Anti-Virus. Norton Anti-Virus (NAV) is a popular product of Symantec Corporation and is one of the most widely used anti virus programs. It is aimed at a centrally managed corporate environment and has different features not present in the traditional retail version of the software. Symantec's LiveUpdate provides virus definition updates, which enable Norton anti virus to detect viruses known to Symantec; a total of 73,660[3] viruses as of September 6, 2007. In order to receive updates, a valid subscription is required; an initial subscription good for one year (or 90 days for OEM copies) is included with the purchase.

### De-fragmentation

The hard drive is divided into sectors that can hold files. If a file is bigger than a section (which it usually is) it is stored on the next sector. If the next sector is already being used, then it has to store it on a sector farther away, but the address of the new sector is stored so that the computer knows where all the parts of the file are. But if parts of the file are in different sections (aka "fragmented") then it takes a long time to find and make changes to it.
That's where de-fragmenting can help. It dutifully finds sectors that are next to each other big enough to hold a file and copies the file there, then deleting it form the fragmented sectors where it used to be. w:Defrag
De-fragmentation reduces the amount of space or "fragmentation" in a file space. By using compaction, it creates larger regions of free space. The image to the side of the text represents the allocation of the free space as well as the combining of the files in order to de-fragment the hard drive.
Fragmentation occurs when the operating system cannot or will not allocate enough contiguous space to store a complete file as a unit, but instead puts parts of it in gaps between other files (usually those gaps exist because they formerly held a file that the operating system has subsequently deleted or because the operating system allocated excess space for the file in the first place). Larger files and greater numbers of files also contribute to fragmentation and consequent performance loss. De-fragmentation attempts to alleviate these issues and issues caused by fragmentation.

### Scandisk

This is a utility program originally used by DOS and Microsoft Windows that checks and repairs file systems and bad clusters within the system. Previous versions were simple text-based program called CHKDSK. Subsequent versions of the scandisk were still referred to as CHKDSK, but different from the earlier version. The recent versions are now integrated in Disk Properties as "error-checking."
One of the main functions with scandisk is that it can identify and repair physically damaged hard drives by quarantining the damaged area, to avoid files being written in that area, thus avoiding damaged and lost data.

## Interfaces

How you work with the computer...
Interfaces is the functioning of two things, ex the way software and hardware interacts or how either would interact with a person ie the user. w:Interface_(computer_science)

### CUI

Character user interface. You type commands into the computer. It's not easy to remember all the commands, and it looks less exciting than a GUI, but it works faster because you're not making the computer waste time showing pretty icons and background images.
This is the precursor to GUI (graphical user interface).
w:Graphical_user_interface

### GUI

GUI is an acronym for "graphical user interface". It allows people to interact with a computer and computer-controlled devices using graphical icons, visual indicators or special graphical elements called "widgets". These icons are used in conjunction with text, labels or text navigation. w:Graphical_user_interface
The history of the graphical user interfaces came from the Xerox 8010 Star Information System in 1981 from PARC. GUI's are familiar to most people today using Microsoft Windows and Mac OS X. w:Graphical_user_interface
GUI's are important because they are easier to use than command driven interfaces.
Source: w:Graphical user interface

### GUI shell

Graphical user interface (GUI) shells build on top of CUI. The GUI instructs the CUI, and the CUI sends messages to the hardware. - w:Shell_(computing) GUI shells are very replaceable and software often allows users to create their own GUI to suit their personal need. The most active user generated GUI can be seen in games where users replace the original image with another GUI overlay to suit their personal style. A GUI is a type of user interface which allows people to interact with a computer and computer-controlled devices.
w:Graphical user interface

### DOS Shell

This shell was one of the first successful attempts to create a basic graphical user interface (GUI) type file manager in DOS
w:DOS Shell
DOS Shell enables the user to type prompts and commands within a user interface.http://en.wikipedia.org/wiki/Shell_(computing)
No longer in use, the DOS shell, stands for Microsoft disc operating system. Microsoft set up this 'shell'(program software), to enhance features of their system. Some of these features include: double clicking to open a file on the computer and copying, moving, and renaming files. Some of the benefits of the dos shell is that it did not require long file names to run and it could be used with Microsoft windows. One of the drawbacks to the dos shell was that it could not multi task and so it was replaced when more efficient programs were created. w:Dos_shell

## Widgets

A widget is an interface that a computer user uses such as window or text box. Programmers use widgets to build GUIs (graphical user interfaces).w:GUI_widget A widget engine is a host software system for running and displaying desktop widgets.
Widgets are also downloadable interactive virtual tools. They help to show users things such as the latest news, time or weather among a variety of other things.
w:Widget engine