Robust Definition

来源:互联网 发布:拉伸法测杨氏模量数据 编辑:程序博客网 时间:2024/04/30 23:49

概述:

  我们经常在论文中看到“鲁棒的算法(robust algorithm)“这个名词,那什么是”鲁棒(robust)“呢?这篇文章从一下几个方面做了介绍。

---鲁棒的定义

******在通常情况和特殊情况下都能表现很好

---如何设计才能达到鲁棒

   ******从系统一开始设计开始

---Unix系统鲁棒的原因

******简单,可阅读性强,每个函数都很小

******函数可以适应大部分情况,避免增加额外处理的代码(可能会引起更多的bug)

******开源

******Unix组织代码的方式:组合(Composition)

******提供给应用程序私有地址空间

******权限管理

The word robust, when used with regard to computer software, refers to an operating system or other programthat performs well not only under ordinary conditions but also underunusual conditions that stress its designers' assumptions.

Software is typically buggy (i.e., contains errors) andfragile, and thus not robust. This is in large part because programsare usually too big and too complicated for a single human mind tocomprehend in their entirety, and thus it is difficult for theirdevelopers to be able to discover and eliminate all the errors, or toeven be certain as to what extent of errors exist. This is especiallytrue with regard to subtle errors that only make their presence knownin unusual circumstances.

A major feature of Unix-like operating systems is their robustness. That is, they can operate for prolonged periods (sometimes years) without crashing (i.e., stopping operating) or requiring rebooting(i.e., restarting). And although individual application programssometimes crash, they almost always do so without affecting otherprograms or the operating system itself.

Robustness is something that should be designed into software fromthe ground up; it is not something that can be successfully tacked onat a later date. The lack of advance planning for robustness is a majorfactor in the numerous security and stability problems that plague somenon-Unix-like operating systems.

The Rule of Robustness in the Unix philosophy states that robustness results from transparency and simplicity. Software is transparent when a skilled programmer can examine its source code(i.e., the original version written by a human in a programminglanguage) and soon comprehend how it works. It is simple when itsoperation is sufficiently uncomplicated that a programmer can visualizewith little effort all of the potential situations that it mightencounter. The more that programs have both of these qualities, themore robust they will be.

Another important tactic for creating robust software is to writegeneral code that can accommodate a wide range of situations andthereby avoid having to insert extra code into it just to handlespecial cases. This is because code added just to accommodate specialcases is often buggier than other code, and stability problems canbecome particularly frequent and/or severe from the interactions amongseveral such sections of code.

Linux and other open source software, i.e., software for which the source code is freely available, has a major advantage over closed source software, i.e., software for which the source code is secret (as is the case for most commercial, or proprietary,software) as far as robustness is concerned. It is that the source codecan be reviewed by a large number of highly diverse programmers attheir leisure via the Internet, and thus it is easier to find andcorrect errors than when the code is reviewed only by in-houseprogrammers who are often under pressure from deadlines and who mightnot have strong incentives to find and eliminate all the bugs.

Applying the Unix Philosophy's Rule of Composition (i.e., todesign programs so that they can be connected to other programs) alsohelps result in robust software. This is because it leads to small,modular programs that are easier to comprehend and to correct than arelarger ones that attempt to do many things. It is also because inputreceived from other programs (as contrasted to that from humans) can beparticularly effective for stress-testing software and thus for helpingto provide tolerance for unusual and large inputs.

The robustness of Unix-like operating systems is also the result ofseveral additional deliberate design concepts. One, which has beenadopted increasingly by other operating systems as well, is theproviding of each application program with its own area of memory and preventing it from interfering with the memory areas for other applications or the kernel (i.e., the core of the operating system).

Another is the system of permissions that are required for accessing all objects(i.e., files and directories) on the system. This system, whenadministered correctly, can make it difficult for sloppy or malicious(e.g., viruses, worms and trojans) code to affect key parts of thesystem.

 

来自linux学习的一个不错的网站:http://www.linfo.org/index.html