150 likes | 173 Views
On a “Buzzword” Hierarchical Structure. D. L. Parnas. “Hierarchical” as a Buzzword. The term “hierarchical” has been used in many different ways to describe the design of operating systems “Hierarchically” structured systems have a good connotation
E N D
On a “Buzzword” Hierarchical Structure D. L. Parnas
“Hierarchical” as a Buzzword • The term “hierarchical” has been used in many different ways to describe the design of operating systems • “Hierarchically” structured systems have a good connotation • Researchers consistently overload this term, using “hierarchical” in many different ways • Parnas argues that this term has been used in ways that have different meanings
Paper Objectives • Clearly define what is meant by a hierarchically structured system • Examine 3 operating system examples where this term was used, and provide better definitions • T.H.E • MULTICS • RC4000
Paper Objectives – Actually… • Parnas wrote this paper not only to point out the ambiguity in the term “hierarchically structured”, but also to point out that we should not use buzzwords in an engineering context • Consider “High Level” also… • Parnas is making a point!
Hierarchically Structured • Level i is the set of partssuch that: • There exists a on leveli-1 such that R(, ) • If R(,) then is on leveli-1 or lower • Level 0 is the set of suchgiven that there are no such that R(, ) A B C Formal D E F • Level i is the set of partssuch that: • All nodes have at least 1parent. • The graph has no cycles • Level 0 is a root in the hierarchy. To have a hierarchy youneed to define appropriateconstraints on a relation… Informal
What does “Hierarchically Structured” Mean? • Any program can be hierarchically structured • Everything is a single part • Easy to arbitrarily divide a program such that the “parts” are hierarchically structured • If the “parts” are not hierarchically structured, just redefine the “parts” • Thus, by itself the formal definition of a hierarchy carries no meaning at all when used in a software engineering context
How and When to use Hierarchies… • You need to define “which” hierarchy and clearly specify the “relation” used to define the hierarchy • You then need to validate that the “relation” used as a constraint actually forms a hierarchy • You need to validate that the hierarchical constraint provides some value – don’t make it an unnecessary constraint
Hierarchies 101 • Hierarchies are based on mathematical formalism • Hierarchies make things easier for humans (divide and conquer) • Hierarchies have the connotation of being a “good thing”, so we strive to use them wherever possible • However, sometimes we say we have a hierarchy when we don’t, and sometimes forcing a hierarchy introduces unnecessary and unwanted constraints
Some Hierarchical Relations – “Maybe” • “uses” (Program Hierarchy) • A calling program should be able to ignore the internal workings of a called program • The called program should not make any assumptions about the internal structure of the calling program • “gives work to” (Resource Allocation) • A process can assign part of a workload to another process in the system
Some Hierarchical Relations – “Maybe” • “Part Of” (Program Structure) • Small modules recursively grouped into larger modules (subsystems) • Helpful for human comprehension • Need criteria for establishing this hierarchy, will be hard to do based on the program call structure • Sometimes the criteria is heuristic based • Software Architecture Example: High coupling, low cohesion…
Some Hierarchical Relations – “Maybe” • “can be accessed by” (visibility / security) • Adding layers of indirection – good for security • Core data at the center ring, protected by functions and interfaces • Each subsequent layer has data that it manages, but must call down to a lower level to work with more “sensitive” data • Forcing a hierarchy here may not be good, the “can be accessed by” relation has value in one direction but not the other… • Why can’t an inner ring use the services of an outer ring?
Some Hierarchical Relations – “Maybe” • Top-Down Design • Start with the user visible features of the system • “drill down” in verifiable steps to refine and implement these features • Is Top-Down design really possible? • Is it a hierarchy? • Is the design of a system hierarchical? Can’t clearly define a relation for this one – might be trouble here…
Another Buzzword – “High Level” • Example – High-Level Language • What is the relation for this example? • “has fancier syntax” • “has stronger typing” • … • Need a definition for “high level”, although it is used in practice often.
Summary: Hierarchy as a Buzzword • This paper is not about hierarchies, its about how buzzwords are used in research • This is just an example • Other example provided is “high level” • Buzzwords are dangerous because they convey no meaning at all, however authors who use buzzwords are trying to imply something…