Content deleted Content added
I didn't see any active discussion of the idea to merge this page with Fault-tolerant computer system, so I removed the tag proposing it and added a see also tag for fault-tolerant computer system. This is okay to do I hope. See also is more pretty |
Silverfish (talk | contribs) m Help needed: Functionality |
||
Line 9:
== Challenges ==
Programs and software are tools focused on a very specific task, and thus aren't generalized and flexible.<ref name="MIT" /> However, observations in systems such as the [[internet]] or [[biological system]]s demonstrate adaptation to their environments. One of the ways biological systems adapt to environments is through the use of redundancy.<ref name="MIT" /> Many organs are redundant in humans. The [[kidney]] is one such example. [[Human]]s generally only need one kidney, but having a second kidney allows room for failure. This same principle may be taken to apply to software, but there are some challenges.
When applying the principle of redundancy to computer science, blindly adding code is not suggested. Blindly adding code introduces more errors, makes the system more complex, and renders it harder to understand.<ref>http://www.cse.sc.edu/~huhns/journalpapers/V6N2.pdf</ref> Code that doesn't provide any reinforcement to the already existing code is unwanted. The new code must instead possess equivalent [[functionality]]{{dn|date=May 2016}}, so that if a function is broken, another providing the same function can replace it. To do so, the new code must know how and when to accommodate the failure point.<ref name="MIT" /> This means more [[logic]] needs to be added to the system. But as a system adds more logic, [[Software component#Software component|components]], and increases in size, it becomes more complex. Thus, when making a more redundant system, the system also becomes more complex and developers must consider balancing redundancy with complexity.
Currently, computer science practices do not focus on building robust systems.<ref name="MIT" /> Rather, they tend to focus on [[scalability]] and [[Algorithmic efficiency|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.<ref name="MIT" />
|