Newsletter sign-up
View all newsletters

Enterprise Java Newsletter
Stay up to date on the latest tutorials and Java community news posted on JavaWorld

Sponsored Links

Optimize with a SATA RAID Storage Solution
Range of capacities as low as $1250 per TB. Ideal if you currently rely on servers/disks/JBODs

Design patterns, the big picture, Part 3: Beyond software design patterns

Use patterns to improve interaction design, enterprise architecture, software methodology, and more

  • Print
  • Feedback

Page 4 of 5

Architectural pattern or style?

The term architectural style is often used as a synonym for architectural pattern. Furthermore, architectural style examples are presented that seem to be the same as architectural pattern examples; for example, pipes and filters. However, these terms are somewhat different, as explained in the Stackoverflow topic "What's the difference between Architectural Patterns and Architectural Styles?"

Organizational patterns

An organizational pattern documents the structure of relationships within a professional organization. Such patterns are discovered, documented, and used in order to help organizations achieve their goals. Although they're generally applicable throughout an organization, organizational patterns typically provide guidance for managing software development processes.

Organizational patterns apply to the structure of organizations rather than to the structure of source code and software architecture. Organizations have human-like characteristics (being comprised of humans); as such they can learn, and they can also be dysfunctional. By studying organizational behavior, lessons can be learned and documented as patterns that are shared with other organizations.

Organizational patterns aren't created or invented, but are discovered through empirical observation. This was demonstrated by early research at Bell Laboratories, in which patterns were discovered by analyzing social networks. This research used empirical role-playing techniques to gather information about the structure of relationships in the subject organization. These structures were analyzed for recurring patterns across organization and their contribution to achieving organizational goals. Successful structures were written up in pattern form to describe their tradeoffs and detailed design decisions (forces), the context in which they would apply, along with a generic description of the solution.

Organizational patterns provide an incremental path to improving an organization. The pattern style of building the organization works as follows:

  1. Find the weakest part of the organization.
  2. Find a pattern that is likely to strengthen the weakest part.
  3. Apply the pattern.
  4. Measure the results.
  5. If the pattern improved the situation, go back to Step 1 and find the next area for improvement. Otherwise, undo the pattern and try an alternative pattern.

Agile development as an organizational pattern

Organizational patterns are closely associated with the agile approach to software development. This approach focuses on iterative and incremental development where requirements and solutions evolve through collaboration between self-organizing and cross-functional teams. Agile is often contrasted with the more traditional waterfall method of software development.

Agile consultant James Coplien pioneered work on organizational design patterns and presented a paper on this topic at the Pattern Languages of Programs conference held in 1995. Together with Neil Harrison, Coplien subsequently collected organizational patterns and combined them into a collection of four pattern languages. This collection was then presented in Organizational Patterns of Agile Software Development, published in 2004.

In the book, Harrison and Coplien presented four inter-related pattern languages: Project Management, Piecemeal Growth, Organizational Style, and People and Code. Consider the following agile project management patterns:

  • Community of Trust: When assembling any project team, it's essential that team members trust each other so that work can get done. Interpersonal relationships have a positive or negative impact on the team's effectiveness.
  • Size the Schedule: A project must be understood and its size estimated before work begins. Developers become complacent when a project schedule is too long, and become overtaxed when the schedule is too short. Reward developers who meet the schedule.

Here are two Piecemeal Growth patterns:

  • Size the Organization: Large projects are rarely delivered on time and within budget when their development teams are too large or too small. Start projects with a critical mass of about 10 people to avoid having to add more people late in the project.
  • Phasing It In: Start a project by hiring people who possess a business's core competencies and then gradually add people as the project grows.

Coplien also discussed organizational patterns in a talk entitled "Organizational Patterns: A Key for Agile Software Development" (INCOSE Speaker Series, May 2007). Coplien pointed out that software managers face an overwhelming number of strategies and techniques for managing a software development project, that system theory has shown that processes emerge from organizational structures, and that organizational patterns combine this theory with time-tested management and organizational techniques.

Communication and presentation patterns

Communication and presentation are essential to the software development cycle. Software development team members need to communicate effectively with each other and also with a project's stakeholders. Giving effective presentations may be part of that process. Is it any surprise the patterns for successful communication and presentation have been documented?

Effective communication

People don't just communicate through speech, we also do it through body language and writing. Various patterns can be observed in these exchanges. Researching communication patterns, I found "What are the Pattern of communication?" which defines a communication pattern as a mode of communication used frequently in certain situations or with certain people. Are any of the following communication patterns familiar to you?

  1. Apologizing frequently
  2. Blaming
  3. Complaining
  4. Criticizing other people
  5. Gossiping
  6. Insulting
  7. Lecturing (in a bad or good way)
  8. Listening
  9. Peacemaking (it's okay, he didn't mean what he said)
  10. Praising (sincerely)
  11. Questioning (sincerely wanting to understand)
  12. Self-disclosing (explaining your thoughts)
  13. Supporting (you can do it)

The first six communication patterns reflect negative forms of communication. Apologizing frequently is an example of an anti-pattern because it may at first appear beneficial, but ultimately can get on the hearer's nerves, especially because the apology is often either meaningless (habitual) or intended to help the utterer and not the recipient feel better. A person who repeatedly apologizes could try to break their habit or seek professional help to change this pattern.

  • Print
  • Feedback

Resources