Unit 5 Goals:
- Identify types of computer software.
- Explain how operating systems relate to application software.
- Recognize characteristics of cloud-based, intranet, and local applications.
- Classify different types of operating systems and networks (i.e., server, workstation, mobile).
- Define operating system.
- List common operating systems.
- Identify characteristics of open-source and proprietary licenses.
- Identify uses of patents and copyrights.
- Recognize software licensing agreements and why software should be properly licensed prior to installation.
- Recognize the purpose of end-user license agreements (EULA).
- Differentiate between machine language and high-level languages.
- Differentiate between compiled and interpreted languages.
- State the role of the compiler.
- Define algorithm.
Typical computer systems house a variety of software developed for different needs. The most common software classification includes system and application software. The operating systems, as prominent examples of system software, serve as an interface between the computer hardware and application software, while the programming languages and the software allow their compilation or interpretation. This allows the user to use high-level language to develop applications for a specific purpose. Some software products are available as free products, and others require licensing to be purchased for a fee.
In this section, you will explore the different categories of software and dig deeper into operating systems and the principles of programming languages. Finally, you will learn about the various distribution and pricing options associated with software products.
Computer Software
Application and System Software
Software can be divided into application and system software. System software is general-purpose software that is used to operate computer hardware. It provides a platform to run application software. Application software is specific-purpose software used to perform a specific task.
Application Software
Application software consists of the programs that perform tasks specific to the machine’s general purpose. A computer used to maintain a store’s inventory needs different software than a machine used by a mechanical engineer. Spreadsheet, database, desktop publishing, accounting, and program development software are all examples of application software. Those who are not in the IT field might refer to application software as productivity or collaboration software or tools.
System Software
System software performs tasks that are common to computer systems in general. The system software provides the infrastructure needed to run application software, allowing it to interface with the hardware of the computer system. System software can be divided into utility software and operating systems. Operating systems contain the user interface and the kernel of the operating system.
Software Hierarchy
Operating System
Operating systems typically fall into one of two categories: network operating system or desktop operating system. Many types of operating systems are available, each with different file structures and features. Three of the most common operating systems are Windows, Mac, and Linux.
- Windows. Windows is developed by Microsoft. Previous versions of Windows desktop operating systems include Windows XP, Windows 95, Windows 98, Windows Vista, and currently Windows 10. At the time of this writing, Windows is closed-source with a subscription model. Windows intends to keep the operating system name as Windows 10, but continue adding versions to each update. Windows desktop operating systems are common for personal computers (PCs). Typically, Microsoft products are known for their easy-to-use design.
- Mac. Mac is developed by Apple. Previous versions of Mac operating systems include Snow Leopard, Lion, Mountain Lion, Safari, and Sierra. Like Microsoft, Apple’s operating systems are closed-source. Mac operating systems are known for their media editing and graphic rendering capabilities.
- Linux. Linux is open-source operating system software. There are many different versions of Linux, referred to as flavors, including Linux Mint, Mandrake, Fedora, Ubuntu, Debian, and CentOS. These operating systems are free for anyone to use. However, there are vendors (e.g., Red Hat, Cisco) that offer Linux-based operating systems, adding cost for support and/or hardware.
Utility Software
Utility software extends the capabilities of an operating system. Utility software helps customize the operating system’s function. For example, installation utility software consists of programs for performing activities that are fundamental to computer installation but not included in the operating system. Some examples of utility software include software to compress or decompress data, play multimedia presentations, and handle network communications.
Kernel
The kernel is the internal part of an operating system. The kernel contains the operating system components that perform the basic functions required by the computer installation. One such unit is the file manager whose function is to coordinate the machine’s storage. The file manager maintains records of all the files stored in secondary storage, including where each file is stored, which users have access, and which portions of the storage are available for new files.
Users and Interface
User Interface
The user interface allows end users to communicate with the operating system. Command-line interfaces (CLIs) are a type of user interface that communicate with end users through textual messages using a keyboard and monitor.
Contemporary operating systems have graphical user interfaces (GUIs). GUIs allow end users to issue commands through input devices such as mouses, keyboards, or touch screens. On a touch screen, a user can directly manipulate icons with their finger or a stylus.
While the user interface is an important part of a machine’s functionality, it is only the intermediary between the end user and the operating system. The distinction between the user interface and the internal parts of the operating system is emphasized by the fact that some operating systems require the user to select an available interface according to their preferences.
Operating Systems Users
An operating system is also tasked with protecting the computer’s resources from unauthorized users. When a computer is used by multiple people, each user is assigned their own account on the computer. A user account is a record within the operating system with information such as a name, password, and user privileges (e.g., administrator vs. standard user). The operating system uses this information during each log-in to control access to the system and resources.
Accounts are established by the administrator, whose account is often called a superuser or root account. When the end user supplies the proper credentials during the log-in procedure, the user is given access to the operating system. Administrators can alter settings, modify critical software packages, and perform other maintenance activities denied to other users.
Review these websites to learn more about how to identify the administrator and other users on your personal computer.
- “Windows User Account Management”
- “So You Think You Know Linux User Management”
- “Set up Users, Guests, and Groups on Mac”
File Management
File managers are able to bundle files into directories or folders. Directories can be placed within other directories, resulting in a hierarchical file structure. The directory path tells a user where the file is located within the file system. Directory paths are often written as the folder names separated by slashes. For example, a job seeker saves their files in the Linux environment as /home/mei/JobSearch/MyResumes/MyCoverLetters. The figure below is a depiction of a Linux file structure.
Figure. File hierarchy displayed in Linux.
Windows, in a similar hierarchical file structure, would appear much like the figure below.
Figure. File hierarchy displayed in Windows.
There are some key differences in working with Windows and Linux file structures. In a Windows shell
- a backward slash (\) is used to express directory paths;
- Windows is not case sensitive when searching for files, which means capitalization is irrelevant;
- Windows root directory is referred to by letter, commonly C drive; and
- the user’s home directory is found within C:\Users.
In a Linux shell
- a forward slash (/) is used to express directory paths;
- Linux is case-sensitive;
- the root directory in Linux is expressed as a single forward slash; and
- most flavors of Linux place the home directory within the /home/.
Consider how you organize your computer files.
Read “10 File Management Tips to Keep Your Electronic Files Organized” and determine two of the tips you could use to better organize your files.
Memory Management
The memory manager is another component of an operating system’s kernel. The memory manager manages the system’s primary main memory. When a computer is performing a single task, managing the memory is minimal. When a computer is performing many tasks simultaneously, the duties of the memory manager are extensive. The memory manager needs to find and assign the main memory space for each of the processes and restrict the actions of each process to the memory space allocated to that program. When more main memory space is needed, the memory manager can create an illusion of additional space by rotating programs and data between the primary and secondary memory, a technique called paging. The additional memory space created in secondary memory by paging is referred to as virtual memory.
Device Drivers
The kernel of an operating system stores a collection of device drivers, software that communicates with controllers or other peripheral devices. Device drivers translate generic requests into the technical steps required to complete the task. Device drivers, sometimes referred to as middleware, facilitate the communication of hardware and software. A print driver needs to be installed if a user wants to send a document to the printer. A Bluetooth headphone driver is necessary if a user wants to listen to music on Bluetooth headphones. Some device drivers are installed automatically, while others would need to be downloaded and installed from the manufacturers’ sites.
Other Software Classifications and Groups
Productivity Software
Software that people use to complete daily tasks is called productivity software. Productivity software is used to complete tasks such as writing documents, managing personal information, giving presentations, storing data, and sending email.
| Type | Use | Examples |
| Word processing software | Create business and personal documents such as letters, memos, newsletters, posters, and reports | Microsoft WordGoogle DocsOpenOffice Writer |
| Spreadsheet software | Create worksheets that perform calculations on financial and statistical data; generating charts, graphs, data visualizations, simple databases, grade books, and invoices | Microsoft ExcelOpenOffice CalcGoogle Sheets |
| Database software | Store and manage data, develop data-driven reports, and provide electronic filing | Microsoft AccessMicrosoft SQL ServerMySQL |
| Presentation software | Create slides using graphs and simple animations to support presentations | Microsoft PowerPointOpenOffice ImpressGoogle Slides |
| Multimedia software | Display audio, video, image, and text content | Real PlayerVLC PlayerMedia Player |
| Personal information managers | Manage contracts, calendars, tasks, notes, and reminders | Microsoft OutlookGoogle Calendar |
Table. Types of Productivity Software
Collaboration Software
Collaboration software helps people communicate and work with one another, and helps computers share information.
| Type | Use | Examples |
| Online workplace | Provide an online environment for running cloud-based services and applications | Office OnlineMicrosoft SharePointGoogle Docs |
| Document storage | Provide private or shareable file storage via cloud-based services | Microsoft OneDriveGoogle DriveDropbox |
| Video conferencing software | Place and receive video calls among two or more locations | Adobe ConnectGoToMeetingWebEx |
| Instant messaging software | Enable two or more people to communicate in real time using text | Google HangoutsCisco JabberFacebook Messenger |
| Email software | Send and receive email messages | Microsoft OutlookGmail |
Table. Types of collaboration software
Specialized Software
Specialized software performs tasks for specific purposes. Professions such as computer-aided design, medicine, science, finance, games, and entertaining use specialized software.
| Type | Use | Examples |
| Computer-aided design | Create blueprints and 3D renderings of buildings and products | AutoCAD |
| Graphic Design | Create and edit drawings and other artwork | Adobe PhotoShop |
| Medical | Provide reference to medical professionals; manage medical practice, including patient data, scheduling, and medical records | MedClarityKareo |
| Scientific | Manage the process of doing scientific research | LabVIEWMATLAB |
| Financial | Track and manage financial information | QuickenTurboTax |
| Gaming | Entertain the user | World of WarcraftCandy Crush |
| Entertainment | Entertain a specific audience | SpotifyiTunesNetflixYouTubeSling |
Software Architecture Classification
Target users of application software fall into one of the following three categories: bespoke, off-the-shelf, and hybr
Bespoke software is custom made, specifically designed and developed for an organization. Off-the-shelf software provides a general set of features that are useful to a broad range of users. Hybrid software is off-the-shelf software, customized to an organization’s needs.
| Criteria | Bespoke | Off-the-Shelf | Hybrid |
| Ability to customize | Customized to meet business needs | Not customizable; intended to be used as purchased | Flexible; new features can be introduced via customization options |
| Control | The owner maintains control over the output | Vendor controlled | Limited control over customization options |
| Functionality | Can cover all specified business needs | Depends on features | Can cover all specified business needs, depending on customization |
| Support | Internally supported | Vendor or community supported | Vendor or internally supported |
| Cost | Highest cost | Lowest cost | Middle |
| Time | Takes longest to develop | Usable upon purchase and installation | Fast implementation when out-of-box features are immediately used and customization is deferred |
Local and Cloud Applications
Local applications are application software stored on individual computers. Local applications are mostly found on personal machines, as they are often impractical for large organizations.
Cloud computing delivers services, including computing, storage, databases, networks, software, analytics, and intelligence, thus offloading infrastructure resource requirements to the cloud service provider. Cloud applications, or cloud apps, are software units where cloud-based and local components work together to perform tasks.
Software Licensing
Microsoft and Apple require you to purchase a license to install their operating systems, whether it is for personal or business use. Further, it is closed-source, meaning they do not permit anyone to modify their operating system code. The operating system is developed by Microsoft and Apple. Linux, on the other hand, is open-source and collaborators work together from around the world. Open-source systems allow individuals and organizations to open and modify the operating system’s kernel, the heart of the operating system.
Software Packing
Software can be packaged in various ways, including shareware, freeware, and public domain. Shareware is an application that can be installed as a trial limited by time and/or functionality. If the user decides to purchase the application or subscription, they then get the full functionality. Freeware is, as the term suggests, free. However, freeware and shareware are both protected by end-user license agreements (EULA) and copyright laws (where applicable). This is where freeware and shareware are differentiated from software in the public domain. Public domain software has no EULA and no intellectual property protections and is available for anyone to download and use at their own discretion. However, in the United States, a copyright gives an author of a software package the ability to prevent unauthorized duplication for at least 35 years. Other countries may have similar copyright laws. Take a moment now to research what those laws might be for your country.
Programming and Scripting
Language Processors and Programming Languages
Some software classification schemes include language processors as a type of system software. Languages developed throughout the generations, from the earliest machine languages to high-level programming languages, are still widely used.
Assembly language is machine-dependent, yet mnemonics, that are being used to represent instructions are not directly understandable by machine and high-level language as machine-independent. A computer understands instructions in machine code (i.e., in the form of 0s and 1s).
Computer software is written mostly in high-level languages like Java, C++, and Python. The collection of instructions written in a programming language is called source code. Source code cannot be directly executed by the computer. Rather, source code requires a language processor, which is a special-purpose system software used to translate the source code into machine code.
Compilers
A compiler translates source code into machine language. A compiler checks source code for errors before translating it into object code. If the source code is found to have errors, the compiler specifies the errors. Errors must be resolved (also known as debugged) before the compiler can successfully recompile the source code. C, C++, C#, and Java programs need compilers to execute.
Interpreters
Interpreters translate and execute source code one line at a time. If the interpreter finds an error, the process is terminated at the statement containing the error and displays an error message. The error must be resolved before the interpreter will continue to the next line. Interpreters convert instructions one statement at a time when the program is run. Perl and Python execute using interpreters.
Common High-Level Programming Languages
Some common high-level programming languages are outlined below, with characteristics that make them unique or suitable for particular tasks.
| Language | Characteristics |
|---|---|
| C++ | Uses a vocabulary and a set of rules for instructing a computer to perform certain tasks. |
| Python | An easy to use programming language that does not require a compiler for debugging. |
| JavaScript | A programming language designed to enable user engagement with dynamic elements on web pages |
| Tcl | Often used in rapid prototyping and the creation of GUIs, Tcl is a simple and compact language but is also very powerful. |
| PHP | An all-purpose language that is especially suitable for web development. |
Algorithm
The mere term algorithm sounds complicated and somewhat intimidating, but an algorithm is simply a step-by-step formula outlining how to execute a task. If you have ever baked a cake, pie, or cookies, or followed a recipe to make a special entrée for family or friends, you have experienced a real-world example of an algorithm. An algorithm provides a specifically structured set of inputs (i.e., the steps of a recipe) required to produce a specific output (i.e., your cake, pie, cookies, or special entrée).
In the IT world, an algorithm is a set of well organized, computer-implemented instructions that often result in a computation or the solution to a problem. These computations can be simple or quite complex, depending on what the need is. Algorithms are even at the very heart of machine learning, and you will learn more about algorithms in the Scripting and Programming Foundations course later in this program.
An algorithm is a mathematical method of solving problems both big and small. Though computers run algorithms constantly, humans can also solve problems with algorithms. Watch the following video to learn how algorithms can be used in seemingly simple situations and also complex ones.