What are the design principles of software design?

What all software design principles and algorithms can be learned from the functioning of the human body?

  • Neural networks in computer science is one such lesson from the human body. The feedback mechanism between pituitary and thyroid gland to maintain correct level of thyroid is another example.

  • Answer:

    Here's a simple one : there's a linked-list in your brain. What letter comes after Q ?    Simple : R. What letter comes before Q ?   Um.   Er.   Gimme a minute. The reason we can go forward and not back is we learned the alphabet in order, as a singly-linked list : A -> B -> C -> D .... Going forward's a breeze.   Going back, not so much. (This may not be exactly what your question seeks, but i find it an interesting tidbit.)

Christopher Reiss at Quora Visit the source

Was this solution helpful to you?

Other answers

Interesting question. OK, let's try α- and β-amylase. They are diastases produced by the pancreas and used in the gut. They break starch down into maltose. Starch is made by sticking little maltose molecules together, but not all starch is equal. Some starches are long strings of maltose, like potato starch. Others, like bean starch, have a lot of little branches. Others, like wheat starch, have some long bits and some branches. α-amylase breaks up starch by glomming onto the middle of a long chain and breaking it in two. β-amylase works by nibbling off maltoses from the ends, a couple at a time. Given sufficient multiprocessing (many molecules of amylase), α-amylase can break down a linear starch in O(1) time, though for short strands it's O(n log n), because they can only be so close. It's useless at the branches or knots, though. β-amylase can break down anything, but it takes O(n) time. Having extra molecules will only speed it up by K, and more than the number of ends doesn't help. Incidentally, this is why beans make you fart. The kinky starches don't break down very fast in the duodenum, so the maltose isn't absorbed quickly. So the maltose gets down lower in your gut, even to your colon, where various microorganisms eat it. They fart, and so do you.

Eric Pepke

According to this paper: http://groups.csail.mit.edu/mac/classes/symbolic/spring07/readings/robust-systems.pdf, there are a few principles for building robust systems. These principles apply to all biological systems, not just to human body, though. Redundancy and degeneracy. We can live a good life even after losing a kidney. We can get energy from multiple sources with different energy cycles. Exploratory behavior. Biological systems tend to achieve desirable outcome via generate-and-test. The generator mechanism and tester mechanism are different and work independently. Compartments and localization. Good engineering has similar flavor. We modularize our design, and we localize system interactions as much as possible. Defense, repair, and regeneration. Our entire stomach gets regenerated every few days. Similarly, think about Erlang or distributed systems in general. If a component malfunctions, shoot it on the head and restart a new one. Composition. A large biological system is composed of many smaller subsystems, so should be a large software system. The paper has a lot of interesting discussions. Highly recommended.

Yong Yuan

The way our senses work suggested several algorithms, which in turn appear to be useful for stuff other than creating content for our senses. For example, contrary to what some people believe, we do not hear the music as wave of oscillating membrane (which lead us to analog solutions such as microphone, oscillating current in the audio cable, and oscillating needle on the gramophone). Instead we hear the music by some tiny hairy receptors which are located on the spiral in such a way, that each can sense a different frequency. This leads to ideas such as decomposing a single wave into several sinusoids, (Fast) Fourier Transform, and eventually MP3. Similarly we do not see light as a single wave, but instead our eyes measure amount of red, green and blue components in it. This suggests ideas like sampling, extrapolation, reconstruction, and also made things like CTR/LED monitors possible. Similarly to mp3 exploiting our lack of attention to details (such as very high frequencies, or very low frequencies, and generally extrapolating everything in between from just a few samples) jpeg, and mpeg exploit our way of perceiving/neglecting details in image / motion. I realize that my answer is a bit stretched : some of this inventions (Fourier's works?) were made prior to realization of how our senses work, some of this algorithms are made purely to fit our human's senses, and do not teach us much about algorithms in general. Addendum: My friend just exposed me to great article (dating back to 2002) http://ds9a.nl/amazing-dna/ which (among other things) shows how nature learned about conditional compilation, self modifying code, forking, ulimits, RAID1 etc. millennia before us. And needles to say: about evolutionary algorithms.

Jakub Łopuszański

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.