The World’s Leading Microsoft .NET Magazine
   
 
realworldsa


Search this Blog

 








iPing-it!

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

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

.NET Software Engineering versus .NET Software Development

posted Wednesday, 28 December 2005
I have worked with a lot of great one-off development shops. Shops that reuse whatever they have available in the code library that is reusable to build new applications from. One of the hardest things to do is change the mind set of management and the development teams from one of software development to one of software engineering. Is there a difference?

Engineering is the difference. When I worked as an Electronic Engineer I was introduce to the engineering field. I believe that insight is what gives me the patience to accept engineering in software development. The engineering killer in our current market is "time to market". Well actually it is the perception that time to market brings to the table. Most shops believe the sooner code is being written for production the closer they are to being finished. Never mind performance, maintainability, reliably, security, and the rest of the quality attributes. Any shortcuts they can find in the design and analysis process are perceived to be an asset.

In engineering 80% of the effort is found in the documentation, the planning, the proof of concept testing, architecture verification and validation, and analysis and design. Don't get me wrong here, one too many documents developed during the process that wasn't needed to describe the application was wasted time. 20% of the time is put into developing a well designed application.

In one-off development it is the reverse, 20% of the time is spend doing the documentation, the planning, the proof of concept testing, architecture verification and validation, and analysis and design, and 80% of the time is spent developing (30% percent of which is spend debugging and shifting code design).

What most shops don't realize is that doing engineering correctly provides much more reusable code (it is cleaner and can be found easier), an application that is much easier to maintain and update, and an application with a lot less bugs, that performs better, and is much more secure. Engineering also provides the possibility of creating a reusable process that contains the metrics to do estimations instead of guess-tamations.

Not every shop should do software engineering. They may not be able to hire people with the skills required to pull it off because they aren't making applications that produce that type of revenue. They may have gurus (and they are paying enough to keep them on forever) who prefer agile development and they are producing high quality applications without the need for software engineering. They just don't want to. It's a shame, but "we just don't want to" is what I hear the most. They say they have been doing development like this since the dot com boom, then during their big layoff period, and now that they are stabilized once again, they see no need to change.

The problem that they don't see is that their development tools have changed. They are no longer scripting, or using VB 6.0 to crank out overnight applications. They are now using a fully capable OO/Component-oriented programming environment. To ignore this fact leads to worse spaghetti code in .NET applications, than it did in ASP2.0/3.0. Without engineering, you also loose the capability to take advantage of patterns correctly.

Will this Blog change anything out there? Doubtful, but it was something to type until Fear Factor started……

links: digg this    del.icio.us    technorati    reddit

AddThis Social Bookmark Button




1. Marco left...
Wednesday, 11 January 2006 11:57 am :: http://blogs.msdn.com/marcod/

Talking about software engineering in general. So should we pretend it is a full-fledged branch of engineering? Or could be better to avoid wishful thinking?


2. Tom Z. left...
Wednesday, 11 January 2006 12:08 pm

A couple more reasons many companies don't do "proper" software engineering is that they don't know all the requirements up-front, and that they don't want to make a huge up-front investment in design.

We are a small company developing some applications. If we, or our customer, have an idea for an application, usually it starts with just a small idea. We then implement this first idea, and give something that everyone can look at and work with. This might be our V1.0 release even, if the application meets a set of valuable use cases.

Then the application enters a period of "organic growth" where new requirements are identified as result of experience using the initial version, as well as new use cases being introduced. New code is written, some design refactoring occurs, documentation updated, and another release made.

For us, these are relatively fast cycles, like on the order of a couple or a few weeks. We consider this an iterative form of development, and we are explicitly acknowledging that we only know a small fraction of the requirements at the beginning. Because of this, it is impossible to do a big, formal, comprehensive design. Even if we knew all the requirements, it probably would cost too much to put in place the full design up-front. This is due to the business reality that there is zero revenue prior to shipping. Therefore, it is best to get something useful done and out in the hands of customers, send invoices, and then continue working on the software.

While I'm sure that this approach doesn't lead to the technically "best" design, I think it is quite workable and realistic, and I suspect that most businesses develop software in this way. What is important is that the design and code is initially designed to be very flexible, modular, and well-documented. It is important that someone can easily understand what is going on in the code to make design and code changes, and to add features readily without breaking past work.


3. Tad Anderson left...
Wednesday, 11 January 2006 12:56 pm :: http://realworldsa.dotnetdevelopersjourn

To Marco:

Well I think it is a branch of engineering in certain circles. When I worked an electronic engineer the software we wrote to program our PLCs (PROGRAMMABLE LOGIC CONTROLLERS) was engineered just like the components that went in to the hardware.

In the domain of applications built for computers (web apps, windows apps, enterprise apps) I know it is possible to do, but is for the most part rejected by organizations building the software. I think it is mostly because a lot of them have been introduced to building applications with tools like VB 6.0, and other IDEs that promote RAD development. Which is a good thing when considering time to market, but a bad thing for maintainability, quality, and building applications that actually meet the requirements of the client. It is basically building an application that is a legacy application the day it is released. By legacy I mean you don't know how it was built, so it will be difficult to modify, maintain, debug, and upgrade.

I know Rational was striving to get us there, but now they are no longer around. They have been swallowed by IBM, so I don't depend on them as a resource for what one might call open software engineering. Meaning no one is influencing their goals of improving software engineering.

Currently I review many organizations to extract from them what might be good practices for software engineering. Microsoft, IBM, Sun, Intel, and all those competing in the market. But I am always wary and need to make sure what they are preaching/teaching is not for their own hidden agenda that is market focused. I include all the open source projects in this group also. I always like to do what Microsoft and these other groups do internally, but I find a lot times I avoid doing what they are telling the market to do.

I trust a few sources without hesitation and they are the Carnegie Mellon Software Engineering Institute (SEI), Massachusetts Institute of Technology (MIT), and Institute of Electrical and Electronics Engineers (IEEE).

It is being done is some circles, so I would say that qualifies it as a branch of engineering. It just isn't being done nearly enough.

Engineering needs a process. I talk about that here: http://realworldsa.dotnetdevelopersjou rnal.com/the_process_ladder_up_rup_eup_ple__never_neverland.htm


4. Tad Anderson left...
Wednesday, 11 January 2006 1:55 pm :: http://realworldsa.dotnetdevelopersjourn

To Tom Z.:

I think this approach is perfect for the type of applications you are building. I have been many places that use the exact same approach, and they have very satisfied customers. They are usually getting a lower ROI by doing one-off development, but they are successful enough doing what they are doing to ignore the lower ROI.

Software engineering works in much the same way you describe things happening. Software engineering should be done iteratively.

Engineering isn't for every development shop. RAD is better for some places. It all depends on the customer base, what the customers want for their money, and if management feels the investment in the process overhead will increase the ROI.


5. Marco left...
Wednesday, 11 January 2006 2:36 pm :: http://blogs.msdn.com/marcod/

A systematic method for software design is a very good thing, disciplined and thoughtful people are critical. But I do not see how those are related to the qualification of software engineering as a proper branch of engineering, or for that matter, the qualification of the theories that makes a software science.

MIT, CMU, IEEE are respected organizations, that is clear. Just show me where are the laws of software which support the theories that makes the science behind software engineering, I am looking for them.


6. Tad Anderson left...
Wednesday, 11 January 2006 3:08 pm :: http://realworldsa.dotnetdevelopersjourn

Your base is this: If we took as premise that all engineering is applied factual science (unlike formal sciences -of which there are no applications for the very reason they are formal), and the sine qua non attribute for a science to exist is that it is made of theories; and each theory is a system of laws; and each law is a general, necessary and constant relationship between phenomena (observed facts); and the observed facts can be perceived with the senses and repeatable…

The process (UP, RUP, and so on) defines the laws. The laws are what keep the humans in the process repeating actions that provide a predictable outcome.

The same way a process defines how an engineer builds an electronic component. The laws of software engineering are govern by the laws of electronic engineering. Combined they create computer science.

The book CODE by Charles Petzold is a cool read that walks across that bridge.

Who knows, maybe you got a point and we are all living in the Matrix, and I am really just Mr. Anderson thinking a am a software engineer…


7. Tad Anderson left...
Saturday, 14 January 2006 7:52 am :: http://realworldsa.dotnetdevelopersjourn

These where in response to a comment posting only found on h ttp://blogs.msdn.com/marcod/archive/2006/01/11/SeriousSoftwareEngineering.a spx

But aren't the bits being placed into the atoms constrained by the laws that the atoms are enforcing? And the atoms are being placed together by the laws that nature allows us to structure them. To me the laws are being forced upon the next layer of abstraction - the chip's physical structure -> the electronic storage into the chip -> the bits arranged to form digital communication patterns that move through the layers of language abstraction for assembler to C to IL to C#.

These two links provide some interesting perspectives on the point you are raising.

http://en.wikip edia.org/wiki/Software_engineering

http://en.wik ipedia.org/wiki/Software_Craftsmanship

The second says this about the topic:

While software engineering appropriately describes the processes necessary to build large, complex systems like those at work doing tasks like flying the Space Shuttle, software craftsmanship as modelled after the guild tradition in the building trades is in fact how the bulk of software is actually written.

Which I would agree with.


8. Tad Anderson left...
Saturday, 14 January 2006 8:16 am :: http://realworldsa.dotnetdevelopersjourn

In the end I find that what I described as .NET Software Development is what this line of thought calls craftsmanship.

Having been in the electronic engineering field before the programming field, I know software engineering is done quite differently than what we find being done in the software programming field. Programming the chips in C and sometimes assembler to receive sensor voltages above certain peaks and taking that through the PLC as the first bits of logic that lead to the final output of a displayed report in HTML/ActiveX was mostly engineering with some craftsmanship thrown in.

To me it's like looking at black and white. The concept of craftsman is interesting though, because it is the same thing I tried to describe in this original post. I just called development what they refer to as craftsmanship.

Yes most of what we see is craftsmanship in our development of enterprise applications, web applications, and other such applications in the market, but software engineering exists.

Google for 'flaws in science' and dig deep enough and you will find that most of what we have consider science in our history as a human race has ended up flawed. So many of the fundamental cores for what we consider when qualifying engineering are flawed themselves.

My father was a carpenter all his life. He was a craftsman, but he use architectural engineering to design the homes. There is a big difference in building a home and the twin towers that once stood. But even with the twin towers architectural engineering required craftsmanship to get them built. While building a tree house may just take craftsmanship.

So I would say the same for software engineering. It may be engineered, but it takes craftsmanship to complete and build the projects, and some projects very little, if any, engineering to build.


9. Marco Dorantes left...
Saturday, 14 January 2006 10:33 pm :: http://blogs.msdn.com/marcod/

You keep using the word “engineering” but by now I am lost of your intended meaning. The intended meaning on my original post entry is that engineering refers to the applied/practical/functional/workable part of some established body of scientific knowledge (that is to say, reliable knowledge built on theories whose use is to explain and to predict a part of our world), in this case about design of computer programs.

No amount of people-no matter how large-yelling and repeating “the sun goes around the earth”, make it so; or as Mr. Lincoln said: "If you call a tail a leg, how many legs has a dog? Five? No, calling a tail a leg don't make it a leg" -Abraham Lincoln

Telling a human activity is a branch of engineering discipline should be based on more than “it feels as engineering” or “it ought to be engineering”, which is basically what was said at the 1968 NATO conference where the term “software engineering” was originally coined*.

Where are the corresponding theories since then? It is perhaps that marketing people has done a better job than us in our mainstream trade?

*The End of Software Engineering and the Start of Economic-Cooperative Gaming http://alistair.cockburn.us/crystal/articles/eoseatsoecg/theendofsof twareengineering.htm

Some thoughts:

"Q:What are the most exciting, promising software engineering ideas or techniques on the horizon? A:I don't think that the most promising ideas are on the horizon. They are already here and have been for years, but are not being used properly" -David Lorge Parnas

"Computer science hasn’t achieved the grand narrative that explains it all, the big picture—we haven’t found the fundamental laws of software that would play the role that the fundamental laws of physics play for other engineering disciplines" -Philippe Kruchten

OK, So Maybe Software Development Isn’t Engineering After All http://mcpmag.com/columns/article.asp?editorialsid=1120


10. Tad Anderson left...
Sunday, 15 January 2006 1:19 am :: http://realworldsa.dotnetdevelopersjourn

This is what my meaning of engineering is:

Engineering applies scientific and technical knowledge to solve human problems. Engineers use imagination, judgment, reasoning and experience to apply science, technology, mathematics, and practical experience. The result is the design, production, and operation of useful objects or processes.

Methodology The crucial and unique task of the engineer is to identify, understand, and integrate the constraints on a design in order to produce a successful result. It is usually not enough to build a technically successful product; it must also meet further requirements. Constraints may include available resources, physical or technical limitations, flexibility for future modifications and additions, and other factors, such as requirements for cost, manufacturability, and serviceability. By understanding the constraints, engineers deduce specifications for the limits within which a viable object or system may be produced and operated.

Problem solving Engineers use their knowledge of science, mathematics, and appropriate experience to find suitable solutions to a problem. Creating an appropriate mathematical model of a problem allows them to analyze it (perhaps, but rarely, definitively), and to test potential solutions. Usually multiple reasonable solutions exist, so engineers must evaluate the different design choices on their merits and choose the solution that best meets their requirements. Genrich Altshuller, after gathering statistics on a large number of patents, suggested that compromises are at the heart of "low-level" engineering designs, while at a higher level the best design is one which eliminates the core contradiction causing the problem.

Engineers typically attempt to predict how well their designs will perform to their specifications prior to full-scale production. They use, among other things: prototypes, scale models, simulations, destructive tests, nondestructive tests, and stress tests. Testing ensures that products will perform as expected. Engineers as professionals take seriously their responsibility to produce designs that will perform as expected and will not cause unintended harm to the public at large. Engineers typically include a factor of safety in their designs to reduce the risk of unexpected failure. However, the larger the safety factor, the less efficient the design may be.

Computer use As with all modern scientific and technological endeavours, computers and software play an increasingly important role. Numerical methods and simulations can help predict design performance more accurately than previous approximations.

Using computer-aided design (CAD) software, engineers are able to more easily create drawings and models of their designs. Computer models of designs can be checked for flaws without having to make expensive and time-consuming prototypes. The computer can automatically translate some models to instructions suitable for automatic machinery (e.g., CNC) to fabricate (part of) a design. The computer also allows increased reuse of previously developed designs, by presenting an engineer with a library of predefined parts ready to be used in designs.

Of late, the use of finite element method analysis (FEM analysis or FEA) software to study stress, temperature, flow as well as electromagnetic fields has gained importance. In addition, a variety of software is available to analyse dynamic systems.

Electronics engineers make use of a variety of circuit schematics software to aid in the creation of circuit designs that perform an electronic task when used for a printed circuit board (PCB) or a computer chip.

The application of computers in the area of engineering of goods is known as Product Lifecycle Management (PLM).

Software engineering (SE) is the profession that creates and maintains software applications by applying technologies and practices from computer science, project management, engineering, application domains and other fields.

Software engineering, like traditional engineering disciplines, deals with issues of cost and reliability. Some software applications contain millions of lines of code that are expected to perform properly in the face of changing conditions, making them comparable in complexity to the most complex modern machines. (The Boeing 777-200 has about 132,500 engineered and unique parts. Including rivets, bolts and other fasteners, the airplane has more than 3 million parts. Included is approximately 1400 data processing units and 5 million lines of code.)

As of 2002, the U. S. Bureau of Labor Statistics counts 675,000 computer software engineers holding jobs in the U.S., and there are estimated to be about one-and-a-half million practitioners in the E.U., Asia, and elsewhere; these figures are about 60% of the number of practitioners engaged in traditional engineering. SE pioneers include Barry Boehm, Fred Brooks, C. A. R. Hoare, and David Parnas. There is extensive debate about what SE is, who qualifies as a SE, who sets the standards, etc.

Origins The term software engineering was used occasionally in the late 1950s and early 1960s. It was popularized during the 1968 NATO Software Engineering Conference (held in Garmisch, Germany) by its chairman F.L. Bauer, and has been in widespread use since.

Meanings The term software engineering has been commonly used with a variety of distinct meanings:

As the usual contemporary term for the broad range of activities that was formerly called programming and systems analysis; As the broad term for all aspects of the practice of computer programming, as opposed to the theory of computer programming, which is called computer science; As the term embodying the advocacy of a specific approach to computer programming, one that urges that it be treated as an engineering profession rather than an art or a craft, and advocates the codification of recommended practices in the form of software engineering methodologies. Software engineering is "(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software," and "(2) the study of approaches as in (1)." – IEEE Standard 610.12 Software engineering is practiced by software engineers.

Debate over who is a software engineer Some people believe that software development is a more appropriate term than software engineering for the process of creating software. People like Pete McBreen (author of "Software Craftsmanship: The New Imperative" (ISBN: 0-201-73386-2)) believe that the term Software Engineering implies levels of rigor and proven processes that are not appropriate for all types of software development. McBreen goes on to make a strong case for craftsmanship as a more appropriate metaphor because it focuses on the skills of the developer as the key to success instead of the "manufacturing" process.

Some people dispute the notion that the field is mature enough to warrant the title "engineering". In each of the last few decades, at least one radical new approach has entered the mainstream of software development (e.g. Structured Programming, Object Orientation, Agile Development), implying that the field is still changing too rapidly to be considered an engineering discipline. Other people would argue that the supposedly radical new approaches are actually evolutionary rather than revolutionary, the mere introduction of new tools rather than fundamental changes.

There are currently no widely accepted criteria for distinguishing someone who is a software engineer from someone who is not a software engineer. In addition, the industry is in the midst of a complex debate on the licensing of practicing software engineers. Recently, bachelor's degrees in Software Engineering have become available from many well known universities.

Levels For the localities that do not license software engineers, some hiring classifications are made based on education and experience. Classification levels may include: entry-level, mid-level, and senior.

Typical entry-level software engineers have a bachelor's degree and zero to five years of experience. Typical mid-level software engineers have a bachelor's or master's degree and have five to ten years of experience. Typical senior-level software engineers have an advanced degree and have ten or more years of experience. Note that these are only guidelines that are trends seen in hiring practices and that many exceptions exist.

Software engineering today Software engineering affects economies and societies in many ways.

Economic In the U.S., software drove about one quarter of all increase in GDP during the 1990s (about $90 billion per year), and one sixth of all productivity growth (efficiency within GDP) during the late 1990s (about $33 billion per year). Software engineering drove $1 trillion of economic and productivity growth over the last decade. Around the world, software drives economic growth in similar ways, though reliable statistics are hard to find. Social Software engineering changes world culture, wherever people use computers. Email, the world-wide web, and instant messaging enable people to interact in new ways. Software lowers the cost and improves the quality of health-care, fire departments, and other important social services. See also software engineering economics.

Room for improvement In spite of the enormous economic growth and productivity gains enabled by software, persistent complaints about the quality remain.

Deficient software engineering is often blamed for project failures when the blame might more properly be placed with business managers who ignore lessons already learned by Software Engineers.

See also Debates within software engineering and Criticism of software engineering

Technologies and practices What is the best way to make more and better software? SEs advocate many different technologies and practices, with much disagreement. This debate has gone on for 60 years and may continue forever. Software engineers use a wide variety of technologies and practices.

Practitioners use a wide variety of technologies: compilers, code repositories, to word processors.

Practitioners use a wide variety of practices to carry out and coordinate their efforts: pair programming, code reviews, daily stand up meetings.

From: http://en.wikipedi a.org/wiki/Engineering

MORE....

Engineering

  1. Introduction

Engineering, term applied to the profession in which a knowledge of the mathematical and natural sciences, gained by study, experience, and practice, is applied to the efficient use of the materials and forces of nature. The term engineer properly denotes a person who has received professional training in pure and applied science, but is often loosely used to describe the operator of an engine, as in the terms locomotive engineer, marine engineer, or stationary engineer. In modern terminology these latter occupations are known as crafts or trades. Between the professional engineer and the craftsperson or tradesperson, however, are those individuals known as subprofessionals or paraprofessionals, who apply scientific and engineering skills to technical problems; typical of these are engineering aides, technicians, inspectors, draftsmen, and the like.

Before the middle of the 18th century, large-scale construction work was usually placed in the hands of military engineers. Military engineering involved such work as the preparation of topographical maps, the location, design, and construction of roads and bridges; and the building of forts and docks; see Military Engineering below. In the 18th century, however, the term civil engineering came into use to describe engineering work that was performed by civilians for nonmilitary purposes. With the increasing use of machinery in the 19th century, mechanical engineering was recognized as a separate branch of engineering, and later mining engineering was similarly recognized.

The technical advances of the 19th century greatly broadened the field of engineering and introduced a large number of engineering specialties, and the rapidly changing demands of the socioeconomic environment in the 20th century have widened the scope even further.

  • II. Fields of Engineering

The main branches of engineering are discussed below in alphabetical order. The engineer who works in any of these fields usually requires a basic knowledge of the other engineering fields, because most engineering problems are complex and interrelated. Thus a chemical engineer designing a plant for the electrolytic refining of metal ores must deal with the design of structures, machinery, and electrical devices, as well as with purely chemical problems.

Besides the principal branches discussed below, engineering includes many more specialties than can be described here, such as acoustical engineering (see Acoustics), architectural engineering (see Architecture: Construction), automotive engineering, ceramic engineering, transportation engineering, and textile engineering.

  1. Aeronautical and Aerospace Engineering

Aeronautics deals with the whole field of design, manufacture, maintenance, testing, and use of aircraft for both civilian and military purposes. It involves the knowledge of aerodynamics, structural design, propulsion engines, navigation, communication, and other related areas. See Airplane; Aviation.

Aerospace engineering is closely allied to aeronautics, but is concerned with the flight of vehicles in space, beyond the earth's atmosphere, and includes the study and development of rocket engines, artificial satellites, and spacecraft for the exploration of outer space. See Space Exploration.

  • B. Chemical Engineering

This branch of engineering is concerned with the design, construction, and management of factories in which the essential processes consist of chemical reactions. Because of the diversity of the materials dealt with, the practice, for more than 50 years, has been to analyze chemical engineering problems in terms of fundamental unit operations or unit processes such as the grinding or pulverizing of solids. It is the task of the chemical engineer to select and specify the design that will best meet the particular requirements of production and the most appropriate equipment for the new applications.

With the advance of technology, the number of unit operations increases, but of continuing importance are distillation, crystallization, dissolution, filtration, and extraction. In each unit operation, engineers are concerned with four fundamentals: (1) the conservation of matter; (2) the conservation of energy; (3) the principles of chemical equilibrium; (4) the principles of chemical reactivity. In addition, chemical engineers must organize the unit operations in their correct sequence, and they must consider the economic cost of the overall process. Because a continuous, or assembly-line, operation is more economical than a batch process, and is frequently amenable to automatic control, chemical engineers were among the first to incorporate automatic controls into their designs.

  • C. Civil Engineering

Civil engineering is perhaps the broadest of the engineering fields, for it deals with the creation, improvement, and protection of the communal environment, providing facilities for living, industry and transportation, including large buildings, roads, bridges, canals, railroad lines, airports, water-supply systems, dams, irrigation, harbors, docks, aqueducts, tunnels, and other engineered constructions. The civil engineer must have a thorough knowledge of all types of surveying, of the properties and mechanics of construction materials, the mechanics of structures and soils, and of hydraulics and fluid mechanics. Among the important subdivisions of the field are construction engineering, irrigation engineering, transportation engineering, soils and foundation engineering, geodetic engineering, hydraulic engineering, and coastal and ocean engineering.

  • D. Electrical and Electronics Engineering

The largest and most diverse field of engineering, it is concerned with the development and design, application, and manufacture of systems and devices that use electric power and signals. Among the most important subjects in the field in the late 1980s are electric power and machinery, electronic circuits, control systems, computer design, superconductors, solid-state electronics, medical imaging systems, robotics, lasers, radar, consumer electronics, and fiber optics.

Despite its diversity, electrical engineering can be divided into four main branches: electric power and machinery, electronics, communications and control, and computers.

  • D.1. Electric Power and Machinery

The field of electric power is concerned with the design and operation of systems for generating, transmitting, and distributing electric power. Engineers in this field have brought about several important developments since the late 1970s. One of these is the ability to transmit power at extremely high voltages in both the direct current (DC) and alternating current (AC) modes, reducing power losses proportionately. Another is the real-time control of power generation, transmission, and distribution, using computers to analyze the data fed back from the power system to a central station and thereby optimizing the efficiency of the system while it is in operation.

A significant advance in the engineering of electric machinery has been the introduction of electronic controls that enable AC motors to run at variable speeds by adjusting the frequency of the current fed into them. DC motors have also been made to run more efficiently this way. See also Electric Motors and Generators; Electric Power Systems.

  • D.2. Electronics

Electronic engineering deals with the research, design, integration, and application of circuits and devices used in the transmission and processing of information. Information is now generated, transmitted, received, and stored electronically on a scale unprecedented in history, and there is every indication that the explosive rate of growth in this field will continue unabated.

Electronic engineers design circuits to perform specific tasks, such as amplifying electronic signals, adding binary numbers, and demodulating radio signals to recover the information they carry. Circuits are also used to generate waveforms useful for synchronization and timing, as in television, and for correcting errors in digital information, as in telecommunications. See also Electronics.

Prior to the 1960s, circuits consisted of separate electronic devices—resistors, capacitors, inductors, and vacuum tubes—assembled on a chassis and connected by wires to form a bulky package. Since then, there has been a revolutionary trend toward integrating electronic devices on a single tiny chip of silicon or some other semiconductive material. The complex task of manufacturing these chips uses the most advanced technology, including computers, electron-beam lithography, micro-manipulators, ion-beam implantation, and ultraclean environments. Much of the research in electronics is directed toward creating even smaller chips, faster switching of components, and three-dimensional integrated circuits.

  • D.3. Communications and Control

Engineers in this field are concerned with all aspects of electrical communications, from fundamental questions such as “What is information?” to the highly practical, such as design of telephone systems. In designing communication systems, engineers rely heavily on various branches of advanced mathematics, such as Fourier analysis, linear systems theory, linear algebra, complex variables, differential equations, and probability theory. See also Mathematics; Matrix Theory and Linear Algebra; Probability.

Engineers work on control systems ranging from the everyday, passenger-actuated, as those that run an elevator, to the exotic, as systems for keeping spacecraft on course. Control systems are used extensively in aircraft and ships, in military fire-control systems, in power transmission and distribution, in automated manufacturing, and in robotics.

Engineers have been working to bring about two revolutionary changes in the field of communications and control: Digital systems are replacing analog ones at the same time that fiber optics are superseding copper cables. Digital systems offer far greater immunity to electrical noise. Fiber optics are likewise immune to interference; they also have tremendous carrying capacity, and are extremely light and inexpensive to manufacture.

  • D.4. Computers

Virtually unknown just a few decades ago, computer engineering is now among the most rapidly growing fields. The electronics of computers involve engineers in design and manufacture of memory systems, of central processing units, and of peripheral devices (see Computer). Foremost among the avenues now being pursued are the design of Very Large Scale Integration (VLSI) and new computer architectures. The field of computer science is closely related to computer engineering; however, the task of making computers more “intelligent” (artificial intelligence,), through creation of sophisticated programs or development of higher level machine languages or other means, is generally regarded as being in the realm of computer science.

One current trend in computer engineering is microminiaturization. Using VLSI, engineers continue to work to squeeze greater and greater numbers of circuit elements onto smaller and smaller chips. Another trend is toward increasing the speed of computer operations through use of parallel processors, superconducting materials, and the like.

  • E. Geological and Mining Engineering

This branch of engineering includes activities related to the discovery and exploration of mineral deposits and the financing, construction, development, operation, recovery, processing, purification, and marketing of crude minerals and mineral products. The mining engineer is trained in historical geology, mineralogy, paleontology, and geophysics, and employs such tools as the seismograph and the magnetometer for the location of ore or petroleum deposits beneath the surface of the earth (see Petroleum; Seismology). The surveying and drawing of geological maps and sections is an important part of the work of the engineering geologist, who is also responsible for determining whether the geological structure of a given location is suitable for the building of such large structures as dams.

  • F. Industrial or Management Engineering

This field pertains to the efficient use of machinery, labor, and raw materials in industrial production. It is particularly important from the viewpoint of costs and economics of production, safety of human operators, and the most advantageous deployment of automatic machinery.

  • G. Mechanical Engineering

Engineers in this field design, test, build, and operate machinery of all types; they also work on a variety of manufactured goods and certain kinds of structures. The field is divided into (1) machinery, mechanisms, materials, hydraulics, and pneumatics; and (2) heat as applied to engines, work and energy, heating, ventilating, and air conditioning. The mechanical engineer, therefore, must be trained in mechanics, hydraulics, and thermodynamics and must be fully grounded in such subjects as metallurgy and machine design. Some mechanical engineers specialize in particular types of machines such as pumps or steam turbines. A mechanical engineer designs not only the machines that make products but the products themselves, and must design for both economy and efficiency. A typical example of the complexity of modern mechanical engineering is the design of an automobile, which entails not only the design of the engine that drives the car but also all its attendant accessories such as the steering and braking systems, the lighting system, the gearing by which the engine's power is delivered to the wheels, the controls, and the body, including such details as the door latches and the type of seat upholstery.

  • H. Military Engineering

This branch is concerned with the application of the engineering sciences to military purposes. It is generally divided into permanent land defense (see Fortification and Siege Warfare) and field engineering. In war, army engineer battalions have been used to construct ports, harbors, depots, and airfields. In the U.S., military engineers also construct some public works, national monuments, and dams (see Army Corps of Engineers).

Military engineering has become an increasingly specialized science, resulting in separate engineering subdisciplines such as ordnance, which applies mechanical engineering to the development of guns and chemical engineering to the development of propellants, and the Signal Corps, which applies electrical engineering to all problems of telegraph, telephone, radio, and other communication.

  1. Naval or Marine Engineering

Engineers who have the overall responsibility for designing and supervising construction of ships are called naval architects. The ships they design range in size from ocean-going supertankers as much as 1300 feet long to small tugboats that operate in rivers and bays. Regardless of size, ships must be designed and built so that they are safe, stable, strong, and fast enough to perform the type of work intended for them. To accomplish this, a naval architect must be familiar with the variety of techniques of modern shipbuilding, and must have a thorough grounding in applied sciences, such as fluid mechanics, that bear directly on how ships move through water.

Marine engineering is a specialized branch of mechanical engineering devoted to the design and operation of systems, both mechanical and electrical, needed to propel a ship. In helping the naval architect design ships, the marine engineer must choose a propulsion unit, such as a diesel engine or geared steam turbine, that provides enough power to move the ship at the speed required. In doing so, the engineer must take into consideration how much the engine and fuel bunkers will weigh and how much space they will occupy, as well as the projected costs of fuel and maintenance. See also Ships and Shipbuilding.

  • J. Nuclear Engineering

This branch of engineering is concerned with the design and construction of nuclear reactors and devices, and the manner in which nuclear fission may find practical applications, such as the production of commercial power from the energy generated by nuclear reactions and the use of nuclear reactors for propulsion and of nuclear radiation to induce chemical and biological changes. In addition to designing nuclear reactors to yield specified amounts of power, nuclear engineers develop the special materials necessary to withstand the high temperatures and concentrated bombardment of nuclear particles that accompany nuclear fission and fusion. Nuclear engineers also develop methods to shield people from the harmful radiation produced by nuclear reactions and to ensure safe storage and disposal of fissionable materials. See Nuclear Energy.

  • K. Safety Engineering

This field of engineering has as its object the prevention of accidents. In recent years safety engineering has become a specialty adopted by individuals trained in other branches of engineering. Safety engineers develop methods and procedures to safeguard workers in hazardous occupations. They also assist in designing machinery, factories, ships, and roads, suggesting alterations and improvements to reduce the likelihood of accident. In the design of machinery, for example, the safety engineer seeks to cover all moving parts or keep them from accidental contact with the operator, to put cutoff switches within reach of the operator, and to eliminate dangerous projecting parts. In designing roads the safety engineer seeks to avoid such hazards as sharp turns and blind intersections, known to result in traffic accidents. Many large industrial and construction firms, and insurance companies engaged in the field of workers compensation, today maintain safety engineering departments. See Industrial Safety; National Safety Council.

  • L. Sanitary Engineering

This is a branch of civil engineering, but because of its great importance for a healthy environment, especially in dense urban-population areas, it has acquired the importance of a specialized field. It chiefly deals with problems involving water supply, treatment, and distribution; disposal of community wastes and reclamation of useful components of such wastes; control of pollution of surface waterways, groundwaters, and soils; milk and food sanitation; housing and institutional sanitation; rural and recreational-site sanitation; insect and vermin control; control of atmospheric pollution; industrial hygiene, including control of light, noise, vibration, and toxic materials in work areas; and other fields concerned with the control of environmental factors affecting health. The methods used for supplying communities with pure water and for the disposal of sewage and other wastes are described separately. See Plumbing; Sewage Disposal; Solid Waste Disposal; Water Pollution; Water Supply and Waterworks.

  • III. Modern Engineering Trends

Scientific methods of engineering are applied in several fields not connected directly to manufacture and construction. Modern engineering is characterized by the broad application of what is known as systems engineering principles. The systems approach is a methodology of decision-making in design, operation, or construction that adopts (1) the formal process included in what is known as the scientific method; (2) an interdisciplinary, or team, approach, using specialists from not only the various engineering disciplines, but from legal, social, aesthetic, and behavioral fields as well; (3) a formal sequence of procedure employing the principles of operations research.

In effect, therefore, transportation engineering in its broadest sense includes not only design of the transportation system and building of its lines and rolling stock, but also determination of the traffic requirements of the route followed. It is also concerned with setting up efficient and safe schedules, and the interaction of the system with the community and the environment. Engineers in industry work not only with machines but also with people, to determine, for example, how machines can be operated most efficiently by the workers. A small change in the location of the controls of a machine or of its position with relation to other machines or equipment, or a change in the muscular movements of the operator, often results in greatly increased production. This type of engineering work is called time-study engineering.

A related field of engineering, human-factors engineering, also known as ergonomics, received wide attention in the late 1970s and the '80s when the safety of nuclear reactors was questioned following serious accidents that were caused by operator errors, design failures, and malfunctioning equipment. Human-factors engineering seeks to establish criteria for the efficient, human-centered design of, among other things, the large, complicated control panels that monitor and govern nuclear reactor operations.

Among various recent trends in the engineering profession, licensing and computerization are the most widespread. Today, many engineers, like doctors and lawyers, are licensed by the state. Approvals by professionally licensed engineers are required for construction of public and commercial structures, especially installations where public and worker safety is a consideration. The trend in modern engineering offices is overwhelmingly toward computerization. Computers are increasingly used for solving complex problems as well as for handling, storing, and generating the enormous volume of data modern engineers must work with.

The National Academy of Engineering, founded in 1964 as a private organization, sponsors engineering programs aimed at meeting national needs, encourages new research, and is concerned with the relationship of engineering to society.

For articles on professional engineering societies, see separate articles under individual names.

From: http://encarta.msn.com/text_761570676___0/Engineering.html