[comp.software-eng] Soft-Eng Digest V3 #13

MDAY@XX.LCS.MIT.EDU (Moderator, Mark S. Day) (10/26/87)

Soft-Eng Digest             Sun, 25 Nov 87       Volume 3 : Issue  13 

Today's Topics:
                     Fortran Source Code Metrics
            Software Technology is NOT Primitive (5 msgs)
    Productivity: Progress, Prospects, and Payoff Call for Papers
                        ICSE-10 Call for Tools
----------------------------------------------------------------------

Date: Fri, 25 Sep 87 09:02:32 EDT
From: johnson@NADC.ARPA (R. Johnson)
Subject: Fortran Source Code Metrics

Thanks to everyone who responded to my request for information on the source
of Halstead/McCabe metrics programs for Fortran source code.  For the benefit
of anyone else looking for such programs, here is a summary of what I found out:

"Analyze," a product of Autometric, Inc., calculates metrics for Fortran and C
code on an IBM PC.  It is written in Ada and costs $495.  The capability to 
analyze Ada, Cobol, and Pascal code is available at extra cost.  For more
information, contact:
     Autometric, Inc.
     891 Elkridge Landing Rd. #350
     Linthicum, Md 21090
     301-859-4111

NASA Goddard Space Flight Center's (GSFC) "Fortran Source Code Analyzer Program"
(SAP) calculates a variety of metrics for Fortran code.  It is written in
employees, and employees of other government agencies, it is available free
from:
     Goddard Space Flight Center
     Computer Program Library
     Building 23, Room C-238
     Greenbelt, Maryland 20771
     301-344-6796

For others, it is available "for a small fee" from NASA's Computer Software
Management and Information Center (COSMIC).  Contact:
     COSMIC
     112 Barrow Hall
     Uiversity of Georgia
     Athens, Georgia 30602
     404-542-3265

------------------------------

Date: 22 Oct 87 01:01:55 GMT
From: crowl@cs.rochester.edu  (Lawrence Crowl)
Subject: Software Technology is NOT Primitive

Software technology is not in the primitive state that people so constantly
moan about.  First, software has a much more difficult task than hardware.  We
have more expectations from software than hardware, so the perceived state of
the technology is less than the actual state.  

Consider the "great advance" in memory chip size.  Most of the impressiveness
of the advance comes from replication of design effort.  Is a software engineer
given accolades when he calls a subroutine a million times instead of a
thousand?  Hardly.  Much of hardware design is replication, but very little of
software design is replication.  

In 1950, a processor had hundreds to thousands of gates and a large program had
a hundred to a thousand lines.  Today, a processor has (say) a hundred thousand
to a million gates, while a large program has a hundred thousand to a million
lines of code.  The track well don't they?  But let's look closer.  In 1950, a
processor had a control unit, a few registers and an ALU while a program had a
simple routine to read cards, a simple routine to drive the printer, and a
simple core algorithm.  Today, a processor had a control unit, a few registers
and an ALU (note the less than radical change), while a program has a graphics
interface, a file manager, a recovery scheme and a performance monitor in
addition to the core algorithm.  There has been quite a deal of change in the
tools and _functional_ capabilities of software systems.  

"But hardware systems have improved performance by four orders of magnitude
since 1950!"  True, but for many problems, you are better off running today's
algorithms on 1950's hardware than 1950's algorithms on today's hardware.  Do
not deny software its contribution to performance.  (Although to be fair, we
have already reached the theoretical maximum performance for many algorithms.)

In article <3349@uw-june.UUCP> bnfb@uw-june.UUCP (Bjorn Freeman-Benson) writes:
>However, one must consider that current software technology is at the level of
>individual transistors and resistors, and that we could use the step up to
>"7000 series ICs".  After that, custom and semi-custom would be great.

Well, I apply different analogies.  I think you will find these better related
to the actual scale of work.

transistors == machine language
7400 series == assembly language
msi         == higher level languages
lsi         == libraries
vlsi        == utility programs (ala Unix)
custom ICs  == inheritance and generics (needs more experience to say for sure)

It looks to me like software and hardware technology have tracked fairly well.
The cause for the difference in perception is that hardware has done the same
task cheaper and faster while software has performed an ever more difficult
task.  Because hardware has simpler measures, it has more apparent progress.
The actual progress is roughly equivalent.

-- 
  Lawrence Crowl		716-275-9499	University of Rochester
		      crowl@cs.rochester.edu	Computer Science Department
...!{allegra,decvax,rutgers}!rochester!crowl	Rochester, New York,  14627

------------------------------

Date: 23 Oct 87 01:48:50 GMT
From: ihnp4!ihopa!jdu@ucbvax.Berkeley.EDU  (John Unruh)
Subject: Software Technology is NOT Primitive

In article <3471@sol.ARPA>, crowl@cs.rochester.edu (Lawrence Crowl) writes:
> Software technology is not in the primitive state that people so constantly
> moan about.  First, software has a much more difficult task than hardware.  We
> have more expectations from software than hardware, so the perceived state of
> the technology is less than the actual state.  
> 
> transistors == machine language
> 7400 series == assembly language
> msi         == higher level languages
> lsi         == libraries
> vlsi        == utility programs (ala Unix)
> custom ICs  == inheritance and generics (needs more experience to say for sure)
> 
> It looks to me like software and hardware technology have tracked fairly well.
> The cause for the difference in perception is that hardware has done the same
> task cheaper and faster while software has performed an ever more difficult
> task.  Because hardware has simpler measures, it has more apparent progress.
> The actual progress is roughly equivalent.
> 

I really like Lawrence's analysis.  He has a few vital points.

1.  Today's software projects attack extremely difficult tasks.  It is 
    unlikely that these tasks would be attempted in a circuit or in a
    mechanical system.

2.  Software technology has evolved.  I would not have built the same
    equivalence that he did, but his way of looking at things is certainly
    reasonable.

I have a few observations that I would like to add.

1.  I believe many of the problems attributed to
    the "software crisis" are a by product of the difficulty of the task
    itself, not of the fact that the solution is implemented in software.
    Often we run into problems because we do not understand the problem
    that we are trying to solve well enough.  Therefore, the program that
    is built doesn't solve the right problem.

2.  Often the people who wish to purchase a software system to inprove the
    efficiency of their operation do not understand the true problem that
    they want to solve.  Introducing automation does not always make a
    business run more efficiently, largely because the change introduced
    in work methods by the automation changes what should be automated.
    I think those who specify what is to be done often don't get this
    right.  I am not sure it is possible to get it right in many cases.
    An example is the stories I have read about the introduction of robots
    on assembly lines.  Supposedly many of these installations have not
    worked out well on an economic basis.

3.  I am not entirely convinced by the arguments presented of where money
    is spent during the "software life cycle".  I have seen varying estimates
    up to 80% for maintenance.  I always wonder what maintenance means.  Does
    it include enhancements to the product because customer needs were not
    understood?  Does it include enhancements to address more markets?
    Does it include ports to new operating environments such as porting a PC
    program to the MAC environment?  These things are very different than
    bug fixes.  If things are counted this way, the newest IBM 370 series
    computers should probably be counted as engineering changes on the
    original 360.

4.  Program bugs after release are a serious problem.  Just read
    comp.micro.ibm.pc to see how many postings are related to bugs
    in standard packages.  I would hate to have to pay to send a free
    update diskette set to every registered owner of LOTUS 1-2-3
    (This is probably a trademark of LOTUS development).  I would still
    rather do this than put a white wire change into every IBM PC.
    With today's hardware, the answer to hardware problems may be to
    document them and program around them.  This is equivalent to a
    work around solution for software problems.  I will not make
    apologies for buggy software.  We need to make some improvements
    here.

5.  The theoretical base is better for hardware than for software.
    People have been studying the physics of electricity for MANY
    years, and many things are well understood.  One of the reasons
    many new hardware designs work well is because they are extensively
    simulated.  They can be simulated because the theoretical base allows
    software to simulate them.  Most of the work in theory supporting
    software that I have seen falls into two classes.  The first is the
    analysis of algorithms.  This area has been extremely fruitful.  We
    have been able to find good algorithms for many computations.  We also
    have been able to find theoretical upper bounds for performance and 
    see how close we have come to those bounds.  The second area is in the
    theoretical basis for computing in general.  In my mind, this area
    covers many basic problems such as the halting problem and proof of
    correctness.  The advances in this area have been significant, but they
    are very difficult for the working programmer to use.  They are more
    like Maxwell's equations for electromagnetic fields.  I don't know
    of any theoretical basis that supports software like circuit analysis
    supports circuits (both digitial and analog) or like boolean algebra
    supports digital circuits.  We have no good way of doing automatic
    (or really semi-automatic) checks of software boundary conditions,
    or of driving software through many states.  Currently, we manually
    generate many tests, and then we manually run them.  It would be
    really nice if we could have some system generate and run tests
    and then we could analyze the results.

6.  The state of the theory as listed in 5 also makes correctness by
    construction difficult.  I don't really think circuit designers 
    do everything like that anyway.

I hope I have managed to shed some light on the matter, and perhaps
to spur some thought.
                               John Unruh

------------------------------

Date: 23 Oct 87 08:16:20 GMT
From: amdahl!drivax!socha@ames.arpa  (Henri J. Socha (7-x6628))
Subject: Software Technology is NOT Primitive

AHH! The wonderful advantages of blinders.

I don't intend to repeat your statements.
They were well written but a little shortsighted I think.

Now I'm a software type as well but with an EE degree.
But my software has ranged from writing micro-code (pretty close to hardware
if you ask me) to application with a big smattering of OS and networks
inbetween.

Any you have greatly simplified the advances made in the hardware area.

Now, I do not want to argue extents because I will agree that software
has changed greatly but so has hardware.

Consider  DSP chips, bit blitters, LAN processors, IEEE floating point
in hardware, VM, segmentation, caches, ASICs, just to name a few
of the hardware complexity improvements.
Ever try to build a 68000 with TTL?  It can be done but it is not
only large but VERY COMPLEX.  
Every tried to understand some code where there are hundreds of thousandsf
of lines and sometimes just putting a line close to another line of code
will cause invalid code to be executed?  (Said humourously but with reason.)
So, don't sell those hardware types short
 (especially when they may not be reading this newsgroup).
-- 
UUCP:...!amdahl!drivax!socha                                      WAT Iron'75
"Everything should be made as simple as possible but not simpler."  A. Einstein

------------------------------

Date: 23 Oct 87 15:15:50 GMT
From: defun!shebs@cs.utah.edu  (Stanley T. Shebs)
Subject: Software Technology is NOT Primitive

I think one of the reasons for the perception of software technology as
primitive is that the languages have not changed very much in 30 years.
C seems to be in the ascendant for research work, yet it is not too far
removed from Fortran (no language fanatic flames please).  Of course, the
*use* of the languages now is very different, as are the algorithms they
express, but it is an article of faith in some circles that progress in
software == use of higher-level languages.

							stan shebs
							shebs@cs.utah.edu

------------------------------

Date: 23 Oct 87 23:33:30 GMT
From: thoth17.berkeley.edu!adamj@jade.Berkeley.EDU
Subject: Software Technology is NOT Primitive

In article <1691@culdev1.UUCP> drw@culdev1.UUCP (Dale Worley) writes:
>Another feature of "software ICs" comes from the fact that they are
>part of an object-oriented system.  One can actually write, say, a
>linked list manager that will work on objects of *any* type.  In most
>languages, this is impossible to do in a library routine.

	"Object oriented?"  What you are describing involves
parameteized typing and polymorphic routines.  Objected oriented
programming (in my book) involves data hiding and polymorphic routines.
Parameterized typing is an independent concept from data hiding.

	Parameterized typing should be a tremendous win because it
then becomes possible to change the lower levels of a hierarchical
type without affecting the routines that only need to know some overall
information about that type.

	I'd like to drop the term "software IC" as that an IC is noticibly
deficient in this low-level parameterization.  E.g., I can't buy a TTL IC
from Radio Shack, buy a GaAs description module, apply one to the other,
and get my favorite chip design in GaAs.  The chip design has to be
reworked by the manufacturer, just like present day software has to be
recompiled and probably edited by an owner of the source code.

>I suspect that I could write considerably less code if I could write
>in one statement all the trivial, but extremely stereotyped, bits of
>code.  After all, what fraction of your lines of code are
>loop-and-search, and other completely standard stuff?
>Dale

	Right on!

		--Adam J. Richter
		  adamj@widow.berkeley.edu
		  ...!ucbvax!widow!adamj
Adam J. Richter			adamj@widow.berkeley.edu
				....!ucbvax!widow!adamj
(415)642-7762

------------------------------

Date: Tue, 20 Oct 87 09:26:29 EDT
From: Charles Youman (youman@mitre.arpa) <m14817@mitre.arpa>
Subject: Productivity: Progress, Prospects, and Payoff Call for Papers

                               Call for Papers

                 PRODUCTIVITY:  PROGRESS, PROSPECTS, AND PAYOFF
                        27th Annual Technical Symposium
                      Gaithersburg, Maryland  June 9, 1988

               Productivity is a key issue  in  the  information  industry.
          Information  technology  must  provide  the means to maintain and
          enhance productivity.  Productivity:   Progress,  Prospects,  and
          Payoff  is the theme of the 27th Annual Technical Symposium spon-
          sored by the Washington, D.C. Chapter of the Association for Com-
          puting  Machinery  (ACM)  and the Institute for Computer Sciences
          and Technology, National Bureau  of  Standards  (NBS/ICST).   The
          symposium  will  explore  the theoretical and practical issues in
          developing  and  applying  technology  in  an   information-based
          society.   How  productive are we?  How productive can we become?
          What are the inhibitors and facilitators?  Some of the  following
          areas are suggested:

               Software                       Hardware
               System Considerations          Economic Considerations
               Environments                   Labor and the Work Place
               The Knowledge Industry         Impact of Ada
               Capture and Use of Expertise   When to Standardize
               The Hardware-software Gap      Higher Level Languages
               Building, Testing, and Main-   Artifical   Intelligence
               taining Systems                and Knowledge-based Sys-
                                              tems


               The conference program committee has issued a call for
          papers covering new concepts, research in progress, and completed
          work, as well as reviews or overviews of relevant work in tech-
          nology, management, and other pertinent areas.  Papers of 10 to
          20 double-spaced pages are suggested.  Papers must include the
          name, mailing address, and telephone number of each author or
          other presenter.  Five copies of papers should be submitted by
          December 17, 1987 to the program chairman at the following
          address: John E. Gaffney, Software Productivity Consortium, 1880
          Campus Commons Drive North, Reston, VA 22091.  Both experienced
          and first-time authors are encouraged to present their work.  The
          papers will be refereed.  Authors will be notified of acceptance
          by February 1, 1988.  Final versions of papers are due April 1,
          1988 (no fooling).  Authors of accepted papers (excepting papers
          that cannot be copyrighted under government regulations) must
          transfer copyright to the ACM for material published in the
          conference proceedings.

               For additional information about the symposium please con-
          tact: Symposium General Chairman Charles E. Youman, The MITRE
          Corporation, 7525 Colshire Drive, McLean, VA 22102, Telephone:
          (703) 883-6349, electronic mail address:  youman@mitre.arpa.

------------------------------

Date: Mon 28 Sep 87 06:48:34-PDT
From: Grady Booch <GBOOCH@ADA20.ISI.EDU>
Subject: ICSE-10 Call for Tools

CALL FOR TOOLS FOR THE 10TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING

A Tools Fair will be held from 13 to 15 April, 1988, in parallel with the
technical sessions of the 10th International Conference on Software
Engineering, to provide an opportunity for softare professionals to be
exposed to the latest commercial and research tools. The Tools
Fair consists of two parts: the Tools Exhibition, and the Tools
Presentation Track. The Tools Exhibition offers a forum for vendors and
research organizations to display their tools; the Tools Presentation Track
forms one of the technical tracks of the 10th ICSE, featuring presentation ad
demonstration of tools selected by the tools fair committee.

The 10th ICSC will be held in the Raffles City Convention Center, Singaapore.
The tools fair committee will arrange with Singapore computer companies to make
hardware available for overseas exhibitors to demonstrate their software
tools.

For further information, contact:

American and European exhibitors:
Grady booch
Rational
835 S. Moore St
Lakewood, CO 80226
Phone: 303-986-2405
Arpanet: gbooch@AJPO.SEI.CMU.EDU

Asian, Australasian and other exhibitors:
Wong Sen Hon
National Computer Board
71 Science Park Drive
Singapore 0511
Republic of Singapore
Phone 7720291
Bitnet ncbise1@nusvm

egb
-------

------------------------------

End of Soft-Eng Digest
******************************
-------