“Enabling teams and individuals to specify, design and deliver software for a complex world.”

DesignRebecca's BlogContact UsTraining and ConsultingClients and ProjectsResources

Wirfs-Brock Associates Home Page > Consulting

Consulting

We aim to amplify the effectiveness of business and technical architects, developers, analysts, and software managers. Toward that end we serve as design and architecture advisors, mentors, and experienced project guides. A typical engagement starts by addressing perceived needs–perhaps by training a development group in Responsibility-Driven Design principles, or by helping lead developers communicate their system’s design. We may work with a team to develop their modeling skills or with project management to introduce project-specific best practices. It can stop there but we often provide ongoing project support.

We often apply our expertise to complex problem areas. Frequently this involves software objects—and then you might call what we do object-oriented design or domain modeling. At other times we help teams define measurable requirements or refine their business architecture. Wirfs-Brock Associates draws on its experiences of having developed engineering and business systems for more than 23 years, our ability to network with other experts in the field, and the ability to seek out applicable patterns, solutions, and relevant experiences.

Wirfs-Brock Associates puts its capabilities and experience to work making the critical parts of your projects improve—at many different levels. We fluidly move between details and “big picture” thinking. Wirfs-Brock Associates excels at helping teams tease out powerful abstractions and develop solutions which support planned variations—whether those things are objects, software systems, or business processes. With our help, our clients are energized to create, design, implement and communicate good solutions to complex problems.

The Experts
We are experienced in design, architecture, analysis, use case and requirements specification, modeling, and project management. We wrote the book on Responsibility-Driven design. Steeped in practical techniques, we demonstrate good design and analysis practices. We value effective written and verbal communication, clean code, clear thinking, and crisp designs. We recognize that agile teams need to sharpen their communications skills. With our help, you tame complexity and develop quality software. Our consulting engagements can be brief or longer term technology development partnerships, depending on your needs.

Project Partners
As project partners, Wirfs-Brock Associates provides continuous support during all phases of development. We assist with training and mentoring employees in object-oriented development skills and techniques, monitoring progress with management, and coordinating the successful completion of prototypes and pilot projects.

Object Design and Architecture Assistance
We are skilled modelers and object-oriented designers who have a passion for working with teams to develop good object-oriented designs. We can work with your team to develop modeling skills or work with you on complex modeling problems. We can coach you on the effective use of informal modeling techniques as well as effective use of UML We’re skilled at communicating designs and can advise you on what’s the right level of design documentation for your project.

Reviews
We are skilled at making assessments and communicating findings. At the conclusion of any review we produce a written summary of our findings, recommendations, and observations which we present and discuss with your team

Design Reviews
We help teams assess design ideas for their impact and leverage. Iterative development means frequent iterations. A design review at a critical milestone can have a high return on investment. Well-designed increments form a firm foundation for successive iterations. At key stages in your project, we can review your design by:

  • Reviewing program specifications, including use cases, entity-relationship diagrams, candidate object models
  • Reviewing detailed object models or code for styles of control, application architecture, clarity and distinctness of roles in the object model, appropriate distribution of object responsibilities, consistency in class hierarchies, and opportunities for re-use
  • Evaluate a domain model for appropriateness of abstractions, clarity, and fit for use

The result of a design 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 naiveté—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:

  • Modularity - How well it can be apportioned to team members for parallel development?
  • Conceptual clarity and sufficiency - Does it describe the problem space clearly?
  • Process architecture - Does it accommodate the required performance requirements clearly?
  • Physical architecture - Can distributed components communicate easily and reliably?
  • Data flow architecture - How and where does data travel?
  • Collaboration architecture - Are subsystem interfaces and dependencies appropriate?
  • Flexibility - How effectively does your architecture support planned variations?

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:

  • Clarity of key abstractions
  • Flexibility in different contexts
  • Ease-of-use
  • Extensibility
  • Support for tools

Use Case Modeling and Reviews
A use case model describes how users in specific roles interact with the software to accomplish specific tasks. One of the strengths of use cases is that they capture usage requirements for a system. One of the perplexing challenges with use cases is that there can be a lot of variation in how they are written and confusion about what to include and at what level of detail. Although many teams use a standard use case template, they struggle over heavy-handed templates and yearn to develop more consistent writing styles. We offer personalized advice on how to effectively write use cases that will work for your organization. We can also help your analysts become better writers and communicators. We can quickly review use cases and suggest improvements, or point out inconsistencies.

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:

  • Defining a development approach appropriate for the project
  • Defining a project scope, based on the investment, the team's skills, and the project schedule
  • Assessing skills and appropriately staffing the development team
  • A clear statement of the project's values and goals, and a set of guidelines to support them
  • A clear understanding of the project development context, including tools, frameworks, and system architecture
  • A clear understanding of the project risks and plans for mitigating them
  • A clear understanding of the development process

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

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

Perhaps you need more consistency in your development processes. As part of methodology development we can produce style guidelines, define appropriate object technology deliverables for project milestones, develop project milestone review questions, identify project roles and team composition, and help you structure ongoing education and mentoring programs. Our goal is to enable you to successfully incorporate object technology and software development best practices into your unique environment. We don't embrace a one-size-fits-all approach. We will develop plans and guidelines based on your unique needs.

For inquiries regarding our consulting services please contact us at consulting@wirfs-brock.com or contact Rebecca Wirfs-Brock by phone at 503-625-9529.




Entire Site © Wirfs-Brock Associates 2005 - 2008.
Site Design by Phil Brock/Red Hills Graphics. Click here to contact the Webmaster.