Product Details
Object Design: Roles, Responsibilities and Collaborations (Addison-Wesley Object Technologiey Series)

Object Design: Roles, Responsibilities and Collaborations (Addison-Wesley Object Technologiey Series)
By Rebecca Wirfs-Brock, Alan McKean

List Price: £37.99
Price: £22.76 & eligible for FREE Super Saver Delivery on orders over £5. Details

Availability: Usually dispatched within 24 hours
Dispatched from and sold by Amazon.co.uk

34 new or used available from £20.32

Average customer review:

Product Description

After more than ten years, object technology pioneer Rebecca Wirfs-Brock teams with expert Alan McKean to present a thoroughly updated, modern, and proven method for the design of software. The book is packed with practical design techniques that enable the practitioner to get the job done. Like many human endeavors, design is part art, part engineering, part guesswork, and part experimentation. Discipline, hard work, inspiration, and sound technique all play their part as well. For any given problem, there are many reasonable, but only a few very good solutions. The authors' goal is to help readers learn to make those very good design decisions on their own. The book explores challenges that software developers will face as they build their design, and shows how design patterns can be used to solve design problems. Long awaited and eagerly anticipated, this book represents the first great software design book of the century. A FUTURE CLASSIC!


Product Details

  • Amazon Sales Rank: #84431 in Books
  • Published on: 2002-11-19
  • Original language: English
  • Number of items: 1
  • Binding: Paperback
  • 416 pages

Editorial Reviews

From the Back Cover

If you create software using object-oriented languages and tools, then Responsibility-Driven Design has likely influenced your work. For over ten years Responsibility-Driven Design methodology has been the standard bearer of the behavioral approach to designing object-oriented software. Object Design: Roles, Responsibilities, and Collaborations focuses on the practice of designing objects as integral members of a community where each object has specific roles and responsibilities. The authors present the latest practices and techniques of Responsibility-Driven Design and show how you can apply them as you develop modern object-based applications.

Working within this conceptual framework, Rebecca Wirfs-Brock and Alan McKean present how user requirements, system architecture, and design patterns all contribute to the design of an effective object model. They introduce a rich vocabulary that designers can use to discuss aspects of their designs, discuss design trade-offs, and offer practical guidelines for enhancing the reliability and flexibility of applications. In addition, case studies and real-world examples demonstrate how the principles and techniques of Responsibility-Driven Design apply to real-world software designs.

You'll find coverage of such topics as:

  • Strategies for selecting and rejecting candidate objects in an emerging design model
  • Object role stereotypes and how to identify objects' behaviors
  • How to characterize objects using role stereotypes
  • Allocating responsibilities to appropriate objects
  • Developing a collaboration model
  • Strategies for designing application control centers
  • Documenting and describing a design, focusing on use cases, design conversations, and annotations
  • Strategies for enhancing reliability, including handling exceptions and recovering from errors
  • How to characterize software variations and design to support them for greater flexibility
  • How to categorize and treat various kinds of design problems

    As all experienced designers know, software design is part art and inspiration and part consistent effort and solid technique. Object Design: Roles, Responsibilities, and Collaborations will help all software designers--from students to seasoned professionals--develop both the concrete reasoning skills and the design expertise necessary to produce responsible software designs.



    0201379430B08292002
  • About the Author

    Rebecca Wirfs-Brock is founder of Wirfs-Brock Associates. She consults with clients on actual architecture and design projects as well as development practices and methods. She is the originator of the set of development practices known as Responsibility-Driven Design. Among her widely used inventions are use case conversations and object role stereotypes. She was lead author of the classic work Designing Object-Oriented Software (Prentice-Hall, 1990).

    Alan McKean is a respected object technology educator and cofounder of Wirfs-Brock Associates. His classes have introduced thousands of developers to object-oriented design and programming and his instructional techniques have been widely adopted by other educators. An experienced programmer, speaker, and instructor, Alan has developed curricula in object-oriented design, programming, and distributed object systems.



    0201379430AB08292002


    Customer Reviews

    A book that will never leave your side.5
    First of all, I dont consider this "advanced" but more "medium-advanced". If you have a simple appreciation of the concepts and have been working in the industry for at least a year, then I dont think you would have a problem.

    Intellectual communities suffer from the fact such communities have within them a set of strong willed thinkers. Because of this, such communities have rhetoric, material and theories that may contradict each other. For someone trying to "learn" and develop as a practitioner of the "theory", such contradictions become detrimental. I feel the Object Technology community is one such community that exhibits such symptoms, and as a practitioner myself, I have found it difficult at times to "learn the right thing". If you are like me, and read something, change your ways and then read something new which contradicts what you've just learnt, then this book is for you.

    Objects are the abstractions in a software design that exist to provide the implementation that supports the requirements of the users. If you think of objects as Behaviour + data (data isnt capitalised), then profoundly this simple change will affect your work and how you think about a design. This book will guide you towards thinking of objects as much more than data/information holders that are dumb and do little. Gently this book will change the way you think about objects, and how you look at situations were you have one large controlling object that uses data from lots of information holding objects (dumb objects). Its not a trivial road you will be travelling on, but when your journey is over, you will probably scoff at the large Controller, break it down and distribute its responsibilities amongst those once dumb information holders. You'll step back and be profoundly amazed at what you've done. This book will change peoples lives.

    If you seriously want to become an OO Practitioner, and wish to develop elegant software that literally does have all of the extensibility and reuse factors built in, then this book is seriously for you. Dont be put off by the title, and think that the Roles, Responsibilities and Collaborations aspect is some kind of "method" or freaky way of developing software. This book teaches you the important parts about thinking in Objects that many other books never ever dream of saying.

    Think of requirements, think of objects and think about which object will play in an interaction sequence to fullfil these requirements. Will there be a controller for a use case that makes many decisions? Will you decide not to go for this type of collaboration mechanism and instead opt for more intelligent objects working in a neighbourhood of like-minded objects working towards a common goal? Once you've finished this book, you will most probably be designing with the latter design in mind.

    As soon as you think of objects and start asking yourself "What data does this object hold" you are on shakey ground. This book will show you why this is so, and how to change your thinking to build responsible objects in your design. It is a foundational piece of work that will always have a place on my bookshelf.

    Gets you going, fast4
    When you're developing object models, do you ever sit there staring at a dialog trying to think of a description for an object? Do you ever write something feeble in like this?

    Graph Node
    Description: A node in a graph.

    Descriptions like this are semantically content-free; they don't tell you anything that the name hasn't already told you. I've read hundreds of descriptions like this, and even written a few. Generally, I try and put a bit more effort into my descriptions, but its always a struggle.

    I bought a copy "Object Design: Roles, Resonsibilities, and Collaborations" and tired applying the CRC technique to a small graph-based diagramming tool I was developing. The updated technique for using CRC cards is to introduce an even earlier step in the process in which you write just a class name and its purpose. Here's a description I wrote on one side of an index card:

    Graph Node
    Purpose: A graph node is primarily a data holder. It defines a rectangle
    on a diagram with a label in its center. It notifies its dependants when it
    is created, changed or deleted.

    What a difference! This actually tells you something about the object in question and, surprisingly, it was easy to write. The secret of its effectiveness is the change of mind state that results when you replace the somewhat vague 'Description' with the much more leading 'Purpose'. This shifts the emphasis from the 'What' to the 'Why' of an object. If someone asks me 'what' a graph node is my knee-jerk response is, "A node in a graph, stupid!" but when I'm asked what its purpose is a host of details come pouring out.

    Now I'm a convert. If I'm using a case tool now I write 'purpose-full' object descriptions, and I find it works with attributes and relationships too. If I'm writing C++ by hand, I put a 'Purpose:' section at the top of the header file and fill it in.

    "Object Design..." has a lot more to say about the early phases of modeling and I can heartily recommend it to those who want to improve their transition from object blitz to production code.

    Great ADVANCED book on obiect-oriented design5
    "Object Design" is an excellent book on object-oriented design -- provided you consider it as an ADVANCED text of the topic and not just an INTRODUCTION.

    The book presents the responsibility-driven approch, where you design objects by thinking in terms of roles, responsibilities, and collaborations. The responsibility-driven approch has been introduced by the authors in the nineties and applied and improved in the last decade. It is really a modern and current approach!

    Object-oriented design is described according to various perspectives that must be considered during design: object identification, responsibility identification and assignment according, collaborations, control style, and so on. For carrying out each task, several possible alternatives are described and compared -- as it should happen in real software development. In general, the book is plently of advices based upon the authors' experience in designing REAL object applications.

    The method proposed is fully compatible with current standards and tools (e.g., use cases, UML and the Unified Process). Still, the book does not constraint itself to none of those standards - the proposed approach has a very wide applicability wrt existing methods and processes.

    Also, it references a number of very good books related to object-oriented software development.

    However, this is not an introductory book on object design. If you are new to this topic, you better read first an introduction to object methods. Personally, I recommend "Applying UML and Patterns" (2nd edition) by Craig Larman, a very good introduction to object-oriented analysis and design. Then, the book by Wirfs-Brock and McKean will let you complete your vision and understanding of the beautiful - but difficult - realm of object-oriented design. Enjoy it!