The Changing Nature of Software
Four broad categories of software are
evolving to dominate the industry. And yet, these categories were in their
infancy little more than a decade ago.
{tocify}
$title= {Table of Contents}
1.
Web Apps
In the early days of the World Wide Web
(circa 1990 to 1995), websites consisted of little more than a set of linked
hypertext files that presented information using text and limited graphics. As
time passed, the augmentation of HTML by development tools (e.g., XML, Java)
enabled Web engineers to provide computing capability along with informational
content. Web-based systems and applications (we refer to these collectively as
WebApps) were born.
Today, WebApps have evolved into
sophisticated computing tools that not only provide stand-alone function to the
end user, but also have been integrated with corporate databases and business
applications.
A decade ago, WebApps “involve[d] a mixture
between print publishing and software development, between marketing and
computing, between internal communications and external relations, and between
art and technology.”
But
today, they provide full computing potential in many of the application
categories noted in Section earlier.
Over the past decade, Semantic Web
technologies (often referred to as Web 3.0) have evolved into sophisticated
corporate and consumer applications that encompass “semantic databases [that]
provide new functionality that requires Web linking, flexible [data]
representation, and external access APIs.” Sophisticated relational data
structures will lead to entirely new WebApps that allow access to disparate
information in ways never before possible.
2. Mobile
Applications
What is the difference between a webapp
and a mobile app
It is important to recognize that there is
a subtle distinction between mobile web applications and mobile apps. A mobile
web application (WebApps) allows a mobile device to gain access to web-based
content via a browser that has been specifically designed to accommodate the
strengths and weaknesses of the mobile platform. A mobile app can gain direct
access to the hardware characteristics of the device (e.g., accelerometer or
GPS location) and then provide the local processing and storage capabilities
noted earlier. As time passes, the distinction between mobile WebApps and
mobile apps will blur as mobile browsers become more sophisticated and gain
access to device level hardware and information.
3. Cloud Computing
Cloud computing encompasses an
infrastructure or “ecosystem” that enables any user, anywhere, to use a
computing device to share computing resources on a broad scale. The overall
logical architecture of cloud computing is represented in Figure 1.
Referring to the figure, computing devices
reside outside the cloud and have access to a variety of resources within the
cloud. These resources encompass applications, platforms, and infrastructure.
In its simplest form, an external computing device accesses the cloud via a Web
browser or analogous software. The cloud provides access to data that resides
with databases and other data structures. In addition, devices can access
executable applications that can be used in lieu of apps that reside on the
computing device.
The implementation of cloud computing
requires the development of an architecture that encompasses front-end and
back-end services. The front-end includes the client (user) device and the
application software (e.g., a browser) that allows the back-end to be accessed.
The back-end includes servers and related computing resources, data storage
systems (e.g., databases), server-resident applications, and administrative
servers that use middleware to coordinate and monitor traffic by establishing a
set of protocols for access to the cloud and its resident resources.
The cloud architecture can be segmented to
provide access at a variety of different levels from full public access to
private cloud architectures accessible only to those with authorization.
4.
Product Line
Software
The Software Engineering Institute defines
a software product line as “a set of software-intensive systems that share a
common, managed set of features satisfying the specific needs of a particular
market segment or mission and that are developed from a common set of core
assets in a prescribed way.” The concept
of a line of software products that are related in some way is not new. But the
idea that a line of software products, all developed using the same underlying
application and data architectures, and all implemented using a set of reusable
software components that can be reused across the product line provides
significant engineering leverage.
A software product line shares a set of
assets that include requirements, architecture , design patterns , reusable
components , test cases , and other software engineering work products. In
essence, a software product line results in the development of many products
that are engineered by capitalizing on the commonality among all the products
within the product line.
Summary:
The nature of software is changing.
Web-based systems and applications have evolved from simple collections of
information content to sophisticated systems that present complex functionality
and multimedia content. Although these WebApps have unique features and
requirements, they are software nonetheless. Mobile applications present new
challenges as apps migrate to a wide array of platforms. Cloud computing will
transform the way in which software is delivered and the environment in which
it exists. Product line software offers potential efficiencies in the manner in
which software is built.