Resources

Books

Several of the books below are economically available on the used marketplace (eg, from amazon.com, half.com).

Agile Software Development

    Agile Software Development: Principles, Patterns, and Practices
    Robert C. Martin
    Prentice Hall, 2003
    ISBN 0-13-597444-5, amazon, half, publisher

Composite/Structured Design

This book predates object-oriented programming, but it covers cohesion, coupling, design, etc.

    Composite/Structured Design
    Glenford J. Myers
    Yourdon Press (Van Nostrand Reinhold Company), 1978
    ISBN 0-442-80584-5, amazon, half

Fundamentals of Object-Oriented Design in UML

This book is adapted from "What Every Programmer Should Know About Object Oriented Design". Part III of the book contains substantial discussion of connascence.

    Fundamentals of Object-Oriented Design in UML
    Meilir Page-Jones
    Addison-Wesley Pub Co., 2000
    ISBN 0-201-69946-X, amazon, half, publisher

Interface-Oriented Design

This book provides an introduction to the notion of interfaces with particular emphasis on software design.

    Interface-Oriented Design
    Ken Pugh
    The Pragmatic Programmers, 2006
    ISBN 0-9766940-5-0, amazon, half, publisher

Object-Oriented Software Construction

This book introduces Design by Contract, Eiffel, etc. It is a gold-mine on the use of assertions.

    Object-Oriented Software Construction (2nd. Ed.)
    Bertrand Meyer
    Prentice-Hall PTR, 2000
    ISBN 0-13-629155-4, amazon, half, publisher

Principles of Object-Oriented Analysis and Design

    Principles of Object-Oriented Analysis and Design
    James Martin
    Prentice-Hall PTR, 1993
    ISBN 0-13-720871-5, amazon, half, publisher

Reliable Software through Composite Design

This book predates object-oriented programming, but it covers cohesion, coupling, design, etc.

    Reliable Software through Composite Design
    Glenford J. Myers
    Petrocelli/Charter, 1975
    ISBN 0-442-25620-5, amazon, half

The Practical Guide to Structured Systems Design

This book predates object-oriented programming, but it covers cohesion, coupling, design, etc.

    The Practical Guide to Structured Systems Design (2nd. Ed.)
    Meilir Page-Jones
    Yourdon Press (Van Nostrand Reinhold Company), 1980
    ISBN 0-13-690769-5, amazon, half, publisher

See Cohesion for a web-based extract.

The Pragmatic Programmer

    The Pragmatic Programmer: From Journeyman to Master
    Andrew Hunt & David Thomas
    Addison-Wesley, 2000
    ISBN 0-201-61622-X, amazon, half, publisher

What Every Programmer Should Know About Object Oriented Design

"Fundamentals of Object-Oriented Design in UML" is an adaptation of this book. Part III of the book contains substantial discussion of connascence.

    What Every Programmer Should Know About Object Oriented Design
    Meilir Page-Jones
    Dorset House Publishing, 1995
    ISBN 0-932633-31-5, amazon, half

Mailing Lists

Connascence Mailing List

Videos

A Possible Future of Software Development

This talk presents some interesting ideas about analyzing relationships in programs and developing software in a more abstract fashion.

Concurrency/message passing Newsqueak

This talk presents some interesting ideas about building applications using collections of communicating sequential processes, interfaces, etc.

The Grand Unified Theory...

Jim Weirich is a great speaker and this is a great introduction to modularity, ending up with an extended discussion of connascence.

Here's Jim Weirich again, with a similar presentation.

Using Influence in Understanding Complex Systems

Interesting talk on the use of statistics to infer and analyze runtime "influences" of malfunctioning components in a system.

When a complex production system fails or has some less severe but still undesirable behavior, often the debugging technique of first resort is to examine system logs or other passively gathered signals that might hold important clues about the nature of the problem. By its very nature, this data is normally noisy and incomplete. We define a statistical notion of "influence" between components that deals gracefully with this situation. Intuitively, two components influence each other if their behavior is statistically correlated, and we can often show correlation even if the available data is insufficient to show why the components might affect one another. We show how to compute influence, how to present influence in a useful form as a Structure of Influence Graph among components, and give an extended example of the application of these ideas to a real system.

Web

Cohesion

Meilir Page-Jones has posted an adaptation (complete with animations!) of Chapter 6 (Cohesion) from "The Practical Guide to Structured Systems Design". He says:

It will probably seem very dated to everyone now, but the intent of writing on cohesion was to raise consciousness among developers about:

  1. Keeping strongly related things under the same roof (of encapsulation).
  2. Realizing that "related" in the above could have several different interpretations - some good, some bad, and some ugly.

To reach the adaptation:

  • Go to http://www.waysys.com.
  • Click the Books / Articles button.
  • Click the Practical Guide link, under Books.

Comparing techniques by means of encapsulation and connascence

This short paper (by Meilir Page-Jones) presents the basic ideas of connascence. The PDF is available from the ACM, but costs $10 and requires quite a bit of hassle to purchase. Fortunately, the ACM's policies allow you to make a copy of our copy:

Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specific permission.

Connascence and Java

These pages (by Jim Weirich) cover the general topic of connascence, with special emphasis on the Java language.


Children:

Topic revision: r14 - 16 Jun 2009, RichMorin

Available Webs


This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email