Add a comment

 

Architecture is lacking/degenerate in software

I appreciate the last comment about the responsibilities that come with a real Architect title, because it sheds light on some gaping holes in the software industry as a profession, and the backwards view of architecture that is found in software: "Architects are responsible for the health, safety and welfare of real people ... Every building you enter has an Architect that is responsible for the life safety of every single occupant of that building for the rest of the Architect's life". On the other hand the software industry cannot answer to society for it's own product! A business defers to their developers to be the experts of the software, but even among developers, it's accepted as a given that code is just not understandable on the whole. We do ad hoc changes, thinking we don't have to understand every piece that is touched (after all, how can you?), do code reviews going "well, I can't prove your design, but I don't see any immediately obvious issues", and then rely on TESTING to say it's correct. That doesn't fly in any other "profession"! Software's backwards view of architecture is that it's just about frameworks, mechanisms, etc. that have nothing to do with human models. It's firmly established that the workings/shape/design of the code can NOT be understood in terms of human/user models, and in fact such are viewed as naive and lesser to the "programmers mental model". But you sell the patterns in your code, or the benefits it brings to the developers, you sell the ability for the USER to submit a payment or book a flight! I might understand individual slices of the code very well, and grasp the "architectural" layout; but if it's not clear what it's all DOING, then the product (and therefore the code) is NOT clear and lacks real design! It may be "extensible" or "maintainable", etc, but what is being extended or maintained? The developer having a good time, or the human centered aspects that make out valuable at all? Architecture is about PEOPLE; fitting structure of the thing to the needs of its INHABITANTS/USERS. Christopher Alexander (who brought real architecture ideas into software to begin with) talks about seeking a design which will, in some rather obvious or simple way, reveal/make clear the pattern of events (of the INHABITANTS) that occur there. However, contemporary software pushes that off to the side as something that week just "emerge" from different parts, rather than designing it explicitly into the code. Even the concept of "patterns" (which also came from architecture) are degenerate. Architectural patterns solve problems for the INHABITANTS, not the construction workers. Example: lighting on both sides of a room, accommodating lots of traffic without interfering with other needs, opening the for around stairs so you can see between floors, etc. The design should be toward (and make clear) the human events/needs, and THEN you find a way to do so that is structurally sound, etc. Architecture is not the structure, it's the things that go on in it (a place to meet, to travel, to eat, etc.), and then the physical structure makes this clear. "Software architecture" has this all turned on its head though, because there is nothing tying the code to the use cases; we've been taught that if all the individual pieces just "do the right thing", then the system (which is the thing we're after) will just emerge from it. And then we concern ourselves with solving the problems of fitting those pieces together, and fixing the stuff that emerges from it (because you can't reason about out directly, it's not fully predictable, and there is NO proving that the design is sound). The software industry needs to get up to par with other "professions" and be able to reason about their own stuff in the terms that matter, and be answerable to society for it. What a SHAME it is for this situation to ever have been acceptable, especially in a works that now runs on software, and which had now learned to EXPECT poor experience and things breaking down all the time This would never fly at large in the built world, and I understand the insult may be to some when they see the "Architect" label applied in software. There is indeed a lot of lack of ownership/responsibility over what has been coded over time.

Architecture is lacking/degenerate in software


Title
Body
HTML : b, strong, i, em, blockquote, br, p, pre, a href="", ul, ol, li, sub, sup
Name
E-mail address
Website
Remember me Yes  No 

E-mail addresses are not publicly displayed, so please only leave your e-mail address if you would like to be notified when new comments are added to this blog entry (you can opt-out later).