The University of Queensland Homepage
School of ITEE ITEE Main Website

 Software Engineering Project History

Below I have listed the results submitted for the SE History tutorial by the various groups. Some groups did not contribute. It turns out that most groups were unable to find out what the software engineering method on the project was. Some suggested SE Methods for producing software include (according to the submissions):

·         A large central computer or network

·         Writing software using drums of paper tape

·         Pushing employees hard

·         Having a Standard channel interface

Since these are not really methods, but properties, I have added a separate table of my own below that contains some additional examples.

Team

Project

Type

Decade

Hardware

Language

SE Process

1B

VMS

Operating System

70s

VAX

FORTRAN-77, COBOL, BLISS-32, Pascal, Lisp, …

Not found

1E

Multics

Operating System

60s

GE-635 Mainframe

PL/1, Assembly

Waterfall

2A

PDP-6 Monitor

Operating System

60s

PDP-6

MACRO-6 Assembly and BLISS

Not found

2D

Sabre

Application

50s

IBM 7090 mainframe

FORTRAN

Waterfall

2F

Oracle

Database

70s

PDP-11

Assembly

Not found

3A

MTS

Operating System

60s

IBM S/360

Assembly, Plus, GOM

Not found

3B

PGNCS

Application

60s

AGC

Assembly, AGC interpreter

Waterfall

3D

Nexus

Application

90s

Next

Objective C

Spiral

3D??

Not defined

Operating System

60s

IBM 1410

COBOL

Not found

3F

SAGE

Application

50s

AN/FSQ-7 mainframe

Assembly

Waterfall

3G

UNIX

Operating System

70s

PDP-7

Assembly

Spiral

Some additional Recent Projects

Project

Type

Decade

Hardware

Language

SE Process

Additional

Lisa OS

Operating System

80s

Lisa

C++

Spiral

Lisa Interview

NextStep

Operating System

80s

Mac

Objective C

OOA/OOD

 

Just for fun: User Manual for the IBM 1401. Especially page 15!

1B: (Mini-)VAX

Reason for the Project

The VAX-11 series was the first 32-Bit architecture ever and represents a milestone in computer history. The old PDP-11 system of Digital Equipment Corporation was getting old and cheaper and it was time for something innovative to keep or improve DECs position on the market. It introduced a 32 Bit instruction set (wide word) and virtual memory support (paging), principles also used today.

Objective of the Project

The VAX-11 system was developed from scratch. Concurrently with the hardware (CISC processor, highly orthogonal instruction set) also the operating system, later on called OpenVMS (though it was/is not open source) was developed. This lead to a highly meshed architecture, where hardware and software work together very well. The VAX-11 (miniVax) instruction set was designed to be powerful and orthogonal. When introduced, many programs were written in assembler language, so having a “user-friendly” instruction set was important. In time, as more programs were written in higher-level language, the instruction set became less visible, and the only ones much concerned about it were compiler writers. When it came to market in the late 1977s, VAX machines were the most powerful machines on the market (1 MIPS) and were therefore used as a baseline for CPU Benchmarking. This did not help the architecture to become more popular.

Programming Language Used

FORTRAN-77, COBOL, BLISS-32, Pascal, Lisp, …

Hardware Used

UNIBUS or MASSBUS disks and, tapes typically, l-2tape drives and 2- 6 disks configured RP05, RK07, and TE16 most common

Method Used

·         Concurrent building of both software and hardware.

·         Provide a set of homogeneous distributed computing system products so a user can interface, store information and compute, without re-programming or extra work in many styles and the following computer system sizes:

·         As a single user computer within a terminal

·         At a small, local shared computer system

·         Via a large central computer or network.

1E: Multics

Reason for the Project

In the beginning Multics is developed as a research project. However Multics become commercial product for General Electric and HoneyWell even though not very successful one. commercial product. Originally it was a cooperative project led by MIT (with Fernando Corbató) along with General Electric and Bell Labs. Bell Labs dropped out in 1969, and in 1970 GE’s computer business including Multics was taken over by Honeywell.

Objective of the Project

Multics (Multiplexed Information and Computing Service) was a mainframe timesharing operating system that began at MIT as a research project in 1965.

One of the overall design goals is to create a computing system which is capable of meeting almost all of the present and near-future requirements of a large computer utility. Such systems must run continuously and reliably 7 days a week, 24 hours a day in a way similar to telephone or power systems, and must be capable of meeting wide service demands: from multiple man-machine interaction to the sequential processing of absentee-user jobs; from the use of the system with dedicated languages and subsystems to the programming of the system itself; and from centralized bulk card, tape, and printer facilities to remotely located terminals. Such information processing and communication systems are believed to be essential for the future growth of computer use in business, in industry, in government and in scientific laboratories as well as stimulating applications which would be otherwise undone.

Multics should provide

·         Convenient remote terminal use.

·         Continuous operation analogous to power & telephone services.

·         A wide range of system configurations, changeable without system or user program reorganization.

·         A high reliability internal file system.

·         Support for selective information sharing.

·         Hierarchical structures of information for system administration and decentralization of user activities.

·         Support for a wide range of applications.

·         Support for multiple programming environments & human interfaces.

·         The ability to evolve the system with changes in technology and in user aspirations.

Programming Language Used

·         PL/1

·         Assembly language

PL/I (“Programming Language One”, pronounced “pee-el-one”) is a procedural, imperative computer programming language designed for scientific, engineering, business and systems programming applications. It has been used by various academic, commercial and industrial users since it was introduced in the 1960s, and is actively used as of 2010.

Assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture. This representation is usually defined by the hardware manufacturer, and is based on mnemonics that symbolize processing steps (instructions), processor registers, memory locations, and other language features. An assembly language is thus specific to a certain physical (or virtual) computer architecture. This is in contrast to most high-level programming languages, which, ideally, are portable.

Hardware Used

A GE-635 (by General Electric) was delivered to Project MAC in August 1965 for use running the 645 simulator. The 645 was delivered to Project MAC in January 1967, and Multics was self hosting, able to compile itself on, by the end of 1968.

Method Used

Design Process

·         Technical memorandum to describe the problem to be solved and seeking consensus at the level of problem definition from other members of the programming staff. After defining satisfactory problem, designer writes technical memorandum describing his proposed solution and again seek for consensus.

·         Formal Multics Change Request (MCR) is written to summarize the change to Multics, the reason for that change and its implication. If it affect system documentation, draft of changes is also supplied with MCR. MCR is submitted to MCR board which includes most experienced and knowledgeable people on staff. The decision to approve MCR  determined by voting of MCR board.

Implementation

For most projects, the designer is also the programmer, debugger, and documenter. This practice eliminates a troublesome layer of communication and responsibility determination. This approach is feasible due to the ease of the actual programming and debugging task in the Multics environment. High programmer productivity has been established as a Multics tradition; this has come about partly by selecting talented and dedicated people, and partly by providing them with powerful tools, including PL/I.

Program Auditing

When a Multics system programmer has completed a change, he submits his modules to a knowledgeable colleague for review. Thus, not only is the design reviewed by the design discussion process and the MCR Board, but the actual implementation is also subjected to expert scrutiny.

The auditor is responsible for pointing out problems with general structure, documentation, conformance to system standards, and correct operation. The MCR Board sometimes attaches special comments to an MCR to remind the programmer and auditor of important things to check. The auditor can, and often does, suggest changes in the structure of a program, the names of variables, and the comments, as well as in items that actually affect the execution of the program. Several rounds of auditing may be necessary before programmer and auditor agree that the program is ready to install.

2A: Hardware: PDP – 6 / Software: PDP-6 Monitor

http://ed-thelen.org/comp-hist/pdp-6.html

Reason for the Project

The PDP-6 originally was designed to extend the performance of Digital's 18-bit processor series, but several facto influenced the course of the new design. It ended up being the PDP-10 production prototype as its main reason it was started.

Objective of the Project

Designed for timesharing and real-time lab use, with straightforward interfacing capability.

Programming Language Used

An early version of the TOPS-10 OS, Called Monitor was used on the PDP-6. The Monitor OS was written in a combination of MACRO-6 Assembly and BLISS(A systems programming language. Widely used until it was overshadowed by C).

Hardware Used

The OS was primarily written and programmed into the PDP-6 using drums of paper tape. The Monitor OS used on the PDP-6 was further developed on the machine to produce the TOPS-10 OS used in the PDP-10.

Method Used

The OS was primarily written and programmed into the PDP-6 using drums of paper tape.

2D: Sabre

Reason for the Project

Sabre was originally designed for American Airlines to aid in the organisation of seat reservations, and aircraft management.

Objective of the Project

The project was designed to deliver fast, cheap airline reservation with data consistency, information collection and management. It was to allow airlines to grow without the issues arising from an ever-expanding customer base.

Programming Language Used

FORTRAN

Hardware Used

The software was developed on two IBM 7090 mainframes in Briarcliff Manor, NYC. In 1972, the system was migrated to the IBM System/360.

Method Used

Waterfall Method, designed for the SAGE program, which led to the development of SABRE.

2F: Oracle 1 (1977):

Reason for the Project

The founders of Oracle, Lawrence J. Ellison and Robert N. Miner, wanted to start a software firm together. They had worked together before and both had a lot of experience in building custom database systems. Ellison used to read technical documents published by IBM and noticed the interest in relational databases. He suspected that the new technology would soon be incorporated into IBM computers, so they developed the Oracle Relational Database Management System to manage them.

Objective of the Project

There were 3 initial objectives of Oracle’s project.

1.      The initial objective of Oracle was to reproduce a commercial version of a relational database system that they had created for the CIA. In fact, they named the company after the codename the CIA gave the project. Oracle wanted this commercial RDBMS to work in an ad hoc network.

2.      The second objective was to make a portable software that would work with IBM’s structured query language (SQL).

3.      Finally, Oracle wanted to market to minicomputers as opposed to mainframes. This was because they wanted a more youthful following and IBM was focused on mainframes, so Oracle wouldn’t have much competition in the minicomputer field.

Programming Language Used

Assembly

Hardware Used

PDP-11 microcomputer

·         128k memory

·         16 bit operating system

·         had the ability to take advantage of C programming language (even though oracle 1 was in assembly)

·         closed architecture (cant switch out components) meant it had a limited lifespan even though the firmware was reguarly updated to utilise newer technologies

Method Used

It’s unclear, but in the 70’s and 80’s Ellison had a reputation for pushing his employees hard and the oracle company had a reputation for delivering unreliable software. Ellison was aggressively focused on sales and nothing else, making wild claims about the software and selling it at huge discounts. Thus the focus was definitely not working software nor was it anything to do with customer satisfaction. The culture was probably far from agile.

3A: IBM S/360 -Michigan Terminal System (MTS)

Reason for the Project

MTS was a time-sharing system built to replace the original time-sharing system for the IBM S/360. The original system was overly ambitious and did not work properly which stressed the need for a new and working project. MTS was a solution to overcome the conflicting views of time-sharing while supporting the expanded memory capacity of the IBM S/360.

Objective of the Project

Along with Multics at MIT, MTS were the first operational virtual memory operating systems in the world. MTS was built as a pioneering system that was in several ways a direct ancestor of the Internet, offering early forms of email, file-sharing and conferencing. It consisted of an executive system together with various programming languages and utilities. For many years, it and it’s clones at University of Alberta in Canada and INRIA in Grenoble, France, served the faculties, staff and students of eight universities in US, Canada and UK that comprised the MTS Consortium.

Programming Language Used

Various programming languages were used, but 360/370 Assembler was the main focus. A few job programs and portions including some Command Language Subsystems(CLSs) and Device Support Rountines(DSRs) were written in higher level languages like Plus and GOM. User programs are written in a wide range of languages from assembler to any of the higher level languages that are available.

Hardware Used

·         IBM: S/360-67, S/370-148, S/370-168, 3033U, 4341, 4361, 4381, 3081D, 3081GX, 3083B, 3090-200, 3090-400, 3090-600, and ES/9000-720

·         Amdahl: 470V/6, 470V/7, 470V/8, 5860, 5870, 5990

·         Hitachi: NAS 9060

·         Various S/370 emulators

Method Used

·         Integrated design of hardware and software

·         I/O system offers new degrees of concurrent operation, and the data rates approaches 5,000,000 characters/sec,

·         Truly general purpose machine organization which offers supervisory facilities, powerful logical processing operations, and a wide variety of data formats

·         Standard channel interface between central processing unit and input/output devices.

·         The storage approaches permits and exploits very large capacities, hierarchies of speeds, read only storage for microprogram control, flexible storage protection.

3B: Apollo Mission Computer System

Reason for the Project

The Apollo lunar landing program presented a tremendous managerial and technical challenge to NASA. Navigating from the earth to the moon and the need for a certain amount of spacecraft autonomy dictated the use of a computer to assist in solving the navigation, guidance, and flight control problems inherent in such missions. Before President John F. Kennedy publicly committed the United States to a “national goal” of landing a man on the moon, it was necessary to determine the feasibility of guiding a spacecraft to a landing from a quarter of a million miles away. The availability of a capable computer was a key factor in making that determination.

 The presence of a computer in the Apollo spacecraft was justified for several reasons. Three were given early in the program: (a) to avoid hostile jamming, (b) to prepare for later long-duration (planetary) manned missions, and (c) to prevent saturation of ground stations in the event of multiple missions in space simultaneously. Yet none of these became a primary justification. Rather, it was the reality of physics expressed in the 1.5-second time delay in a signal path from the earth to the moon and back that provided the motivation for a computer in the lunar landing vehicle.

Objective of the Project

With the dangerous landing conditions that were expected, which would require quick decision making and feedback, NASA wanted less reliance on ground-based computing. The choice, later in the program, of the lunar orbit rendezvous method over direct flight to the moon, further justified an on-board computer since the lunar orbit insertion would take place on the far side of the moon, out of contact with the earth. These considerations and the consensus among MIT people that autonomy was desirable ensured the place of a computer in the Apollo vehicle.

Programming Language Used

The computer language used was HAL/S (Higher-order assembly Language/Shuttle) which is an improved version of MAC.

Hardware Used

A fairly compact computer for its time, Apollo Guidance Computer(AGC) was written in AGC assembly language and stored on rope memory. It provided onboard control of the Command Module(CM) and the Lunar Module(LM) spacecraft of the Apollo program. There was a simple real time operating system consisting of the Exec; a batch job-scheduling system.

The programs were written in the first higher order computer language called MAC and then compiled by hand, which they typed onto punchcards.The MIT’s instrumentation laboratory(IL) had a number of mainframes, including Honeywell 1800 and the IBM 360 model 175 mainframe computer(used for debugging purposes), which ran simulations of the Apollo computers.

A user interface for AGC, abbreviated DSKY was developed for the Apollo program. Using the Apollo computer system, it took about 10,500 keystrokes to complete a lunar mission. Communication between the crew and the computer was possible via flashing the PROGram, VERB and NOUN displays.  The displays included 10 warning lights, a computer activity light, a PROGram display, VERB and NOUN displays, three five-digit numeric displays with signs, 19 keys including VERB, NOUN, CLEAR, KEY RELEASE, PROCEED, RESET, ENTER, PLUS, MINUS and digits 0-9 as shown in figure  below.

 DSKY unit for the Apollo computers

Apollo’s computer had permanent and erasable memory. It was the first to use ICs.  The block I version used 41000 ICs, each containing a single 3-input NOR gate, whereas the later Block II version used 2800 ICs, each containing a two 3-input NOR gates. A 2.048 Mhz crystal clock was used for timing reference. The AGC consisted of four 16-bit registers called central registers, for general computational use. It also consisted of additional registers which were used internally.

Method Used

The Apollo computer used few flip-flop registers due to size and weight considerations.

To further reduce size and weight, the Apollo computer was designed with a single adder circuit, which the computer used to update incremental inputs, advance the next address register, modify specified addresses, and do all the arithmetic.

The memory size was increased with the increase in development of mission requirements. NASA and its computer contractors have been consistently unable to make adequate judgments in this area. Apollo’s computer had both permanent and erasable memory, which grew rapidly over initial projections. Software was not considered a driving factor in the hardware design, and the hardware requirements were insufficient. The use of core rope constrained NASA’s software developers.

Software to be stored on core rope had to be perfect and delivered months before a scheduled mission for the rope to be properly manufactured and tested.

In the Apollo program, as well as other space programs with multiple missions, system software and some subordinate computer programs are only written once, with some modifications to help integrate new software. The cycle of requirements, design, coding, testing and maintenance was followed even during the early 1960s. The important difference from present practice was the report’s recommendation that modules of code be limited to 200 to 300 lines, about five times larger than current suggestions.

For Apollo, MIT developed a higher order language that translated programs into a series of subroutine linkages, which were interpreted at execution time. This task although slower than a comparable assembly language program, the language required less memory for the same task.

The lessons learned include

·         Documentation is essential.

·         Verification must proceed through several levels.

·         Requirements must be correct and defined clearly.

Bibliography

·         http://www.netjeff.com/humor/item.cgi?file=ApolloComputer

·         http://en.wikipedia.org/wiki/Apollo_Guidance_Computer

·         http://en.wikipedia.org/wiki/Apollo_PGNCS

·         http://history.nasa.gov/computers/Part1.html

·         http://books.google.com.au/books?id=gXYItzQARVoC

3D: HTTP protocol and the first web browser

Reason for the Project

It was a proposal by Tim Berners-Lee to use "HyperText...to link and access information of various kinds as a web of nodes in which the user can browse at will."

Objective of the Project

"The World-Wide Web was developed to be a pool of human knowledge, and human culture, which would allow collaborators in remote sites to share their ideas and all aspects of a common project."

Programming Language Used

The WorldWideWeb browser (later Nexus) was written in Objective C, but later on many componenets were rewritten in C.

Hardware Used

The original web browser, WorldWideWeb (later Nexus) was writtne on a NeXT computer which had a greyscale screen.

Method Used

The first web browser was originally written by Tim Berners-Lee himself while working at CERN. As time went on more people helped with the project. The browser was built iteratively with new versions being made to deal with revisions to the HTTP protocol.

3D: IBM1410

Reason for the Project

IBM1410 needed an operating system

Objective of the Project

To provide a compatible operating system for the new IBM1410

Programming Language Used

COBOL

Hardware Used

IBM1410

Method Used

Waterfall method

3F: SAGE (Semi Automatic Ground Environment)

http://en.wikipedia.org/wiki/Semi_Automatic_Ground_Environment

Reason for the Project

After WWII, with the on-set of jet-powered aircraft, using manual ground-controlled interception methods to counteract fighter and, in particular, bomber planes was too slow.  By the time a plane had been spotted on a radar, had its path computed and a fighter plane had been ordered to intercept it, the attacking plane would have already reached its target destination.

Objective of the Project

Dr. George E. Valley decided that, to ensure the U.S.A. had some sort of protection a radar system would have to span the coasts of the USA, as well as Canada. However, if such a system were to be implemented, the sheer number of reports that would flood in the event of a raid would be overwhelming. Valley decided that the entire system could be automated by connecting all of the radar sites to a computer, which would control all of the necessary input and output. This simplified the operator’s job dramatically, as they only had to choose which targets to attack, and what assets to use.

Programming Language Used

·         500,000 lines of assembly language (wiki, does not specify which assembly language)

·         Punched cards

Hardware Used

·         AN/FSQ-7 - possibly the largest computer ever built, and likely to remain so in the future

·         CRTs

·         Light guns

·         Love the complimentary feature: built-in cigarette lighter and ashtray

Method Used

Likely waterfall or V-model (could not find conclusive information), could also be some special methodology used by the military. Different entities participated in the project so it’s almost certain, especially considering the era in which this project was done, that they used a process which clearly distinguished phases and allowed them to pass work from one entity to another.

3G UNIX

Reason for the Project

Bell Labs, frustrated by the size and complexity of Multics but not the aims, slowly pulled out of the project. Their last researchers to leave Multics, Ken Thompson, Dennis Ritchie, M. D. McIlroy, and J. F. Ossanna,[4] decided to redo the work on a much smaller scale.”

http://en.wikipedia.org/wiki/Unix

“Thompson, once it was obvious that Multics was going away, decided to satisfy two urges: to write an operating system of his own, and to create an environment in which to do future work.”

http://www.bell-labs.com/history/unix/acronyms.html

Objective of the Project

Dennis Ritchie says "What we wanted to preserve was not just a good environment in which to do programming, but a system around which a fellowship could form. We knew from experience that the essence of communal computing, as supplied by remote-access, time-shared machines, is not just to type programs into a terminal instead of a keypunch, but to encourage close communication." http://en.wikipedia.org/wiki/Unix

Programming Language Used

Initially written in PDP assembly code. But by 1973 most was rewritten in C.

Hardware Used

Minucs was developed on an expensive GE645 series mainframe. (http://en.wikipedia.org/wiki/GE-600_series)

During the same year bell labs pulled out of the multics project, Ken Thompson had developed a game - ‘Space Travel'. This was developed to run on a multics system. As cpu time on the GE mainframe was expensive, a PDP-7 (http://en.wikipedia.org/wiki/PDP-7) was obtained. The porting of Space Travel to the PDP7 provided valuable experience in working with the PDP-7’s instruction set and limitations.

Unix was programmed on a GE600 series mainframe running GECOS, in PDP assembly. This was assembled and written to paper tapes, which ran on a PDP-7, however, as soon as an assembler was completed, the system could support itself.In 1970 a PDP-11 machine was purchased by bell labs, for the development of a text editing system. Development continued on the PDP-11. Unix was later ported to c and was therefore became cross-platform.

http://cm.bell-labs.com/cm/cs/who/dmr/hist.html

Method Used

Look at: bell labs' history of unix:

http://cm.bell-labs.com/cm/cs/who/dmr/hist.html

Linux timeline: http://www.levenez.com/unix/

The design for unix seemed to be incremental. Individual components were developed, some before the initial planning phase for the operating system, though most after a requirements document was created. As components were added, some components had to be redesigned to fit with the existing system.

"Thompson saw that file arguments weren't going to fit with this scheme of things and he went in and changed all those programs in the same night. I don't know how...and the next morning we had this orgy of one-liners."

http://www.bell-labs.com/history/unix/sohedid.html

“Thompson, R. H. Canaday, and Ritchie developed, on blackboards and scribbled notes, the basic design of a file system that was later to become the heart of Unix. Most of the design was Thompson's, as was the impulse to think about file systems at all, but I believe I contributed the idea of device files. Thompson's itch for creation of an operating system took several forms during this period; he also wrote (on Multics) a fairly detailed simulation of the performance of the proposed file system design and of paging behavior of programs.”

http://cm.bell-labs.com/cm/cs/who/dmr/hist.html

“He first worked out the requirements for an operating system, in particular the notion of processes. Then he developed a small set of user-level utilities: the means to copy, print, delete and edit files. And he developed a command interpreter, or shell.”

http://www.bell-labs.com/history/unix/takeshape.html