
James O Coplien- Ph.D, Doktorat
- Vrije Universiteit Brussel
James O Coplien
- Ph.D, Doktorat
- Vrije Universiteit Brussel
About
117
Publications
24,127
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
3,716
Citations
Introduction
Cope has broad research interests ranging from designed behaviours in ethnographic settings to the computational semantics of culturally shared mental models of automatable work. He is widely published in the areas of design theory, object-oriented design, social structure of software organizations, and social network theory.
Current institution
Additional affiliations
August 2002 - July 2004
Publications
Publications (117)
Source code comprehension affects software development — especially its maintenance — where code reading is one of the most time-consuming activities. A programming language, together with the programming paradigm it supports, is a strong factor that profoundly impacts how programmers comprehend code. We conducted a human-subject controlled experim...
Agile Software Architecture focuses on gaps in the requirements of applying architecture-centric approaches and principles of agile software development and demystifies the agile architecture paradox. Readers will learn how agile and architectural cultures can co-exist and support each other according to the context. Moreover, this book will also p...
アジャイル開発における組織の在り方の指針を網羅! 本書は、ソフトウェアを開発する上で「人間」とその「組織」に着目し、ソフトウェアを開発する際にどのような組織であるべきなのかを、実際の観察に基づいて書いている本です。同時に、広く使われるようになった「パターン」とは何かということについても起源に忠実な形で解説しています。主著者のJim Coplien はスクラムやアジャイルの世界でも最重要人物のひとりに位置づけられている人物です。その彼の根本的な主張は、「ソフトウェア開発では技術的な側面にとらわれず、人間的な側面に目を向けろ」というものであり、本書は建築業界でのバイブル的位置づけである「クリストファー・アレグザンダーのパターン」の思想を、ソフトウェア開発に昇華させ結実したものでもあります。
Tools emerge as the result of necessity - a job needs to be done, automated, and scaled. In the ""early days" - compilers, code management, bug tracking, and the like - resulted in mostly local home-grown tools - and when broadly successful - spawn (from either industry or university origins) independent tools companies - for example Klocwork from...
This is a design track overview tutorial that provides a foundation for exploring and applying the DCI (Data, Context and Interaction) paradigm. DCI is a means to supporting full object orientation that restores much of the original object vision that has been lost by class-based design and programming. DCI focuses on objects and their relationship...
Though it usually makes its appearance only as a footnote in the broader discourse of object design, reflection is a recurring and sometimes noisily divisive topic in object-orientation. Glimmers of reflection pervade even the darkest corners of the tapestry of object orientation’s history. In fact, the broader notion of code’s self-knowledge, such...
Computers were invented largely as mental aids. In inventing object-orientation, Alan Kay renewed that vision on a metaphorical level that no longer subordinated computers to human minds. Trygve Reenskaug tried to link the worlds of the human and the computer together with Model-View-Controller, but at the time he got only half the job done. Today...
Contrary to popular stereotypes, lean, agile and software architecture complement each other well. To make this work requires new paradigms in organizational structure and software design. Based on work with Trygve Reenskaug, this book restores the original goals of object-oriented programming to the contemporary world.
C++は、現在の主流を成すオブジェクト指向に基づいたシステム開発に欠かせないプログラミング言語です。本書はこのC++について、さらに専門技法を磨きたい技術者・プログラマに向けて、開発元のAT&Tベル研究所の技術者が著したものです。
本書では、基本的なC++ の構文を背景知識として前提し、C++ 言語の「文体(スタイル)」と「イディオム」の感触を身につけながら、経験を通してC++ のエキスパート・プログラマーになることを目指します。簡単なデータ抽象、完全な抽象データ型の実現、さらには様々のオブジェクト指向プログラミングの「文体(スタイル)」に対して、異なる種類の文体がC++ ではいかに用いられるかを示します。また、C++ 言語の核の部分だけでは直接にはサポートされないような「イディオム」、た...
Most of the software discipline has come to honor the role of architecture to organize software development. The software pattern discipline has taken up the architectural metaphor quite literally, borrowing its key notions from Christopher Alexander, an innovative master builder of houses, neighborhoods, and towns. However, the software industry h...
Pattern languages have begun to appear and mature as a presentation of the structures and processes that support the building of complex software systems. A pattern language describes how to compose structures in a particular domain such as telecommunications, client–server architecture, or object-oriented programming, to achieve system-level archi...
C++ — язык программирования, который поддерживает множество парадигм: классы, перегруженные функции, шаблоны, модули, процедурное программирование, параллельное программирование и т. д. Несмотря на гибкие и разнообразные средства языка, потребовались существенные усилия для создания метода проектирования, который позволял бы в полной мере использов...
In his role as United States Poet Laureate, Robert Hass spent two years battling American illiteracy, armed with the mantra, "imagination makes communities." He crisscrossed the country speaking at Rotary Club meetings, raising money to organize conferences ...
C++ - язык программирования, который поддерживает множество парадигм: классы, перегруженные функции, шаблоны, модули, процедурное программирование, параллельное программирование и т. д. Несмотря на гибкие и разнообразные средства языка, потребовались существенные усилия для создания метода проектирования, который позволял бы в полной мере использов...
This book covers the human and organizational dimension of the software improvement process and software project management -- whether based on the CMM or ISO 9000 or the Rational Unified Process. Drawn from a decade of research, it emphasizes common-sense practices. Its principles are general but concrete; every pattern is its own built-in example...
Both individuals and disciplines, as a whole, learn from experience. Patterns are a way to capture that experience which is often lost in traditional design literature. Patterns work with other patterns under human guidance to support a process for building systems that employ local adaptation and piecemeal growth. The pattern language design techn...
C++について一通り学んだプログラマーがプログラミングの専門技法を磨くのに役立つよう設計。様々なオブジェクト指向プログラミングの文体が、C++ではいかに用いられるかを示す。トッパン1994年刊の再刊。
The pattern community came about from a consciously crafted culture, a culture that has persisted, grown, and arguably thrived for a decade. The culture was built on a small number of explicit principles. The culture became embodied in its activities— conferences called PLoPs that centered on a social activity for reviewing technical works—and in a...
The benefits of computer science courses as compared to business degree courses such as MBA and other similar courses are discussed. A model for teaching object orientation that honors the business perspective by building on roles as the fundamental units of analysis. The historic analysis is divided into study function and study structure which is...
The success of symmetry applications in many scientific disciplines has motivated us to explore symmetry in software. Our exploration is based on an informal notion that symmetry is the possibility of making a change together with some aspect that is immune to this change. In this view, symmetry has a duality of change and constancy whereby some as...
An essay on software designing, that evaluates where the patterns community stands in the light of where its founders had predicted it should be after a decade of progress is presented. There are few researchers and practitioners who are exploring the foundations and evaluating their applicability to the theory of software design. There are foundat...
Patterns are proven solutions to recurring design problems. The term has a special sense in contemporary software design, most notably in the object-oriented programming community, one that is unrelated to pattern-matching languages or regular expressions. A broad collection of values and conventions guide the creation and use of software patterns....
The history of computer science has shown that decomposing software applications helps managing their complexity and facilitates
reuse, but also bears challenging problems still unsolved, such as the assembly of the decomposed features when non-trivial
feature interactions are involved. Examples of features include concerns or aspects, black box or...
With Aspect-Oriented Programming (AOP) a new type of system units is introduced (aspects). One observed characteristic of AOP is that it results in a large number of additional (coarse-grained to finegrained) system units (aspects) ready to be composed to the final application. With this growing number of system units the dependencies between them...
A pattern-based approach to designing software offers enormous advantages for keeping pace with the rapidly changing field of multimedia networking. MediaBuilder, a framework for networked multimedia applications, demonstrates the power of this approach. This paper describes the main patterns that contribute to MediaBuilder's object-oriented archit...
The class concept is central in OO programming (OOP) to implement abstract data types and enforce encapsulation. Type hierarchy has been regarded as a useful technique for consistency during extension. Yet, the importance of class and type hierarchy extends beyond their technical merits. Specifically, a class classifies objects and a type hierarchy...
Patlet. The fragment of pattern language proposed in this paper, show how to adapt a nonstoppable software system to reflect changes in its running environment. These framework patterns depend on well-known tech-niques for programs to dynamically analyze and modify their own structure, commonly called computational reflection. Our patterns go toget...
With Aspect-Oriented Programming (AOP) a new type of system units is introduced (aspects). One observed characteristic of AOP is that it results in a large number of additional (coarse-grained to fine-grained) system units (aspects) ready to be composed to the final application. With this growing number of system units the dependencies between them...
Feature interaction is nothing new and not limited to computer science. The problem of undesirable feature interaction (feature interaction problem) has already been investigated in the telecommuni- cation domain. Our goal is the investigation of fea- ture interaction in component-based systems be- yond telecommunication. The position paper out- li...
Software patterns draw on the work of the architect Christopher Alexander, which in turn builds on foundations that may be more suitable to software than the architectural metaphors themselves. Patterns have a longstanding identity in the scientific community as results of a phenomenon called symmetry breaking. Symmetry breaking can be defined form...
Patterns have a longstanding identity in the scientific community as results of a phenomenon called symmetry breaking. This article proposes a formalism for software patterns through connections from software patterns to symmetry and symmetry breaking. Specifically, we show (1) the ties from Alexander's work to symmetry and symmetry-breaking founda...
Multi-paradigm design tries to dig deeper than any single technology or technique to address fundamental questions of software abstraction and design. What is a paradigm? What is the relationship between analysis, design, and implementation? These questions go to the foundations of abstraction that underlie the basic paradigms of design and program...
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...
An abstract is not available.
C++ is a programming language that supports multiple paradigms: classes, overloaded functions, templates, modules, procedural programming and more. Despite the language's flexibility and richness, however, there has previously been little effort to create a design method to support multiple paradigms within a single application. This tutorial explo...
does not imply vague; partitioning is not abstraction The industry seems to hold onto a fascination with distributed processing. One often finds analysis model that assume infinite processors, ostensibly for the sake of not over-constraining the solution. However, this leads to a strange cargo cult style of programming that seems to have few practi...
Factory. Section 6 goes back to discuss the pattern form and what we have gained from using it. Section 7 summarizes the paper and presents some further conclusions. Object-oriented design firmly relies on abstract classes. They represent the key design decisions that structure a system in the large. An abstract class represents the interface to a...
Factory. Section 6 goes back to discuss the pattern form and what we have gained from using it. Section 7 summarizes the paper and presents some further conclusions. Object-oriented design firmly relies on abstract classes. They represent the key design decisions that structure a system in the large. An abstract class represents the interface to a...
Alexander has been nurturing a vision of beauty and support for human comfort as his understanding of design has evolved over the past 40 years. In a talk to the software community in 1996, he challenged us to look beyond our short-term business focus, to rise above the exercise of our technical prowess, and to embrace the moral imperative to build...
The article describes how to perform domain engineering by
identifying the commonalities and variabilities within a family of
products. Through interesting examples dealing with reuse libraries,
design patterns, and programming language design, the authors suggest a
systematic scope, commonalities, and variabilities approach to formal
analysis. The...
MPD is an analysis and design process that takes advantage of language features beyond object-oriented programming, including classes, overloaded functions, templates, modules, procedural programming, and more. Multi-paradigm design digs deeper than any single technology or technique to address fundamental questions of software abstraction and desi...
Groups of people working in concert perform most commercial, industrial or in-house software development. These groups are often quite diverse. This panel brings together object-oriented consultants and developers as well as practitioners and researchers interested in human factors and user-centered design, project management and technical writing....
Groups of people working in concert perform most commercial, industrial or in-house software development. These groups are often quite diverse. This panel brings together object-oriented consultants and developers as well as practitioners and researchers interested in human factors and user-centered design, project management and technical writing....
Chip architects from Sun, Cyrix, Motorola, Mips, Intel, and Digital see challenges rather than walls in micro-processor design. They share their in-sights in this virtual roundtable. IntroductionIn "Increasing Work, Pushing the Clock," Mark Tremblay ...
A design pattern is a particular prose form of recording design information such that designs which have worked well in the past can be applied again in similar situations in the future. The availability of a collection of design patterns can help both the experienced and the novice designer recognize situations in which design reuse could or shoul...
Most software development projects don't practice what is usually considered "proper" software engineering practices: well-documented, traceable requirements do not exist, formal inspections are non-existent, analysis and design inodels are incomplete or not even done at all, and so forth. We know that many of these projects fail, and it is easy to...
Most software development projects don't practice what is usually considered "proper" software engineering practices: well-documented, traceable requirements do not exist, formal inspections are non-existent, analysis and design inodels are incomplete or not even done at all, and so forth. We know that many of these projects fail, and it is easy to...
Patterns and frameworks are two approaches to the development of both new and evolving software systems. An implicit hypothesis is that "discovery costs" are reduced by leveraging knowledge previously collected, analyzed, organized, and packaged. "Discovery costs" (or "getting started" costs) include both the costs of understanding the problem to b...
If patterns are not about objects, and if they reach beyond
software architecture, then what is a pattern? The author explores the
relationships that might exist between objects, patterns and
architecture, then examines their implications for software developers
Patterns and frameworks are two approaches to the development of both new and evolving software systems. An implicit hypothesis is that "discovery costs" are reduced by leveraging knowledge previously collected, analyzed, organized, and packaged. "Discovery costs" (or "getting started" costs) include both the costs of understanding the problem to b...
Software development is a predominantly social activity. It is important to view software development groups, departments, and corporations as social bodies. We study software organizations by using a novel data-gathering approach that com- bines several techniques commonly used in social network analysis. We differ from ordinary social anthropolog...
An abstract is not available.
Anthropology is the study of civilization, particularly its societies, customs, structure, and evolution. Our premise is that there are cultureal "chasms" to be crossed to ensure the success of the technological beachhead established by innovators and early adopters of the OO paradigm. Our panelists will address the following questions:•What anthro...
Having expertise is one thing; conveying it to others is quite another. Patterns do just that." Patterns are a literary form with roots in literate programming, in a design movement of the same name in contemporary architecture, and in the practices common to the ageless literature of any culture. This volume, with contributions from the biggest na...
Software development is a predominantly social activity. Individuals in a software project fill various roles and communicate with other roles, forming a social network of communication that embodies many important characteristics of the organization. These social networks lend themselves to both quantitative and visual analysis. In an attempt to i...
A design pattern is a particular prose form of recording design information such that designs which have worked well in the past can be applied again in similar situations in the future. The availability of a collection of design patterns can help both the experienced and the novice designer recognize situations in which design reuse could or shoul...
Anthropology is the study of civilization, particularly its societies, customs, structure, and evolution. Our premise is that there are cultureal "chasms" to be crossed to ensure the success of the technological beachhead established by innovators and early adopters of the OO paradigm. Our panelists will address the following questions:•What anthro...
Projects using Object Oriented technology typically fall into one of two categories: either they are run with traditional project management techniques, or they are run by "technology experts" who don't use any project management techniques. This panel will attempt to give out some hints as to how to be more successful managing OO projects.Question...
An abstract is not available.
Proceedings of the first conference on Pattern Languages of Programs
Two major obstacles hindering the wider acceptance of multi-methods are concerns over the lack of encapsulation and modularity and the absence of static typechecking in existing multi-method-based languages. This paper addresses both of these problems. ...
The Bell Laboratories Software Production Research Department employed CRC (classes, responsibilities and collaborators) cards to perform object-oriented analysis of software-development operation. CRC cards are effective devices for pinpointing the vital characteristics of role-models. This method of analysis was applied to Borland's Quattro Pro f...
Software design patterns are an emerging tool for guiding and documenting system design. This paper is a beginner's guide to patterns, answering common questions about patterns, pattern languages, generativity, and Alexandrian form. The paper describes patterns in terms of objects, rules, idioms, and paradigms in general. The paper also provides so...
Much contemporary development process research is based on analyses of process steps, their duration, and the events they propagate. Our initial research in large, mature telecommunications development processes concluded that such models do not capture abstractions that remain stable over time. We turned our attention instead to empirical role-bas...
The Borland Quattro Pro for Windows (QPW) development is one of the most remarkable organizations, processes, and development cultures we have encountered in the AT&T Bell Laboratories Pasteur process research project. The project assimilated requirements, completed design and implementation of 1 million lines of code, and completed testing in 31 m...
Most debuggers do not support an object-oriented debugging model. A debugger should be able to provide the view that each object is an independent entity with its own breakpoint behavior. We also would like the debugger to plant a breakpoint on the "right" member function when a polymorphic identifier is involved. The technology used in most C++ im...
Questions
Question (1)
I am trying to establish the expectations that project managers should hold for long-term estimation. Assume that development is done in fixed-length intervals called Sprints. The amount of work delivered by each Sprint is known, and follows a statistical (probably Cauchy) distribution. Let's say that the distribution has a known variance called v. What is the variance for n Sprints carried out end-to-end?
Does the answer change depending on the type of distribution (e.g., normal distribution)?
Adthanksvance.






















































