Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Ian M. Holland is active.

Publication


Featured researches published by Ian M. Holland.


european conference on object oriented programming | 1990

Contracts: specifying behavioral compositions in object-oriented systems

Richard Helm; Ian M. Holland; Dipayan Gangopadhyay

Behavioral compositions, groups of interdependent objects cooperating to accomplish tasks, are an important feature of object-oriented systems. This paper introduces Contracts, a new technique for specifying behavioral compositions and the obligations on participating objects. Refinement and composition of contracts allows for the creation of large grain abstractions based on behavior, orthogonal to those provided by existing class constructs. Using contracts thus provides a basis and vocabulary for Interaction-Oriented design which greatly facilitates the early identification, abstraction and reuse of patterns of behavior in programs. Contracts differ from previous work in that they capture explicitly and abstractly the behavioral dependencies amongst cooperating objects. By explicitly stating these dependencies, contract also provide an effective aid for program understanding and reuse.


IEEE Software | 1989

Assuring good style for object-oriented programs

Karl J. Lieberherr; Ian M. Holland

The language-independent Law of Demeter, which encodes the ideas of encapsulation and modularity in an easy-to-follow form for object-oriented programmers, is presented. The law was developed during the design and implementation of the Demeter system, which provides a high-level interface to class-based, object-oriented systems. Two forms of the law, the class and object forms, are described. Its motivation is to ensure that the software is as modular as possible. Principles covered by the law include coupling control, information hiding, information restriction, information localization, and structured induction. An example is given to show how the law is applied, and valid violations are identified. It is shown how to transform a method that does not satisfy the law into one that does.<<ETX>>


conference on object oriented programming systems languages and applications | 1988

Object-oriented programming: an objective sense of style

Karl J. Lieberherr; Ian M. Holland; Arthur J. Riel

We introduce a simple, programming language independent rule (known in-house as the Law of Demeter™) which encodes the ideas of encapsulation and modularity in an easy to follow form for the object-oriented programmer. You tend to get the following related benefits when you follow the Law of Demeter while minimizing simultaneously code duplication, the number of method arguments and the number of methods per class: Easier software maintenance, less coupling between your methods, better information hiding, narrower interfaces, methods which are easier to reuse, and easier correctness proofs using structural induction. We discuss two important interpretations of the Law (strong and weak) and we prove that any object-oriented program can be transformed to satisfy the Law. We express the Law in several languages which support object-oriented programming, including Flavors, Smalltalk-80, CLOS, C++ and Eiffel.


european conference on object oriented programming | 1992

Specifying Reusable Components Using Contracts

Ian M. Holland

Contracts were introduced by Helm et al. as a high level construct for explicitly specifying interactions among groups of objects. This paper describes further developments and application of the Contract construct. We show how Contracts can be used to represent classic algorithms as large grained reusable object oriented abstractions, how these algorithms can be customized through Contract refinement and how they are reused through Contract conformance. The example algorithm used throughout is the classic graph depth first traversal algorithm. This algorithm is represented as a Contract which is then refined to specify algorithms which number connected regions of graphs and which check graphs for cycles. Changes to the Contract language are introduced and we discuss some new problems resulting from the simultaneous reuse of related contracts.


ACM Computing Surveys | 1996

Object-oriented design

Ian M. Holland; Karl J. Lieberherr

The three challenges of object-oriented design are to identify the objects and classes needed to implement the software, describe the relationships between the identified objects and classes, and define the behavior of the objects by describing the function implementations of each class. To discover an initial set of objects and classes, researchers look at the noun phrases and nouns used to analyze the system and to describe the system requirements. Possible sources of objects include tangible things (cars, telemetry data, pressure sensors); roles (mother, teacher, politician); events (landing, interrupt, request); interactions (loan, meeting, intersection); people; places; organizations; devices; and locations [Booch 1991]. Walking through scenarios of system usage, focusing on the discovery of the important objects and their responsibilities, is an important technique used early in the design process [Jacobson et al. 1992; Wirfs-Brock et al. 1990]. When the important objects have been found, the details of the class relationships and object behavior are developed through a set of interconnected models that capture four dimensions of the software architecture: logical static, logical dynamic, physical static, and physical dynamic [Booch 1991]. The logical static model describes the relationships of instantiation (class membership), association, aggregation (part-of), and generalization (is-a). This is called the system object model [Coleman 1994]. The generalization relationship implies inheritance of attributes and methods. Graphical notations derived from the entity relationship notation for data modeling are frequently used to define the object model [Rumbaugh et al. 1991]. Constraints such as cardinality (for example, one-one, one-many, many-many) that are important to the design are also expressed in the object model. A textual notation derived from BackusNaur-form grammars is also used [Lieberherr 1996]. Grammars provide a more concise representation of the class structures. The logical dynamic model describes the interactions between objects. The interactions define the run-time behavior of the system in terms of a set of participating objects, an ordered sequence of messages between the objects, and a determination of the visibility of each object in the interaction. Object interaction diagrams [Booch 1991] and interaction graphs [Coleman 1994] are used to describe important interactions. These show the participating objects and the time-ordered messages between the objects. Object visibility within an interaction is expressed via visibility graphs. Object visibility determines how an object becomes part of the scope of the method sending it a message. For example, it may be a method argument, a local variable, a new object, or a part of the current object executing the


international conference on software maintenance | 1989

Tools for preventive software maintenance

Karl J. Lieberherr; Ian M. Holland

Tools for preventive maintenance of software which is written following the object-oriented paradigm are discussed. A set of guidelines, called the Law of Demeter is described, and its implications for software maintenance are discussed (K.J. Lieberherr, I. Holland, 1989). The advantages of grammar-based object-oriented design and programming for software maintenance are discussed. Two kinds of grammar-based maintenance tool are studied: class evolution tools, especially an automatic class parameterization tool and growth plan tools with applications to software maintenance planning and regression testing.<<ETX>>


Archive | 1998

Constructing, downloading, and accessing page bundles on a portable client having intermittent network connectivity

Ian M. Holland; David L. Kaminsky; Christina Lau; Sandeep K. Singhal


Archive | 2002

Accessing page bundles on a portable client having intermittent network connectivity

Ian M. Holland; David L. Kaminsky; Christina Lau; Sandeep K. Singhal


Archive | 1995

System and method for providing shared global offset table for common shared library in a computer system

Jose E. Cabrero; Ian M. Holland


Archive | 1998

Method and system for providing device-specific key control using role-based HTML element tags

Ian M. Holland; Sandeep K. Singhal

Researchain Logo
Decentralizing Knowledge