MODERN ENGINEERING COMPUTATIONS

[ Use of Computers ] [ Recent Advances in Computing ] [ Hardware in a Simple Computer ]
[ Storing Information on Computers ] [ Computer Networks ] [ The Internet ]
[ The World Wide Web ] [ Principles of Software Development ] [ Programming Languages ]
[ Compiled/Interpreted Computer Programs ]


USE OF COMPUTERS

During the past three decades remarkable advances have occured in the processing speed of computers, the capacity of computers to handle large quantities of data and information, and in the ability of computers to communicate with other computers over networks. The combination of these factors has not only allowed for new ways of storing, manipulating, and presenting information, but has enabled engineers to expand the role of computers in the design, analysis, and production of complex engineering systems.

HOW DO ENGINEERS USE COMPUTERS TODAY ?

Evidence of these advances can be found in present day engineering offices where computers are employed in four broad capacities:

From a business point of view, the most useful application programs are those that directly improve the performance and reliability, productivity, and economic competitiveness of engineering systems development. To this end, application programs should be fast and accurate, flexible, reliable, and of course, easy to use. Moreover, they should work together. A good example of the latter requirement can be found in modern day Computer-Aided Design (CAD) systems, where engineering analysis programs are integrated with project requirements and organizational resource databases, and databases of commercial off-the-shelf products, materials and services.

An unfortunate problem caused by the rapid pace of these advances is the gap many engineers are finding between their knowledge of these technologies, and the opportunities they afford. Solutions to this problem are complicated by the large number of activities in which engineers participate and the inability of many present day engineering applications programs to operate across a variety of hardware platforms and operating systems. A second problem is rapidly changing technology. Since some of the tools and computer languages we will be using in 5-10 years from now are only just being invented, keeping up-to-date with computational technologies is really a lifelong endeavor.


RECENT ADVANCES IN COMPUTING

A LITTLE HISTORY

So where are heading and what will be possible in the near future? A good way of beginning to understand where computers and programming languages might be headed in the near future, is to take a look at where they have come from in the recent past. We therefore begin this section with a little history.

[Babbage Computer] The adjacent figure shows Charles Babbage's Analytical Engine developed back in the 1830's. Charles Babbage, a Professor of Mathematics at Cambridge University conceived the possibility of of a mechanical device that would be able to perform a string of related calculations. He surmissed that information could me manipulated by a machine if it could be converted to numbers first. Even though Babbage's machine was mechanical (with toothed wheels, cylinders ... ) he was able to follow changing "sets of instructions and thus serve different functions." Babbage realized that in order to create instructions that would allow the machine's behavior to be modified with changing conditions, he would need an entirely new type of language. Babbage's ideas are reflected in today's computer software -- software is nothing other than a comprehensive set of rules a machine can be given to instruct it how to perform a particular task.

For the past 15 years computers have been providing approximately 25% more power per dollar per year. Together with the aforementioned advances in technology and market driven forces, these changes have stimulated the exploration of many new ideas and paradigms. Table 1 summarizes, for example, the major paradigms of computing versus decade for the past 30-35 years (this diagram has been adapted from a recent article in Scientific American [Tesler91]).

===========================================================================
            BATCH            TIME-SHARING    DESKTOP        NETWORKS

Decade      1960s            1970s           1980s          1990s -- 
===========================================================================

Technology  Medium-Scale     Large-Scale     Very-Large     Ultra-Scale
            Integration      Integration     Scale Int.     Integration

Location    Computer Room    Terminal Room   Desktop        Mobile.

Users       Experts          Specialists     Individuals    Groups.

Objective   Calculate        Access          Present        Communicate

User        Punch and Try    Remember/Type   See and Point  Ask and Tell
Activity    (computer cards)                 (drive)        (delegate)

Data        Alpha-numeric    Text            Fonts          Sound
                             Vector          Graphs         Video

Languages   Cobol, Fortran   PL/1, Basic     Pascal, C      C++, Java
                                             SQL            Perl, Tcl/Tk.

Connect     Peripherals      Terminals       Desktops       Palmtops
===========================================================================
Table 1 : Computing Paradigms versus Decade

Advances in computer hardware and software have allowed for the exploration of many new ideas and paradigms, and have been a key catalyst in what has led to the maturing of computing as a discipline.

In the near future the biggest gains in productivity are likely to come from the integration of currently disparate application packages into a single environment. New software development methodologies and programming languages are being developed to this end. We will come back to this point in the latter sections of the handout.

REFERENCES

  1. Gates W., Myhrvold N., and Rinearson P., The Road Ahead , Viking Press, 1995.
  2. Press L., Personal Computing : Technetronic Education : Answers on the Cultural Horizon, Communications of the ACM, Vol. 36, No 5, pp. 17-22, May 1993.
  3. Tesler L.G., Networked Computing in the 1990's, Scientific American, Vol. 265, No. 3, pp. 86-93, September, 1991.


HARDWARE COMPONENTS IN A SIMPLE COMPUTER

The three main components of a computer are:

  1. The hardware;
  2. The application programs (or software);
  3. The operating system.

The computer hardware is the machinery that manipulates data, and the program instructions. Computer software is the programs that direct the operation of the computer. Computer programs, such as those written in C and Fortran, will be compiled into a sequence of low-level machine instructions, which will be executed on the computer hardware. An operating system is the set of programs that provides an interface between the computer hardware and the computer users. It manages the sharing of a computers resources, such as management of memory contents, flow of data and information, and assignment of processes to I/O devices.

[Simple Computer]

Figure 1 : Hardware Model of a Personal Computer

All engineers should have a basic understanding of the hardware components in a simple computer, and operating systems concepts, because many computer programs are often written to interact with I/O devices, and a computer's operating system.

With this point in mind, Figure 1 is a schematic of the main hardware components in a typical (simplified) personal computer. At the top-level, a computer is an assembly of memory, processor, and input/output (I/O) modules. A particular computer may have one or more modules of each type, and these modules will be connected in some way to produce the main function for the computer.

The purposes of the individual components are:

CPU : The Central Processing Unit (CPU) is the engine that controls the operations of the computer by executing instructions. In a conventional CPU, instructions are fetched, decoded, and executed one at a time. The control unit controls the fetch, decode, and execute cycles for instructions stored in memory. The arithmetic control unit carries out arithmetic and logical operations on words of data. A word of data is as long as the length of the hardware register in bits. The word length of a computer refers to the size of the unit of data in bits, that a CPU can process at a time. And finally, the internal storage unit (not to be confused with the computer's primary memory) is fast internal memory that temporarily stores and manipulates data. It also contains busses (i.e. wires) for communication of the CPU with I/O devices, and mass storage (RAM and ROM).

The speed of a CPU is closely linked to the size of computer chips. In modern computer chips transistors are constructed by placed on ultra-thin layers of insulating and conducting materials atop silicon wafers, which control the flow of electricity through the chip, as it stores and calculates data. The more transistors a chip has the more information it can process. Developing new ways to make chips smaller is just as important as designing chips with larger number of transistors because electrical impulses will have smaller distances to travel. Smaller distances means that more of them can be sent each second, allowing the chip to run faster and give of less heat. State of the art manufacturing processes in 1997 allow for chips having a miniturization of 1/290-th of a hair-width. The result, Pentium processor technology, has a maximum speed of 200-230 millions of cycles per second. The next-generation of Pentium Pro chips (manufactured at miniturization of 1/400-th of a human hair-width) will be able to run at speeds up to 500 MHz [Chand 97].

Computers with a large word length will process data faster than computers with a small word length. The first processor had 4-bit word lengths (as in the example above). Nowadays, 16-bit personal computers, and 32-bit engineering workstations are commonplace.

Busses : A bus is an electronic pathway in a digital computer that provides a communication path for data to flow between the central processing unit (CPU) and its memory, and between and among CPU and various peripheral devices connected to the computer (e.g. printer).

In Figure 1, busses provide multiline paths for rapid data transfer between different sections of the main computer board.

Random Access Memory (RAM) : The primary memory in a computer is called RAM, an acronym for Random Access Memory. Sequences of binary digits in RAM are used to store data and low-level program instructions. Each digit is called a bit that can take only one of two values, zero or one.

Most personal computers and engineering workstations have 8-32 Megabytes of RAM.

Read Only Memory (ROM) : Many of today's computers also have Read Only Memory (ROM). Low-level system code; bootstrap code; basic input and output.

Interface Circuitry : Several interfaces to the outside world.

Mass Storage : This is where programs, data, images etc. are stored. The information is not lost when the machine is turned off.

REFERENCES

  1. Austin M.A. and Mazzoni D., Engineering Software Development in C , John-Wiley and Sons , New York, p. 700. (Scheduled for publication in 1997).
  2. Chandrasekaran R., Coming Intel Chip Transistors to Redefine Miniture (Technology will allow faster more powerful personal computers), Business Section, Washington Post , April 16, 1997.


STORING INFORMATION ON COMPUTERS

[Diskpack] Computers provide storage in addition to main memory for two reasons. First, computers need storage that is permanent so that information can be stored even when the computer is turned off. And second, most computer systems need to store more information than in available in main memory. Secondary storage devices include hard disks (that are attached to the disk drive), floppy disks, compact disks, and tapes (that are easily transportable).

Disks are constructed from magnetic material, and each bit of storage on the disk is a magnitized spot, and spots are arranged in a geometric (usually are circular) pattern.

TYPES OF INFORMATION

    Information Type      Observation
    =====================================================================   
   
    Characters            How much memory will be needed to store a
                          character ?

    Logical               Many statements evaluate to true or false.

    Numerical             The commonly used data types are:

                              -- integer
                              -- floating point
                              -- complex

    Graphics              Images, video, etc ...

    Voice                 Current CD's store up to 650 Mbytes.
                          The new digital video disks will store 12 times
                          this amount of memory.
    =====================================================================   

BASIC QUESTIONS

It is well known that the ability of computers to store, access, and manipulate information rapidly expanding. With each advance in technology, some of the basic issues we need to think about are:

QUANTITIES OF DATA

Table 2 summarizes the terms used to quantify disk storage capacities

    Term    Abbreviation                     Number of Bytes/Bits
    =============================================================   
    Byte               B                          1 Byte = 8 Bits
    Kilobyte          KB                        1024 = 2^10 Bytes
    Megabyte          MB                   1,048,576 = 2^20 Bytes
    Gigabyte          GB               1,073,741,824 = 2^30 Bytes
    Terabyte          TB                               2^40 Bytes
    =============================================================   

Table 2 : Terms Used to Quantify Storage

Here are some examples of storage capacities/requirements:

Of course, new consumer devices will need to be developed to take advantage of these technologies.


COMPUTER NETWORKS

WHAT IS A COMPUTER NETWORK ?

A computer network is simply two or more computers connected together.

Among the most important reasons for computer networks are the need for humans to communicate by sending messages, and for computers/humans to share resources (i.e. data and information).

Two types of network are:

  1. Local Area Network (LAN) : A local area network is a network where computers are connected together directly. Usually the connection will be some type of cable.

  2. Wide Area Network (WAN) : A wide area network is simply a network of local area networks connected together. The connection might be a cable, but increasingly, connections are becoming a mixture of cable, fibre optic, and satellite connectivities.

Communication among local area networks is handled by special-purpose computers called routers. Routers connect LANs to form a WAN. WAN's can then be connected to form even larger WANs.

WHAT IS A CLIENT/SERVER SYSTEM ?

As already mentioned, one of the principal uses of computer networks is to share data and information.

In many cases, this sharing of information is implemented by two programs running on separate computers. One program, called the server , provides a particular resource. The second program, called the client , makes use of that resource.

Many LAN's will consist of one server that provides information to many clients.

WHAT IS TCP/IP ?

TCP/IP is an acronym for Transmission Control Protocol/Internet Protocol.

TCP/IP is a collection of over 100 protocols that allows local- and wide- area networks, containing many types of computers, to communicate. TCP/IP defines how the information will be partitioned into small packets of data, and how this data/information will be managed as it passes from one computer to another.


THE INTERNET

WHAT IS THE INTERNET ?

We begin by trying form a mental picture of the Internet is and how it works. This can be a challenge since much of the Internet's operation is logical rather than physical.

In a physical sense, the Internet is the catch-all word used to describe the massive world-wide network of computers. The word "Internet" literally means "network of networks". In itself, the Internet is comprised of thousands of smaller regional networks scattered throughout the globe.

[Internet Access]

Figure 2 : Countries having access to the Internet

Figure 2 shows those countries (shaded in "black") having access to the Internet -- on any given day it connects roughly 20 million users in over 50 countries.

In a logical sense, the Internet is a source of global information resources. It allows people all over the world to communicate and share information. Communication occurs because one person will send another E-mail, or when one computer makes a connection to another computer and electronic messages are sent back and forth.

The Internet is rather unique in the sense their are no leaders. Nobody owns the Internet -- nobody is in charge, and nobody pays the entire cost for running the Internet.

USING THE INTERNET

Using the Internet means sitting at your computer screen and accessing information.

Having access to the Internet usually means that one has access to a number of basic services: electronic mail, interactive conferences, access to information resources, network news, and the ability to transfer files.

Access : A variety of technologies are currently available for accessing the Internet.

HISTORY AND GROWTH OF THE INTERNET

Brief History of the Internet : Here is a brief history of the Internet:

Growth of the Internet : Table 3 shows the number of hosts on the Internet versus time for August 1981 through July 1996.

Evolution of number of hosts in the period 08/81- 07/96

Date Number of hosts
Aug. 81 213
May 82 235
Aug. 83 562
Oct. 84 1,024
Oct. 85 1,961
Nov. 86 5,089
Dec. 87 28,174
Jul. 88 33,000
Jan. 89 80,000
Oct. 90 313,000
Oct. 91 617,000
Oct. 92 1,136,000
Oct. 93 2,056,000
Oct. 94 3,864,000
Jul. 95 6,642,000
Jul. 96 12,881,000

Table 3 : Growth of the Internet

The estimate for year 2000 is 40 million people connected to the Internet. The large majority will use connections from their homes.

SERVICES PROVIDED BY THE INTERNET

Services provided by the Internet include:

  1. E-mail : You can send or receive electronic messages from anyone on the Internet. Anything that can be stored in text file can be mailed. Facilities also exist for converting binary files (e.g. an executable computer program) into a format suitable for transmission via e-mail.

  2. Telnet : You can telnet to a remote computer anywhere on the Internet.

  3. File Transfer : The File Transfer Protocol (FTP) provides for the copying of files from one computer to another.

    Anonymous FTP is a system where an organization makes certain files available for public distribution - you can access such a computer by logging in with the user-id

                       anonymous
    

    No special password is required.

INTERNET ADDRESSING

On the Internet all addresses/domain names refer to ``electronic addresses,'' not postal addresses. You will need to know a domain name to send somebody e-mail, to ftp a file, and to access web pages located on a specific computer.

All Internet addresses follow a three-part format

          person's userid    @  domain name of computer(s)

                 ^           ^           ^
                 |           |           |
              Part 1   the "at" sign   Part 3

Example 1 : The internet address

          austin@galaxy.isr.umd.edu    

has the person-id "austin" and computer name "galaxy" and the domain name "isr.umd.edu." And as this example shows, there is never blank space between components of the Internet address.

User id's need not be unique, as you might expect. For example, two people with the family name "austin" can have the login name "austin" as long as they operate on separate domains. e.g.,

          austin@galaxy.isr.umd.edu    
          austin@euler.berkeley.edu

The domain name of the computer(s) must be unique, however.

INTERNET DOMAIN NAMES

As we have just seen in the example above, computer domain names are composed of sub-domain names (e.g. isr, umd and edu).

Domain Meaning
com Commercial Organization
edu Educational Organization
gov Government
int International Organization
mil Military Organization
net Networking Organization
org Non-profit Organization

Table 4 : Organizational Domain Names


Domain Meaning
at Austria
au Australia
br Brazil
ca Canada
de Germany (Deutschland)
dk Denmark
fr France
jp Japan
nz New Zealand
uk United Kingdom (England, Scotland, Wales, Ireland)

Table 5 : Some Geographical Top-Level Domains

Tables 4 and 5 summarize commonly used sub-domain names.

Example 1 : In the computer address

           isr.umd.edu

the sub-domain name "edu" tells us that the computer is located at an educational institution. The sub-domain name "umd" stands for the University of Maryland, and "isr" the collection of computers at the Institute for Systems Research, at the University of Maryland.

Example 2 : The Internet address

           vector@direct.ca

has a user-id (or login name) of "vector". The sub-domain "ca" means that this computer is located in Canada. The sub-domain "direct" means computer is one of many operated by "Internet Direct" .... To send e-mail to Chris Banke, just type:

           mail vector@direct.ca

MERGING OF COMPUTATION AND COMMUNICATIONS

Computers once viewed as a tool for computation alone, are now seen as an indispensable tool for computation and communications. Driven in part by competition in the marketplace, the merging of computation and communications is making fundamental changes to the way teams of engineers conduct their day-to-day business activities. Consider, for example, an engineer who has access to a high speed personal computer with multimedia interfaces and global network connectivity, and who happens to be part of a geographically dispersed development team. The team members can:

  1. Use the Internet/E-mail for day-to-day communications.
  2. Conduct engineering analyses at remote sites,
  3. Share design/analysis results among the team members.

By moving design information that was once in printed form to electronic networks, problems with redundant sources of information can be eliminated. Shared information means that less time will be needed to identify inconsistencies.

In the long-term engineers will:

  1. Participate joint ventures assembled over a network, and in on-line bidding of projects.
  2. Be provided with the capability of verifying that a design conforms to a set of on-line design standards, regulations and ordinances for municipalities. A building engineer may wish to verify, for example, that an architectural plan satisfies the rules and codes for the American Disabilities Act (i.e., for wheelchair access etc.).
  3. Be provided with access to "as-built" drawings and models of engineering systems, thereby providing a basis for new design and renovation of existing systems.

Making each of these steps happen will require the development of standards for the efficient communication of information -- including text, drawings, database tables, 3D design objects, and multimedia content -- across heterogeneous computer networks.

References

  1. Hahn H., Stout R., "The Internet Complete Reference," Osbourne McGraw-Hill, 1994.


THE WORLD WIDE WEB

WHAT IS THE WORLD WIDE WEB ?

The World-Wide Web began dates back to March 1989, when Tim Berners-Lee of the European Particle Physics Laboratory (known as CERN, a collective of European high-energy physics researchers) proposed the project to be used as a means of transporting research and ideas effectively throughout the organization. Effective communications was a goal of CERN's for many years, as its members were located in a number of countries.

The initial project proposal outlined a simple system of using networked hypertext (see next section) to transmit documents and communicate among members in the high-energy physics community. There was no intention of adding sound or video, and the capability to transmit images was not considered.

Since then hundreds of people throughout the world have contributed their time writing Web software and documents or telling others about the Web. In a way never envisioned by the original project group, the World-Wide Web (WWW) has rapidly evolved into a systems that provides users on computer networks with a consistent means to access a variety of media in a simplified fashion. it has created the first true global hypermedia network.

Although the early WWW systems had as their goal the advancement of science and education, it is now evident the World-Wide Web project has the potential to make a significant impact in these areas -- it is poised to revolutionize many elements of society, including commerce, politics, and literature.

Much in the same way, nobody "owns" the World-Wide Web. People are responsible for the documents they author and make available publicly on the Web. Via the Internet, hundreds of thousands of people around the world are making information available from their homes, schools, and workplaces.

WHAT IS HYPERTEXT AND HYPERMEDIA ?

The operation of the Web relies mainly on hypertext as its means of interacting with users. Hypertext is basically the same as regular text - it can be stored, read, searched, or edited - with an important exception: hypertext contains connections within the text to other documents.

For instance, suppose you were able to somehow select (with a mouse or with your finger) the word "hypertext" in the sentence before this one. In a hypertext system, you would then have one or more documents related to hypertext appear before you - a history of hypertext, for example, or the Webster's definition of hypertext. These new texts would themselves have links and connections to other documents - continually selecting text would take you on a free-associative tour of information. In this way, hypertext links, called hyperlinks, can create a complex virtual web of connections.

Hypertext

Figure 3 : How Hypertext Works.

Hypermedia is hypertext with a difference - hypermedia documents contain links not only to other pieces of text, but also to other forms of media - sounds, images, and movies. Images themselves can be selected to link to sounds or documents. Hypermedia simply combines hypertext and multimedia. Here are some simple examples of hypermedia:

The Web, although still in its infancy, has already enabled many of these examples. It facilitates the easy exchange of hypermedia through networked environments from anything as small as two Macintoshes connected together to something as large as the global Internet.

HOW DOES THE WEB WORK ?

Web software is designed around a distributed client-server architecture.

A Web client (called a Web browser if it is intended for interactive use) is a program which can send requests for documents to any Web server.

A Web server is a program that, upon receipt of a request, sends the document requested (or an error message if appropriate) back to the requesting client. Using a distributed architecture means that a client program may be running on a completely separate machine from that of the server, possibly in another room or even in another country. Because the task of document storage is left to the server and the task of document presentation is left to the client, each program can concentrate on those duties and progress independently of each other.

Because servers usually operate only when documents are requested, they put a minimal amount of workload on the computers they run on.

Here's an example of how the process works:

  1. Running a Web client, the user selects a hyperlink in a piece of hypertext connecting to another document - "The History of Computers", for example.

  2. The Web client uses the address associated with that hyperlink to connect to the Web server at a specified network address and asks for the document associated with "The History of Computers".

  3. The server responds by sending the text and any other media within that text (pictures, sounds, or movies) to the client, which the client then renders for presentation on the user's screen.



Figure 4. Transactions between Web servers and clients.

The World-Wide Web is composed of thousands of these virtual transactions taking place per hour throughout the world, creating a web of information flow.

The most recently developed Web servers, such as Netscape, include encryption and client authentication abilities that allow users to send and receive secure data and be more selective as to which clients receive information. These features ensure that sensitive data is kept private. The security of commercial servers will be harder to compromise, and educational servers can keep information local. Improvements in security also facilitate the idea of "pay-per-view" hypermedia, a concept which many commercial interests are pursuing.

WHAT IS HTTP ?

The language that Web clients and servers use to communicate with each other is called the Hypertext Transfer Protocol (HTTP). All Web clients and servers must be able to speak HTTP in order to send and receive hypermedia documents. For this reason, Web servers are often called HTTP servers.

The phrase "World-Wide Web" is often used to refer to the collective network of servers speaking HTTP as well as the global body of information available using the protocol.

WHAT ARE MOSAIC AND NETSCAPE ?

Months after CERN's original proposal, the National Center for Supercomputing Applications (NCSA) began a project to create an interface to the World-Wide Web.

One of NCSA's missions is to aid the scientific research community by producing widely available, non-commercial software. Another of its goals is to investigate new research technologies in the hope that commercial interests will be able to profit from them. In these ways, the Web project was quite appropriate. The NCSA's Software Design Group began work on a versatile, multi-platform interface to the World-Wide Web, and called it Mosaic.

Figure 5. NCSA's Mosaic for X Windows.

In the first half of 1993, the first version of NCSA's Web browser was made available to the Internet community. Because earlier beta versions were distributed, Mosaic had developed a strong following by the time it was officially released. Because it allowed documents with images to be viewed and new media formats such as video and sound to be transferred over the Internet and pointed to by documents, it became the Web browser of choice for those working on computers with graphics capability. In 1993 NCSA's Mosaic products won the Internet Multicasting Service's yearly Ima award for the Most Innovative Application and the InfoWorld Industry Achievement award.

Because of the number of traditional services it could handle, and due to its easy, point-and-click hypermedia interface, Mosaic soon became the most popular interface to the Web. Currently versions of Mosaic can run on UNIX-based machines such as Sun, Silicon Graphics, and DEC workstations as well as IBM-compatibles running Microsoft Windows and Macintosh computers.

Browser Capabilities : WWW Browsers, such as NCSA's Mosaic and Netscape Communications Netscape, have the following features:

  1. A consistent mouse-driven graphical interface.

  2. The ability to display hypertext and hypermedia documents in a variety of fonts and font styles (e.g. bold, italic, or strikethrough).

  3. The ability to display layout elements such as paragraphs, lists, numbered and bulleted lists, and quoted paragraphs.

  4. Support for sounds (e.g. Macintosh, Sun audio format, and others) and for movies (e.g. MPEG-1 and QuickTime).

  5. The ability to display characters as defined in the ISO 8859 set (it can display languages such as French, German, and Spanish).

  6. Interactive electronic forms support, with a variety of basic forms elements, such as fields, check boxes, and radio buttons.

  7. Support for interactive graphics (in Graphics Image Format (GIF) or XBM forrmat) of up to 256 colors within documents.

  8. The ability to make basic hypermedia links to and support for the following network services such as FTP, telnet, and Wide-Area Information Services (WAIS).

  9. The ability to extend its functionality by creating custom scripts (comparable to XCMDs in HyperCard on Macintosh computers).

  10. The ability to have other applications control its display remotely.

  11. The ability to broadcast its contents to a network of users running multiplatform groupware such as NCSA's Collage.

  12. Support for the current standards of HTTP and HTML.

  13. The ability to keep a history of travelled hyperlinks.

  14. The ability to store and retrieve a list of viewed documents for future use.

BROWSER PLUG-INS

Plug-ins are software programs that extend the capabilities of a browser, such as Netscape Navigator in a specific way. Current plug-ins allow for the ability to play audio samples or view video movies from within the browser, and to build and display three-dimensional worlds.

For more information on Netscape plug-ins, see Netscape Inline Plug-Ins .

WHAT IS THE HYPERTEXT MARKUP LANGUAGE (HTML) ?

The standard language the Web uses for creating and recognizing hypermedia documents is the Hypertext Markup Language (HTML). It is loosely related to, but technically not a subset of, the Standard Generalized Markup Language (SGML), a method of representing document formatting languages. Languages such as HTML which follow the SGML format allow document writers to separate information from document presentation - that is, documents containing the same information can be presented in a number of different ways. Users have the option of controlling visual elements such as fonts, font size and paragraph spacing without changing the original information.

HTML is widely praised for its ease of use. Web documents are typically written in HTML and are usually named with the suffix ".html". HTML documents are nothing more than standard 7-bit ASCII files with formatting codes that contain information about layout (text styles, document titles, paragraphs, lists) and hyperlinks.

Free conversion software is available for translating documents from many other formats into HTML. Filters exist that can convert files in RTF (Rich Text Format), WordPerfect and FrameMaker as well as man pages, mail archives, and text-only documents.


Figure 6 : HTML-formatted documents allow images and hyperlinks to be displayed in documents.

The current HTML standard supports basic hypermedia document creation and layout, but is limited in its capability to support many complex layout techniques found in traditional document publishing. A new version of HTML, called HTML+, is under development and should be completed by the end of 1994. When completed, HTML+ will be backwards compatible with HTML and will support interactive forms, defined "hot spots" in images, more versatile layout and formatting options and styles, and formatted tables.

UNIFORM RESOURCE LOCATORS

The World-Wide Web uses what are called Uniform Resource Locators (URLs) to represent hypermedia links and links to network services within HTML documents. It is possible to represent nearly any file or service on the Internet with a URL.

The first part of the URL (before the two slashes) specifies the method of access. The second is typically the address of the computer the data or service is located. Further parts may specify the names of files, the port to connect to, or the text to search for in a database. A URL is always a single unbroken line with no spaces.

Sites that run World-Wide Web servers are typically named with a www at the beginning of the network address.

Here are some examples of URLs:

Most Web browsers allow the user to specify a URL and connect to that document or service. When selecting hypertext in an HTML document, the user is actually sending a request to open a URL. In this way, hyperlinks can be made not only to other texts and media, but also to other network services. Web browsers are not simply Web clients, but are also full-featured FTP, Gopher, and telnet clients.

HTML+ will include an email URL, so hyperlinks can be made to send email automatically. For instance, selecting an email address in a piece of hypertext would open a mail program, ready to send email to that address.

SEARCH ENGINES (AND HOW TO USE THEM)

Search Engines help you locate documents containing specific titles, words or phrases, links to specific URL's and host names, images having a specific name, Java applets, and so forth. Each of these "document types" is located by constructing an appropriate query.

Here are some examples:

Example 1 -- Searching for Text : Suppose, for example, that you want to find the "Top Ten List" from last evenings "Late Show with David Letterman." First, go to a search engine like AltaVista, and conduct a search on the character string

    "David Letterman"

Then search down the pages until you find the top ten list. The search can be refined by typing

    "David Letterman" "Top Ten"

Example 2 -- Searching for pages containing a URL : Now lets search for pages the URL,

    http://www.ence.umd.edu/

the network address of the Civil Engineering Home Page. Go to Altavista and conduct a search on (for details see the section on advanced searching):

    link:http://www.ence.umd.edu/

The result will be list of pages containing links to the University of Maryland's home page. From a marketing point of view, we want this list to be as long as possible.

Search Engines : Now here is a list of good search engines:

WWW ROBOTS

Search engines such as Altavista and Hotbot claim that they have indexed the contents of tens of millions of web pages. How can they do this ? Clearly, humans cannot hope to manually index these quentities of information -- the process has to be automated ? The short answer to these questions is "Web Robots."

A Web robot is a program that traverses the Web's hypertext structure by retrieving a document, and recursively retrieving all documents that are referenced. These programs are sometimes called "spiders", "web wanderers", or "web worms".

Web robots can be used for statistical analysis (e.g,, to count the number of Web servers), for maintenance (e.g., to detect deal links), and for resource discovery (e.g., summarize large segments of the web).

Resource discovery is perhaps the most exciting application of web robots ... it means that rather than relying solely on browsing, a Web user can combine browsing and searching to locate information; even if the database doesn't contain the exact item you want to retrieve, it is likely to contain references to related pages, which in turn may reference the target item.

REFERENCES

  1. Internet Background and Basics : see http://www.tectrix.com/links/internet.html.
  2. Web Robots Page : see http://info.webcrawler.com/mak/projects/robots/robots.html.


PRINCIPLES OF SOFTWARE DEVELOPMENT

HARDWARE-SOFTWARE LIFE-CYCLE

Figure 7 is a schematic of the relationship among components in the hardware/software/engineer life cycle.

[H/S Lifecycle]

Figure 7 : Components in Hardware /Software Life Cycle

A key component in the life cycle is ``manufacturers of computer hardware,'' who are currently doubling the computational speed of their products every 12-18 months. Hardware advances are driven by a need to design and analyze systems with enhanced performance specifications. In engineering, this translates to the modeling of systems having a higher degree of fidelity than in the past. Enhanced performance specifications are often achieved through the use of new materials, and sometimes with novel combinations of disciplines (e.g. design and optimal control of electro-mechanical systems).

The economic challenges and difficulty in following-up on the abovementioned hardware advances with appropriate software developments is clearly reflected in in Figure 8.

In the 1970's most computer systems were stand-alone, and most software developers wrote computer programs dedicated to a specific task (e.g. finite element analysis; control systems package; an accounting or stock control system). Rarely were these packages developed as an integral part of a much larger picture, which included not only the package itself, but human, operational, and organizational considerations. Indeed, it was standard practice for organizations to develop software for applications in isolation of all other computer applications that could be running inside the same organization.

[Economics of Development]

Figure 8 : Economics of Systems Development and Integration

The advent of networking has provided organizations with the opportunity to develop application-specific software systems that fulfill their purpose, and communicate information to all of the other relevant software systems in a company. And as already mentioned, the motivation for improved communications is improved productivity. For those organizations that have made large investments in software, there is, naturally, great reluctance to simply discard the investment. What management would like instead is the benefits of improved communications without having to reinvest in the basic application-specific software.

SYSTEMS INTEGRATION

In the early 1970's software consumed approximately 25% of total costs, and hardware 75% of total costs for development of data intensive systems. Nowadays, development and maintenance of software typically consumes more than 80% of the total project costs. This change in economics is the combined result of falling hardware costs, and increased software development budgets. Whereas one or two programmers might have written a complete program twenty years ago, teams of programmers are now needed to write todays programs. This gradual change in development strategies has bought with it, new challenges in the software development process -- for instance, when all of the details of a software project cannot be understood within a group small enough to freely communicate, the cost of communications becomes high. Errors are easy to make and hard to find.

The objectives of "systems integration" are to try to bring this situation under control, to ensure that the pathway forward maximizes return for the organization, and protect a companies past investments in software and hardware [East94]. Systems integration is not a technical discipline in itself, but rather an approach to the management of organizations which recognizes the different ways its parts interact. Nowadays understanding an organization's structure and management practices is critically important because it is a prerequisite to computer automation. Keeping up in the future will required attention to software design, and reuse of functions, libraries, modules, program architectures, and programming experience.

SOFTWARE DESIGN PRINCIPLES

Just like engineering design projects, the design and implementation of software systems begins with a set of stated requirements and evolves through:

    ===============================================================
    PHASE OF DESIGN     - DECISIONS                              
    ===============================================================

    Conceptual Design   - Needs analysis; system operational
                          requirements. Maintenance concepts.
                        - Input from research.
                        - Advanced product planning

    Preliminary Design  - Functional Requirements.
                        - System optimization. 
                        - System synthesis and 
                          allocation of criteria.

    Detailed Design     - System product design.
                        - System prototype development.
                        - System prototype test and evaluation.

    Production and      - Assessment analysis and evaluation.
    construction.       - Modification for corrective action.
    ===============================================================

The importance of a good conceptual design cannot be overemphasized. As software systems become more complicated, there is an increased risk of failure due to poor requirements analysis and ill-conceived design specifications. Requirements analysis includes factors like: written requirements, development of a prototype user interface, and involvement and correspondence with end-users. Design specifications include factors such as: properly specified data structures and algorithms, design documents and design reviews.

Careful planning of real-world software systems is also needed because:

Economics of Software Development ?

Figure 9 shows "cummulative percentage of project funds" versus "time" for a complete product life-cycle.

[Product Funding]

Figure 9 : Funding Commitments in Product Life-Cycle

The upper contour shows "funds committed" versus "stage in the product life-cyle," and the lower shows "funds expended" versus "stage for the same product life-cyle," While a relatively small proportion of funds are spent during the early stages of the product life cycle, large amounts of funds are committed.

The need for systems/concurrent engineering versus traditional engineering is motivated in part by economics. We observe:

Item 2 is particularly troubling because an error detected by the developer is, generally speaking, also the cheapest to fix.

Cost of Fixing Design Errors : Table 6 shows the results of a study by Hewlett-Packard to quantify the relative costs, in terms of money and/or time, of correcting design errors. From an economic point-of-view, the last thing a manufacturer wants is discovery of a fatal error in the engineering system by a customer !! Similar results are reported by IBM.

Project Phase Bug Description Relative Cost
Design Design Team 1
Write and Test Designer 10-20
Quality Assurance QA Personnel 70-100
Shipment to Customer Customer Very-expensive

Table 6 : Cost of Correcting Design Errors

TOP-DOWN AND BOTTOM-UP SOFTWARE DESIGN

An engineer should never set out to build a system without first considering available libraries/modules/components. Conversely, designers never create an engineering system without a preconceived vision of its future use. A balance of these criteria is needed and desirable.

In this section we describe the strategies of "top-down design" and "bottom-up design" and then show how a balance in these strategies is needed.

Top-Down Software Design : Top-down design (or decomposition) delays detailed decisions about the software design and implementation until they absolutely have to be made.

[Product Funding]

Figure 10 : Top Down Software Design (Decomposition)

Top-down design begins at the conceptual level and passes through three stages:

  1. High-Level Design : Establishes the important subsystems of the design, the purpose and intended behavior of each subsystem, and the relationship among subsystems. As a general guideline, these subsystems should be as uncoupled from other subsystems as possible -- hence lending themselves to an independent solution.

  2. Intermediate-Level Design : The intermediate-level of design is characterized by the breaking of subsystems and components into modules. Each module should have one well defined purpose, hide its data from other modules, and have a minimal number of connections to other modules in the program -- for details, see [Meyer88].

    The practice of breaking a program into modules (each having its own short file) makes editing of files easy, and lends itself to team development of software packages, where different participants work on their own modules.

  3. Low-Level Design : Detailed specification of algorithms and data structures.

Bottom-up Software Design : Bottom-up design (or synthesis) starts with low-level modules and subsystems, and tries to combine them into higher-level entities as shown in Figure 11.

[Product Funding]

Figure 11 : Bottom Up Software Design (Synthesis)

The main advantage of bottom-up design is its use of systems that have already been designed and tested (e.g. standard software libraries).

Top-down design and bottom-up software design are extreme strategies which are often at odds with each other. The result of a top-down design is modules that are of a one-time-only form -- they are not as easily reused because they were components without a preconceived vision of their future use. Conversely, generic modules suitable for bottom-up design may contain many features not needed to solve a specific task.

GOOD SOFTWARE DESIGN

The attributes of system coupling and cohesion work together. Generally speaking, modules with components that are well related will have the capability of plugging into loosely coupled systems

REFERENCES

  1. Austin M.A., ENSE 623 Systems Engineering Class Notes, Institute for Systems Research, University of Maryland, College Park, MD. Fall Semester, 1996.
  2. Austin M.A. and Mazzoni D., Engineering Software Development in C , John-Wiley and Sons , New York, p. 700. (Scheduled for publication in 1997).
  3. East ~S., "Systems Integration -- A Management Guide for Manufacturing Engineers", McGraw-Hill Book Company, 1994.
  4. Meyer B., Object-oriented Software Construction, Prentice-Hall International Series in Computer Science, Hertfordshire, United Kingdom, 1988


PROGRAMMING LANGUAGES

A computer program is a sequence of software instructions that tell the computer hardware how to execute a particular task. Programming languages facilitate the development of these software instructions by providing constructs for organizing computations. The best programming languages enable the writing of good computer programs by being easy to read, easy to understand, and easy to modify.

HIGH- AND LOW-LEVEL PROGRAMMING LANGUAGES

  1. Machine Languages : In the earliest days of computing computers were programmed by entering instructions and data into the computer in binary form. These so-called machine languages correspond to the instruction set of a particular computer hardware. They are entirely machine dependent (i.e., very low-level), and can be very tedious and error-prone to program. Programming in machine languages was quickly replaced by programming in symbolic assembly languages.

  2. Assembly Languages : . Assembly languages make the instructions easy to write and understand by using mnemonics for the machine instructions. For example, the sequence of symbols
                    STO M R1 
    

    would store the contents of register 1 in memory location M. Symbolic assembly languages are still low-level, and tend to be machine dependent. An "assembler" converts the assembly language into corresponding binary code and generates a binary program for execution.

  3. High-level Languages : Easy to read high-level languages have been around since the early 1950s. The term high-level means that many of the details in a program's development are handled automatically, thereby providing a pathway for programmers to write less code to get the same job done. For example, a number of high-level programming languages have been designed with the keywords "if" and "for" for the construction of simple branching and looping control structures. Once the program source code has been written, a compiler (see details below) will automatically generate the low-level machine instructions to implement the control structures. Whereas one line of assembly language code must be manually written for each low-level program instruction, high-level programming languages generate (on average) about five machine instructions for each line of code written. And because programmers write approximately the same number of lines of source code per day, irrespective of the development language, application programs can be implemented in a high-level language much faster (and more cheaply) than in a assembly language. Examples of high level languages are:
        Language             Initial Application Area
        ==============================================
        Fortran              Scientific Programming
        C                    Systems Programming
        Java                 Network Programming
        ==============================================
    

    These languages are good for building software components from data structures and algorithms from scratch.

DATABASE AND SCRIPTING LANGUAGES

The rapidly growing complexity of engineering and business software during the past 15 years has led to the development of a number of new programming languages for standardized interaction with databases, and the rapid deployment of integrated software systems.

  1. Structured Query Language : The Structured Query Language (SQL) specifies the sematics of a database management system, including definitions of the structures and operations of the data model that can be implemented. Database language standards such as SQL facilitate the sharing of database applications with other applications, especially when the life of the application is longer than the life of current equipment, or where the application is to be understood and maintained by programmers other than the original ones. Of course programs written in C and C++ can interact with databases via function calls implementing SQL.

  2. Scripting Languages : High-level scripting languages, such as Perl and Tcl (the Tool command language), assume that a collection of software components already exist, and are designed for the glueing (or integration) of software components together.

Scripting languages complement system programming languages such as C, C++ and Java. They are coming into vogue because of the central role they can play in the rapid deployment of graphically-based applications programs that operate across the Internet.

REFERENCES

  1. Austin M.A. and Mazzoni D., Engineering Software Development in C , John-Wiley and Sons , New York, p. 700. (Scheduled for publication in 1997).


COMPILED/INTERPRETED COMPUTER PROGRAMS

WHAT IS A COMPILER ?

A compiler is a computer program that translates high-level source code, written in a familiar programming language, into one or more files of machine code instructions (see Figure 13).

[Compiler]

Figure 13 : Using Compilers to Generate Low-level Machine Code

The file of machine code instructions is then executed. C, C++, and Fortran of three high-level languages that are compiled.

INTERPRETED COMPUTER PROGRAMS

In an interpreted computer program, high-level statements are read one-by-one, and translated and executed on the fly (i.e. as the program is running).

Examples : Scripting languages such as Tk/Tcl, Perl, Javascript and Java. Application oriented languages, such as Matlab, are also interpreted.

PATHWAY OF COMPUTER PROGRAM DEVELOPMENT

The pathway of development for a compiled program is as follows:

[Pathway of Development]

Figure 14 : Pathway of Development for a Small Compiled Computer Program

As shown in Figure 14, computer program development begins with an engineer/programmer creating a source file containing a textual description of the problem to be solved. The problem description will be be in a high-level programming language. You will need to have a good knowledge of at least one editor so that you can type in the program source code and if required, make corrections.

You should think of the compiler as a type of machine that only understands the grammatical rules of the programming language. Its sole purpose in life is to translate the high-level language problem descriptions into an equivalent low-level language description that can be understood by the machine (i.e. the computer hardware).

If the compiler does not receive proper input, it can only try to interpret the error, report what is wrong by printing error messages, and exit. However, if the rules of the language are satisfied, the compiler will generate an object file containing machine language instructions.

The linker is the software program that resolves all cross-references among object files, and combines the object files to create a single executable program. Most computer programs call functions located in external software libraries -- the linker will connect the user's code to the relevant software library modules.

Finally, the loader copies the executable file (executable program) into memory.

Example : Consider a file called main.c that contains a short program written in the C programming language:

    /*
     *  ======================================================
     *  main.c : Program to print "Peace on Earth !!"
     *
     *  Written By : Mark Austin                 January 1997.
     *  ======================================================
     */

    #include <stdio.h>

    int main ( void ) {

        printf("Peace on Earth !! \n");
    }

This file is compiled into an executable program called PEACE by with the command

    gcc main.c -o PEACE

Here "gcc" is the name of the compiler program, and main.c is the name of the file to be compiled. By defualt, most compilers will generate an executable program file called "a.out," a name that lacks description. Hence in this example we add the command option "-o PEACE" and have the compiler place the compiled program machine code in a file called PEACE.

To run the program, just type

    PEACE

and the output will be

        Peace on Earth !!

COMPILED VERSUS INTERPRETED COMPUTER PROGRAMS

Generally speaking:

  1. Compiled languages will execute a lot faster than interpreted languages.

  2. High-level interpreted languages such as Perl are extremely powerful. You can do really neat things with only a few statements.

  3. Interpreted languages tend to me more portable than compiled languages. For example, Java is fast becoming a popular language because you can write graphical user interfaces that are platform independent.

    That is, you write the interface once, and it'll run on a Mac, PC, or UNIX box.

REFERENCES

  1. Austin M.A. and Mazzoni D., Engineering Software Development in C , John-Wiley and Sons , New York, p. 700. (Scheduled for publication in 1997).


Developed in December 1996 by Mark Austin
Last Modified April 26, 1997
Copyright © 1996-1997, Mark Austin, Department of Civil Engineering, University of Maryland