Kevlin Henney

Kevlin Henney
Association for Computing Machinery

BSc (Physics), MSc (Parallel Computer Systems)

About

40
Publications
33,473
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
692
Citations

Publications

Publications (40)
Article
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.
Article
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...
Article
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.
Article
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...
Article
Full-text available
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...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
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...
Conference Paper
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...
Article
Full-text available
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...
Article
Full-text available
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...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
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...
Conference Paper
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...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
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...
Conference Paper
Full-text available
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...
Article
Full-text available
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...
Conference Paper
Full-text available
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...
Article
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...
Article
Full-text available
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...
Article
Full-text available
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...
Article
Vyd. 1. Přeloženo z angličtiny Obsahuje rejstřík

Network

Cited By