Some Meaningful Definitions of Computer Software
- Software is a collection of sets of programs, which are used to execute all kinds of specific instruction. It consists of several machine instructions, array in a specific order to perform a particular task. Software is used to describe all the programs and their associated documents that run on a computer. So, a computer needs both software and hardware for its proper functioning.
- Software means computer instructions or data. Anything that can be stored electronically is software.
- Firmware is software (programs or data) that has been permanently written onto read-only memory (ROM)
- All software falls into two general types or categories: System Software and Application Software. System software consists of low-level programs that interact with the computer at a very basic level. This includes operating systems, compilers, and utilities for managing resources. On the other hand, application software includes database programs, word processors, and spreadsheets.
Types of System software with examples
1) Operating Systems
Operating systems are the most important programs that run on a computer. Every general-purpose computer must have an operating system to run other programs. Operating systems perform 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 such as disk drives and printers. The most commonly used operating systems include Microsoft Windows, DOS, Xenix, Mac OS, OS/2, UNIX, MVS, etc.
Table of Contents
Toggle2) Compilers and Interpreters
A compiler is a program that translates source code into object code. The compiler takes the entire piece of source code and collects and recognizes the instructions. In contrast, the interpreter analyzes and executes each line of source code in succession, without looking at the entire program. The advantage of interpreters is that they can execute a program immediately but compilers require some time before an executable program emerges. However, programs produced by compilers run much faster than the same programs executed by an interpreter.
3) Device Drivers
Device drivers are the software to run particular peripheral devices like printers, wireless mouse, modems, Ethernet cards, etc. Most of the peripheral devices attached to the CPU need device drivers to carry out their functions. Mostly we get device drivers at the time of buying these devices. For example, we get the printer driver when we buy the printer. The device driver lets the CPU know the type of hardware and the type of instruction for a particular device attached to it.
4) Utility Software
Utility is a program that performs a very specific task, usually related to managing system resources. Antivirus software and disk Partition tools are examples of utility software.
Examples of Application Software
Examples of Application Software are as follows:
1) Word Processors
A word processor is a program that makes it possible to perform word-processing functions. We can create, edit, and print documents using word processors. We have many features that help us to prepare a fine document. Some of the important features of word processors are editing, spelling checking, page setup, paragraph alignments, merging documents, typing in columns, etc.
MS Word is the world’s most popular word processor. Although every word processor provides almost the same features, MS Word is the most flexible to work with. It is used to write documents or letters. A file in MS Word is called a document. When a file is saved, MS Word attaches the extension .doc to the file.
2) Spreadsheets
A spreadsheet is a table of values arranged in rows and columns. Each value can have a predefined relationship to the other values. If one value is changed, the other’s values need to be changed as well.
Spreadsheet applications are computer programs that let you create and manipulate spreadsheets electronically. In a spreadsheet application, each value sits in a cell. We can define what type of data is in each cell and how different cells depend on one another. The relationships between cells are called formulas, and the names of the cells are called labels. Once we have defined the cells and the formulas for linking them together, we can enter the data. We can then modify selected values to see how all the other values change accordingly. What-if analysis makes complex decision-making a very easy process. MS Excel is one of the most popular spreadsheet applications.
3) Multimedia applications
Multimedia applications make it possible to run audio and video files. This application recognizes the digital signals and provides necessary signals to output devices and movie signals to the monitor and audio to the audio devices. Along with the video data, we also get the text information about the file we are running. In the Windows operating system, Windows Media Player is a good option for playing multimedia files.
4) Presentation Graphics
Presentation Graphics enable users to create highly stylized images for slide shows and
reports. The software includes functions for creating various types of charts and graphs
and for inserting text in a variety of fonts. Most systems enable us to import data from a
spreadsheet application to create charts and graphs. Presentation graphics are often
called business graphics. Some of the popular presentation graphics software are
Microsoft PowerPoint, Lotus Freelance Graphics, Harvard Presentation Graphics, etc.
Functions of an Operating System:
Job Management: OS manages the jobs waiting to be processed. It recognizes the jobs,
identifies their priorities, determines whether the appropriate main memory and secondary
storage capability they require is available, and schedules and finally runs each job at the
appropriate moment.
Batch Processing: Data are accumulated and processed in groups. The printing tasks in the
printer is also done in groups. Most of the tasks of OS are grouped and performed one by one.
Online Processing: In online processing, data are processed instantaneously. Most online operating systems have multi-user and multitasking capabilities. Nowadays we can access data from remote sites using online processing.
Data Management: OS manages the storage and retrieval of data. As the system software handles many of the details associated with this process, such details are not a primary concern for users or programmers writing application programs.
Virtual Storage: Using this method the capacity of main memory increases without actually increasing its size. This is done by breaking a job into sequences of instructions, called pages or segments, and keeping only a few of these in main memory at a time; the remaining are kept on secondary storage devices. Thus, relatively large jobs can be processed by a CPU.
Input/ Output Management: OS manages the input to and output from a computer system. This
applies to the flow of data among computers, terminals, and other devices such as printers.
Application programs used the operating system extensively to handle input and output devices
as needed.
The functions of the operating system can be further listed as follows:
- User interface implementation
- Share hardware implementation
- Allows users to share data.
- Prevent users from interfering with one another. Scheduling resources among users.
- Facilitate input/output
- Facilitate parallel operations
- Organize data for secure and rapid access.
- Handle network communications
Classification of Operating System:
Multi-user: These systems allow two or more users to run programs at the same time. Some OS permit hundreds or even thousands of concurrent users. The operating systems of mainframes and minicomputers are multi-user systems. Examples are MVS, UNIX, etc. Another term for multi-user is time-sharing.
Multiprocessing: It refers to a computer system’s ability to support more than one process (program) at the same time. This system allows the simultaneous execution of programs on a computer that has several CPUs. Mainframe, Supercomputers have more than one CPU.
Multitasking: This system allows a single CPU to execute what appears to be more than one program at the same time when, in fact, only one program is being executed. In multitasking, only one CPU is involved, but it switches from one program to another so quickly that it gives the appearance of executing all of the programs at the same time.
Multithreading: Multithreading allows different parts of a single program to run concurrently. Multithreading is the ability of an OS to execute different parts of a program, called threads, simultaneously.
Real-time: These operating systems are a system that responds to input immediately. It allows a computer to control or monitor tasks performed by other machines and people by responding to the input data in the required amount of time.
Programming Languages
Programming Language is a set of rules that provides a way of instructing the computer to
perform certain operations. Programming languages are said to be lower or higher, depending on
whether they are closer to the language the computer itself uses or to the language that people
use.
We can study the programming languages under five levels (or generations) of language:
- Machine Languages / First-generation Languages
- Assembly languages / 2nd Generation Languages
- Procedural Languages/ Third-generation Languages
- Problem-oriented Languages / Fourth-generation Languages
- Natural Languages / Fifth Generation Languages.
The characteristics & trends of these five languages are summarized in the following table:
First Generation | Second
Generation |
Third
Generation |
Fourth
Generation |
Fifth
Generation |
|
Trend: Towards Conversational natural programming language | |||||
Software Trends |
User-written
programs |
Packaged
Programs |
Operating
Systems |
Database
Management Systems |
Natural
Languages |
Machine
Language |
Symbolic
Language |
High-Level
Languages |
Fourth
Generation Languages Microcomputer Packages |
Natural
Languages
Multipurpose graphic- interfaced packages. |
|
Trend: Towards easy-to-use multi-purposed application packages |
Computer programming languages are developed with the primary objectives without the need to know in detail the internal structure of the computer.
Machine Language
A program written using the binary codes specified for a processor’s operations and absolute binary addresses is known as the machine language of the computer. The programs written in Machine languages are machine-dependent. Programming using Machine Language is very tedious and time-consuming. The programmer must keep track of a tremendous amount of detail and one must understand the technical operations of the computer. Programming in machine code has one advantage over programming at other language levels – its execution is very fast and efficient because the computer can accept the machine code as it is.
Assembly Language
Assembly languages are also known as symbolic languages as they use abbreviations or
mnemonic code which replaces the 0s and 1s of machine language. An assembly language has a
one-to-one correspondence with the machine language of a computer and is thus machine-dependent. Assembly languages are more standardized and easier to use than machine languages.
Though more standardized than machine languages, assembly languages are still machine-dependent.
High-Level Languages
High-level languages are programming languages that use predefined common English words
and clauses to write a program. They assisted programmers by reducing further the number of
computer operations details they had to specify so that they could concentrate more on the logic
needed to solve the problem. We can classify the high-level languages into three levels:
- Procedural-oriented or third-generation
- Problem-oriented or fourth-generation
- Natural or fifth-generation
1) Procedural-oriented Languages
General-purpose programming languages are called procedural languages or third-generation languages. They are the languages such as Pascal, BASIC, COBOL, and FORTRAN, C which are designed to express the logic, the procedure, of a problem. Because of their flexibility, procedural languages can solve a variety of problems. More focus is given to modules while programming in Procedural-oriented languages.
2) Problem-oriented Languages
Fourth-generation languages are also known as problem-oriented languages. These are the languages designed to solve specific problems or develop specific applications by enabling one to describe what he wants rather than step-by-step procedures for getting there. Thus the problem should be considered most rather than procedures to get the solution to the particular problem. Visual Basic and PERL are Problem-oriented languages. These languages may be categorized into several kinds of application development tools:
- Personal computer application software
- Query languages and report generators
- Decision support system and financial planning languages
- Application generators
3) Natural Languages
Natural languages are very near to the human conversational language. Natural languages are still in the development stages. These languages will be used most in the areas of artificial intelligence and expert systems. Natural languages have two characteristics:
- They are designed to make the connections that humans have with computers more natural – more humanlike.
- They are designed to allow the computer to become “smarter” – to simulate the learning process by remembering and improving upon earlier information.
Two popular natural languages are LISP and PROLOG.
Compilers and Interpreters
A compiler is a program that translates source code into object code. The compiler takes the entire piece of source code and collects and recognizes the instructions. In contrast, the interpreter analyzes and executes each line of source code in succession, without looking at the entire program. The advantage of interpreters is that they can execute a program immediately but compilers require some time before an executable program emerges. However, programs produced by compilers run much faster than the same programs executed by an interpreter.
General Software Features and Trends
Introduction
Nowadays software projects are becoming more and more complex – in size, sophistication, and technologies used. Most software products are used by a huge number of people, not only that, this software supports different national languages and comes in different sizes and shapes: desktop, standard, professional, Enterprise Resource Planning (ERP) packages, and so on. Almost all application software products (like word processors, and ERP packages) support more than hardware and/or software platforms. For example, we have web browsers for the PC and Mac; we have database management systems that run on MVS, UNIX, Windows NT, Linux, and so on. The competition and the advancements in technology are driving software vendors to include additional functionality and new features to their products- just to stay in business.
Information Technology is revolutionizing the way we live and work. Digital technology has given mankind the ability to treat information with mathematical precision, to transmit it at very high accuracy, and to manipulate it at will.
Features: The following are the trends that play a vital role in the development of software
products:
Ease of use
Software systems are applications are becoming more and more easy to use. Software developers and system analysts are concerned with ensuring that the software they develop is more user-friendly than their competitor’s products. The user interfaces are more intuitive, the error messages are more descriptive, there is context-sensitive help, and there are wizards and templates to help the user when one encounters a problem.
Graphical User Interface (GUI)
Today’s software applications and products provide users with intuitive, graphical, and easy-
to-use interfaces. Now the users do not have to remember the cryptic system commands or
shortcut keys that were a must in the character-based era. Now almost any task can be
accomplished by a mouse click. For example, in a DOS environment, to copy a file one
needs to know the command for copying files, its exact syntax, and so on, whereas in the
Windows environment, you just have to drag the files you want to copy from the source to
destination.
Requirement of more powerful hardware
Because software vendors are incorporating more and more features into their products this software needs more and powerful machines to run. They need more main memory, more secondary storage, and faster and more powerful processors. It is also not very difficult to go for new powerful computers as the price of computers is decreasing day by day.
Multi-platform capability
Today’s software applications are not developed for just one platform. Most of the software applications support multiple platforms- both hardware and software platforms. There are software applications that support hardware platforms ranging from mainframes to PCs and different software platforms like MVS, Solaris, AIX, UNIX, Windows, and so on. Databases like IBM’s DB2 Universal is available for a variety of hardware and software platforms. Another important feature of today’s software applications is that they support multiple languages and multiple currencies. Many vendors are providing their applications in many languages like English, Arabic, Japanese, Chinese, and so on.
Network Capabilities
Network computers are becoming popular as they can work with minimal memory, disk storage, and processor power. These computers are connected to a network, especially the Internet. The idea behind network computers is that many users who are connected to a network don’t need all the computer power they get from a typical personal computer. Instead, they can rely on the power of the network servers. As the popularity of network computers increases, the demand for software that can run these computers is increasing and the software applications of today and tomorrow will have that capability.
Compatibility with other software
Nowadays most software products are compatible with each other. For example, we can import HTML documents and other text documents into a Microsoft Word document. Also as newer versions of the software are released, most vendors maintain backward compatibility i.e. compatibility with earlier versions. These two features- backward compatibility and compatibility with other products make it easier for the users, as they can choose the application they want and still use the old files they created using other applications or using older versions of the same application.
Object Linking and Embedding
We have a mechanism to interact with other software systems. One of the methods to integrate
external tools into an application is using the Object Linking and Embedding (OLE)
architecture to link or embed a component from another application running on the computer.
OLE is a compound document standard developed by Microsoft Corporation. It enables us to
create objects with one application and then link or embed them into a second application.
This embedding and linking of components enables applications to share components.
Group Work Capabilities
Technologies, that support collaboration, are in greater demand today than ever before.
Therefore, vendors are integrating collaborating technologies into their products. Distributed
workforces, information overload, and getting products to market as quickly as possible are
just a few of the motivational aspects pushing collaboration technology development.
Mail Enabling
The mail enabling of an application is the process through which email is gradually replacing many of the single-purpose applications now used on personal computers. In its simplest form, a mail-enabled application is a Windows program that has a “Send” command in its “File menu”. For example, Microsoft Word 2000 has a “Send To” menu item in the File ‟menu where we can choose to send the document to a mail recipient, fax recipient, or so on.
Web Enabling
With the ever-increasing popularity of the Internet and the amount of information that is available on the Net, most software application is now web-enabled. Web-enabling helps the user in many different ways. During installation, most of the applications will automatically connect to the Internet and the vendor’s website and will register their products (earlier one had to fill in a paper form and mail or fax it to the vendor).
A Comprehensive Guide:
Computer software, often simply called software, refers to a collection of data or computer instructions that tell the computer how to work. This is in contrast to hardware, which is the physical aspect of a computer. Software can be thought of as the variable part of a computer and hardware is the invariable part.
Types of Computer Software
- System Software
- Application Software
- Development Software
- System Software
System software serves as a base for application software. It controls the hardware and provides services for other software.
Types of System Software:
- Operating Systems
- Device Drivers
- Firmware
- Utility Software
Examples of Each:
Operating Systems:
Windows: A popular operating system developed by Microsoft, used in personal computers.
- macOS: Developed by Apple Inc., used in Mac computers.
- Linux: An open-source operating system used in servers, desktops, and embedded systems.
- Unix: A powerful, multiuser operating system used in servers and workstations.
Device Drivers:
- Printer Drivers: Software that converts the data to be printed to a format that a printer can understand.
- Graphics Drivers: Manages the communication between the operating system and the graphics hardware.
Firmware:
- BIOS (Basic Input/Output System): A type of firmware used during the booting process of a computer.
- Router Firmware: Controls the network connectivity and operations of a router.
Utility Software:
- Antivirus Software: Examples include Norton and McAfee, which protect the computer from malware.
- Disk Cleaners: Tools like CCleaner that remove unnecessary files from the computer’s hard drive.
- Application Software
Application software is designed to help the user perform specific tasks or activities. It runs on top of the system software.
Types of Application Software:
- Productivity Software
- Database Software
- Multimedia Software
- Educational Software
- Web Browsers
Examples of Each:
Productivity Software:
- Microsoft Office Suite: Includes Word, Excel, and PowerPoint.
- Google Workspace: Includes Google Docs, Sheets, and Slides.
Database Software:
- Oracle Database: A multi-model database management system.
- Microsoft SQL Server: A relational database management system.
Multimedia Software:
- Adobe Photoshop: Used for image editing and graphic design.
- VLC Media Player: A free and open-source multimedia player.
Educational Software:
- Duolingo: A language learning app.
- Khan Academy: An educational platform offering a wide range of subjects.
Web Browsers:
- Google Chrome: A widely-used web browser by Google.
- Mozilla Firefox: An open-source web browser.
- Development Software
Development software includes tools used by developers to create other software.
Types of Development Software:
- Compilers
- Integrated Development Environments (IDEs)
- Version Control Systems
Examples of Each:
Compilers: GCC (GNU Compiler Collection):** A compiler system supporting various programming languages.
- Microsoft Visual C++: A compiler for C++ programming.
Integrated Development Environments (IDEs):
- Visual Studio: An IDE from Microsoft for developing applications.
- Eclipse: An open-source IDE used primarily for Java development.
Version Control Systems:
- Git: A distributed version control system.
- Subversion (SVN): A centralized version control system.
Summary of the notes:
System Software: Manages the hardware and provides a platform for other software. Examples include Windows, macOS, device drivers, and antivirus software.
Application Software: Allows users to accomplish specific tasks. Examples include Microsoft Office, Oracle Database, Adobe Photoshop, and Google Chrome
Development Software: Provides tools for developers to create software. Examples include GCC, Visual Studio, and Git.
Understanding these types and examples helps in recognizing the broad categories of software and their applications, crucial for any CSIT student.
Happy Learning Guys!