The Nature of Software

 

                 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!


Figure 2: Failure curves for software

This seeming contradiction can best be explained by considering the actual curve in Figure 2. During its life, software will undergo change. As changes are made, it is likely that errors will be introduced, causing the failure rate curve to spike as shown in the “actual curve” (Figure 2).





Note: Software engineering methods strive to reduce the magnitude of the spikes and the slope of the actual curve in Figure 2.

Before the curve can return to the original steady-state failure rate, another change is requested, causing the curve to spike again. Slowly, the minimum failure rate level begins to rise—the software is deteriorating due to change.
Another aspect of wear illustrates the difference between hardware and software. When a hardware component wears out, it is replaced by a spare part. There are no software spare parts. Every software failure indicates an error in design or in the process through which design was translated into machine executable code. Therefore, the software maintenance tasks that accommodate requests for change involve considerably more complexity than hardware maintenance.


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.





Post a Comment (0)
Previous Post Next Post