🌐
Study.com
study.com › courses › computer science courses › mttc computer science (050): practice & study guide
Characteristics of Robust Programs | Study.com
Characteristics of robust programs include user input filtering, controlled data access, logging and auditing, exception handling, and self-diagnosis. To unlock this lesson you must be a Study.com Member.
🌐
Wikipedia
en.wikipedia.org › wiki › Robustness_(computer_science)
Robustness (computer science) - Wikipedia
3 weeks ago - Rather, they tend to focus on scalability and efficiency. One of the main reasons why there is no focus on robustness today is because it is hard to do in a general way. Robust programming is a style of programming that focuses on handling unexpected termination and unexpected actions.
🌐
Ucdavis
nob.cs.ucdavis.edu › ~bishop › secprog › robust.html
Robust Programming - nob.cs.ucdavis.edu!
After all, if you modify the code ... of the principles of robust programming to the more formal principles of good programming style, such as cohesion and coupling, information abstraction, information hiding, and good documentation....
🌐
Save My Exams
savemyexams.com › gcse › computer-science › edexcel › 20 › revision-notes › 3-computers › software › developing-robust-software
Robust Software - GCSE Computer Science Revision Notes
March 22, 2024 - Robust software is software designed to withstand unexpected errors such as an input from a user or a calculation and continue to operate · Programmers must ensure the software has a way of dealing with the potential errors to ensure their ...
🌐
Learncomputing
learncomputing.org › revision › gcse › 2-3
GCSE Computer Science - Producing Robust Programs
GCSE Computer Science Unit 2.3 Producing Robust Programs: defensive design, anticipating misuse, authentication, input validation, maintainability, purpose of testing, test types (final and iterative), syntax and logic errors, test data and ...
🌐
Ucdavis
nob.cs.ucdavis.edu › classes › ecs153-2003-04 › handouts › robust.html
Robust Programming
After all, if you modify the code ... of the principles of robust programming to the more formal principles of good programming style, such as cohesion and coupling, information abstraction, information hiding, and good documentation....
🌐
InformIT
informit.com › articles › article.aspx
Developing Robust Processes | IT Management Reference Guide | InformIT
One of the primary characteristics of a world-class IT environment is that its key processes are well-developed and robust. These processes include those that are part of the infrastructure such as change management and problem management. They could also include application development processes such as production acceptance and the software development life cycle.
🌐
Software Engineering Institute
sei.cmu.edu › blog › tactics-and-patterns-for-software-robustness
Tactics and Patterns for Software Robustness
July 25, 2022 - Robustness has traditionally been thought of as the ability of a software-reliant system to keep working, consistent with its specifications, despite the presence of internal failures, faulty inputs, or external stresses, over a long period of time. Robustness, along with other quality attributes, such as security and safety, is a key contributor to our trust that a system will perform in a reliable manner.
🌐
Quora
quora.com › What-does-it-mean-for-a-code-to-be-robust
What does it mean for a code to be robust? - Quora
Answer (1 of 3): Robustness (in programming) means that the (SW) system can deal well with errors and/or unexpected situations. When you code, you typically follow the “happy” path.
Find elsewhere
🌐
Buildsoftwaresystems
buildsoftwaresystems.com › post › quality_attributes_of_computer_programs__software_robustness
Quality Attributes of Computer Programs: Implement Software Robustness
August 15, 2024 - This definition highlights a system’s ability to withstand external stressors. To fully grasp the scope of software robustness, we break it down into two key attributes: error tolerance and fault tolerance.
🌐
Medium
64x64.medium.com › what-is-robust-programming-6f2b5cc01f95
What is robust programming?. A robust program is one that can handle… | by U Kyin | Medium
March 26, 2021 - What is robust programming? A robust program is one that can handle errors and other unexpected conditions in some reasonable way. This means that the program must anticipate possible errors and …
🌐
Medium
medium.com › @Sky_Hustle › what-does-it-mean-for-software-to-be-robust-319f4f26677b
What Does it Mean for Software to be Robust? | by Dmitry Sky | Medium
December 30, 2023 - Features like auto-saving work, transaction rollback in databases, or automatic restart capabilities are essential for ensuring that data isn’t lost and that the software can quickly bounce back to a functional state.
🌐
Wikiversity
en.wikiversity.org › wiki › Software_Design › Code_robustness
Software Design/Code robustness - Wikiversity
April 5, 2022 - First, high change amplification makes changesets larger, which, in turn, are reviewed less effectively in terms of uncovering programming errors.[3] Second, if the compiler doesn't enforce change in all required places in the codebase, it's easier for a developer to forget making some of them when there are many. When modifying code highly robust against programming error, developers may experience less background alertness because they know errors if happen will be caught by the compiler or the test suite so they don't need to constantly watch and check after themselves for not inserting bugs.
🌐
LINFO
linfo.org › robust.html
Definition of robust
June 20, 2005 - The word robust, when used with regard to computer software, refers to an operating system or other program that performs well not only under ordinary conditions but also under unusual conditions that stress its designers' assumptions · Software is typically buggy (i.e., contains errors) and ...
🌐
Nexwebsites
nexwebsites.com › blog › software-robustness
What is Software Robustness? How to Ensure Quality and Reliability - Nexus Software Systems
February 9, 2023 - Achieving robustness requires a combination of techniques such as fault detection, modular design, defensive programming, testing, quality assurance, monitoring and security. By following these strategies, Nexus Software Systems creates software ...
🌐
Wikipedia
en.wikipedia.org › wiki › Fault_tolerance
Fault tolerance - Wikipedia
January 27, 2026 - In fault-tolerant computer systems, programs that are considered robust are designed to continue operation despite an error, exception, or invalid input, instead of failing completely. Software brittleness is the opposite of robustness. Resilient networks continue to transmit data despite the ...
Top answer
1 of 10
39

what is the point of checking a third state when a third state is logically impossible?

What about a Boolean? that allows for a NULL state that is neither true nor false. Now what should the software do? Some software has to be highly crash-resistant like pacemakers. Ever seen someone add a column to a database that was a Boolean and initialize the current data to NULL initially? I know I've seen it.

Here are a few links that discuss what it means to be robust in terms of software:

  • Robust Programming
  • Robust Definition
  • Robustness, the forgotten code quality.
  • How to write robust code

If you think there is one universally agreed upon definition of "robust" here, good luck. There can be some synonyms like bomb-proof or idiot-proof. The Duct Tape Programmer would be an example of someone that usually writes robust code at least in my understanding of the terms.

2 of 10
12

For the sake of my discussion a Bool can have 2 states, True or False. Anything else is non-conformance to the programming langugae specification. If your tool chain is non-conformant to its specification, you are hosed no matter what you do. If a developer created a type of Bool that had more than 2 states, it's the last thing he would ever do on my codebase.

Option A.

if (var == true) {
    ...
} else if (var == false) {
    ...
} else {
    ...
}

Option B

if (var == true) {
    ...
} else {
    ...
}

I assert Option B is more robust.....

Any twit can tell you to handle unexpected errors. They are usually trivally easy to detect once you think of them. The example your professior has given is not something that could happen, so it's a very poor example.

A is impossible to test without convoluted test harnesses. If you can't create it, how are you going to test it? If you have not tested the code, how do you know it works? If you don't know it works, then you are not writing robust software. I think they still call that a Catch22 (Great movie, watch it sometime).

Option B is trivial to test.

Next problem, ask you professor this question "What do you want me to do it about it if a Boolean is neither True nor False?" That should lead into an a very interesting discussion.....

Most cases, a core dump is approriate, at worst it annoys the user or costs a lot of money. What if, say, the module is the Space shuttle realtime reentry calculation system? Any answer, no matter how inaccurate, cannot be worse than aborting, which will kill the users. So what to do, if you know the answer might be wrong, go for the 50/50, or abort and go fo the 100% failure. If I was a crew member, I'd take the 50/50.

Option A kills me Option B gives me an even chance of survival.

But wait - it's a simulation of the space shuttle reentry - then what? Abort so you know about it. Sound like a good idea? - NOT - because you need to test with the code you plan to ship.

Option A is better for simluation, but can't be deployed. It's useless Option B is the deployed code so the simulation performs the same as the live systems.

Let's say this was a valid concern. The better solution would be to isolate the error handling from the application logic.

if (var != true || var != false) {
    errorReport("Hell just froze over, var must be true or false")
}
......
if (var == true){
 .... 
} else {
 .... 
}

Futher reading - Therac-25 Xray machine, Ariane 5 Rocket failure and others (Link has many broken links but enough info that Google will help)

🌐
University of Texas
cs.utexas.edu › ~swarat › pubs › fse11.pdf pdf
Proving Programs Robust ∗ Swarat Chaudhuri Rice University swarat@rice.edu
Fig. 2). Suppose the program has two outputs: a sequence T · of edges forming a minimum spanning tree, and the cost of · this tree. MST is N-robust within Σ(MST) if the output is
🌐
Learneroo
learneroo.com › modules › 82 › nodes › 428
Introduction to Correctness and Robustness - Learneroo
A program is correct if it accomplishes the task that it was designed to perform. It is robust if it can handle illegal inputs and other unexpected situations in a reasonable way. For example, consider a program that is designed to read some numbers from the user and then print the same numbers ...