Thanks for clearing that up.

Pithy Wisdom from Gurus and Methodology Experts

Assembled by Conrad Weisert

"During the elaboration phase, as we have already noted, we build the architecture. We identify the use cases that have a significant impact on the architecture. We realize these use cases as collaborations. It is in this way that we identify most of the subsystems and interfaces—at least the ones that are architecturally interesting. Once most of the subsystems and interfaces are identified, we flesh them out, that is, write the code that implements them. Some of this work is done before we release the architectural baseline and it continues throughout all of the workflows."—Ivar Jacobson et al: The Unified Software Development Process, ISBN 0-201-57169-2, p. 102

" Each managed language decides how much of the CTS to support. Languages that can consume any CLS-compliant type are known as CLS consumers. Languages which can extend any existing CLS-compliant type are known as CLS extenders. Naturally, managed languages are free to support CTS features over and above the CLS and most do. As an example, the C# language is both a CLS Consumer and a CLS extender, and supports all of the important CTS featues"—Peter Drayton, et al: C# in a Nutshell, ISBN 0-596-00181-9, p. 10

"Whether an agile project ends with a greater degree of consistency in interface is entirely a function of engineering quality but it is at least the case that agile projects need not sacrifice consistency as long as the appropriate amount of planning was done, and in particular, a solid, universally-understood data or system model was defined as part of the initial implementation activity." Dr. Macro's XML Rants

"Focus on understanding or forming a notion of the problem to determine the requirements that the problem imposes on its solution . . . establishing and verifying the foundation for the overall solution (architectural design) and distributing the requirements among the iteration cycles of the construction development phase."—Si Alhir: UML in a Nutshell, ISBN 1-56592-448-7, p. 23

"The solution to this problem can be described in just a few words: design, decoupling, and layers. Instead of a common object model, the solution is a system with several subsystems (comprehending their own object models). These subsystems are typically distributed over several layers. Finally it is important to avoid static dependencies in the code. Instead of designing and implementing all possible relationships, the dynamic relationships between the individual objects should be created during runtime within the scope of a business process."—Nicolai M. Josuttis, quoted by Jutta Eckstein in Agile Software Development in the Large, ISBN 0-932633-57-9, p.136.
" Being an optimization technique used to efficiently utilize all of the available resources (usually computational, but sometimes other resources, like bandwidth) to improve the performance of an operation, approaches to parallelization generally aim to maximize the window of exclusive access to state (or, often, chunks of state) so as to minimize coordination overhead."—Emerick, Carper, & Grand: Clojure Programming, ISBN 978-1-449-39470-7, p.166.
"A static class can have static data members and methods. You get a compilation error if any nonstatic member is added to a static class. Also, a static class cannot be instantiated. A nonstatic class can have static as well as nonstatic members. A nonstatic class can be instantiated, but it cannot access static members via instance of the class. Remember that a static method can directly call only other static methods of its class, but it cannot directly call a nonstatic method of its class. Similarly a static method can directly access only other static data members of its class but not a nonstatic member of its class."—B. M. Harwani: Learning Object-Oriented Programming in C# 5.0, ISBN 978-1-285-85456-X, p. 229.

and from over a half century ago

" . . .The system itself is divided into several phases: A pseudo-editing procedure produces reconstructable records according to their canonical form; input source language statements are scanned for syntactical validity and retained for listing-image purposes, with parameter attributes appended and redundancies eliminated. Instructions other than macros are ordered by block count, a check is taken by hash total, and error correction routines are scheduled. . . "—Harold N. Pelta: "Selfcipher Programming", Communications of the ACM, February, 1960, p. 83." Editor's Note: Of course you realized that the preceding paper [excerpt at left] was a tongue-in-cheek parody of some of the extreme examples of overly-erudite technical articles. The author, a relative neophyte in the computer field, feels that it is not so much the excessive use of jargon (most of the terms are in fairly common use by computerniks) but the whimsically random stringing together of mutually incomprehensible phrases that gives this article its particular and hopefully unfamiliar flavor. . . . —R. W. Bemer, Techniques Editor. ©ACM (same page)

Avoiding indecent plumbing

"In a decent-sized application, the bulk of the development effort and debugging time is spent on addressing such plumbing issues, as opposed to focusing on business logic and features.
The first attempt at providing decent off-the shelf plumbing was MTS (Microsoft Transactions Server), released in 1996.
All of these application platforms provided adequate decent plumbing . . ."

—Juval Lövy, Programming WCF Services, ISBN 978-0-596-80548-7, p. 690

Return to IDI home page

Last modified 8 June 2015.