SCOUG Logo


Next Meeting: Sat, TBD
Meeting Directions


Be a Member
Join SCOUG

Navigation:


Help with Searching

20 Most Recent Documents
Search Archives
Index by date, title, author, category.


Features:

Mr. Know-It-All
Ink
Download!










SCOUG:

Home

Email Lists

SIGs (Internet, General Interest, Programming, Network, more..)

Online Chats

Business

Past Presentations

Credits

Submissions

Contact SCOUG

Copyright SCOUG



warp expowest
Pictures from Sept. 1999

The views expressed in articles on this site are those of their authors.

warptech
SCOUG was there!


Copyright 1998-2024, Southern California OS/2 User Group. ALL RIGHTS RESERVED.

SCOUG, Warp Expo West, and Warpfest are trademarks of the Southern California OS/2 User Group. OS/2, Workplace Shell, and IBM are registered trademarks of International Business Machines Corporation. All other trademarks remain the property of their respective owners.

The Southern California OS/2 User Group
USA

SCOUG-Programming Mailing List Archives

Return to [ 17 | March | 2003 ]

<< Previous Message <<


Date: Mon, 17 Mar 2003 22:03:03 PST8
From: "Lynn H. Maxson" <lmaxson@pacbell.net >
Reply-To: scoug-programming@scoug.com
To: SCOUG Programming SIG <scoug-programming@scoug.com >
Subject: SCOUG-Programming: Message Two

Content Type: text/plain

So open source allows us to transform a win-lose situation
with closed (proprietary) source into a win-win one.
However, it will only do so if we carry the intent of AD/Cycle
to its completion: define a seamless set of SDP activities and
transform them into a seamless set of tools.

Remember the SDP, the Software Development Process,
consists of five (5) stages: specification, analysis, design,
construction, and testing. In common practice we execute
each stage manually through different forms of input, i.e.
writing, in different means of expression, i.e. languages.

In common practice we break the five stages into four (4)
groups with their own set of tools: (1) specification (no
standard tools here), (2) analysis and design (CASE or
Computer-Aided Software Engineering tools), (3) construction
(IDE or Integrated Development Environment tools), and (4)
testing (sorry, no standard tools here either).

In this the biggest lie occurs in construction with its IDE as
obviously the development environment includes all five
stages, not just one. However, the IDE does indicate the need
for and successful application of a single tool for a set of SDP
activities. To have its name match its function we need to
expand it to include the entire SDP. When we have done so
we will have one tool and one user interface.

That means folding the functions of the CASE tools, which
range from the dataflows and structure charts of structured
design to the various documents of UML (Unified Modeling
Language) and all variations inbetween, into the IDE as a
possible first step. Then we need to take another step
backward to fold in specification, the transformation of user
requirements into formal specifications. Then we need to
take a step forward to fold in testing, the production of test
cases with their test scripts with their test steps each
involving their own test data.

Each level of testing from the functional level on up involves
one or more test cases, each of which has one or more test
scripts, each of which has one or more sets of test data. Now
you can probably understand why "standard" project
estimates allocate at least twice the time to test constructed
code than it takes to construct it. God love the
introduction of beta testing and beta testers to redistribute
the cost of testing.

Hark! What light on yonder window breaks?

We can take an available shortcut to our "true", all inclusive
IDE. In the first place we introduced the five stages to
support writing source code in the first three generations of
imperative programming languages: (1) machine, (2) symbolic
assembler (plus macro), and (3) HLLs. Each of these require
that the programmer specify not only "what to do" but "how
to do it", i.e. incorporate the global logical organization or the
"logic in programming".

To do that we first engaged in the gathering of requirements.
At some point when we felt we had accumulated enough we
had to globally organize them into some semblance of a
system. With the introduction of Structured Analysis and
Design this "analysis" stage occurred through the use of
"dataflow" diagrams.

These dataflow diagrams consisted of five symbols. Two of
these represented external "boundary points" of our system in
terms of points in which data entered (inputs) and at which
data exited (outputs). A third symbol represented the
"processes" which connected the inputs to the outputs. The
fourth symbol represented "data stores", in effect internal
boundary points into which we could write
(output/update/delete) data and from which we could read
(input) data. Data stores later became the "persistent data"
of object-oriented technology.

These four symbols we interconnected with the fifth: lines.
Thus we could have an input symbol connected via a line to a
process in turn connected by a line to another process in turn
connected by a line to an output. We have no limits on the
number of inputs into or outputs from a process or the number
of interconnections between processes.

With these five symbols--an upright, left-facing semi-circle
(input), an upright, right-facing semi-circle (output), a circle
(process), to horizontally parallel line segments (datastore),
and a line (connector)--we could diagram the flow of data
throughout from initial entry, through numerous
transformations (processes), and through exit points of any
application system (including operating systems). At the end
of analysis then we had a complete (or sufficiently so) picture
of the overall logical data flow.

We then exited the analysis stage in which we created
dataflow diagrams using the methods of structured analysis
and entered the design stage. As luck would have it we also
had the methods of structured design. In the transition from
analysis to design we dropped the number of symbols required
from five to two, rectangles representing functions and lines
connecting them in a hierarchical manner. The result was a
set of structure charts, one for each separately compilable
unit. We should also mention that we had a heuristic for the
transformation of dataflows into structure charts.

So we left the design stage and entered the construction
stage, the stage in which we actually wrote the source code
to support the design. At this point we need to focus again on
the "big" picture, the SDP itself, in which these are only
"manual" stages. Therein lay the problem: the "manual" part.

If in a later stage, say construction, you discovered an error
or omission of design, you would logically fall back to design,
make the necessary correction, and then return to
construction. The same thing would occur in design if you
found an error in analysis or in analysis if you found an error
in specification. If an error found in construction affecting
design in turn affecting analysis and in turn affecting
specification, we would (or should) go all the way back,
correct the error at its source, and then reinitiate the process.

Unless we have unlimited funds, people, and time we cannot
reasonable achieve this "synchronization" of change
management across all stages. Even with unlimited funds and
people we cannot achieve it within an acceptable, if not
reasonable time. As a result we deliberately desynchronize
the stages. We even go so far as to "freeze" the introduction
of changes, allowing known errors to continue to persist, in
order to produce a version of the software system within a
set time schedule.

As this situation had persisted from the beginning of
programming, during which we had progessed through three
generations of programming languages, we shifted the blame
from people and tools to the process, the SDP, itself. Because
all our efforts had failed to make it work, we came to the
conclusion that it didn't work because it couldn't work, i.e.
that its failure was intrinsic.

If we continue to improve tools like programming languages,
compilers, linkers, debuggers, CASE tools, etc. and people still
could not keep pace with change management, then maybe
we were applying them with the wrong process. We faulted
the SDP. In doing so we ignored the fact so obviously pointed
out during the abortive effort of AD/Cycle that we had never
in practice implemented the SDP as designed, as a seamless
set of activities. We had never produced nor offered the
people a set of tools actually implementing the SDP in full.

Hark! What light on yonder window breaks?

We made the point that each of the five stages of the SDP
had manual implementations. We had evolved through three
generations of programming languages with the manual
nature of the SDP unchanged. In fact with the introduction of
object-oriented technology, its shift from the simplicity of
structured analysis and design to the additional complexity of
UML, we in fact made a manual process even more so.

When we evolved to the fourth generation of programming
languages the most significant change occurred in the nature
of the SDP. Specification remained a manual process of
translating requirements into specifications, but after that
point the responsibility for analysis, design, and construction
shifted from people to software. The software executes
millions of times faster and cheaper than people. That means
the only delay in implementing changes, i.e. new requirements,
exists only in the time required to translate them into
specifications. Thus none of the synchronization delays
plaguing a manual system occurs in a software system: their
implementation occurs immediately, i.e. at software speeds,
throughout upon entry of the new specifications.

We have to question then why do we persist with a
minimalist, third generation language like C instead of moving
on to a full featured fourth generation language of our
choosing? If we have five stages of an SDP, and we can
reduce their manual implementation from five to two
(specification and testing) or one (specification only), then
what keeps us from moving on?

**************************************************

Therein we come again to our transitional paragraph, which
we will repeat at the start of our next message.

=====================================================

To unsubscribe from this list, send an email message
to "steward@scoug.com". In the body of the message,
put the command "unsubscribe scoug-programming".

For problems, contact the list owner at
"rollin@scoug.com".

=====================================================


<< Previous Message <<

Return to [ 17 | March | 2003 ]



The Southern California OS/2 User Group
P.O. Box 26904
Santa Ana, CA 92799-6904, USA

Copyright 2001 the Southern California OS/2 User Group. ALL RIGHTS RESERVED.

SCOUG, Warp Expo West, and Warpfest are trademarks of the Southern California OS/2 User Group. OS/2, Workplace Shell, and IBM are registered trademarks of International Business Machines Corporation. All other trademarks remain the property of their respective owners.