MODERN ENGINEERING COMPUTATIONS
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:
Most engineers will use commercial software for numerical and symbolic calculations, requiring preparation/programming of input files. Some engineers will write their own software codes.
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.
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.
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
===========================================================================
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.
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). Many of these packages were written in Fortran and run in "batch mode." From a historical standpoint, this choice in languages was dictated by the availability of compilers and not by the characteristics of the language itself. Nonetheless, the ease with which Fortran could be used to evaluate mathematical formulae -- hence the name For-mula Tran-slation -- was adequate for most engineering applications, and it can reasonably be argued that the choice of language was suitable for its time (unfortunately, some engineers and educators still think it is adequate).
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
The three main components of a computer are:
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.
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
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:
The "design of algorithms for the efficient storage and transmission of information" is a key concern of computer scientists/engineers. Two strategies of design/implementation are:
Mode Application
=======================================
Lossy Video/movies on demand.
Lossless Telemedicine.
Lossy compression means that a small amount of information may be lost in the compression and decompression process (for video applications this doesn't matter because the human eye can't detect the changes). In medical applications where a patient's CAT scan is being transmitted across the Internet, for example, it is imperative the original image be reconstructed without a loss of information. Compression algorithms having this capability are called "lossless."
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
=============================================================
Here are some examples of storage capacities/requirements:
Standard CD-ROM's store music as a series of binary numbers, each bit (or switch) being represented by a microscopic pit on the surface of the disc. Standard CD's have more than 5 billion pits. The reflected laser light inside your CD player reads each of the pits to determine if it is switched to a 0 or a 1 position, and then reassembles that information back into the original music by generating specified electronic signals that are sent to your speakers [Gates et al.].
Of course, new consumer devices will need to be developed to take advantage of these technologies.
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:
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.
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.
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:
Two years later the network was connecting 15 nodes, all of them research centers. The University of Wisconsin created THEORYNET for internal use, primarily electronic mail.
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 |
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:
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 |
| 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) |
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:
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:
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
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.
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:
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.
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:
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.
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:
file://www.hcc.hawaii.edu/sound.au -
file://www.eit.com/picture.gif -
file://www.eff.org/directory/ -
http://www.hcc.hawaii.edu/directory/book.html -
ftp://www.xerox.com/pub/file.txt -www.xerox.com and retrieves a text file.
gopher://www.hcc.hawaii.edu -www.hcc.hawaii.edu.
telnet://www.hcc.hawaii.edu:1234 -www.hcc.hawaii.edu at port 1234.
news:alt.hypertext -alt.hypertext newsgroup in hypermedia format.
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
HARDWARE-SOFTWARE LIFE-CYCLE
Figure 7 is a schematic of the relationship among components in the hardware/software/engineer 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.
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:
Some estimates place maintenance at 60-80% of the overall cost of a software project.
Economics of Software Development ?
Figure 9 shows "cummulative percentage of project funds" versus "time" for a complete 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 |
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.
Top-down design begins at the conceptual level and passes through three stages:
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.
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.
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
In the development of computer software two types of abstraction are common:
This type of abstraction is most common in programming languages such as C, Fortran, Pascal etc, etc...
This type of abstraction is common in object-oriented programming language such as C++ and Java.
Guidelines for the design of modules are:
The motivation for following these guidelines is modules that will be functional, easy to understand, testable, and reusable.
In design we should
Designing for minimal coupling among modules helps to ensure that errors occuring in one module will not propagate across the whole system.
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
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
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.
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.
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
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).
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:
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:
That is, you write the interface once, and it'll run on a Mac, PC, or UNIX box.
REFERENCES