Introduction
There are a number of "What Is ..." pages on this Wiki, each concerned with the definition of a term that corresponds to some principle of software development. These terms are sometimes problematic because of the rate of semantic change that resulted from their application in an area in which rapid change is not only the norm but also the key to survival. But things can change too fast sometimes, leading to fragmentation of concepts and poor communication. the "What Is ..." movement here is a healthy thing, both literally and figuratively. It's good for us to know what each other means, and that can result only from a certain degree of literal health or wholeness among terminology and its application.
As older, borrowed meanings and their terms drift to new stations in our lingo, it requires effort to stay coordinated. But even with effort, sometimes a term reaches multiple semantic attractors so that practitioners are unwilling to ditch their preferred interpretations in favor of someone else's, even if the reward is better communication. When negotiations about current meaning come to a halt, one reflex is to reflect. "How did we get here?" In other words, scan the history of semantic evolution, and then see if we can identify a preferred path from past to present, perhaps selecting certain branches over others based on more of an architectural view of the process.
That's where this page figures in. Sometimes, if you investigate older (even ancient) meanings of the terms you use today, and if you hold some of those meanings in your mind simultaneously with the meanings of modern application, you get a pleasant kind of synergy where past and present fuse into something transcendent - deeper insights into the way humans think and build and carry on. This can result in reduction and simpler understandings, the value of which should be obvious for our field.
The WhatIsAnalysis page really touched me (before I touched it, that is). For one thing, it reminded me of the day I asked John Palmer, during a survey of object orientation approaches, whether "analysis" in the popular lifecycle models means the state in which requirements are wrought. The answer was not yes, but it was also not no, and it left my internal model broken for a while. But it also made me realize the sloppiness with which we use such terms and the fuzzball of communication that results from that. More importantly, it suggested that these terms are not defined for us with any authority.
On WhatIsAnalysis, I tried following the lead of Bob Haugen in suggesting that the etymology of the word could provide valuable and practical information, but was countered with the advice that when people ask that question, they are asking for a survey (perhaps even an average) of current interpretations. In other words, a description of normative modern application, not a prescription for more correct or more effective interpretation. So be it. The present page begins where WhatIsAnalysis and similar pages leave off. It's for those who are interested in history and a degree of depth. Borrowing from WhatIsAnalysis, it's very much about analysis, especially in the sense of "getting to roots". It's for people who like roots.
Etymologies of Software Terms
The purpose of this page is to give us a historical perspective on the terms used to describe what we do. Other pages here are dedicated to common and current usage of these terms. I'd appreciate your respect in keeping the theme pure here.
Will undoubtedly add more in due time. Suggestions welcome, gentle comments, and what-have-you.
The terms Architect and Design are both defined, with neither making reference to the other. I've always wondered, what is the distinction people make between these terms? To me, they carry the same meaning.
Sometimes they're used interchangeably; other times, there's a distinction, in which case it's a question of scope. An architect has complete responsibility for a system or large subsystem, including ensuring that relevant requirements have been adequately gathered and met, while a designer might not be responsible for missing or wrong requirements, only for creating a design that meets certain requirements.
It's somewhat like the question, 'what's the difference between a first level manager, a third level manager, a director, etc?' In a tiny company or department, there might be no difference at all, while in a Fortune 100 company, there might be a rather large difference in the scope of responsibility at each level.
To put it another way, if someone's title is "architect", that typically implies "the buck stops here", whereas that may or may not be true of the title "designer".
Comments, Suggestions, Discussion