"Enabling teams and individuals to specify, design and deliver software for a complex world."
Responsibility-Driven Software Development

Design Rebecca's Blog Contact Us Training and Consulting Clients and Projects Resources

Wirfs-Brock Associates Home Page > Consulting


Wirfs-Brock Associates' mission is to amplify the effectiveness of business and technical architects, developers, analysts, and software managers. We commonly apply our expertise to complex problems. You are likely to call on us when you are starting something new, big, or important, or have a pesky software design or modeling problem that can't be ignored. Wirfs-Brock Associates draws on experiences of having successfully developed engineering and business systems for over 30 years.

The Experts
Rebecca Wirfs-Brock, founder and principal consultant of Wirfs-Brock Associates, is experienced in software design, object design, domain modeling, architecture, agile development, as well as practical techniques. She wrote two books on Responsibility-Driven design and was IEEE Software magazine's design columnist. She values effective written and verbal communication, clean code, clear thinking, and crisp designs. She works with teams and organizations to sharpen their communication, specification, and software design skills. Rebecca Wirfs-Brock invented Responsibility-Driven Design (RDD) and spawned the "-driven" meme that is attached to many popular software development practices. If you've heard of test-driven, domain-driven, or behavior-driven design, you'll feel at home working with us. These techniques trace their "driven" roots and share common values with RDD.

We network with other world-class experts in the field to seek out innovative solutions.

A Typical Consulting Engagement isn't Typical
irfs-Brock Associates puts its capabilities and experience to work making the critical parts of your projects improve--at many different levels. A typical engagement might start by addressing an urgent need, perhaps sharpening a team's design skills by training them in Responsibility-Driven Design or Developing and Communicating Software Architecture. Or, we might work closely with technical leads to review and improve their design. We often define short, focused engagements where we work on specific design and modeling concerns. It can stop there, but often we provide ongoing advice and mentorships. Our consulting engagements can be brief or longer-term technology development partnerships, depending on your needs. We fluidly move between details and "big picture" thinking. We excel at helping teams tease out powerful design solutions which support planned variations. With our help, you will be energized to create, design, redesign, and communicate good solutions to complex problems.

Project Partners
As project partners, Wirfs-Brock Associates provides continuous support during all phases of development. We assist with training and mentoring people in object-oriented design skills and modeling techniques, domain-driven design, analysis, agile architecting practices, monitoring progress with management, and coordinating the successful completion of intensive software projects.

Object Design and Architecture Assistance
We are skilled modelers and object-oriented designers with a passion for working with teams to create good solutions. We can work with your team to develop modeling skills or collaborate to tackle complex modeling problems. We can coach you on the effective use of informal modeling techniques, dive into the nitty gritty details of how to effectively create effective architecture diagrams, or advise you on the writing of Architecture Decision Records or design recipes. We are skilled at communicating designs and can advise you on appropriate design documentation for your project. We are experts at effective communication of complex business and technical requirements. We're practical and focused on results.

We are skilled at digesting large amounts of information, wading through code, making assessments of the state of your system's design and architecture, and communicating our findings. At the conclusion of any engagement we produce a written summary of our findings, recommendations, and observations which we present and discuss with you and your team.

Design Review
We help teams assess design ideas for their impact and leverage. Iterative development means frequent releases. Well-designed increments form a firm foundation for successive iterations. At key points in the evolution of your software, we can assist you in evaluating your design by:

The result of such a review is a report outlining strengths of your design and suggesting areas for improvement. Where there is fuzziness in thinking, undue complexity, or over-optimistic design solutions, we help you sort things out.

Architecture Review
Architecture should support key quality goals such as reliability, maintainability, performance, testability, or usability. With complex systems, design involves making tradeoffs. Increasing performance in one area might increase maintenance costs. Making a system more usable can impact performance. Increasing performance can compromise design integrity. We can help you analyze and review your system architecture and make sure that critical risks have been identified, and that impact critical architecture qualities have been appropriately addressed by your design. We can assess your system for:

Framework Development and Review
Frameworks provide useful functionality that is intended to be reused in multiple applications. The best way to test whether a framework is useful is to put it to use. Build it to solve a real problem, not a hypothetical need. We can help you develop and deliver quality frameworks. We can also assess a framework under development for fit and effectiveness. We can evaluate framework design and implementation for:

Mentoring Services
A mentor is experienced in technology and its practical application, and is extremely capable of developing such skills in others. You can ask a mentor anything - no question is too naive. Mentors go beyond the boundaries of classroom teaching. A good mentor is a patient listener, an eager explainer, a thoughtful critic. A mentor leads by example while helping you learn to do things for yourself. A mentor is your guide, someone who works with you to achieve your full potential.

We provide mentoring services for individuals or small teams at all levels of experience-from beginner through framework developer and architect, for all phases of development. We specialize in object design and modeling, requirements writing, architecture, and object programming. We also can mentor teams on agile development best practices. A mentor can be an integral part of your team, or periodically work with you to tune your skills.

Process and Project Support
Every software project has unique requirements and constraints. It is hard to follow a single development recipe. Successful development depends on:

We can work with you to characterize your current development situation and to produce a roadmap for change.

You may want to be more agile - if so we can advise you on agile practices and suggest practices that will enable you to deliver value in planned increments.

You may want software architecture work to be more visible - if so we can advise you on techniques for specifying, monitoring, and evolving your architecture.

Perhaps you need more consistency in your development processes. We can work with you to produce style guidelines, define appropriate technical and architecture practices, and help you structure ongoing education and mentoring programs. Our goal is to enable you to successfully incorporate useful software design and architecture practices into your unique environment. We don't embrace a one-size-fits-all approach. We will work with you to develop plans and guidelines based on your unique needs.

For inquiries regarding our consulting services please contact us at consulting@wirfs-brock.com


Entire Site Wirfs-Brock Associates 2005 - 2022.
Click here to contact the Webmaster.