96
CHAPTER 6
Impediments to Software Design
that can be converted into a machine-readable format. At the computer processor
level, these instructions are encoded as positive and negative electrical charges that
denote binary values (0 and 1 to denote an on/off state, respectively). The com-
puter processor performs a variety of basic mathematical calculations to convert
data values. The computer operating system provides the management of computa-
tional execution and the software product’s interaction with computer input/output
devices and data storage equipment.
Computer science is a field of study that provides a research and development
thrust to promote advances in programming languages and computational theory.
Computational complexity theory investigates fundamental properties of data pro-
cessing algorithms that are highly abstract, while other branches of computer science,
such as computer graphics, emphasize real-world applications. The study of program-
ming investigates the definition and structure of software languages to address com-
plex data processing transactions. Computer science research often intersects other
disciplines, such as linguistics, mathematics, physics, statistics, and logic.
However,
there has been a paltry amount of attention paid to establishing a dependable
approach to the design or engineering of software products.
Most of the research has
been relegated to low-level programmatic design heuristics. The
Encarta Dictionary
defines
heuristics
as “a method of problem solving for which no formula exists, based
on informal methods or experience, and employing a form of trial and error iteration.”
The development of software products with early programming languages
began with simple problem solving heuristics. This approach was supplemented by
a flow-charting technique used to describe the sequence of data processing actions
necessary to perform a computational function or procedure. As a technique, flow
charts were useful to identify control mechanisms (decision blocks and control
flow), input/output procedures, data processing steps (e.g.,
X
=
X
+
1), calls to sub-
routines (typically detailed in a separate flow chart), and data processing concur-
rency. The use of flow charts lost favor in the early 1980s due to the undesirable use
of
goto(s)
to describe arbitrary jumps in control flow. This resulted in “spaghetti”
code, which made understanding data processing flow difficult and impacted the
software maintenance challenge. However, the use of
goto(s)
was purely a result of
unstructured programming or improper programmatic design techniques.
Software is a very broad term used to identify a variety of computer programs
that operate computers and devices embedded with computer technologies. The term
hardware
is used to describe the physical elements of a system or computer-based
system, while
software
refers to various types of programs or applications used to
operate a computer-based system. Software code is a set of instructions that can be
converted into a format that a computer can perform. Code is broken into procedures,
routines, functions, modules, objects, or other constructs to form parts or elements of
a larger program. This partitioning of data processing transactions originated due to
the challenge with the ever-increasing size and complexity of computer programs.
Within the software domain, there are references to a variety of terms that must
be clarified to distinguish some basic properties of software.
Table 6.2
provides a
general explanation of these software product–related terms.
Do'stlaringiz bilan baham: |