User Tools

Site Tools



This shows you the differences between two versions of the page.

Link to this comparison view

software_that_has_the_quality_without_a_name [2014/05/16 07:47]
yann [Comments]
software_that_has_the_quality_without_a_name [2019/10/06 20:37]
Line 1: Line 1:
-====== Quintero, F. M. Software that has the Quality Without A Name. 2011 ====== 
-===== Abstract ===== 
-//(This article contains the author'​s thought and is not structured as a research paper. Hence, the following is a paragraph taken from the article but not its actual abstract; the article does not have one.) 
-So you can see the essence of design patterns: good, tested recipes that don't constrain your implementation in unnecessary ways. The patterns do not mandate a particular style, nor include superfluous decorations:​ the book doesn'​t tell you, "make this shape of flourishes in the handrails";​ instead it tells you, "a house should have its rooms placed such that sunlight enters them according to the time of the day in which they are most used - East for the bedrooms in the morning, West for the living room in the afternoon"​. 
-===== Comments ===== 
-//​Yann-Gaël Guéhéneuc,​ 2014/​05/​16//​ 
-This article describes the author'​s progress from casual observer to expert in design patterns through learning and using real-world architectural patterns. The author start by stating that he used to dismiss refactorings and design patterns as "​nothing that you could not discover yourself"​. Then, while renovating/​expanding his house, he started studying Alexander'​s patterns and "​became tremendously interested in [Alexander'​s work]"​. He realised that the patterns "do not mandate a particular style, nor include superfluous decorations"​ and they are an "​approach [to] design"​ with "good solutions [...] that wouldn'​t constraint [the] implementation unnecessarily"​. Moreover, the patterns "give [...] a vocabulary to talk about how things are constructed"​. 
-From then on, the author introduces the idea of "​Quality without a name": "[a] thing or place has the quality without a name if it is comfortable,​ has evolved over time in its own terms, is free of inner contradictions,​ doesn'​t try to draw attention to itself, and seems to have archetypal qualities"​. Things that have the quality without a name seem to have 15 properties in common, according to Alexander'​s work. The author summarises these 15 properties: 
-  * Levels of scale: There is a balanced range of sizes. You don't have abrupt changes in the sizes of adjacent things. Elements have fractal scale. 
-  * Strong centers: You can clearly identify parts of the space or structure. 
-  * Thick boundaries`:​ Lines delimit things. In living systems, edges are the most productive environments (e.g., all the critters that live at the edge of the water). 
-  * Alternating repetition: High/low, thick/thin, shape A and shape B. Things oscillate and alternate to create a good balance. 
-  * Positive space: Space is beautifully shaped, convex, enclosed. It is not leftover space. Think of how a Voronoi diagram has cells that grow outward from a bunch of points, or how a piece of corn has kernels that grow from tiny points until they touch the adjacent kernels. 
-  * Good shape: The sails of a ship, the shell of a snail, the beak of a bird. They attain the optimal shape for their purpose, which is beautiful. 
-  * Local symmetries: The world is not symmetrical at large. But small things tend to be symmetrical,​ because it is easier that way. Your house is not symmetrical,​ but each window is. 
-  * Deep interlock and ambiguity: The crooked streets of old towns. Axons in neurons. It is hard to separate figure and ground, or foreground and background. Two strong centers are made stronger if a third center is placed between them, so that it belongs to both. 
-  * Contrast: You can distinguish where one thing ends and the next one begins, because they don't fade into each other. 
-  * Gradients: Things fade into each other where they need to. Concentrations in solutions, snow or earth banks, the wires that support a bridge. The way bandwidth decreases as you move away from the backbone. 
-  * Roughness: The world is not frictionless and smooth. Irregularities are good because they let each piece adapt perfectly to its surroundings,​ rather than being an exact copy that may not fit as well. 
-  * Echoes: Things repeat and echo each other. Things are unique in their exact shape, but the general shapes repeat over and over. 
-  * The void: Sometimes you get a big blank area for quietness of form. A lake, a courtyard, a picture window. 
-  * Simplicity and inner calm: Things are as simple as possible, but no simpler. 
-  * Non-separateness:​ Everything depends on everything else. You can't separate a fish from the pond and the aquatic plants. You can't separate a column from the base of the building. 
-The author goes on with Alexander'​s idea of transformations,​ which preserve the structure of the things, as refactorings preserve the behaviour of a software program. He then gives an example by Richard Gabriel to transform a ''​PhoneCall''​ class to create two strong centers, then extract the latent center in the middle, and then reach a design where multi-way calls, conference calls, can happen. 
-The author summarises the fundamental process to apply structure-preserving transformations:​ 
-  - Start with what you have - an empty lot, or an already-built building, or a program that looks ugly and is hard to use. 
-  - Identify the centers that exist in that space. Find the weakest center or the least coherent. 
-  - See how to apply one or more of the fifteen structure-preserving transformations to strengthen that weak center. Does it need to be delimited? Does it need to be blended with its surroundings?​ Does it need more detail? Does it need to be de-cluttered?​ 
-  - Find the new centers that are born when you apply the transformation to the old center. Does the new combination make things stronger? Prettier? More functional? 
-  - Ensure that you did the simplest possible thing. 
-  - Go back to the beginning for the next step. 
-The author recalls that Alexander does not like destroying things to build new ones. Similarly, we should refactor code rather than scrap it. Also, Alexander does not like detailed, up-front design because "you cannot predict absolutely everything that will come up during construction or implementation"​. Instead, we must "​continually evaluate what [we create] against real users and real use cases"​. Finally, the author concludes that "​Quality without a name" is really a (mysterious) synonym to "​living structure",​ i.e., things "that are build according to that method"​. 
-This article is interesting because it put Alexander'​s consequent work into perspective and summarises Alexander'​s main ideas and finding. It also relates real-world architecture with software design and makes a good case for reading books about refactorings and design patterns. 
software_that_has_the_quality_without_a_name.txt · Last modified: 2019/10/06 20:37 (external edit)