0% found this document useful (0 votes)
214 views46 pages

Platform Technologies Reviewer

The document discusses platform technologies and defines them as a strategic approach that focuses on systematically leveraging technologies across different applications. Platforms have become the dominant design paradigm for today's complex engineered systems. Key aspects of platform technologies include: 1) They provide core services that can be combined in different configurations to deliver customized solutions via a service-oriented architecture. 2) They allow for modularity and flexibility to deal with increasing technological complexity through plug-and-play components. 3) They enable end-users to innovate and adapt technologies through open APIs and platforms.

Uploaded by

Jax Rozen
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
214 views46 pages

Platform Technologies Reviewer

The document discusses platform technologies and defines them as a strategic approach that focuses on systematically leveraging technologies across different applications. Platforms have become the dominant design paradigm for today's complex engineered systems. Key aspects of platform technologies include: 1) They provide core services that can be combined in different configurations to deliver customized solutions via a service-oriented architecture. 2) They allow for modularity and flexibility to deal with increasing technological complexity through plug-and-play components. 3) They enable end-users to innovate and adapt technologies through open APIs and platforms.

Uploaded by

Jax Rozen
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 46

Lesson 1: Introduction to Platform Technologies

Technology platforms can be defined as a strategic approach that focused on how

to systematically leverage technologies across different applications. With the rise of

information technology and the ever-increasing complexity of our technology landscape,

platforms have become the design paradigm of choice for today's complex engineered

systems. We first saw the power of the platform model in the development of the personal

computer some twenty to thirty years ago as operating system providers built their

technology as a platform for software developers to create applications on top. But it was

not until the past decade with the widespread advent of the internet that the platform

model has truly come of age as virtually every internet company from the biggest search

giants to the smallest little social media widgets has started to define their solution as a

platform.

Platform technology is now the answer to major three questions of what barriers

exist for effective technology reuse, how to organize technological knowledge, and how

to assess the feasibility of a planned case of technology reuse.

By using the platform technology solutions can be built via a service-oriented

architecture by connecting up services from different providers, as technology developers

increasingly build products on top of other people’s platforms, count this as the first role

of the platform.

Secondly, complexity; to deal with this complexity of our technology paradigm will

require a move from the standalone solutions of today, into a world of systems where

smaller technologies are nested within larger ones in a plug and play, flexible, modular,

service-oriented architecture.

Thirdly, user-generated systems; increasingly end-users are becoming producers


and to harness this new source of innovation means closed systems have to open up;

creating APIs and platforms on which end-users can alter, adapt and innovate while being

supported by the core technology for interoperability with others.

Lastly, this platform allows the end-users to draw upon underlying services so that

they do not have to reinvent them each time and can thus develop and deploy their

buildings more rapidly. Fast-paced technology change and the demands of a new

innovation-driven economy require constant product evolution and much shorter

technology development cycles for which the platform model can prove well suited.

PLATFORM TECHNOLOGIES DEFINED

During the past few decades, with the rise of the Internet platforms, such as the

App Store or eBay, have proven to be some of the most dynamic, innovative, and fastest

growing services. But of course, the platform model to systems architecture has always

been there since the invention of farms and factories to the making of Lego building

blocks. When many people see a new technology at work, they don’t usually consider all

the pieces that went into its creation. They simply see the amazing capabilities and never

give it much thought. However, within advanced industrial economies, many products and

services are enabled by the power of abstraction. They are remixes, built out of services

from platforms that enable the endless bundling and re-bundling of different components.

Wikipedia defines a platform technology as a structure or technology from which

various products can emerge without the expense of a new process introduction. In order

to achieve this, our system needs to be architected to have two fundamentally different

levels, that is, it must have a platform providing the basic services that can be combined

into different configurations on the application level to deliver various instances of the
technology to the end-user.

Another definition of platform technologies according to Techopedia, is a group of

technologies that are used as a base or infrastructure upon which other applications,

technologies or processes are developed for the end-user. For example, in personal

computing, a platform is the basic hardware (computer) and software (operating system)

on which software applications can be run. Although the term is most readily identified

with information technology it, of course, applies to all type of technology. For example,

a city is another good model of a platform technology, with a core set of underlying

infrastructure services that are provided for building developers to construct modular

structures in the form of buildings on. This platform allows them to draw upon underlying

services so that they do not have to reinvent them each time and can thus develop and

deploy their buildings more rapidly.

Computers use specific central processing units (CPUs) that are designed to run

specific machine language code. In order for the computer to run software applications,

the applications must be in that CPU’s binary-coded machine language. Thus, historically,

application programs written for one platform would not work on a different platform.

Platform technologies are systems build upon a platform architecture that

distributes the system out into different levels of abstraction. This is done in order to

differentiate between core – platform – functions, and the application layer that sits on top

of, and draws upon, these underlying common services.

NON-PLATFORM TECHNOLOGIES

An example of a non-platform technology is a hammer, for it is a homogeneous

system. There is no differentiation between the system’s infrastructure and its application.
They are all just one thing. It is an instance of a hammer. It cannot generate new and

different configurations of itself. The same can be said of a car. It is an instance of a

technology. The end-user gets and uses the whole thing. To make the comparison

clearer, we could compare the instance of a car with an automobile platform that allows

a motor company to release several vehicles built upon a common chassis, which is the

platform, with different engines, interiors and form factors, for the same or different

vehicles and brands within the company.

POWER OF INTEROPERABILITY

Unlike traditional technologies Platforms are simply designed as individual

physical objects that perform a function, platforms are designed to be interoperable with

other systems, they will likely have external applications running on top of them all of

which cannot be fully foreseen by the developers of the platform. Let us analyze an IoT

platform for a house that will have to interoperate and work with many devices and

technologies in the house if it has to be successful at delivering the end service. This

dematerialized nature makes them non-excludable and non-rivalrous which creates a

very different dynamic. The result is one of increasing cooperation as most of the value

is no longer inside of the organization or technology but increasingly outside of it; the

value is increased in the system’s capacity to interoperate with other systems.

See the case of a smartphone that would not be very valuable if it could not connect

to the internet or run other people’s applications on it. Most of the value that the end-user

gets from their smartphone is not created by the original technology developer, but

instead by other people connecting into that platform and building things on it, or that

system connecting to others. With information technology, we can build once and deploy
many times, almost anywhere at a very little cost per extra unit.

The typical example is Facebook they can build their software platform once and

through the internet, it can be accessed and used as a service at extremely little extra

cost, per person, to them. Interoperability and collaboration between systems are the key

ingredients, and platforms facilitate this by allowing different technologies to plug into

each other and seamlessly draw upon their services. A platform technology architecture

– being open – is optimized for user-generated systems

The most successful technology providers of tomorrow will be those who are able

to harness this mass of new capacity and capabilities on the long tail by providing them

with the tools, know-how, methods, and connectivity to participate, and the platform model

is ideal for this.

CAPACITY OF BUNDLING

The abundant blessings of platform technology have been defined as a structure

or technology from which various products can emerge without the expense of a new

process introduction. This is achieved by defining a core set of building blocks and then

configuring them into different bundles depending on the context. Effective platform

technologies should work interdependently, where the platform provides the elementary

building blocks that are then bundled together on the application level to meet the specific

requirements of the end-user. Platform design goes hand in hand with a service-oriented

architecture, where developers of applications treat the building blocks as services that

they then simply string together in different ways to build their solutions like a Lego kit.

We can explain this idea as mentioned here, within just a few weeks, one could

create a new service by building a web application that draws upon services from Twitter,
for user identity, Ethereum for secure transactions, Alibaba for sourcing materials,

Upwork for staffing, etc. The fact that you don’t have to build all of these core components

yourself, you are just plugging them together means that you can easily and quickly

reconfigure them when needed. At the heart of the platform, a model is a distinction

between the basic functionalities of the technology and how those functions are

composed.

In precise technology companies going to be more technological and the individual

engineers or end users can join with these common platforms without much financial and

technological burden. It inspires us to be more inclusive rather than being exclusive of

our own adamancy.

TYPES OF PLATFORM TECHNOLOGIES

A platform technology is an environment for building and running applications,

systems and processes. These can be viewed as toolsets for developing and operating

customized and tailored services. The following are common types of platform

technology.

1. Operating Systems - Operating systems provide the basic services required to

use hardware. These are the lowest level of platform. Almost all software runs on

an operating system such as Linux with the only exceptions being low level

firmware and embedded systems.

2. Computing Platforms - Platforms built on top of operating systems that provide

computing functionality in areas such as cloud computing and virtualization. For

example, a cloud computing platform that allows you to scale your services by
adding and removing virtual machines as required.

3. Database Platforms - Cloud platforms for deploying and managing various types

of database such as relational, NoSQL and in-memory databases.

4. Storage Platforms - Platforms for scalable storage of objects and files including

APIs and value added services such as resilient storage that is backed up in

multiple locations.

5. Application Platforms - Application platforms are environments and toolkits for

developing and deploying applications, a class of software that is primarily

designed to be used by people. For example, a platform that allows developers to

build dynamic web applications by executing code and integrating with databases,

systems and APIs.

6. Mobile Platforms - Mobile platforms include mobile operating systems and

environments for building mobile apps. They also include cloud platforms for

building mobile backends that provide services to mobile apps. This may include

specialized APIs that are useful for mobile app developers in areas such as

location services and voice recognition.

7. Web Platforms - Platforms that provide services that are useful to websites and

web-based software as a service such as web servers, web application servers,

content delivery networks and edge computing.

8. Content Management Systems (CMS) - Platforms for publishing and managing

content, media and documents. These are often used internally in organizations

as an intranet site and document management system. They are also commonly

used to publish web content such as a newspaper, blog or corporate website.

9. Media Platforms - Platforms for media publishing and analysis with tools such as

video transcoding, streaming and recognition.


10. API Platforms - Cloud platforms for deploying APIs that are typically built around

an API gateway that performs functions such as load balancing, latency reduction

and rate limiting.

11. Analytics Platform - Services for capturing, processing, analyzing and visualizing

data. This may include tools for ingesting, processing, querying and managing big

data.

12. Security Platform - Security services such as firewalls, identity & access

management, directory services, certificates, compliance reporting, encryption,

key management and threat detection.

13. Robotics Platform - Robotics platforms may include an operating system for

robots with a framework for developing and deploying backend systems and

services for robots on cloud infrastructure.

14. Internet of Things (IoT) - Internet of things platforms may include an operating

system for devices and a cloud platform with specialized APIs for internet of things

in areas such as device management, IoT security and analytics.

15. AI Platforms - Services that are based on AI such as a voice synthesis service

and tools for building your own AI such as a machine learning API. This may also

include environments for running your AI that are optimized for machine learning

such as a machine learning database.

16. Game Platform - Environments that are optimized for running game services such

as backends for mobile games or massively multiplayer online games. These may

include services such as 3D game engines, AR and VR APIs.

Lesson 2: Foundation of Platform Technologies


ABSTRACTION

The key to the platform technology architecture is abstraction, as all platform

technologies involve two distinctly different levels to their design with these different levels

defined according to their degree of abstraction. Abstraction is the quality of dealing with

generic forms rather than specific events, details or applications. In this respect,

abstraction means removing the application of the technology from the underlying

processes and functions that support that application. The platform is an abstraction,

meaning that in itself it does not have application. For example, you might rent a cloud

platform from a provider but in itself, this is absolutely no use to an end-user they cannot

do anything with it. Platforms are composed of generic processes that do not have specific

instantiation. The application is designed to bundle these underlying resources and turn

them into a real instance of an application that can be applied in the real world.

In the auto industry, for example, a car platform is a shared set of common design,

engineering, and production models from which many different specific models can be

created. In this way the car companies have abstracted away from any specific type of

car to create a two-tiered system; one level being generic the other specific to any

instance of that model. This is a central aspect of the platform model, the creation of a

generic form or set of services, on the underlying platform level, and then on the

application level these services are bundled into different configurations and customized

to the specific needs of the end-user. In such a way a finite amount of reusable abstract

building blocks can be bundled and re-bundled on the application layer.

This use of abstraction works to remove the complex for the application

developers. By moving core services down to the platform level application developers
can simply plug into these services and build their applications on top of it, thus working

to greatly simplify the complexity they encounter. We can think about a house as a

platform, once there are common protocols, IoT platforms for houses will be built where

any device, technology or item that enters into the house can then connect into the

platform and become an application, the house platform can then manage these

applications, providing them with infrastructure services and present them as an

integrated solution to the house occupants.

This core idea of abstraction is very powerful and can be applied to our entire

technology landscape, with smaller more specific technologies sitting on top of others that

work as the platform supporting them which, in turn, may also sit on top of others that

support them. For example, smart cities will become platforms with houses being

applications that draw upon the common physical and information resource made

available - such as parking, water, electricity etc - but also the house itself will be a

platform for all of the technologies within it delivering services to them. Each layer in the

hierarchy bundles the resources provided to it from that below and delivers those

resources as a service to the applications that sit on top of it.

LEVELS OF ABSTRACTION

Probably the clearest and best example of platform technologies are personal

computers. Let’s spend some time taking one of this computers to pieces to better

understand the different level of abstraction into a platform technology.

The platform, in this case, is the computer’s operating system. But before we can

get to the platform that’s doing all the great work, we need a foundation for it to sit on,
that is, a set of enabling technologies.

1. Foundation Layer (Hardware)

In this case, our foundation layer is our computer hardware and all the low-

level firmware that interfaces between it and the operating system. But within a

business, our foundation layer might be the economic system it is a part of, the

public services such as security, rule of law and maintenance of natural resources

that would enable our business to function. The same would be true of a city. It

rests upon and is enabled by a national infrastructure system.

2. Platform Layer (Operating System)

The next layer up from the foundations or hardware is the platform itself,

the computer’s operating system in this case. It essentially manages the

computer’s resources and services that will be required by applications. The

platform takes the resources available to it from the infrastructure and creates the

Lego blocks that we will be used to build things with. These resources are

presented to producers on the application level through APIs, or application

program interfaces.

In an automotive factory, the platform would be the physical technologies in

the production line for creating the car’s parts. The employees can rearrange this

production line to create different vehicles. In the example of a city, this platform

level might be the urban utilities that contractors will interface with to build offices

and residential spaces, and there will be a standard set of procedures for them to
do this.

3. Application Layer

On top of the operating system lies the application layer. Developers draw

on the services provided by the operating system and bundle them in various

different combinations to deliver a finished application to the end-user. Apps in the

App Store, the cars coming off of our production line, the buildings in a city or the

financial products offered by a bank are examples of the application layer, endless

configurations, and reconfigurations in response to the perceived needs and

feedback of the end-user.

4. User Interface Layer

Lastly, the user interface layer. When the end-user switches on their

computer, they don’t want to see 0’s and 1’s or lines of code. They want to see

things they understand, pictures of files, and nice drop down menus. The majority

of people who interface with the systems we are architecting will do so, so as to

get the maximum functionality out with the minimum input of effort. In order for

them to do this, we need a layer that translates the internal logic of the system into

a language they understand. This interface might be the dashboard on our car or

the receptionist in our hospital telling people where to go. Whatever it is, it is all

about the end-user, the language they speak, what they need, and how to translate

the systems functionality into a solution that involves the participation of the end-

user.
In continuing with our analogy from the world of I.T. we might call this a solution

stack, the full set of subsystems and layers of abstraction to provide the platforms full

functionality without dependencies. An important thing to note is that as we go up each

level of abstraction towards the end-user, we are simplifying the complexity and level of

engagement required. Those working on the platform level require a deep understanding

of the system and have to deal with its full complexity but are relatively unconstrained.

Those who engage with the system on the application and user level are

constrained by what the platform providers have designed, but being enabled by this

technology they will be able to do more with less input and engagement.

The net result is that we should get an amplification effect as we go up the solution

stack due to the increased ease of engagement. Thus, there will be many more

application developers than there are operation systems developers, and there will, in

turn, be many more end-users than there are application developers, and this should be

the case wherever we are using this platform model to systems architecture.

IMPORTANCE OF PLATFORM TECHNOLOGIES

Why should we care about platform technologies? There are a number of reasons

this architecture should be of benefit to us. Firstly, by distributing the system across

multiple layers, we can abstract away the complexity that users or producers of the

service have to deal with. Everything gets its own space. Secondly, we can avoid

redundancies by having the platform provide the common services required by all

components. We can reduce the need for each component on the application layer to re-

invent the wheel. Thirdly, platforms are the ideal architecture for creating user-generated
systems. Thus, we can leverage the amplification effect we discussed earlier to do more

with less, helping to maintain an agile core system. And lastly, the platform architecture

is ideal for building flexible, adaptive, and evolutionary systems. Given its independence

from fixed instances, the system can stay innovating on the application level to continue

regenerating itself.

CHAPTER 2: OPERATING SYSTEMS AND

APPLICATION PROGRAMS

A computer system may be composed of multiple resources either a hardware

or software, which may be required to complete a task. The most important software

that must be installed to any type of computers is the operating system. The operating

system is acting as a manager of the hardware resources and allocates them to

specific programs and users, whenever necessary to perform a particular task.

Therefore the operating system is the resource manager which could manage the

resource of a computer system internally.

The course aims to explore the importance of the operating system and its

function. The course also explores how application interacts with the operating system

and how the operating systems interact with the machine. Also, the course shed light

on some of the existing operating systems and how the topics taught in the course are

applied in these systems. This course also provide an overview of computer operating

systems being used by the majority of users nowadays. This unit includes topics about
examples of operating systems for personal computers and its application programs.

At the end of this module, student will be able to install, troubleshoot, repair and

maintain operating systems installed on computers.

Lesson 1: Computer Softwares

Computer Softwares

Every day we interact with software created by expert software development

companies that helps us perform tasks and increase our efficiency. From the Microsoft

Windows that greets us when we turn on the computer to the browser we use to surf

the web, and the application on our smartphone that guides us on how many calories

we burn today. Each one of these different types of software helps us perform our day

to day tasks either directly or indirectly.

Computer Software is a general term for the various kinds of programs used to operate

computers and related devices. It is considered as a collection of instructions that

enables the user to interact with a computer, its hardware, or to perform tasks. Related

terms such as software programs, applications, scripts, and instruction sets all fall

under the category of computer software. Therefore, installing new programs or

applications on your computer is synonymous with installing new software on your

computer.

Software is an indispensable part of the machine you cannot see, but it allows

you to use the computer - just like how a mouse, monitor, hard drive and keyboard

help you use the computer. Some common examples of software include Microsoft

Word, Adobe Photoshop, Adobe Reader, Google Chrome, Gmail, PowerPoint, VLC,
and many other similar computer programs that we often use in our daily life.

Figure 3.1. Some Softwares Installed on Computers

Source: https://www.goodcore.co.uk/blog/wp-content/uploads/2019/08/types-of-software-
1024x439.png

Computer software is also defined as a set of instructions and associated

documentation that tells a computer what to do or how to perform a task. Software is

the instructions that the computer follows. It enables the user to interact with a

computer and its hardware. Without software, most computers would be useless. For

example, without your Internet browser software, you could not surf the Internet.

Without an operating system, the browser could not run on your computer.

The word software was first used in the late 1960s to show the difference from

computer hardware, which are the parts of a machine that can be seen and touched.

Before compact discs (CDs) or Internet downloads, software came on various

computer data storage media like paper punch cards, magnetic discs or magnetic

tape.

If you compare computers to music and musical instruments you can think of

hardware as being the instruments and software being the musical notes.

Types of Computer Software

Computer software can be put into categories based on common function,

type, or field of use. There are two broad classifications:

1. Application Software

Application software is used to accomplish specific tasks other than just running

the computer system. Application software products are designed to satisfy a


particular need of a particular environment. For example, all software applications

prepared in the computer lab can come under the category of application software.

Figure 3.2. Examples of Application Softwares

Source: https://linuxrocks.online/system/media_attachments/files/000/998/104/original/
63b9d5860eaeea15.jpg

Application software may consist of a single program, such as an image viewer;

a small collection of programs (often called a software package) that work closely

together to accomplish a task, such as a spreadsheet or text processing system; a

larger collection (often called a software suite) of related but independent programs

and packages that have a common user interface or shared data format, such as

Microsoft Office, which consists of closely integrated word processor, spreadsheet,

database, etc.; or a software system, such as a database management system, which

is a collection of fundamental programs that may provide some service to a variety of

other independent applications.

As a user of technology, application software or ‘apps’ are what you engage

with the most. These types of computer software are productive end-user programs

that help you perform tasks. Following are some examples of application software that

allow you to do specific work:

2. System Software

System software helps the user, hardware, and application software to interact

and function together. These types of computer software allow an environment or

platform for other software and applications to work in. This is why system software is
essential in managing the whole computer system.

If we think of the computer system as a layered model, the system software is

the interface between the hardware and user applications. It is responsible for

controlling, integrating, and managing the individual hardware components of a

computer system so that other software and the users of the system see it as a

functional unit without having to be concerned with the low-level details such as

transferring data from memory to disk, or rendering text onto a display.

The system softwares are designed to operate, control, and extend the

processing capabilities of the computer itself. It is generally prepared by the computer

manufacturers. These software products comprise programs written in low-level

languages, which interact with the hardware at a very basic level. In layman terms,

system software simply serves as the interface between the hardware and the end

users.

Generally, system software consists of an operating system and some

fundamental utilities such as disk formatters, file managers, display managers, text

editors, user authentication (login) and management tools, and networking and device

control software. Some examples of system software are Operating System,

Compilers, Interpreter, Assemblers, etc.

Application Software Type Examples

Productivity Tools / Application Suite (A

collection of related programs sold as a

package.)
Microsoft Office, OpenOffice, StarOffice,

LibreOffice

Multimedia Software (Tools used for a

mixture of audio, video, image and text

content.)

Adobe Premier, Adobe Flash, Microsoft

Video Editor, KineMaster

Media Players (Tools used to play audio or

video files.)

VLC Media Player, GOM, Windows Media

Player, Real Player

Internet Browsers (Used to access and

view websites.)

Microsoft Edge, Mozilla Firefox, Google

Chrome, Safari, Opera

Communication Softwares (Tools that

connect systems and allow text, audio, and

video-based communication.)
Google Meet, Zoom, OBS, Cisco WebEx,

Skype

Database software (Used to store data and

sort information.)

Microsoft Access, SQL

Antivirus Program (Tools that lets you

protect your system from malicious threats)

Windows Defender, Avira, Avast, Norton,

PC-cillin, McAfee

Figure 3.3. Examples of Operating Systems

Source: https://major-world.com/0-img4/operating-systems.jpg

Operating systems are good examples of system software. All of your

computer-like devices run on an operating system, including your desktop, laptop,

smartphone, and tablet, etc. Here is a list of examples of an operating system. Let’s

take a look and you might spot some familiar names of system software:

Devices Operating System


Computers (Desktop or Laptop) Microsoft Windows

Apple Mac OSX

Linux

UNIX

Oracle Solaris

Mobile Devices (Mobile Phones, Tablet

PC)

Apple’s iOS

Google’s Android

Windows Phone OS

Bada

Blackberry

FireFox

Appliances (Smart TV) RokuTV, WebOS, Android TV, Tizen,

Amazon Fire

Other than operating systems, some people also classify driver software and

programming software as types of system software.

● Driver Software

Driver software is often classified as one of the types of system software. They

operate and control devices and peripherals plugged into a computer. Drivers are
important because they enable the devices to perform their designated tasks. They do

this by translating commands of an Operating System for the Hardware or devices,

assigning duties. Therefore, each device connected with your computer requires at

least one device driver to function.

Since there are thousands of types of devices, drivers make the job of your

system software easier by allowing it to communicate through a standardized

language. Some examples of driver software that you may be familiar with are:

● Printer Driver

● Mouse Driver

● Network Card Driver

Usually, the operating system comes built-in with drivers for mouse, keyboard,

and printers by default. They often do not require third-party installations. But for some

advanced devices, you may need to install the driver externally.

● Programming Software

Programming software is the type of software that is not used by end-users. It is

not for you unless, of course, you are a programmer who writes code. Programming

software are programs that are used to write, develop, test, and debug other software,

including apps and system software. For someone who works at a software

development company, for example, this type of software would make their life easier

and efficient.

Programming software is used by software programmers as translator programs.

They are facilitator software used to translate programming languages (i.e., Java, C++,
Python, PHP, BASIC, etc) into machine language code. Translators can be compilers,

interpreters and assemblers. You can understand compilers as programs that

translate the whole source code into machine code and execute it. Interpreters run the

source code as the program is run line by line. And assemblers translate the basic

computer instructions – assembly code – into machine code.

Figure 3.4. Commonly Used Programming Softwares

Source: https://miro.medium.com/max/1080/1*mzJZ1cxIt9rndKncuigc0A.jpeg

Choosing a Computer Software: Proprietary vs FOSS

Do we really need to pay for everything that we use? Well, that’s not always

true, especially when we talk about software. This world gives us the opportunity to

get software free of charge that is available for everyone. It doesn’t mean less quality

or usability comparing it with those we pay. In this lesson, we will compare Free and

Open Source Software vs. Proprietary Software to know the advantages and

disadvantages, examples, and how you can use them in the best way.

Having the right type of software is essential for running a business as efficiently

as possible in the global marketplace. When it comes to choosing software for

business purposes, or even creating a website, you generally have one of two choices

when it comes to choosing a software platform. You can choose to use proprietary

software that is trademarked and likely requires you to obtain or purchase a license,

or you can use a free and open-source software (FOSS), which is free software that

you can download and pay no licensing fees to use. Wondering whether you should
use proprietary software like Adobe Photoshop and Microsoft Windows or open-

source platforms like GIMP and Linux? Deciding between the two isn't easy. Both

proprietary platforms and open platform systems have their strengths and

weaknesses.

● Free and Open Source Software (FOSS)

In the early days of information technology (IT), computers were delivered with

operating systems and basic application software already installed, without additional

cost, and in editable (source code) form. But as software emerged as a stand-alone

product, the independent software vendors that were launched to take advantage of

this commercial opportunity no longer delivered source code, in order to prevent

competitors from gaining access to their trade secrets. The practice also had the result

that computer users became dependent on their software vendors for support and

upgrades.

Due to the increasingly substantial investments computer users made in

application software, they also became "locked in" to their hardware, because of the

high cost of abandoning, or reconfiguring, their existing application software to run on

the proprietary operating system of a new vendor. In response, a movement in support

of distributing human-readable source code as well as the legal right to modify, share

and distribute that code, together with the usual, machine-readable object code,

emerged in the mid-1980s.

In 1983, Richard Stallman launched the GNU Project to write a complete

operating system free from constraints on use of its source code. Particular incidents

that motivated this include a case where an annoying printer couldn't be fixed because

the source code was withheld from users.


Richard Stallman developed the “free and open source software”- a software

which could be copied by others and made changes too as they pleased. Open source

software can be defined as software distributed under a licensing agreement which

allows the source code (computer code) to be shared, viewed and modified by other

users and organizations. According to him, a software to be considered as FOSS,

should consists the four essentials for freedom:

1. Freedom to run the program whenever you wish (free to use)

2. Freedom to study the source code of the program and change it to make a

program that do what you wish (free to modify)

3. Freedom to distribute the copies of the program to others (free republication

/ recopy)

4. Freedom to distribute the copies of the modified version

In a few words, it is a kind of software that is available for everyone in the world

to use, and it has the peculiarity that its code is open to developers. This makes

possible that developers can change the code until it works the best for a specific

project they are participating in. Engineers, customers, even developers love this kind

of software because they can save effort, work, and time using something that was

already developed. And as if this wasn’t enough, they can personalize this main code

and adapt it to their necessities.

The most well-known example of open source software is the Linux operating

system, but there are open source software products available for every conceivable

purpose.

Open source software is distributed under a variety of licensing terms, but

almost all have two things in common: the software can be used without paying a
license fee, and anyone can modify the software to add capabilities not foreseen by

its originators.

Figure 3.5. Examples of Free and Open Source Softwares

Source: https://blog.topfreeware.com/wp-content/uploads/2018/02/software_tree.png

Open Source and Free Software

Although it seems to be the same, they aren’t. Open Source Software, how we

saw, it is a software you can modify and adapt it to your necessities. While free

software, commonly, cannot be transformed. You can use it for free but only with

qualities or features with it was created. It is not flexible at all.

Typically, free software refers to a software that you can use without incurring

any costs. Unlike open source software, free software offers minimal freedom to the

end user. Whereas it can be used free of charge, often modification, redistribution, or

other improvements cannot be done without getting permission from the author. As

such, free software is often shared without including its source code, which is atypical

to open source software.

Two of the most common types of free software are Skype and Adobe Acrobat

Reader. While both programs are free to use, their source codes are unavailable to

the public. Most developers usually market free software as freemium with the

intention of encouraging users to buy a more capable version. Freemium refers to a

program that is offered at no cost, but money (premium) is paid for extra, more capable

features.

● Proprietary Software
Proprietary software on the other hand in its mass distribution reserves all rights

to the author except a license to run the software on the purchaser's computer. Herein,

the software developers attempt to prevent outsiders from gaining access to their

source code, this in order to protect the sole right of the proprietor to add features or

correct defects. The licensor issues licenses to the users who are willing to use the

proprietary software in order to prohibit the users from modifying, copying or

redistributing the software to other users. This strategy creates a 'lock in' effect where

the user is forced to purchase the upgrades solely from the proprietor or abandon the

product entirely.

Microsoft Office, Dropbox, AutoCAD and McAfee VirusScan are all examples

of proprietary software. Most business owners and entrepreneurs use these programs

on a regular basis. Some proprietary softwares requires a monthly or yearly

subscription.

Commercial, proprietary software typically has specific features and

capabilities. It appeals to a specific audience and aims to provide a superior user

experience. These programs usually include regular upgrades, technical support and

a wide range of tools. They also tend to be easier to use and provide greater

functionality than open platforms.

Figure 3.6. Examples of Proprietary Softwares

Source: https://3.bp.blogspot.com/-mllCaS1S06I/Vq5hFx_1BoI/AAAAAAAAAA4/lEb0g-9qx44/s1600/
as.jpg

These products belong to the individuals or companies that developed them.

Their source code is not available to the public. They're constantly updated to detect

and remove bugs and vulnerabilities, but these updates often come at a price.
Developers are aware of the latest industry standards and incorporate these concepts

into their programs.

Unlike open source software, the internal structure of proprietary software is not

exposed and the restrictions are imposed upon the users by the End User License

Agreement (EULA), the conditions of which are to be legally followed by the end users

regarding the software. Let’s see below the major differences between free and open

source software and proprietary software.

Free and Open Source Software

(Linux, Android, OpenOffice, GIMP,

Firefox)

Proprietary Software

(Windows, iOS, MS Office, Adobe

Photoshop, Safari)

Purchased with its source code. Purchased without its source code.

Users can get open software for free of

charge.

Users must pay to get the proprietary

software.

Users can modify the software. Users cannot modify the software.

Users can install software freely into any


computer.

Users must have a license from the

vendor before installing into any

computer.

No one is responsible for the software. Full support from the vendor if anything

happened to the software.

Users can distribute the softwares to

others.

Softwares is protected by laws through

copyrights.

Computer Software License

Knowing the different software license types is crucial for any business owner.

If you intend to create and distribute software, or if you plan to utilize software in your

business, being aware of the different forms of licensing uses can be a critical part of

your business structure.

A software license is a document that provides legally binding guidelines for the

use and distribution of software. Software licenses typically provide end users with the

right to one or more copies of the software without violating copyrights. The license

also defines the responsibilities of the parties entering into the license agreement and
may impose restrictions on how the software can be used.

Software licensing allows an individual or group to use a piece of software. It is

a form of contract between a person in a company that creates a type of software and

the person who downloads or buys the software to use for his or her own purposes.

There are a variety of types of software licenses. Some are based on the number

machines on which the licensed program can run whereas others are based on the

number of users that can use the program. Most personal computer software licenses

allow you to run the program on only one machine and to make copies of the software

only for backup purposes. Some licenses also allow you to run the program on different

computers as long as you don't use the copies simultaneously.

Software licensing exists to protect a copyright of software and can restrict the

way that the user can use it. In general, the restrictions consist of copying the software

or having it installed on more than one device.

Making any changes to the software or altering the code is also a violation of a

software license. Any software that has a copyright and is covered by a license is done

through different methods, meaning there are different types of licensing that can be

used.

Software License Types

1. Individual Software Licenses

● Perpetual. This lets the customer install and utilize the software for an

indefinite amount of time. There is limited technical support, typically 90

days.

● Subscription. This license lets the user utilize the software for a certain
amount of time. It will include technical support and allows the user to

access upgrades or patches that are offered during the subscription

period. At the end of the subscription, the user has some different

options, such as:

○ Renew the subscription

○ Buy a perpetual license at a discount

○ Remove the software from the device

● Freeware. This license is provided by the creator that lets the user use

the software for free without paying any fees.

● Shareware. This allows for a trial period of software use. If the user likes

it, they can then pay a shareware fee or discontinue use of the software.

2. Special Channel Licenses

● Original Equipment Manufacturer (OEM). A license that covers

software for notebooks and stand-alone personal computers that have

to remain bundled alongside the computer system and may not be sold

as a stand-alone product.

● Educational Software. This is any software that is labelled for

distribution to students and educational institutions at a reduced cost. It

is labelled for such use.

● Not for Resale. This license specifies that it is made available by

vendors of the software to the distributor and is marked NFR. It is not

licensed for commercial distribution.

● Concurrent Use. This license will require you to buy a license for all of

the people who will be using the software at the same time.
3. Individual and Multi-users License

● Volume License. This allows you to install software on a specific

number of computers. You will be required to make a minimum purchase

to get a reduced price. When you buy the licenses, there is one copy of

the software and instructions on what to do when you want to buy more.

● Site. It provides you access to the software at a certain location.

4. Network and Multi-user License

● Server License. Provides for a license per each server. It requires you

to have one copy remaining on your file server. A certain number of client

access licenses are offered per server. There is a set number of devices

that can access the software per server.

● Per Seat. Provides for a license per each machine. You will need to buy

a license for every computer or device using the software.

● Per Processor. You will buy a license for every processor on the server

that is running the software. It will include access for an unlimited number

of users. You will not need to buy anything additional.

● Per Mailbox. This is for education customers. If you are using an

exchange server, you can also deploy a license through mailbox mode.

EULA vs Free Software Licenses

Most software available today is licensed, not purchased. Consumers have no

shortage of products to consider, and those with good programming skills often choose
software with open code so they can add their own features and functionality.

Generally, items with closed code are licensed through End User License

Agreements (EULA) while open code products use one of the many Free Software

License forms. These agreement types have vast differences between them because

they grant different rights and duties.

● End User License Agreement

The EULA (End User License Agreement) is a contract between the software

developer or publisher and a potential user. By means of this contract it is established

that the developer of the software is its de facto owner, and that a copy of the

respective software bought from a vendor (or downloaded from the Internet) only

licenses it to a user. It establishes the user’s right to use the software via a limited

license that is being purchased.

The end user is only allowed to use it as long as certain terms are respected,

and is also prohibited from any alterations or uses of the software without the specific

consent of its rightful owner, the software company/developer. Users must agree to

the terms of the EULA in order to use the software.

● Free Software License

A Free Software License is a notice that gives the software user rights to modify

the software that’s provided for free. Users don’t need to agree to anything, as this

type of license basically declares, “I grant you the permission to copy and modify this

software as you want.”

Key Differences in Licensing

1. Ownership
When a software distributor wishes to retain full ownership of the

software and only provide limited-use licenses, a EULA will be used. EULA’s

will include a clause that covers ownership, proprietary rights, copyright notices

and trademark rights.

Free Software Licenses are used when the software owner does not

wish to retain exclusive ownership rights. However, there will be copyright

ownership in the original source code, and the Free Software License will

require that modified versions of the software still refer to the original creator’s

copyright.

2. Rights Granted

A EULA will tell users what they cannot do, while a Free Software

License will tell users what they can do.

A EULA grants very limited rights. A license under an EULA is typically

non-exclusive, non-transferable, revocable and comes with a number of

restrictions, such as:

● No reverse engineering or modifying the software.

● No reselling or distributing the software.

● No commercial use of the software.

A Free Software License is very much the opposite. it typically grants

unrestricted and full rights to modify, alter, sub-license and distribute the

software, so long as the original copyright information is included in any

modifications, as noted earlier.

3. Obligations and Duties


EULA’s come with far more obligations and duties than Free Software

Licenses. A EULA usually spells out obligations and duties of users in order to

use the license. These typically include payment of fees and subscriptions, as

well as agreeing to and adhering to all of the EULA terms or risking license

termination.

Free Software Licenses rarely impose obligations, and when they do

they’re minimal.

4. Acceptance of Terms

When a software distributor wishes to retain full ownership of the

software and only provide limited-use licenses, a EULA will be used. Because

a EULA is a contract between the software distributor and the user, the user

must formally accept its terms and conditions. Because a Free Software

License is a notice and not a contract, no acceptance is needed.

5. Liability

Both EULA’s and Free Software Licenses will include warranty

disclaimers and limitations of liability. This is because all software comes with

risks, and the main distributor will wish to limit his legal liability for them,

regardless of whether the software is provided for free or for a fee.

End User License Agreement

Free Software Licenses

A contract between distributor and


software user.

A notice to users of software.

Must be accepted by users. Does not need to be accepted by users.

Distributor retains full ownership. Distributor does not retain full ownership.

Grants a limited license, describing what

cannot be done.

Grants a broad open license, describing

what can be done.

Are long, detailed and specific. Are very short and general.

Designed for specific products and

product lines.

Designed to apply to all open code

software.
Lesson 2: Operating Systems

Operating System Concepts

During the early time, the definition of an operating system is simply “a software

that controls the hardware”. However, today we need a better definition for this. We

can see now an operating system as the programs that make the hardware usable. In

brief, an operating system is now considered as the set of programs that controls a

computer and allows other programs to run. It consists of system software, or the

fundamental files your computer needs to boot up and function. Every desktop

computer, tablet, and smartphone includes an operating system that provides basic

functionality for the device.

An operating system is defined also as a set of programs containing instructions

that coordinate all the activities among computer hardware resources. It acts as an

intermediary between the user of a computer and the computer hardware thus,

providing an environment in which users can execute programs. The primary goal of

an operating system is to make the computer system convenient to use and its

secondary goal is to use the computer hardware in an efficient manner.

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 operating system is the most important program that runs on a computer.

Every general-purpose computer must have an operating system to run other

programs and applications. Operating systems provide a software platform on top of

which other programs, called application programs, can run. The application programs
must be written to run on top of a particular operating system. Your choice of operating

system, therefore, determines to a great extent the applications you can run.

The computer system can be divided into four components: the hardware,

software (the operating system & the application programs), dataware and the users.

Try to review the abstract at the figure below. As you can see, the operating system

controls and coordinates the use of the hardware among the various application

programs for the various users. User1, User2, User3 ... UserN may execute the

different application software such as the use of a compiler, the word processing

software, or even a database system.

In computer system, the hardware – the central processing unit (CPU), the

memory, and the input/output (I/O) devices – provides the basic computing resources.

The application programs-such as compilers, database systems, games and business

programs- define the ways in which resources are used to solve the computing

problems of the users. Accordingly, there may be many different applications

programs.

Functions of an Operating System

Most operating systems regardless of the size of the computer performs the

following functions:

Figure 3.8. Functions of Operating System

Almost all computers, including handheld computers, desktop computers,


supercomputers, and even video game consoles, use an operating system of some

type. Numerous operating systems have been developed over the years, but only a

few are widely used.

Microsoft Windows is the dominant family of operating systems for personal

computers, with a share generally estimated at in excess of 90 percent worldwide.

However, its shares are much smaller for other types of applications, such as

mainframes, servers and embedded devices.

Some of the oldest models may however use an embedded operating system

that may be contained on a compact disk or other data storage device. An embedded

device is a combination of computer hardware and software that is built into some

other product, such as an electric appliance, industrial production equipment, cell

phone or disk drive. For other devices, an operating system creates the ability to serve

a variety of purposes, interact with users in more complicated ways and keep up with

needs that change over time.

Not all computers have operating systems. The computer that controls the

microwave oven in your kitchen, for example, doesn't need an operating system. It has

one set of tasks to perform, very straightforward input to expect (a numbered keypad

and a few preset buttons) and simple, never-changing hardware to control. For a

computer like this, an operating system would be unnecessary baggage, driving up

the development and manufacturing costs significantly and adding complexity where

none is required. Instead, the computer in a microwave oven simply runs a single hard-

wired program all the time.

The User Interface


Every operating system we use uses a user interface. A user interface is

provided to control how you enter data and instructions and how information displays

on the screen. There are different major types of user interfaces, they are as follows:

1. Command Line Interface (CLI)

A type of user interface wherein the user enters the commands at the keyboard

and the program responds by operating in a specific manner. In the early days of

personal computers, all PCs used command-line interfaces.

Example: MS – DOS (At DOS prompt you type C:\>ver, which means that you want

to view the version of Windows you are currently using.)

2. Menu-Based Interface

A type of user interface wherein the commands for the programs are typically

given via menu selections. The user is offered a simple menu from which to choose

an option. One menu often leads to a further menu. Part of the screen may have an

instruction followed by a numbered list of options to choose from. A choice of

command words can be activated by typing a letter, pressing a direction key or pointing

with a mouse.

Figure 3.10. Mac OSX Desktop Environment

3. Graphical User Interface (GUI)

A graphical user interface (GUI) is a type of user interface through which users

interact with electronic devices via visual indicator representations wherein the

programs and commands are represented in graphical forms called icons. A good
example of this type of user interface is Microsoft Windows.

Figure 3.11. Microsoft Windows Start Menu

4. Voice User Interface (VUI)

It explores the concept of a handheld computer that has no keyboard or visual

display, but uses a speech interface instead. Information is stored in an audio format,

as opposed to text, and accessed by issuing spoken commands instead of typing.

Feedback is also provided aurally instead of visually.

Virtual assistants, such as Siri, Google Assistant, and Alexa, are examples of

VUIs. The primary advantage of a VUI is that it allows for a hands-free, eyes-free way

in which users can interact with a product while focusing their attention elsewhere.

There are two major types of voice user interface, they are the speech

recognition and the voice recognition program. Voice recognition and speech

recognition are terms that are interchangeably used. However, they both refer to

completely different things.

Speech recognition is a broadly applied term that generally means a system

that recognizes one’s speech patterns and turns those patterns into something else,

such as an action (commands) or words on the screen (dictation).

Speech recognition programs are used for general dictation, transcribing, using

a computer hands-free, medical transcription, automated customer service, etc. We

can say that this type of voice operated program is being used for accessibility.

While on the other hand, voice recognition is a process by which a system

recognizes the individual characteristics of one’s voice. Like on old operating systems
such as Mac OS 9 that had a feature where you could unlock your computer using

your voice.

The key difference between voice recognition and speech recognition is the

computer doesn’t know what you said, but it knows it’s you. It’s sort of an audible

fingerprint. Voice recognition’s main feature is for security.

5. Web-Based User Interface

It accepts input and provides output by generating web pages which are

transported via the internet and viewed by the user using a web browser program or

any application that requires internet connection.

A web-based user interface allows the user to interact with content or software

running on a remote server through a web browser. The content is downloaded from

the web server and the user can interact with this content in a web browser, which

acts as a client.

6. Touch Interface

Touch Interfaces are graphical user interfaces using a capacitive touchscreen

display as a combined input and output device. Capacitive touchscreens instead

sense conductivity to register input – usually from the skin on your fingertip. Because

you don’t need to apply pressure, capacitive touchscreens are more responsive than

the other type of touchscreens. They are commonly being used in vertical market

appliances, self-service machines, tablet PCs, mobile devices, and other modern

electronic devices.

7. Point User Interface (PUI)


This type of interface is somewhat similar to Touch Interface. Instead of using

a capacitive touchscreen, it uses another type of touchscreen display known as

resistive touchscreen. Resistive touchscreens rely on the pressure of your fingertip –

or any other object, such as stylus – to register an input. They are also being used in

different electronic devices such as vertical market appliances, self-service machines,

tablet PCs, mobile devices, gaming consoles, media players, etc.

8. Gesture Interface

A type of user interface that recognizes gestures sketch with the user’s hands,

stylus, remote control or a mouse. Gestures can originate from any bodily motion or

state but sometimes originate from the face or hand. It interfaces with computers and

other devices using gestures of the human body, typically hand movements. In gesture

recognition technology, a camera reads the movements of the human body and

communicates the data to a computer that uses the gestures as input to control

devices or applications.

9. Touchless User Interface (TUI)

This is a type of user interface which is an emerging type of technology in

relation to gesture control. It is the process of commanding the computer via body

motion and gestures without touching a keyboard, mouse, or screen. Good examples

of this interface are found on some modern mobile phones which has a feature called

“air gesture” which can open a program or application, access menus or even activate

a button.

For example, Microsoft's Kinect is a touchless game interface; however,


products such as the Nintendo Wii are not considered entirely touchless because they

are tethered to controllers. Touchless interfaces in addition to gesture controls are

becoming widely popular as they provide the abilities to interact with devices without

physically touching them.

Types of Operating System

OS are classified into different types depending on their capability of processing

- (1) Single user and Single Task, (2) Single user and Multitasking, (3) Multi User, (4)

Multiprocessing, (5) Real time OS, and (6) Embedded Operating Systems.

1. Single User and Single Task Operating System

As the name implies, this operating system is designed to manage the

computer so that one user can effectively do one thing at a time. It is for use by a

single user for a standalone single computer for performing a single task. Operating

systems for Personal Computers (PC) are single-user OS. For example, if the user is

editing a document, then a document cannot be printed on the printer simultaneously.

Single user OS are simple operating systems designed to manage one task at a time.

MS-DOS is an example of a single user OS.

Figure 3.18. A user performing a single task using the MS-DOS program

2. Single User and Multitasking Operating System

This is the type of operating system most people use on their desktop and

laptop computers today. It allows execution of more than one task or process

concurrently. For this, the processor time is divided amongst different tasks. This

division of time is also called time sharing. The processor switches rapidly between

processes. For example, the user can listen to music on the computer while writing
an article using word processor software. The user can switch between the

applications and also transfer data between them. Windows 10 and all other versions

of Windows are examples of multitasking OS.

3. Multi User Operating System

A multi-user operating system allows many different users to take advantage of

the computer's resources simultaneously. It is used in computer networks that allow

same data and applications to be accessed by multiple users at the same time. The

users can also communicate with each other. Linux, UNIX, and server version of

Windows are examples of multiuser OS.

4. Multiprocessing Operating System

A multiprocessing operating system (OS) is one in which two or more central

processing units (CPUs) control the functions of the computer. Each CPU contains a

copy of the OS, and these copies communicate with one another to coordinate

operations. Processing takes place in parallel and is also called parallel processing.

Each processor works on different parts of the same task, or, on two or more different

tasks. The use of multiple processors allows the computer to perform calculations

faster, since tasks can be divided up between processors.

For example, if a single-processor OS were running an application requiring

three tasks to be performed, one taking five milliseconds, another taking eight

milliseconds, and the last taking seven milliseconds, the processor would perform

each task in order. The entire application would thus require twenty milliseconds. If a

multiprocessing OS were running the same application, the three tasks would be
assigned to separate processors. The first would complete the first task in five

milliseconds, the second would do the second task in eight milliseconds, and the third

would finish its task in seven milliseconds. Thus, the multiprocessing OS would

complete the entire task in eight milliseconds. From this example, it is clear that

multiprocessing OSs offer distinct advantages.

5. Real Time Operating System

Real-time operating systems are used to control machinery, scientific

instruments and industrial systems. An RTOS typically has very little user-interface

capability, and no end-user utilities, since the system will be a "sealed box" when

delivered for use. RTOS are designed to respond to an event within a predetermined

time. Processing is done within a time constraint. The OS monitors the events that

affect the execution of the process and responds accordingly. They are used to

respond to queries in areas like medical imaging systems, industrial control systems

etc. LynxOS is an example of a real time OS.

6. Embedded Operating System

An embedded operating system (OS) is a specialized operating system

designed to perform a specific task for a device that is not a computer. An embedded

operating system's main job is to run the code that allows the device to do its job. They

are specific to a device and are less resource intensive. We find embedded systems

everywhere around us in our daily life. They are used in appliances like microwaves,

washing machines, cameras, game consoles, traffic control systems etc.

You might also like