21

I am looking for a word to describe a computer system or program or software that allows more erroneous inputs while still running fine instead of hanging easily.

I was thinking of "forgiving" but thats more for people not for systems, no?

e.g. This is a _______ system

This software is more _______

  • 16
    I was thinking of "forgiving".. It's the first word I thought of for your system. – James Webster Jan 23 '15 at 8:49
  • 4
    The word I would use is "JavaScripteque" (or any other untyped language.) – IQAndreas Jan 23 '15 at 13:54
  • 1
    "Redundant" means that the computer can experience internal errors and still continue functioning. "Error-correcting" and "fault-tolerant" may apply to either/both internal operations or to interactions with other entities. – Hot Licks Jan 23 '15 at 16:58
  • 1
    PHP - PHP is likely the only system that will let you mistype capitals in constants, turn unnamed constants into text, and only give a notice-warning if you use a variable that was never declared. "PHP is built to keep chugging along at all costs", but many people don't like this though (eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design) – NoBugs Jan 24 '15 at 18:39
  • 1
    I have seen 'forgiving' used in exactly this context - 'This software is more forgiving of erroneous input' sounds fine to my ear. – peterG Jan 25 '15 at 2:45

13 Answers 13

60

"Robust" is sometimes used to convey the system behavior you describe, with the positive connotation.

For example:

Despite what user input comes its way, the program does not crash. It is very robust.

  • This is a new word to me, how exactly people use it? – user1589188 Jan 23 '15 at 7:51
  • 5
    @user1589188 As a developer myself, I can confirm this is exactly the word we are using in industry to describe "error-tolerate" software. Idiot-proof (another answer which I saw below) is more like a jargon and, unlike robust, won't ever be used in offical documents. – StupidOne Jan 23 '15 at 16:47
  • 1
    robust can be applied to systems in general not just pieces of software. You would need to be a little careful if using our in a mainly hardware sense - a more literal meaning could mean you could drop it on the floor without it breaking. You might also come across "robust against" followed by a class of threats (user input, dropped connection etc.) – Chris H Jan 23 '15 at 22:10
  • 2
    Remember that "robust" basically means "healthy and strong". I'm reasonably sure it was originally applied to people, and the application to computers is fairly recent (within my memory -- perhaps 30 years). – Hot Licks Jan 23 '15 at 22:20
  • 1
    Of course in reality software has only one guaranteed property: AS IS. – Hagen von Eitzen Jan 24 '15 at 19:17
48

flexible, tolerant. But you may be better off using two words or a compound word. I'd use fault-tolerant.

For example:

Even though the user formatted the date incorrectly, it handled the mistake gracefully. It is fault-tolerant.

  • 10
    +1 for fault-tolerant, the most common term in computing (hyphenated though it may be) for this type of system. – Mark Thompson Jan 23 '15 at 7:38
  • Yes I have heard this somewhere but I don't like its negative sense that I am telling my customer they are at fault and my system can withstand their faults. I just want to tell them my system is strong, safe, blah blah blah in a positive sense and not trying to blame my customer or give them even slightest discomfort. – user1589188 Jan 23 '15 at 7:42
  • 14
    I usually see "fault-tolerant" more to mean tolerant of hardware faults/failures. If the errors are in the input and not the device, the word feels a bit odd to use. – cHao Jan 23 '15 at 8:08
  • 1
    @user1589188 LOL...probably that's part of why the more confidence inspiring robust is a convention. "Tolerant" does almost imply unfriendly, but willing to overlook your mistakes. However, I think it's more what is actually meant sans spin. You can certainly have a poorly designed, unfriendly, but robust system. Anemone's own example demonstrates how silly it can sound. – goldilocks Jan 25 '15 at 8:47
20

This is a resilient system.

This is a good word to talk about fault-tolerant system.

  • 1
    +1 for resilient. Also, the term error-resilient is often used technical literature. – nwellnhof Jan 24 '15 at 18:01
14

I can't believe that nobody has submitted...

Idiot-proof or foolproof

In modern English usage, the informal term idiot proof or foolproof describes designs which cannot be misused either inherently, or by use of defensive design principles. The implication is that the design is usable even by someone of low intelligence who would not use it properly.

Granted, it is somewhat course and insulting but your question states

I am looking for a word to describe a computer system or program or software that allows more erroneous inputs while still running fine instead of hanging easily.

Anyone having dealt with computer users long enough knows that "erroneous inputs" can translate to "Something odd happened and there were lots of windows popping up and I just kept clicking things. Fix it!"

  • This answer strikes as the most correct one offered here. Interestingly, I would suggest that idiot-proof has a much more contemptuous connotation. While robustness isn't wrong, it's not intuitively obvious what it really means in context. Robust against what? Hard drive failures? Floods? Power outages? Cosmic rays? No... Robust against idiots. – Michael - sqlbot Jan 24 '15 at 1:16
  • @Michael-sqlbot Yeah, you've got it. Under no circumstances as a software developer are you to refer to a potential user as an idiot or a fool. It's a sort of political correctness that makes sense in context. But in private, or one user to another, idiot-proof is more to the point. – goldilocks Jan 25 '15 at 8:58
  • 2
    @goldilocks - Sadly, "userproof" isn't a usable term either. – Bobson Jan 26 '15 at 15:28
  • @goldilocks The common jargon used here is to refer to the ID10T error, or calling the issue PEBKAC. More subtle than simply saying "idiot". – forest Mar 17 '18 at 5:12
10

This is a robust system

This software is more robust

However, I think jiggunjer's suggestion of fault-tolerant is even better, notwithstanding your qualms about offending your customer. As he/she says, it's an industry term which your customer should be able to swallow without flinching.

In my opinion, care is needed to ensure that being polite to a customer does not turn into pandering.

  • Thanks, but customers come from different backgrounds, I just want to be careful with wordings. Two x robust now, but its a new word to me, how does it sound? – user1589188 Jan 23 '15 at 7:53
  • I've included a link to the definition given at Oxforddictionaries.com, where you will also find examples of usage. – Erik Kowal Jan 23 '15 at 7:54
  • Thanks for the link, yes it sounds very positive, I like it. But anemone is a bit faster than you, sorry I will have to pick him as the answer. – user1589188 Jan 23 '15 at 7:59
  • It depends on the situation. In high-level software the term may be more prevalent - in the domain of (low-level) software and firmware that controls hardware, manufacturing, or automation systems we tend to use "robust" more than "fault-tolerant". I would say that "robust" is usually more applicable in an industrial context. – J... Jan 23 '15 at 12:12
10

Specifically on the subject of input, Jon Postel said:

TCP implementations should follow a general principle of robustness: be conservative in what you do, be liberal in what you accept from others.

This principle is paraphrased and misquoted all over the place, with words like "lenient", "generous", "tolerant" in place of "liberal"[*]. All of these mean the system allows variety in what input it accepts and responds to.

However, he was mostly talking about not treating input as erroneous, and whether to return errors, refuse connections, etc, or just to work as far as possible. You're talking about not hanging. A system should generally not hang unless explicitly instructed to loop forever. So if in your case the important thing to convey is that it doesn't hang/crash, you could say the system is "robust". Or you could talk about what it isn't: "faulty", "buggy", "broken". You don't generally want to tell the outside world that your system is bug-free, because generally it isn't, but internally or when talking about someone else's system you can use that kind of language.

[*] No political statement[**] intended

[**] Maybe a little bit.

5

I suggest that the adjective "permissive" comes closest.

The dictionary meaning is generally along the lines of "Allowing or characterised by great or excessive freedom of behaviour".

4

lenient is the word. 'fault tolerant' is a technical word, not really a word found in English parlance. For example, you can say 'English teacher is lenient', not 'English teacher is fault tolerant'. If a 'document' writing software does not check for, say grammar or spelling, it is not a fault tolerant software :D

  • 1
    Computer systems are technical, so…. – Nathan Tuggy Jan 24 '15 at 1:03
  • 1
    The context determines which term is most suitable. The questioner has not specified what kinds of errors he/she has in mind, so for the time being 'fault tolerant' seems as good a suggestion as any. – Erik Kowal Jan 24 '15 at 4:36
4

The 'robustness principle' (aka 'Postel's Law' after Jon Postel) says (in respect of computer programs):

Be conservative in what you do, be liberal in what you accept from others (often reworded as "Be conservative in what you send, be liberal in what you accept").

4

Okay this is how I see it:

Robust, in the sense that it tolerates errors by the machine itself/external component, the source of the error is usually internal, possibly by the software itself(it's components), maybe when communicating with an external API. In any case it tolerates machine-machine errors possibly created by faulty initial design.

Fool-proof : Something that tolerates faulty/out of range input from an external user, either by alerting him to fix it, or by implementing a strategy to understand the input it was given - in any case it does not crash.

1

Close to this is the term Graceful Degradation. This is a term frequently used in software development to describe a system that doesn't die horribly the moment something goes wrong.

Usually more used for when prerequisites aren't met, but could apply here too.

0

In software engineering, we use the term save-fail as a contrast to fail-save.

  • fail-save
    The software is expected to have no errors. Anything may happen when this assumption does not hold (system may crash, stall, ignore errors, corrupt data, ...)
  • save-fail
    The software or its surrounding systems (network, database, ....) may have errors that could not be detected during testing, but when such an error occurs, the system will anticipate and deal with it (e.g. by rolling back changes within the scope of a transaction and showing an error message) without further impact other than some functionality being unavailable.
  • 7
    I believe those terms should be fail-safe and safe-fail. – J... Jan 23 '15 at 12:07
  • I don't know if I'd downvote this... but fail-safe is a more apt word I think - or fail-secure as mentioned in this wiki: en.wikipedia.org/wiki/Fail-safe – WernerCD Jan 23 '15 at 17:14
0

How about "User friendly"? Advertising types use it frequently. ;-)

  • 3
    User friendly refers to ease of use, not to fault tolerance. – Chenmunka Jan 23 '15 at 19:45

Not the answer you're looking for? Browse other questions tagged or ask your own question.