The Nature of Software
Commercial usage of Computers now span the last sixty years. Computers were very slow in the initial year and lacked sophistication. Since then, their computational power and sophistication increased rapidly, while their prices dropped dramatically. To get an idea of the kind of improvements that have occurred to aircrafts, now personal mini-airplanes should have become available, costing as much as bicycle, and flying at over 1000 times the speed of the supersonic jets. To say it in other words, the rapid strides in computing technologies are unparalleled in any other field of human endeavour.
Let us reflects the impact of the astounding progress made to the hardware technologies on the software. The more powerful a computer is , the more sophisticated programs can it run. Therefore, with every increase in the raw computing capabilities of computers, software engineers have been called upon to solve increasingly larger and complex problems and that too in cost – effective and efficient ways. Software engineers have coped up their past programming experiences.
{tocify} $title= {Table of Contents}
Computer Software:-
Computer software is designed and built by software is designed and built by software engineers. The programs that are to solve any problems and also the design of any applications are includes in the broad area of computer software. Software is not merely a computer program but also associated documentation and documentation and configuration data, needed to operate programs correctly. A software system usually consists of a number of separate programs, configuration files which are used to set up these programs, documentation which describe the structure of the system and user documentation which explains how to use the system and, for software products, there are websites for users to download any product information. Software is used by most of the people connected with industrial, educational and research fields. Its importance can be gauged from the fact that every aspect of human activity, commerce, and culture to influenced by it. Software may be applied in any developed by software engineers accepts input data and processes that data to produce output results. In order to develop software of high quality but less expensive, it is essential that the more attention should be given for the adoption of information and communication technologies. With the passage of time, the software needs to be corrected, modified, enhanced and properly adapted to find its place in the changing environments.
1.Definition of Software:-
Computer Software is the product that software professionals build and support over the long term. It encompasses programs that execute within a computer of any size and architecture, content that is presented as the computer programs execute, descriptive information in both hard copy and virtual forms that encompass virtually any electronic media.
Software engineers build and support software, and virtually everyone in the industrialized world uses it either directly or indirectly. Software is important because it affects nearly every aspect of our lives and has become pervasive in our commerce, culture, and our everyday activities.
Customers and other stakeholders express the need for computer software, engineers built the software product, and end users apply the software to solve a specific problem or to address a specific need. A computer program that runs in one or more specific environments and services the needs of one or more end users.
Ideas and technological discoveries are the driving engines
of economic growth:-
Computer software continues to be the
single most important technology on the world stage. And it’s also a prime
example of the law of unintended consequences. Sixty years ago no one could
have predicted that software would become an indispensable technology for
business, science, and engineering; that software would enable the creation of
new technologies (e.g., genetic engineering and nanotechnology), the extension
of existing technologies (e.g., telecommunications), and the radical change in
older technologies (e.g., the media);
that software would be the driving force behind the personal computer
revolution; that software applications
would be purchased by consumers using their smart phones; that software would
slowly evolve from a product to a service as “on-demand” software companies
deliver just-in-time functionality via a Web browser; that a software company
would become larger and more influential than all industrial-era companies;
that a vast software-driven network would evolve and change everything from
library research to consumer shopping to
political discourse to the dating habits of young (and not so young) adults. No
one could foresee that software would become embedded in systems of all kinds:
transportation, medical, telecommunications, military, industrial, entertainment, office machines, the list is
almost endless. And if you believe the law of unintended consequences, there
are many effects that we cannot yet predict.
No one could predict that millions of computer programs would have to be corrected,
adapted, and enhanced as time passed. The burden of performing these
“maintenance” activities would absorb more people and more resources than all
work applied to the creation of new software.
As software’s importance has grown, the software community has continually attempted
to develop technologies that will make it easier, faster, and less expensive to
build and maintain high-quality computer programs. Some of these technologies
are targeted at a specific application domain (e.g., website design and
implementation); others focus on a technology domain (e.g., object-oriented systems
or aspect-oriented programming); and still others are broad-based (e.g., operating
systems such as Linux). However, we have yet to develop a software technology
that does it all, and the likelihood of one arising in the future is small. And
yet, people bet their jobs, their comforts, their safety, their entertainment, their
decisions, and their very lives on computer software. It better be right.
This tutorial presents a framework that can be used by those who build computer
software—people who must get it right. The framework encompasses a process,
a set of methods, and an array of tools that we call software engineering.
The nature of Software:-
Note: - Software is both a product
and a vehicle that delivers a product.
Today, software takes on
a dual role. It is a product, and at the same time, the vehicle for delivering
a product. As a product, it delivers the computing potential embodied by
computer hardware or more broadly, by a network of computers that are
accessible by local hardware. Whether it resides within a mobile phone, a
hand-held tablet, on the desktop, or within a mainframe computer, software is a
information transformer— producing, managing, acquiring, modifying, displaying,
or transmitting information that can be as simple as a single bit or as complex
as a multimedia presentation derived from data acquired from dozens of
independent sources. As the vehicle used to deliver the product, software acts as
the basis for the control of the computer (operating systems), the
communication of information(networks), and the creation and control of other
programs (software tools and environments).
Software delivers the most important product of our time—information. It
transforms personal data (e.g., an individual’s financial transactions) so that
the data can be more useful in a local context; it manages business information
to enhance competitiveness; it provides a gateway to worldwide information
networks (e.g., the Internet), and provides the means for acquiring information
in all of its forms. It also provides a vehicle that can threaten personal
privacy and a
gateway that enables those with malicious intent to commit criminal acts.
Note: - Software is
a place where dreams are planted and nightmares harvested, an abstract, mystical
swam where terrible demons
compete with magical panaceas, a world of werewolves and silver bullets.
The role of computer
software has undergone significant change over the last half-century. Dramatic
improvements in hardware performance, profound changes in computing
architectures, vast increases in memory and storage capacity, and a wide
variety of exotic input and output options have all precipitated more
sophisticated and complex computer-based systems. Sophistication and complexity
can produce dazzling results when a system succeeds, but they can also pose
huge problems for those who must build and protect complex systems.
Today, a huge software industry has become a dominant factor in the economies
of the industrialized world. Teams of software specialists, each focusing on
one part of the technology required to deliver a complex application, have
replaced the lone programmer of an earlier era. And yet, the questions that
were asked of the lone programmer are the same questions that are asked when
modern computer-based systems are built:
• Why does it take so long to get
software finished?
• Why are development costs so
high?
• Why can’t we find all errors
before we give the software to our customers?
• Why do we spend so much time and
effort maintaining existing programs?
• Why do we continue to have
difficulty in measuring progress as software is
being developed and maintained?
These, and many other questions, are a manifestation of the concern about software
and the manner in which it is developed—a concern that has led to the adoption
of software engineering practice.
- Failure Curve for Hardware:-
Software:-
Today, most
professionals and many members of the public at large feel that they understand
software. But do they?
A textbook description of software might take the following form:
Software is: (1) instructions (computer programs) that when executed provide
desired features, function, and performance; (2) data structures that enable
the programs to adequately manipulate information, and (3) descriptive
information in both hard copy and virtual forms that describes the operation
and use of the programs.
There is no question that other more complete definitions could be offered. But
a
more formal definition probably won’t measurably improve your understanding.
Figure 1: Failure curve for
hardware |
Note: If you want to reduce software deterioration, you’ll have to do better software design
To accomplish that, it’s important to examine the characteristics of software that make it different from other things that human beings build. Software is a logical rather than a physical system element. Therefore, software has one fundamental characteristic that makes it considerably different from hardware: Software doesn’t “wear out.” Figure 1 depicts failure rate as a function of time for hardware. The relationship, often called the “bathtub curve,” indicates that hardware exhibits relatively high failure rates early in its life (these failures are often attributable to design or manufacturing defects); defects are corrected and the failure rate drops to a steady-state level (hopefully, quite low) for some period of time. As time passes, however, the failure rate rises again as hardware components suffer from the cumulative effects of dust, vibration, abuse, temperature extremes, and many other environmental maladies. Stated simply, the hardware begins to wear out. Software is not susceptible to the environmental maladies that cause
hardware to wear out. In
theory, therefore, the failure rate curve for software should take the form of
the “idealized curve” shown in Figure 2. Undiscovered defects will cause high
failure rates early in the life of a program. However, these are corrected and
the curve flattens as shown. The idealized curve is a gross oversimplification
of actual failure models for software. However, the implication is
clear—software doesn’t wear out. But it does deteriorate!
Note: Software engineering methods strive to reduce the magnitude of the
spikes and the slope of the actual curve in Figure 2.
Summary:- |
Software is the key element in the evolution of computer- based systems and products and one of the past 50 years, software has evolved technology in the world stage. Over the past 50 years, software has evolved from a specialized problem solving and information analysis tool to an industry in itself. Yet we still have trouble developing high-quality software on time and within budget.
Software- programs, data, and descriptive information- addressing a wide array of technology and application areas. |