Message:

There doesn't seem to be a 'presentation' theme. Try dropping the suffix from the requested page name to use the default theme.

Tue, 15 Apr 2008

Project presentation

COMP250SA Project Presentation

A general model for writing architecture documentation

Rob Reed

Wednesday April 16, 2008

Introduction

"Mine is an architecture documentation project"

I started with the goal of completing what I called a 'case study'.

Something was missing

What I came up with is a general model for writing architecture documentation.

What is documentation?

Early in the semester we were asked to read the prologue to the book "Documenting Software Architectures: Views and Beyond", which presented this list of 'Rules for sound documentation':

Documentation should:

Are these rules enough?

What is architecture documentation?

From the same reading assignment we have this definition

Architecture is what makes the sets of parts [of a system] work together as a successful whole. Architecture documentation is what tells the developers how to make it so.

We are told that architecture documentation should be:

And that it should serve as:

Architecture documentation cont.

The "IEEE Recommended Practice for Architecture Description and Software-Intensive Systems" (IEEE Std 1471-2000)

presents four scenarios "intended to suggest the range of uses of the recommended practice"

  1. Architecture of single systems which deals with new system construction
  2. Iterative Architecture where the architecture, delivered systems, and stakeholders co-evolve
  3. Architecture of existing systems which is relevant when there has been development without a corresponding architectural description
  4. Evaluation, the purpose of which is to include the quality of architectural description and predict the quality of systems based on that description.

These scenarios...

Fundamental architecture documentation concepts

This is my list of critically important concepts:

All of these figure prominently into my approach and the resulting model.

The value of documentation

If one thing is clear from what we've discussed in this class it's that the work we set out to do is difficult and it isn't getting any easier.

For all of the problems we had with the autonomous computing paper, here is a quote from the article that no one was bothered by enough to refute:

Computing systems' complexity appears to be approaching the limits of human capability, yet the march toward increased interconnectivity and integration rushes ahead unabated.

Though not the answer to all of our software complexity woes, we can

by improving the tools and techniques we use to document software systems.

The challenges of documentation

Easier doesn't necessarily mean easy.

We have few well established patterns for dealing with documentation.

There are many questions that must be answered before we can hope to do an adequate job with architecture documentation.

These are not the only challenging questions.

The problem with a multiple document approach

The existence of multiple documents

It is not uncommon to find ourselves in a situation where we have multiple and competing documents, or multiple versions of the same document.

The problem with a single document approach

A one document approach may be interpreted as a single task.

Writers of technical documentation are often detached or isolated from the development groups.

More challenges

Although the architecture documentation is intended to prescribe how a system should work, if it does not adequately describe the current behavior, it may be regarded as irrelevant

We are often unrealistic about the investment required and as a result do not set aside adequate resources for documentation.

The ability to write documentation well is a skill that not everyone involved in the development of software possesses, or practices.

Still more challenges

We said early in the semester that software development is essentially linear, and that this may contribute to our inability to properly specify complex architectures.

Lastly, we may want to question some of the the assumptions that underlie the stated goals of architecture documentation.

Solutions to these problems

How might we address some of these problems?

In my estimation must be able to:

A picture of the model

Documentation components introduced

Each documentation component is essentially a package of progressively more detailed versions of the documentation for one element of the architecture.

These include a wide variety of architectural elements related to the architecture

Anything we want to

Documentation component browser

Imagine that all of these documentation components arranged in a grid

The browser allows us to:

Composing views

The browser does not show connections between documentation components.

We need another interface for composing views.

When we select any view (from an collection of views available in the browser), The documentation components of that view are highlighted.

If we choose to compose the view the browser's grid drops away.

Views

By connecting the documentation components, we specify relationships among the documentation, in a way that is similar to what you might think of doing with an abstract ADL.

A view is a physical document in the sense that it can be printed, copied and shared.

More about connections

The model supports two approaches to documenting relationships in the architecture.

  1. We can include relationships among the documentation components, and then compose them using only 'dumb' connections (which indicate nothing more an ordering over the documentation).
    • With this approach, we can take advantage of the expressive power of our components as packaged abstractions.
  2. We can also choose not include relationships among the documentation components and instead deal with them as part of composition...
    • in which case we need a more robust collection of graphical objects and tools for connecting documentation components.

This is a decision for the architect

More about stakeholders

Who are these stakeholders?

They may be roles, or individuals (i.e. specific people) involved with the architecture.

Is it possible to anticipate the needs of all of these stakeholders?

More about documentation components

They are reusable.

Is everything a documentation component?

Advantages of this model

The approach is intended to be nonlinear, flexible, and adaptive.

To this end it:

Advantage: The model is adoptable now

The model is adoptable now

After reading the Rapide paper, the class talked about whether the strategy epitomized by that language is adoptable

Can we pursue architecture-based approaches without architects?

In comparison, I believe that the modest idea I'm proposing is adoptable now because it reflects the developer-driven organizational style that currently dominates software projects.

Other advantages

Because it is a documentation model it does not place any restrictions on or make any assumptions about the system itself.

Documentation can serve as a path toward architectural change.

Documentation bridges architecture and implementation level details, serving as a medium for communication between stakeholders.

Other advantages 2

The model addresses common logistical issues related to maintenance of documentation.

The model introduces only a minimal amount of overhead.

Information that is not included in the documentation takes on an active meaning.

Current and future work

Current work

I'm continuing to refine the model by building a 'prototype' that works roughly as described.

Future work

Ultimately the end result of this may be the development of a set of tools for creating, manipulating and presenting architecture documentation in a way that is consistent with the model as described.

Fin

Thank you

#