> home
> About
>
Contact Us
>
Editorial Info

> IEEE-USA

    opinion

   07.11    


07.11

When Do Software Systems Need to be Engineered?

By Phillip Laplante and Mitch Thornton

The Yin and Yang of Software

A vending machine with an embedded microcontroller experiences a software failure and incorrectly dispenses 12 candy bars when the customer only paid for one. Another microcontroller-controlled vending machine designed to dispense fresh-cooked French fries explodes due to a software error, causing hot oil to spray from the machine and inflicting third degree burns to a child.

In an automobile, the software-controlled radio system fails, preventing a driver from tuning to her favorite station. In another automobile, the software-controlled braking system fails due to an undetected programming error, causing a head-on collision and killing three people.

A Web-based commerce system for a small pet store chain is hacked because of inadequate security provisions, causing customer account information, including credit card numbers and other identifying information to be stolen. A financial institution’s website, which provides self-service features for several large pension funds, is compromised due to weak software security mechanisms, wiping out the pension funds of more than 20,000 retirees.

A software-controlled tattoo machine erroneously embeds “Jean,” the name of your ex-girlfriend, on your arm, instead of “Joan,” the name of your wife. A medical device malfunctions due to a software error causing fatal doses of radiation to be administered to 20 patients before the problem is detected.

What is similar and what is different about these systems? Each of these couplets depicts failed systems in the same application domain. But in each pair, failure in the former system has less severe consequences than failure in the latter. In fact, failure in the second system significantly affects the health, safety or welfare of the public, sometimes with disastrous consequences. We contend that the latter systems need to be built by licensed professional engineers (PE), while the former may not need to be.

How Licensure Protects the Public

We are not saying that a licensed software engineer is better than an unlicensed software practitioner. It is a simple matter of accountability. Who guarantees the competency of a non-licensed software engineer? The school from which the engineer graduated, if he or she attended college at all? His or her employer? And under these conditions, where is the consistency in these guarantees? State licensure provides a consistent set of criteria for judging the minimum competency of a software engineer. The public is protected because only competent engineers are permitted to work on systems that affect health, safety and welfare.

States license engineers for practice in various areas to ensure each practitioner is at least minimally competent, so that the public is protected from the ill effects of incompetent “engineers.” But until very recently, no state required licensure of software engineers, and currently, only Texas requires licensure for those working on systems that affect the “health, welfare or safety” of the public (§ 1001.407, Construction of Certain Public Works).

But licensure for software engineers will become a practical reality within two years in 10 states, and we believe that eventually all U.S. states and jurisdictions will adopt some form of professional licensure for software engineers in order to protect the public. No one knows for sure how many software professionals will need to be licensed because the answer depends on how state legislatures choose to define systems that affect “health, safety and welfare.” In fact, each state will probably define these terms differently. Various groups, including software professionals, lawyers, consumer advocates and safety experts will be offering advice to state legislatures in crafting software licensure laws.

For example, the Software Engineering Licensing Consortium (SELC) — a group of stakeholders including members of the National Society of Professional Engineers (NSPE), IEEE and the Texas Board of Professional Engineers (TBPE) — defines licensable software engineering as: “…the application and/or study of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software that has an impact on the lives, property, economy, or security of people or the national defense; that is, the application of engineering to software.”

We take this opportunity to offer our opinion on which software systems need to be produced by licensed software engineers and which software systems do not.

Identifying Systems that Should be Produced by Licensed Engineers

Many systems (perhaps most) will not require a licensed software engineer to be involved. For example, any system that has no direct interaction with the public, such as the vast number of software systems that collect, analyze and report business information to owners, managers and accountants. Software games would not typically require a professional engineer unless the game controlled physical devices that, if they malfunctioned, could harm the public.

Even software that has direct interaction with the public will not necessarily require a licensed software engineer. Any kind of customer-facing business software (typically via websites or kiosks) that does not put a consumer at any more risk than a non-software transaction of the same kind, would not require a licensed professional engineer. For example, access to credit card information can be illegally obtained through all kinds of means other than software hacking, therefore it is probably unfair to require more of a software system.

In fact, it is likely that the main type of system that will require a professional engineer are embedded systems; that is, those that directly control hardware other than the computer on which they run. Embedded systems include a broad range of applications in transportation (e.g. airplanes, automobiles, elevators and traffic control systems), medicine (e.g. monitoring, diagnostic and treatment devices), process control (e.g. critical infrastructure, production and logistics), and many more. In some cases only the critical part of the system would need to be written by a licensed software engineer, such as the hardware control portion of an embedded system. In addition, in most states, an industrial exemption allows a non-professional engineer to work under the direct supervision of a licensed professional engineer, even on critical aspects of the code — though the supervising engineer is legally responsible (civilly and criminally) for the consequences of a failed system.

There are an infinite number of scenarios that one can construct around a single piece of software and the interactions between software components within a system and between systems. Therefore it is impossible to classify software systems as either “requires a professional engineer” or “does not require a professional engineer.” Instead, we believe it is more effective to ask a set of questions:

Q1.  Does the software control a device or devices that could directly inflict harm to a human being if there was a malfunction?

Q2.  Does the software put the assets of an individual or corporate entity at risk beyond the normal amount of risk assumed in everyday business transactions?

Q3.  Does the software expose identifying information of an individual or a corporate entity that would violate any federal, state or local laws (e.g. HIPPA, FERPA)?

Q4.  Does the software interact with other systems in way that directly satisfies 1-3 above?

If the answer to any of these questions is “yes” then the software system, or the parts of the system that satisfy these criteria (called the “critical parts of the system”), would likely have to be created under the supervision of a professional engineer.

For example, the candy machine likely could not inflict physical harm to a human being via some kind of explosion as the French fry machine could. The final risk to an individual in the candy machine scenario is no more than the cost of the candy bar, which means Q1-Q3 would be answered “no.” What about the pet store commerce system? The answers to Q1 and Q2 would be “no,” but what about Q3? The answer is “no.” The code could expose credit card information, but so could your local pet store through sloppy office management — every time you use a credit card you expose yourself to financial risk, much of which is guaranteed by the credit card company. It is hard to imagine a scenario in which the pet store system satisfies question Q4, but more on this shortly.

In the financial institution software, however, the retirement funds of thousands of individuals could be compromised in a way that even the financial institution could not survive, and so it fails Q3. And the software-controlled radio system would lead to “no” answers to Q1-Q3 above, whereas the software-controlled braking system elicits a response of “yes” to question Q1.

Where Does it All End?

What about Q4? That is, second and higher-order effects of interacting software systems? Do we have to imagine some unfortunate series of events that begin with an ostensibly harmless software failure but ultimately lead to injury to a person? We know that security breaches into critical software systems are often through non-critical applications that interact with critical ones — and we want to account for that scenario. But systems that directly communicate with a critical system is covered by Q4, and at least the security functionality would need a licensed professional software engineer. But what if the tattoo machine failure indirectly causes significant harm to the victim, for example, if he is murdered by his enraged wife? Indeed, taken to the extreme, a set of all imaginable scenarios between systems, and their interactions with other systems and humans, suggests that every software system needs to be built by a licensed professional software engineer. We are certainly not advocating this position. This is why Q4 deals with the direct interaction between systems. For example, suppose the answers to questions Q1-Q3 are “no” for system A. But system A interacts with system B only in that status information is reported between them, and this information does not affect any functionality that is critical. Then the answer to question Q4 for system A is “no” and a professional engineer does not need to be involved in producing the system. Still, we acknowledge that ambiguous scenarios could be created.

There is another viewpoint. Isaac Asimov’s “I, Robot” (Isaac Asimov, I, Robot, New York: Doubleday & Company, 1950.) gave us three fundamental laws of robotics:

R1.   A robot may not injure a human being or, through inaction, allow a human being to come to harm.

R2.  A robot must obey any orders given to it by human beings, except where such orders would conflict with the First Law.

R3.  A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.

It’s possible, then, to derive a set of rules for software systems from the above:

S1.    Software may not injure a human being or, through inaction, allow a human being to come to harm (“injure” is defined as “significant harm to health, welfare or violation of privacy.”)

S2.   Software must respond to commands given to it by human beings, except where such inputs would conflict with S1.

S3.   A software system must protect its own existence as long as such protection does not conflict with the S1 or S2.

These rules can be used as guiding principles to construct systems that are safe for the public, and possibly as questions to identify if systems require a professional engineer to build them. (For example, a violation of S1 is equivalent to an affirmative answer to Q1).

Complicating any discussion about licensure is the meaning of certain words. For example, what constitutes “significant” and what constitutes “harm?” What do “risk” and “interact” mean? And what does “in responsible charge” mean? But, ultimately, it will be up to judges and juries to decide what these words mean, and which systems need to be produced by licensed professional engineers.

Back

 


Phillip Laplante, Ph.D., P.E., CSDP, is a professor of software engineering at Penn State University’s School of Graduate Professional Studies in Malvern, Pennsylvania. He currently serves as chair of the software engineering licensure examination development committee and is a member of the IEEE-USA Licensure and Registration Committee.

Mitchell A. Thornton, Ph.D., P.E., is a professor of computer science and engineering and a professor of electrical engineering at Southern Methodist University in Dallas, Texas. He currently serves as chair of the electrical and computer engineering licensure exam development committee and is a member of IEEE-USA’s Licensure and Registration Committee.

Comments may be submitted to todaysengineer@ieee.org.


Copyright © 2011 IEEE

 

short circuits

Your Engineering Heritage: Titanic, Wireless Communications, and the Popular Delusions of Mass Media

World Bytes: Animal Wildlife Crossings

viewpoints

reader feedback

archives

career articles
policy articles
all articles
2012
Dec Nov Oct Sep
Aug Jul Jun May
Apr Mar Feb Jan
2011
Dec Nov Oct Sep
Aug Jul Jun May
Apr Mar Feb Jan
 
 

archive search

 
 

Comments on this story may be sent directly to Today's Engineer or submitted through our online form.