Definitions should never turn into war of words as they should only be judged on their purpose and utility, with such assessment best achieved by comparing and adjusting the meaning of neighboring concepts with regard to tasks at hand.
That approach can be applied to the terms “analysis” and “design” as used in systems engineering.
What: Logic & Engineering
Whatever the idiosyncrasies and fuzziness of business concerns and contexts, at the end of the day business and functional requirements of supporting systems will have to be coerced into the uncompromising logic of computers. Assuming that analysis and design are set along that path, they could be characterized accordingly.
As a matter of fact, a fact all too often ignored, a formal basis can be used to distinguish between analysis and design models, the former for the consolidation of requirements across business domains and enterprise organization, the latter for systems and software designs:
- Business analysis models are descriptive (aka extensional); they try to put actual objects, events, and processes into categories.
- System engineering models are prescriptive (aka intensional); they define what is expected of systems components and how to develop them.
As a confirmation of its validity, that classification along the logic basis of models can be neatly crossed with engineering concerns:
- Applications: engineering deals with the realization of business needs expressed as use cases or users’ stories. Engineering units are self-contained with specific life-spans, and may consequently be developed on a continuous basis.
- Architectures: engineering deals with supporting assets at enterprise level. Engineering units are associated with shared functionalities without specific life-spans, with their development subject to some phasing constraints.
That taxonomy can be used to square the understanding of analysis, designs, and architectures.
Where: Business unit or Corporate
Reversing the perspective from content to context, the formal basis of analysis and design can also be crossed with their organizational framework:
- Analysis is to be carried out locally within business units.
- Designs are to be set both locally for applications, and at enterprise level for architectures.
Organizational dependencies will determine the roles, responsibilities, and time-frames associated with analysis and design.
Who: Analysts, Architects, Engineers
Contents and contexts are to determine the skills and responsibility for stakeholders, architects, analysts and engineers. On that account:
- Analysis should be the shared responsibility of business and system analysts.
- Designs would be solely under the authority of architects and engineers.
The possibility for agents to collaborate and share responsibility will determine the time-frames of analysis and design .
When: Continuous or Discrete
As far as project management is concerned, time is the crux of the matter: paraphrasing Einstein, the only reason for processes [time] is so that everything doesn’t happen at once. Hence the importance of characterizing analysis and design according to the nature of their time-scale:
- At application level analysis and design can be carried out iteratively along a continuously time-scale.
- At enterprise level the analysis of business objectives and the design of architectures will require milestones set along discrete time-scales.
The combination of organizational and timing constraints will determine analysis and design modus operandi.
How: Agile or Phased
Finally, the distinction between analysis and design will depend on the software engineering MO, as epitomized by the agile vs phased debate:
- The agile development model combines analysis, design, and development into a single activity carried out iteratively. It is arguably the option of choice providing the two conditions about shared ownership and continuous delivery can be met.
- Phased development models may rely on different arrangements but most will include a distinction between requirements analysis and software design.
That makes for an obvious conclusion: whether analysis and design are phased or carried out collaboratively, understanding their purpose and nature is a key success factor for systems and software engineering.
PS: Darwin vs Turing
As pointed out by Daniel Dennett (“From Bacteria to Bach, and Back“), the meaning of analysis and design can be neatly rooted in the theoretical foundations of evolution and computer science.
Darwin built his model of Natural Selection bottom up from the analysis of actual live beings. Roundly refuting the hypothesis of some “intelligent designer”, Darwin’s work epitomizes how ontologies built from observations (aka analysis models) can account for the origin, structure and behaviors of individuals.
Conversely, Turing’s thesis of computation is built top-down from established formal principles to software artifacts. In that case prior logical ontologies are applied to design models meant to realize intended capabilities.
- The Finger & the Moon: Fiddling with Definitions
- Reflections for the Perplexed
- Models, Architectures, Perspectives (MAPs)
- Abstractions & Emerging Architectures
- Enterprise Systems & the OS Kernel Paradigm
- Inducing Functional Patterns from Design ones: a look in rear view mirror
- Projects Have to Liaise
- EA: Maps & Territories
- New Year: Regrets or Expectations ?