• No results found

Background Enabling Inventions

In document Software Engineering Leaf Knot (Page 143-147)

Without some convenient method of storing software, it would be difficult to have a true software industry. One of the critical background inventions of the modern software world was the development of the floppy disk and the floppy disk drive in 1971.

The first floppy disk was eight inches in diameter and only held about 80 kilobytes of information. But the floppy disk was a success and became a standard feature of IBM’s S/370.

Modern readers who use flash drives or external disk drives that weigh only an ounce or two would be surprised at how big and heavy the early eight-inch disk drives were. A disk drive sometimes weighed 40 pounds.

Even so, floppy disks provided an effective medium for storing, transporting, and marketing software, without which there might not be a software industry.

Note

I once had an eight-inch drive connected to an early Tandy Radio Shack TRS-80 computer. It was a large box about 18 inches wide and deep and 12 inches high. I had to put the drive on the floor because it was too bulky and heavy to sit on a desk.

The older storage media of punch cards, paper tape, and magnetic tape were not suitable for widespread software distributions. Punch cards and paper tape were short-lived and susceptible to damage from humidity and water. Magnetic tape was bulky and subject to fairly rapid magnetic degradation. Mainframe disk drives existed but were too heavy and large for home use.

Equally important, Ted Codd from IBM in San Jose began to publish descriptive information about the relational database model, which would lead to vast improvements in data access and data access speed. Relational database technology also opened up markets for a number of new vendors such as Ingres and Sybase, as well as IBM’s own System R.

The quartz movement used in modern watches dates back to the 1920s, but it needed semiconductors to move into small personal timepieces. The Centre Electronique Horloger (CEH) built a working quartz analog watch in 1967. Sony built a successful quartz watch, the Astron, in 1969.

In 1972, Hamilton introduced the first digital watch, the Pulsar. This watch cost about $2,100 when it first came out. Earlier, Hamilton had built a digital clock that appeared in the movie 2001: A Space

Odyssey.

In today’s world, digital quartz movements are inexpensive and dominate timekeeping. Billions of timekeeping and timing devices are available in watches, timers, medical devices, military devices, and anything else that needs accurate timekeeping.

1970 marked the start of the UNIX operating system, which would become one of the most popular software applications in history.

This decade also witnessed the rise of minicomputers and the rise of specialized computers for word processing and office tasks. Among the companies in this niche were DEC with its PDP and VAX computers, Wang with both specialized word processing machines and small computers, and Prime Computers.

The physical reduction in the size and weight of computers from mainframes to minicomputers made it obvious that it would soon be possible to have computers that were small enough to carry around and be portable.

The IBM 5100 computer, released in September 1975, was the first computer that could be carried from place to place, although it required some physical strength because it weighed about 55 pounds.

In 1976, this “portable” computer was followed by the NoteTaker from Xerox Park, which was a prototype that would later be the pattern for the Osborne and Compaq portables in the next decade. These portables each weighed about 26 pounds.

In the 1970s, the need for portable computers was seen, but the technology to shrink computers down to a truly portable form factor would not surface until later decades.

Also in 1976, the mathematician Tom McCabe developed the cyclomatic complexity metric. This measures the control of the paths through a software application. It has remained a key metric for more than 35 years.

This decade also saw the use of embedded software in an ever-growing family of physical devices. For example, the first widely used cochlear implant was developed in 1972. Cochlear implants surgically embed wires that replace damaged cochlea, and sound quality is adjusted by software in the embedded device.

In October 1978, Al Albrecht of IBM in White Plains gave the first public speech on function points at the joint IBM/SHARE/GUIDE conference in Monterey, California. (After the conference, Al’s paper was republished in my first book, with the permission of Al and the conference organizers. This first publication of Al’s paper in Programming Productivity: Issues for the

Eighties by the IEEE Computer Society Press was the first of many articles and books about function

points.)

In 1979, Dan Bricklin and Bob Frankston introduced the VisiCalc application for Apple computers, which greatly expanded the use of personal computers for personal finance and easy mathematical modeling. VisiCalc was also released for the IBM PC in 1981.

This decade saw the evolution of higher-level languages. Some of the languages created in this decade include Pascal and Forth in 1970; C, Smalltalk, and Prolog in 1972; COMAL and EML in 1973; ELAN in 1974; Scheme and RATFOR in 1975; and SQL in 1978.

These joined COBOL, FORTRAN, and PL/I, and the explosion of languages was well under way. From this decade forward, new languages appeared almost every month, and the total number of languages now tops 2,500.

The explosion of programming languages seems to be more of a sociological phenomenon than a true technical need. The existence of so many programming languages makes maintenance of legacy applications complex and difficult. Indeed, the life expectancy of a large application is sometimes

longer than the life of the language used to create it.

Another phenomenon also occurred in this decade, and it is still expanding in the present decade. Applications began to use multiple languages such as COBOL and SQL or, more recently, Java and HTML. From my collection of data, an average software application contains about 2.5 different programming languages. I have noted that the maximum number of programming languages in a single application is 15, and quite a few applications use more than half a dozen.

The plethora of languages is not necessarily beneficial to the industry. Development may be aided somewhat, but the task of maintenance and enhancement of legacy applications written in dead or dying languages has become a major cost driver for the software industry.

The 1970s also saw the early evolution of structured programming and the birth of object-oriented programming. The decade witnessed the rapid migration of computers and software from the scientific and military domains into the business domain.

This decade, one of explosive growth of software in all industry segments, also witnessed IBM’s rise to become one of the world’s major providers of computers and software. Table 6.1 shows the approximate numbers of applications during this decade.

Table 6.1 U.S. Software Applications from 1970 to 1979

Function Points in 1975

Function points were invented by IBM in White Plains by Al Albrecht and colleagues circa 1975 and were published outside of IBM in 1978.

Formal inspections were developed by IBM during this decade by Mike Fagan, Ron Radice, and colleagues in IBM Kingston. During this decade, IBM pioneered dozens of software engineering technologies and established an excellent reputation for quality and reliability of both hardware and software.

For the same application of 1,000 function points, the results would be the following: • Source code statements for 1,000 function points: 91,426 logical code statements • Programming language: C

• Methodology: Unstructured waterfall

• Productivity: 6.00 function points per staff month • Defect potentials: 5.00 per function point

• Defect removal efficiency (DRE): 85% • Delivered defects: 0.75 per function point

• Ratio of development personnel to maintenance:

• Development: 80%

• Maintenance: 20%

The following are the background data for 1975: • Average language level: 3.50

• Number of programming languages: 100 • Logical statements per function point: 91 • Average application size: 950 function points

• Average application size: 86,450 logical code statements

The combination of better programming languages and increased development rigor was responsible for the productivity and quality gains. However, large software projects continued to have cost and schedule overruns and far too many bugs. Canceled projects with more than 10,000 function points remained an endemic problem.

Summary

The unbundling of software by IBM in 1969 opened the floodgates to the creation of hundreds of commercial software companies. The patent decision in 1973 that invalidated the ENIAC patent opened up paths for new computer companies as well, including small companies such as Apple and Commodore.

At the start of the 1970s, computers and software were minor niche industries with uncertain futures. By the end of the decade, computers and software were on their way to creating wealth beyond imagination and making Bill Gates the world’s wealthiest individual and Apple Computer the world’s wealthiest company. The jobs of computer programming and software engineering continued to expand rapidly.

By 1979, computers and software were well on their way to becoming the dominant tools for business and government operations, and they were also on their way to becoming major personal tools as well.

After this decade, the impact of computers and software would permeate every aspect of business, government, military, and personal activities. The world was changing, and computers and software created huge networks that spanned the globe.

Chapter 7. 1980 to 1989: The Rise of Personal Computers and

Personal Software

The 1980s witnessed a major business change in history. The arrival of the IBM personal computer and the continued expansion of the Apple line turned computers and software from pure corporate business tools into sophisticated personal tools. The hardware changes were accompanied by a huge expansion in new commercial software packages aimed at the personal computer market. Indeed, “commercial off-the-shelf” (COTS) software began to displace custom-built software in many industries on both mainframe and personal computers.

The explosion of personal computers had a negative impact on minicomputers, which had been a growing business up until this time. Mainframes and supercomputers continued to be critical tools in major corporations and large government agencies. By the end of the decade, minicomputers were a dying industry.

The advent of personal computers led to a major expansion of software for personal use such as office suites, calendars, and home finance.

By the end of the decade, notebook computers were arriving, as were even smaller devices called personal digital assistants (PDAs). Portability became a new market force as many companies competed for combinations of lightweight and long-battery-life personal devices. (During the 1980s, I visited several companies working on prototypes of small computers and handheld devices that would emerge in later decades.)

This decade also saw the expansion of outsourcing as companies realized that their internal software groups were large, expensive, and not necessarily capable of building software well.

Another major advance in this decade was the creation of the World Wide Web , which would change human communications forever.

In document Software Engineering Leaf Knot (Page 143-147)