S | ||
  | ||
H | ||
E | ||
O | ||
M | ||
P | ||
U | ||
T | ||
E | ||
R | ||
O | ||
F | ||
T | ||
W | ||
A | ||
R | ||
< | E | |
E | ||
L | ||
L | ||
N | ||
W | ||
O | ||
N | ||
M | ||
O | ||
N | ||
G | ||
S | ||
T | ||
H | ||
E | ||
E | ||
O | ||
P | ||
L | ||
E | ||
F | ||
O | ||
R | ||
L | ||
D | ||
R | ||
T | ||
I | ||
L | ||
L | ||
N | ||
K | ||
N | ||
O | ||
W | ||
N | ||
S | ||
H | ||
E | ||
O | ||
M | ||
P | ||
U | ||
T | ||
E | ||
R | ||
O | ||
F | ||
T | ||
W | ||
A | ||
R | ||
< | E | |
E | ||
L | ||
L | ||
N | ||
W | ||
O | ||
N | ||
M | ||
O | ||
N | ||
G | ||
S | ||
T | ||
H | ||
E | ||
E | ||
O | ||
P | ||
L | ||
E | ||
F | ||
O | ||
R | ||
L | ||
D | ||
R | ||
T | ||
I | ||
L | ||
L | ||
N | ||
K | ||
N | ||
O | ||
W | ||
N | ||
|
In 1970, less than 1% of the public could have intelligently described what
"computer software" meant. Today, most personal and many members of the
public at large feel that they understand software. But do they?
A text book description of software might take the following form:
Software is
                 (1) instructions (computer
programs) that when executed provide desired function and performance,
                 (2) data structures that enable the programs to adequately manipulate information, and
                 (3) documents that describe the operation and use of the programs.
There is no question that other, more complete definitions could be offered. But we need more than a formal definition.
Software Characteristics
To gain an understanding of software, it is important to examine the characteristics of software that make it different from other things that human beings build. When hardware is built, the human creative process (analysis, design, construction, testing) is ultimately translated into a physical form. If we build a new computer, our initial sketches, formal design drawings, and
bread boarded prototype evolve into a physical product (chips, circuit boards, power supplies, etc).
Software is a logically rather than a physical system element. Therefore, software has characteristics that are considerably different than those of hardware:
1. Software is developed or engineered, it is not manufactured in the classical sense.
Although some similarities exist between software development and hardware manufacture, the two activities are
fundamentally different. In both activities, high quality is achieved through good design, but the manufacturing phase for hardware can introduce quality problems that are nonexistent (or easily corrected) for software. Both activities are dependent on the people, but the relationship between people applied and work accomplished is entirely different. Both activities require the construction of a "product" but the approaches are different.
Software costs are concentrated in engineering. This means that software projects can not be managed as if they were manufacturing projects.
2.  Software doesn't "wear out."
Figure above depicts failure rate as a function of time for hardware. The relationship often called the "bath tub 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 (ideally, 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 any other environmental maladies. Stated simply, the hardware begins to wear out.
Software is not suspect able to the environmental maladies that cause hardware to wear out. In, theory, therefore, the failure rate curve for the software should take the form of the "idealized curve". Undiscovered defects will cause high failure early in the life of a program. However these are corrected (ideally, without introducing other errors) and the curve flattens. However, the implication is clear--software doesn't wear out. But it does deteriorate!
3.  Although the industry is moving towards component-based assembly, most software continues to be custom built.
Consider the manner in which the control hardware for a computer-based product is designed and built. The design engineer draws a simple schematic of the digital circuitry, does some fundamental analyst to assure that proper function will be achieved, and then goes to the shelf where catalogs of digital components exist. Each integrated circuit (called an
IC or a chip) has a part number, a defined and validated function, a well-defined interface, and a standard set of integration
guidelines. After each component is selected, it can be ordered off the shelf.
As an engineering discipline evolves, a collection of standard design components is created. Standard screws andoff-the-shelfintegrated circuits are only electrical engineers as they design new system. The
reusable components have created so that the engineer can concentrate on the
truly innovative elements of a design, that is, the parts of the design that
represents something new. In the hardware world, component reuse is a natural part of the engineering
process. In the software world, It is something that has only begun to be achieved on a broad scale.
Backend| Frontend| Software Docs| Software Features| Soft Web Links| Refreshment| About| |