Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design
Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design
Reliable software through composite design
Reliable software through composite design
Programming storage-centric sensor networks with Squirrel
Proceedings of the 9th ACM/IEEE International Conference on Information Processing in Sensor Networks
Engineering parallel applications with tunable architectures
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
A design perspective on modularity
Proceedings of the tenth international conference on Aspect-oriented software development
Assessing architectural evolution: a case study
Empirical Software Engineering
Identifying extract-method refactoring candidates automatically
Proceedings of the Fifth Workshop on Refactoring Tools
On the automated modularisation of java programs using service locators
SC'12 Proceedings of the 11th international conference on Software Composition
On the role of composition code properties on evolving programs
Proceedings of the ACM-IEEE international symposium on Empirical software engineering and measurement
On the existence of high-impact refactoring opportunities in programs
ACSC '12 Proceedings of the Thirty-fifth Australasian Computer Science Conference - Volume 122
Scalable motif detection and aggregation
ADC '12 Proceedings of the Twenty-Third Australasian Database Conference - Volume 124
Hi-index | 0.00 |
A number of papers were published throughout the 1960s and early 1970s on program design, most commonly with titles incorporating the phrase "modular design," or "modular programming." But Stevens, Myers, and Constantine were the first to use the term "structured design." Their paper, published in 1974, became the precursor of a number of books on the subject. The "Structured Design" paper does a good job of introducing the concepts of coupling, cohesion, design heuristics (span of control, scope of effect/scope of control, among others), and the graphic notations of structure charts. At the basic conceptual level, the ideas first presented in this paper have not changed in the ensuing publication of textbooks. Indeed, the primary justification for massive textbooks on structured design seems to be the need for examples and case studies. Even though the following paper is twenty-five pages long, it has few examples to illustrate concepts that, when first presented, are often completely alien to the average data processing professional. The basic concepts and terms set forth in the paper remain valid although some changes or refinements have evolved since the paper's publication in IBM Systems Journal. t Myers adds such terms as "classical" cohesiveness, and "informational" cohesiveness; and Yourdon/Constantine add "procedural" cohesiveness to the original list of six that are presented in the paper. On a practical level, it has become evident that the test for functional cohesiveness proposed in this paper (and later repeated in the various textbooks) is fraught with danger: It is altogether too easy for a designer to describe one of his modules in such a way that a bad module sounds good, or a good module sounds bad. By using the concepts of cohesiveness and coupling together, this difficulty usually can be overcome. The designer uses cohesiveness as a guiding principle when creating modules in the first place, and he uses the guidelines proposed in this paper to evaluate the cohesiveness of his modules - up to the point where the issue becomes clouded by semantics. Then he switches to an evaluation of his design based on coupling: If the design shows evidence of strong coupling, then the cohesiveness of the modules was probably low, regardless of the eloquent module description the designer may have used to convince himself (and others) that it was functionally cohesive. Unfortunately, that important relationship between cohesion and coupling is virtually ignored in this paper. The other major weakness in the paper is its overly sketchy description of a design methodology variously referred to as "transform analysis," "source-transform-sink analysis," and "dataflow analysis." The paper introduces the concept of dataflow diagrams, but does not elaborate upon them, or give the designer any guidelines for drawing good ones. And the example used to show the transformation of a dataflow diagram into a hierarchy of modules (expressed as a HIPO diagram or a structure chart) is so trivial as to be meaningless to the average reader. It was not until a year after this paper was published that textbooks began providing sufficient detail to fill in some of these gaps; and it was not until two years later that the emerging technology of structured analysis added a crucial element to the dataflow analysis concept --- namely, that the dataflow diagram could be developed by the user and the systems analyst as part of the requirements definition phase of a project. Yet even with these shortcomings, "Structured Design" remains an important paper --- given further credibility by its publication in IBM Systems Journal If you've never been exposed to structured design, hopefully the paper will whet your appetite; or if you've read some of the more recent texts, you should find it interesting to see the kind of progress that has been made since 1974.