Monday, October 29, 2007

On the concept of Form (1)

I postponed writing on Form (vs. Function) for a while now, mostly because I was struggling to impose a rational structure on my thoughts. Form is a complex subject, barely discussed in the software design literature, with a few exception I'll quote when relevant, so I'm sort of charting new waters here.

The point is, doing so would take too much [free] time, delaying my writings for several more weeks or even months. This is exactly the opposite of what I want to do with this blog (see my post blogging as destructuring), so I'll commit the ultimate sin :-) and talk about form in a rather unstructured way. I'll start a random sequence of posting on form, writing down what I think is relevant, but without any particular order. I won't even define the concept of form in this first instalment.

Throughout these posts, I'll borrow extensively from a very interesting (and warmly suggested to any software designer) book from Christopher Alexander. Alexander is better known for his work on patterns, which ultimately inspired software designers and created the pattern movement. However, his most releavant work on form is Notes on the Synthesis of Form. When quoting, I'll try to remember page numbers, in which case, I'll refer to the paperback edition, which is easier to find.

Alexander defines two processes through which form can be obtained: the unselfconscious and the selfconscious process. I'll get back to these two concepts, but in a few words, the unselfconscious process is the way some ancient cultures proceeded, without an explicit set of principles, but relying instead on rigid tradition mediated by immediate, small scale adaptation upon failure. It's more complex than that, but let's keep it simple right now.

Tradition provides viscosity. Without tradition, and without explicit design principles, the byproducts of the unselfconscious process will quickly degenerate. However, merely repeating a form won't keep up with a changing environment. Yet change happens, maybe shortly after the form has been built. Here is where we need immediate action, correcting any failure using the materials at hand. Of course, small scale changes are sustainable only when the rate of change (or rate of failure) is slow.

Drawing parallels to software is easy, although subjective. Think of quick, continuous, small scale adaptation. The immediate software counterpart is, very naturally, refactoring. As soon as a bad smell emerge, you fix it. Refactoring is usually small scale, using the "materials at hand" (which I could roughly translate into "changing only a small fraction of code"). Refactoring, by definition, does not change the function of code. Therefore, it can only change its form.

Now, although some people in the XP/agile camp might disagree, refactoring is a viable solution only when the desired rate of change is slow, and only when the gap to fill is small. In other words, only when the overall architecture (or plain structure) is not challenged: maybe it's dictated by the J2EE way of doing things, or by the Company One True Way of doing things, or by the Model View Controller police, and so on. Truth is, without an overall architecture resisting change, a neverending sequence of small-scale refactoring may even have a negative large-scale impact.

I've recently said that we can't reasonably turn an old-style, client-server application into a modern web application by applying a sequence of small-scale changes. It would be, if not unfeasible, hardly economic, and the final architecture might be far from optimal. The gap is too big. We're expecting to complete a big change in a comparatively short time, hence the rate of change is too big. The viscosity of the previous solution will fight that change and prevent it from happening. We need to apply change at an higher granularity level, as the dynamics in the small are not the dynamics in the large.

Curiously enough (or maybe not :-), I'll be talking about refactoring the next two days. As usual, I'll try to strike a balance, and get often back to good design princples. After all, as we'll see, when the rate of change grows, and/or when the solution space grows, the unselfconscious process must be replaced by the selfconscious process.

9 comments:

Anonymous said...

The Concept of Form
Achille Bonito Oliva
Page 39

It's curious how in many cases the origins of abstraction are linked to a substrata of esoteric thought, examples of which might include Picabia's dabblings in alchemy or Mondrian moving in the realm of theosophy. In nearly all cases, however, the 'invention' of abstraction arises through strict contact with music, the most immaterial of the arts, based as it is on abstract, mathematical relations: a great precursor in this sense was the Lithuanian painter and composer Ciurlionis who had a profound influence on Kandinsky; Picabia's wife too, Gabrielle Buffet was a pupil of the composer Busoni, portrayed in one of Boccioni's late masterpieces, while Boccioni himself was to write of Giacomo Balla's 'supreme purity, a kind of sensibility that is wholly scientific and that is inevitably what drew him to his present style of interpretation.' For Balla the principle of abstraction lay in the analysis of light. His 'iridescent compenetrations' decomposed light into its various colours arranged in triangular formations which corresponded to the structure of light rays. Thus art was reduced to its essential element, light, which was in turn analysed down to its basic components.

Achille Bonito Oliva is Professor of Modern and Contemporary Art in the Architecture Department at La Sapienza, Rome. His international reputation as critic and curator was established with 'Contemporanea' in '73 at the Villa Borghese. Notably also, he theorised 'transavanguardia', was President of the Venice Biennial in '93, and curated 'Minimalia' (Rome, Venice and New York) in '97-'98. His latest publication is 'Gratis. A bordo dell'Arte' (free; aboard art).

Anonymous said...

It is quite possible to use the concept of form only in connection with single performances, and use another, less defined and more general concept of structure for the tune level - for the common denominator of all possible performances of the tune. The discipline of formal analysis is developed in connection with musics where performances of a piece of music is not varied in the way they are in fiddle music. As a contrast, the variability of fiddle music may be described as variation of form.

On the other hand, I do not like to reserve the form concept to apply only to single performances. As a performer, I have a concept of form going beyond the single performance of a tune. The exact form I happen to give a single performance is not felt determining for my concept of the form of the tune "Den gamle Sordølen". On the contrary: I feel that the fact that there is no fixed sequence of the veks as a significant feature of the form of this tune. This aspect of the form is also possible to trace in a single performance, as the level of rounds disappears: to be able to identify rounds, one must hear a set of veks appearing in the same sequence two or more times.

One could perhaps use a concept of 'form type', such as when we talk about "sonata form" as something characterising not only a single performance or a single work of art, but a whole group of compositions. But the parallel is not quite right, because we would probably not accept a sonata concept where exposition and development sections could be freely exchanged.

If it is not possible, then, to assign a formal type to "Den gamle Sordølen", we have the following options:

• the fiddle music is basically different from most other musics, or

• we need to rethink our ideas about musical form, or

• form is less important than is usually assumed in conventional theory of music for the identity of musical works

All those possibilities may be considered. The fiddle music, especially tunes like "Den gamle Sordølen", show traits that are rather unique, compared to many other musics. The conception of form as predominantly hierarchical, is not necessarily the best in all situations (as this tune shows), and, finally, it is easy to argue that formal structure is not decisive for the experience of musical works. Rolf Inge Godøy shows this argument by making different edits of well-known works, changing the sequence of different parts, and holds that the experience is not changed dramatically by this, even if the form (in the conventional sense) is changed.

Contrasting a graph with a hierarchy brings out an important quality of the conventional form concept: the focus is on the relations between different parts and the whole work. In a graph view the performance of a unit is not visible in the same way; the focus is on how parts may connect to each other. It is quite feasible to envisage a form concept that would take graphs rather than hierarchies as the point of departure. In that case, the perspective is changed from qualities of the work as an entity to the quality of the relations between parts. In this way, the analytical perspective is brought closer to the experience of music, as it unfolds, and farther from experience of music as a form of contemplation after the fact: after all, the whole hierarchical structure of a piece of music is in principle available for the first time only when the musical performance is over.

Anonymous said...

Gail Fine, On Ideas. Aristotle's Criticism of Plato's Theory of Forms. Oxford: Clarendon Press, 1993. Pp. x + 400. ISBN 0-19-823949-1.

--------------------------------------------------------------------------------

Reviewed by Lloyd P. Gerson, University of Toronto.

The works of Plato are at the heart of the western philosophical tradition. His theory of forms or ideas is the focus of his philosophy. Aristotle, Plato's greatest pupil, wrote a small treatise, On Ideas, in which he examines and criticizes various arguments for the existence of forms. The treatise survives in substantial fragmentary form in the commentary of Alexander of Aphrodisias on Aristotle's Metaphysics. Owing both to the author and the subject of the work, On Ideas is arguably an immensely important work in the history of ancient philosophy. Surprisingly enough, however, it has not until recently received a great deal of sophisticated philosophical attention. In part, this is because those who have written extensively about On Ideas were otherwise motivated.

For example, Léon Robin's ground breaking La Théorie platonicienne des idées et des nombres d'après Aristote (1908) was an attempt to reconstruct Plato's theory exclusively from the Aristotelian testimony. But in the case of On Ideas, Aristotle cites Platonic arguments in highly elliptical form. It is not useful or even possible to interpret these arguments apart from a meticulous examination of their basis in the dialogues.

Harold Cherniss in his enormously learned Aristotle's Criticism of Plato and the Academy (1944) had a different agenda. Cherniss set out to prove that Aristotle willfully misinterpreted Plato in almost every important matter and misassigned positions to him that in fact were those of Plato's successors. This thesis has not met with wide acceptance. In the case of On Ideas, it meant that Cherniss treated Aristotle's arguments as captious and even obtuse and as not of sufficient interest to warrant the consideration of Plato or a committed Platonist. This meant also that there was no point in wondering whether Plato's later dialogues might indicate a revision to the theory of forms in the light of Aristotle's criticisms. No such revision was necessary.

A much more sophisticated level of philosophical analysis was achieved in the works of the late G.E.L. Owen who in the 1950s and 60s wrote a number of incisive and influential articles exploring parts of On Ideas. Owen was adamantly opposed to the approach of Cherniss. But the trivialization of Aristotle's thought practiced by Cherniss was mirrored by a somewhat similar approach to Plato's thought by Owen. He believed that Aristotle's arguments against Plato were not just sound but obviously so and that on no conceivable interpretation could the theory of forms be successfully defended. According to Owen, Aristotle's demolition of the theory of forms was recognized by Plato himself in the Parmenides after which Plato abandoned the theory. There was no need to explore in depth the putative subtleties of such a theory. What this meant for the treatment of On Ideas is that one could just settle for the simplest interpretation of the arguments for forms that left them open to straightforward refutation.

Gail Fine's treatment of On Ideas is far superior to any of the above mentioned works. Indeed, it is the first full length philosophical monograph on the subject in English. It is notable and practically unique in taking seriously both the theory of forms and Aristotle's criticism of that theory. Fine thinks she can interpret the arguments in a way that is rooted firmly in the Platonic texts and that makes them philosophically interesting. She thinks that she can show that Aristotle's criticism are powerful and subtle and fair. She also thinks that Plato is not without resources to respond to these arguments whether by rejecting certain of their implicit premises or by altering the theory of forms in defensible ways. According to Fine, such responses by Plato would by no means signal the end of the debate. For an Aristotelian rejoinder would reveal fundamental differences in matters of principle between the two protagonists. In short, Fine's book is a sustained argument for the thesis that On Ideas is a work that pays rich dividends to anyone willing to devote serious and unprejudiced attention to it.

Fine prints Harlfinger's text of the fragments of On Ideas contained in Alexander's commentary along with a literal translation. In four foundational chapters she discusses a wide ranging number of issues relevant to a close study of On Ideas. These include the philosophical issue of the theory of forms as a theory of universals, the development of a mature theory of forms in the middle dialogues from its earlier stage as a Socratic theory, Aristotle's criticisms of Plato's theory in his other works, and the authenticity and purpose of the On Ideas itself. In general, these chapters are models of clarity and mature reflection. Those who are familiar with Fine's many articles on the metaphysics of Plato and Aristotle will find in these chapters a concise and forceful statement of her views on these matters. Particularly helpful is her sustained and nuanced argument against the interpretation of the theory of forms as primarily a semantical theory (24, 50). These chapters also contain a careful discussion of how Plato argues for the existence of forms in the middle dialogues, though here I would take issue with Fine on several important details. Fine is right and importantly so when she claims that forms are explanatory entities. But it seems to me a mistake to describe a form as a 'determinable property' (62), for she thus undermines the priority and hence the explanatory role of the forms. A paradigm as such cannot be a determinable. I think it is also a mistake to hold that Plato and Socrates believe that the sensible world is knowable or that through knowledge of forms one can thereby have knowledge of sensibles (59, 64). Such a claim might make Plato's theory of forms more palatable to contemporary philosophers, but it does not I think accurately represent Plato's true view.

The heart of this book is a detailed analysis of the five arguments for forms developed in the On Ideas and Aristotle's reasons for rejecting these. Fine has a most elegant hypothesis for understanding the strategy behind these five arguments that are apparently only loosely connected (201-2). Platonists have two types of arguments for forms: the less accurate and the more accurate. The former (the so-called 'one over many argument', the object of thought argument, and the argument from the sciences) are invalid because their conclusion does not follow from their premises. But they would be valid (and sound) if instead of concluding that forms exist, they concluded that Aristotelian universals exist. The latter (the argument from relatives and the accurate version of the 'one over many' argument) are valid arguments for forms but they cannot be sound because they have intolerable consequences. That is, one leads to positing forms that the Platonists themselves do not want and one leads to a vicious infinite regress.

One might question whether when Aristotle speaks of a 'more accurate' (akribesteron) argument he just means 'valid' argument. But perhaps this is part of what he means. And in any case, Fine's way of understanding Aristotle's strategy is fruitful and provocative. It opens up three lines of argument for Plato in reply: (1) show that in fact the invalid arguments are valid arguments for forms if additional premises are added or premises differently construed; (2) show how the unwanted forms can be otherwise excluded non-arbitrarily; (3) show how the vicious infinite regress can be avoided without compromising other claims that comprise the theory of forms. Fine spends a good deal more time on (2) and (3) than on (1). In particular, she has left unexplored many things that could be said about Plato's reasons for separating of forms, which is of course the crux of the dispute between the Platonists and the Aristotelians.

The separation or independent existence of forms is for Plato logically connected to the imperfection of the sensible world. He holds that a recognition of this imperfection commits one to separation, roughly as a recognition of counterfeit currency commits one to the existence of the real thing. If the form is perfectly that which its instances are imperfectly, must we hold that, say, the form of beauty is beautiful, the form of largeness is large, and the form of man is a man? Fine recognizes the absurdity of one obvious interpretation of this claim. For example, just how large are we to suppose the form of largeness is? And if the form of man is a man, is it male or female? But Fine is nevertheless convinced that Plato is committed to self-predication in some sense. Her interpretation is that to say that a form F is f means that the form explains why anything else is f. The form is f 'in a sui generis way, simply in virtue of its explanatory role (62)'. Evidently, Fine understands this claim in a way such that it is distinct from another traditional interpretation according to which the form is identitatively that which its participants are predicatively (cf. 272, n75). I do not see, though, how the form explains anything if it is not identitatively that which its name names. What Fine calls 'broad self-predication' seems therefore rather unhelpful as an interpretation. This question is of considerable importance for understanding how if at all Plato can reply to the arguments which Aristotle says lead to a vicious infinite regress.

The close logical connection of self-predication, separation, and the imperfection of the sensible world means that the interpretation of one of these facets of the theory of forms will cause some readjustment in the interpretation of the others. This is especially true for someone with Fine's considerable logical acumen. Those who, like myself, are not convinced by her interpretation of self-predication, will, not surprisingly, have further doubts regarding at least the details of her interpretation of the other facets of the theory. Nevertheless, her book is an excellent contribution to the subject. It deserves the most careful attention of anyone interested in Plato's metaphysics. It is also a splendid example of how analytic philosophy and the history of philosophy can be mutually enriching.

Carlo Pescio said...

Thanks for the references! I didn't know the work from Bonito Oliva, and although (for reasons I'll cover briefly) is quite far from the concept of form in Alexander's work, it seems quite interesting, although leaning on the metaphysical side.

Your second comment (I guess it's safe to assume the 3 comments are from the same person :-) contains several interesting cues, like changing focus from the work as a whole to the relations between parts. As you probably know (as you seem very well versed in the subject) the relationship between mathematics, music, geometrical symmetry and the human brain has also been widely explored by Douglas R Hofstadter in "Gödel Escher Bach : An Eternal Golden Braid" (which unfortunately I've found a little boring :-).

Plato's theory of form, instead, shares little more than name with Alexander's concept of form. Roughly speaking, Plato's concept of form is all about generalization and abstraction, and as many have observed, once you remove most of the metaphysical babbling :-)) it's very close to the concept of Class in OOP.

Alexander's notion of form is instead a very practical concept, firmly rooted in the real world and in the role of the designer as a problem solver. This is why I believe it is relevant as we try to understand what we do while we design software.

I'll delve deeper into this in a future post, but here is a significant excerpt which should add some perspective (page 18-19):

the form is the part of the world over which we have control, and which we decide to shape while leaving the rest of the world as it is. The context is that part of the world which puts demands on the form [...]. Fitness is a relation of mutual acceptability between these two.[...] We want to put the context and the form into [...] frictionless coexistence.

I guess it's better to introduce the concept of forcefield first, however, and its relationship with functional and nonfunctional requirements, as we usually call them in software engineering. See you guys soon :-).

Unknown said...

Sull'ultimo numero del JOT (Journal of Object Technology) è stato pubblicato un articolo di John McGregor, intitolato Form over Substance, che discute la relazione tra forma e sostanza, in relazione al design architetturale e al ruolo del planning nei processi di sviluppo del software.

McGregor, che scrive regolarmente sulla rubrica "Strategic Software Engineering" del JOT, fornisce alcuni spunti interessanti, mescolati ad altri di cristallina ovvietà :), come l'affermazione che "in a rush to meet deadlines substance often is sacrificed. It is sacrificed because it is what takes the time, but it is after all where the value lies."

Tra le cose forse più interessanti, mi sembra sia degna di rilievo la contrapposizione tra gli aspetti tattici e strategici nel design del software:
"Form is tactical, substance is strategic. Substance is often invisible and difficult to measure. Form is visible."
Il discorso meriterebbe probabilmente di essere approfondito.

Complementare al tema del refactoring (cambiamenti alla forma, ma non alla funzionalità), McGregor evidenzia lo stesso concetto espresso da Carlo (la stabilità dell'architettura) anche a fronte di requisiti che cambiano. L'autore critica in parte l'atteggiamento reattivo che impone all'architettura di adeguarsi alle singole nuove funzionalità, invitando invece i designer ad assumere un atteggiamento più proattivo. Viene quindi suggerito l'approccio "a product-line" come una possibile soluzione:
"In a strategic design process the form of the product is derived systematically from the functional and non-functional requirements.
[...]
The act of creating the architecture is probably the best requirements verification tool there is.
[...]
The software product line environment actually facilitates this approach. By building an architecture that spans the range of systems in the product line, the architecture will be more flexible. This is one case in which form shouldn’t follow function any more than necessary.

Per quanto riguarda la pianificazione, McGregor evidenzia come il planning sia un'attività essenziale, molto più dello scrivere i documenti di pianificazione, in accordo probabilmente con gli approcci agili, indicando come attività essenziali il ragionare su alternative di design e constraint.

Insomma nessuna ricetta magica, ma qualche riflessione che forse può interessare.

Ciao,
Andrea

Carlo Pescio said...

Andrea,
quando ho visto (qualche tempo fa) il titolo dell'articolo, ho letto subito con interesse, sia per la relazione apparente con il tema che discutero' nel tempo, sia perche' McGregor ha scritto molte cose interessanti.

(tra parentesi: JOT e' una rivista interessante, gratuita, che riceve molto materiale che un tempo sarebbe apparso su JOOP; vale la pena farci un salto e [a mio avviso] iscriversi alla mailing list che avvisa quando esce un nuovo numero e riporta i titoli degli articoli).

Purtroppo quell'articolo specifico a mio avviso e' nato male, perche' l'autore usa il termine form con due significati molto diversi:
- nel 90% dell'articolo lo utilizza al posto di "formality/cerimony" o di "appearance". Quando parla di fare un "forms party" per ISO 9000, ecc, il significato e' questo.
- in alcuni punti (ad esempio piu' volte nel paragrafo Form Follows Function) usa il termine form in un modo simile a quello che intendo io con "forma" del software (ad. es. il fatto che abbia una "forma" SOA o meno). Pero' anche qui non parla della visione opposta, ovvero "Function Follows Form", e soprattutto dell'interplay tra le due.

In sostanza, se rivedi quanto ho citato sopra per la definizione di Form data da Alexander, noterai che la sua (e mia :-) Form e' fatta di Substance. E' sbagliato confondere Function e Substance da un lato, e Form e Formality (o Appearance) dall'altro.

Insomma, a mio avviso se avesse scritto un articolo Substance Vs Appearance, togliendo la parte su Function perche' il fatto che sia SOA o meno e' substance e non formality, sarebbe stato molto meglio, il che non fa che confermare la mia impressione che il concetto di Forma sia molto piu' complicato ed elusivo di quanto... appare :-).

Unknown said...

Carlo,
leggendo la tua risposta devo allora ammettere di essere incappato anch'io nello stesso errore di McGregor (e forse decisamente più di una volta). Sembra fin troppo semplice paragonare la forma all'aspetto estetico del software, e la sostanza all'informazione convogliata attraverso la forma (non solo funzionalità, comunque). Nonostante possa intuire che la forma sia in qualche modo anche sostanza, non riesco a formalizzare :) bene la cosa. Premetto però che non ho letto il lavoro di Alexander che citi (rimedio subito! :).

Vediamo se riesco a fare un esempio che mi aiuta a capire meglio. Consideriamo un pattern architetturale (nel senso di Alexander) come l'entrata di un'abitazione. Indipendentemente dalla sua forma specifica, un'entrata avrà delle caratteristiche strutturali tipiche, come uno spazio di transizione dal suolo pubblico (la strada) ad uno spazio privato (l'interno della casa). Forse avrà un garage nel caso l'ingresso avvenga mediante l'auto. Potrebbe esserci inoltre un porticato, che accoglie, ripara, conduce all'interno della casa. Tuttavia, la stessa forma (la presenza di un passaggio parzialmente coperto, il porticato, che raccorda l'entrata alla casa) suggerisce diverse cose: la necessità/utilità di riparare le persone in caso di pioggia mentre stanno per entrare in casa. Un segnale "psicologico" che dia la sensazione di "arrivo" in uno spazio più intimo e privato.

Questa descrizione che ho appena fatto è ancora forma oppure è sostanza? A me sembra un po' e un po', ma non riesco a distinguere bene la linea di demarcazione.

Facciamo un altro esempio, questa volta legato al mondo del software, ossia i modelli UML. I modelli hanno una loro utilità e un loro significato che deriva dal modo in cui sono costruiti, oltre che dal loro mero contenuto informativo. Possiamo ad esempio usare la sintassi UML in molti modi diversi e creativi, pur continuando a soddisfare le regole del linguaggio. Prendiamo ora un modello che descrive il pattern Bridge. Come separi la forma dalla sostanza? E quale sostanza c'è nella forma? E ancora, la presenza di due gerarchie (astrazione ed implementazione) legate tra loro da un'aggregazione con opportune cardinalità è forma o apparenza?

Hmmm, mi sento tanto scemo a fare queste domande e spero di non aver fatto più confusione di prima con questi esempi :(
L'argomento tuttavia non mi sembra solo filosofico, per cui credo sia importante un tentativo di esemplificare, specialmente laddove possono sorgere ambiguità o interpretazioni diverse.

Ciao,
Andrea

Carlo Pescio said...

Andrea,
l'argomento come hai ben capito e' molto piu' complesso di quanto possa sembrare a prima vista, ed e' per questo che lo vorrei affrontare per gradi e da angolazioni diverse, nel corso del tempo.

La prima dicotomia da eliminare e' proprio forma-sostanza, che e' troppo fuorviante. Per certi versi avrei preferito che storicamente si fosse utilizzato il termine Shape anziche Form, che ha connotazioni meno ambigue. Ma tant'e'.

Quando pensiamo agli oggetti fisici, la forma e la funzione (non uso il termine sostanza perche' non si capisce cosa voglia dire; ci torno sopra tra poco, comunque) sono di fatto inscindibili. Anche se McGregor cita "form follows function", di fatto non e' stato cosi' in origine. Nell'approccio inconscio la funzione segue la forma. Il primitivo si ripara in una grotta perche' la forma della grotta gli suggerisce la funzione. Non costruisce una grotta perche' desidera la funzione del riparo. Alexander aveva correttamente intuito che non c'e' alcuna distinzione tra requisiti funzionali e non funzionali a livello di rilevanza, ed il suo concetto di forma serve ad armonizzare tutti i requisiti (ci torno nel mio prossimo post sul campo di forze).

Nel software le cose sono piu' complesse. Intanto andrebbe definito il concetto di forma, cosa che vorrei fare tra un po'. Ma va sicuramente distinta la forma del software (es. uso un sistema decomposto funzionalmente, che ha una certa forma, piuttosto che uno OO basato su callback, che ha una forma diversa) dalla forma che diamo alle sue rappresentazioni (es. il diagramma uml). Va anche osservato come la forma sia essenziale per gestire al meglio i requisiti non funzionali. Ad es., noi mettiamo un punto di estendibilita' (che cambia la forma, che io la modelli o meno) per gestire meglio alcuni problemi futuri. Se i requisiti non funzionali non sono considerati rilevanti, l'attenzione alla forma svanisce (e magari si spera nella famosa "struttura emergente").

Ti faccio io qualche esempio di formality o appearance. Fare per forza un sequence diagram perche' abbiamo letto su un libro : ) che dobbiamo modellare la dinamica e' formality, se non aggiunge comprensione al modello statico.
Programmare in Java pensando in Cobol, e quindi facendo tutte classi con solo metodi statici, e' appearance, non substance.

Sui modelli uml la questione e' piu' sottile, perche' il modello non e' il software. Alcune questioni, anche importanti, che riguardano la capacita' espressiva del modello (layout e colori, per fare un esempio a noi familiare) sono soltanto relative al modello, non alla forma del software sottostante. Da qui nascono alcuni dei dubbi che ti ponevi.

Non pretendo di esaurire tutto in questa risposta (anche perche' alcune argomentazioni sono di interesse piu' ampio e preferisco che siano in inglese), ma vedrai che nel tempo provero' a chiarire molti aspetti. Anzi, ti ringrazio per i problemi molto specifici che hai sollevato, ti assicuro che l'argomento e' complicato in se', nessuna domanda e' una domanda scema...

Joshua E. Bourne said...
This comment has been removed by a blog administrator.