About
40
Publications
42,480
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
733
Citations
Introduction
Current institution
Publications
Publications (40)
Sumita found him in the corner, away from the bar, laptop screen reflected in his glasses, papers paved across the table around a drained wine glass and a long-forgotten coffee.
Does agile development need architecture? Does architecture need agile development? These two questions are debated time and again, frequently with great passion but quite often more polarized than open minded. In this edition of the column, the authors try to offer a more evenhanded perspective on this debate. Instead of posing and discussing cult...
What are the top five properties that make a software design elegant? In this column we follow on from the previous column, exploring the remaining two properties: symmetry and emergence. Symmetry offers a form of simplification through regularity. Emergence allows complex behaviors to be governed by simple rules.
Many software architectures suffer from unnecessary, accidental complexity: arbitrary flexibility for its own sake, unnecessary features, design choices whose complexity is out of proportion for the problems and requirements at hand, or a focus on reusability rather than usability.The XDD family of approaches- in particular, test-driven, responsibi...
For more than a decade, patterns have influenced how software architects and developers create computing systems. Design-focused patterns provide a vocabulary for expressing architectural visions and clear, concise representative designs and detailed implementations. Presenting software pieces in terms of their constituent patterns also lets develo...
The focus group sought to explore the use of specific metaphors in software development as well as the general benefits or liabilities of using metaphor, and the properties of a successful metaphor. The focus group participants split into two groups to brainstorm different metaphors and look at their positive and negative entailments. The results w...
This paper presents a small pattern language, Context Encapsulation, for encapsulating execution context in statically typed languages. The designs that result from this language allow a component to be sufficiently decoupled from the code and assumptions in the environment in which it was written. The four patterns in the language are based on the...
Any ordinary panel member on an ordinary panel can sit up front and spout the same old stuff. The panelists for this event must be agile in the strictest sense of the word. Why? Because they will be asked to take a random position in response to questions from both the moderators and the audience. They must present their arguments in a timed two-mi...
The C++ Standard defines single-threaded program execution. Fun-damentally, multithreaded execution requires a much more refined mem-ory and execution model. C++ threading libraries are in the awkward sit-uation of specifying (implicitly or explicitly) an extended memory model for C++ in order to specify program execution. We propose integrating a...
The C++ Standard defines single-threaded program execution. Fun- damentally, multithreaded execution requires a much more refined mem- ory and execution model. C++ threading libraries are in the awkward sit- uation of specifying (implicitly or explicitly) an extended memory model for C++ in order to specify program execution. We propose integrating...
Nowadays we are apt to be conditioned to believe that value rests on quantity rather than quality, and so we take it for granted that large or obvious shapes matter more than small or subtle ones and that the total effect of a thing as a work of art depends on the gross shape of it — the sort of shape you can describe in a full-size drawing. We pay...
Change is often associated with risk, in particular the risk of failure or unwanted side effects. Whether such change is the move from one position on a rock face to another during a climb, or the progress of development through a software project, or the change of state within an object when it is being copied to, risk is ever present. In all case...
complementary (of two or more different things) combining in such a way as to form a complete whole or to enhance or emphasize each other's qualities. symmetry the quality of being made up of exactly similar parts facing each other or around an axis. É correct or pleasing proportion of the parts of a thing. É similarity of exact correspondence betw...
koyaanisqatsi /ko.yaa.nis.katsi/ (from the Hopi language), noun: 1. crazy life. 2. life in turmoil. 3. life disintegrating. 4. life out of balance. 5. a state of life that calls for another way of living. From the 1983 film of the same name, directed by Godfrey Reggio, soundtrack composed by Philip Glass This paper considers and combines some seemi...
Agile Methods are advocated as a way of producing better software. Advocates of agile methods suggest that practices such as keeping in close communication with your customers, frequent integration, and frequent assessment of project status will enable us to produce software that has value for the customer - quality software. It's hard to argue wit...
Substance doesn't change. Method contains no permanence. Substance relates to the form of the atom. Method relates to what the atom does. In technical composition a similar distinction exists between physical description and functional description. A complex assembly is best described first in terms of its substances: its subassemblies and parts. T...
The intent of a Null Object is to encapsulate the absence of an object by providing a substitutable alternative that offers suitable default do nothing behavior. In short, a design where "nothing will come of nothing".
Null Object is a tactical pattern that has been discovered time and again, and not only in object-oriented systems: null file devi...
Object-oriented systems represent their information and express their behavior through networks of objects. Some objects, such as value-based objects, are strictly owned, managed, and contained within the scope of functions or other objects. Other kinds of objects are more loosely associated, and do not necessarily participate in simple, hierarchic...
The Educational Testing Service has decided that the Advanced Placement Examination in Computer Science will use the C++ programming language in place of Pascal. They have designed a subset of the language to be used in high school courses. This paper claims that the subset is deficient in two areas: (a) the subset is vague on which language featur...
Sequential control flow forms the backbone of any procedural program. Just as common function, data, and structure in a C++ program can be factored out using functions, classes, and templates, common control flow schemas can also be named and abstracted. One such recurring schema, or programming cliché, is the embracing or bracketing of a sequence...
Functional programming, AI, patterns, OO, structured programming - they were promising, and yet they seem to have failed to deliver. Did we lose interest too soon? Is the best too good for our industry? Is there “a” best for our industry or is our endless search for the silver bullet driving us? Do we want the “best” to (again) be a popular goal? H...
A number of us (, and others) have been working on the semantics of multithreaded pro-grams in C++. We feel that many of the same issues apply to the C language, and that it is important to keep the solutions as similar as possible. Although we would like to concentrate our effort on one language at a time, we would like to be made aware of any C-s...
17 Given the chaos and low quality of the project as a whole, it is exceedingly unlikely that the illusory, lines-of-code produc-tivity boost that the dead code gives was intentional. Omitting a not, or including a surplus one, or using an or where an and was meant, or vice versa, are common examples of errors that take code down the wrong path. Un...
Vyd. 1. Přeloženo z angličtiny Obsahuje rejstřík