"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.
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':
Note: This is review, what is new is the question...
Documentation should:
Are these rules enough?
Again, from the book "Documenting Software Architectures: Views and Beyond" 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:
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"
This is the situation that describes what I proposed to do, that create the architecture documentation for an existing system.
Note: I want to take a moment to point out that the requirements implied by the last three slides are a pretty tall order. (This applies to slides 2 - 4)
etc.
Accomplishing all of this is no small feat.
These scenarios...
All of these figure prominently into my approach and the resulting model.
Note: We have been introduced to many ideas about software architecture and architecture documentation throughout the course of the semester.
And there are many details that fill out the broad conceptual framework, but here is my list of fundamental concepts... without which we cannot hope to do an adequate job with architecture documentation. (followed by the contents of the slide)
This is my list of critically important concepts:
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
Note: If we're willing to entertain the idea that autonomous computing is a potential long term solution to the complexity problem, and if the authors of that paper are correct that the realization of their vision will require
"a concerted, long-term, worldwide effort by researchers in a diversity of fields"
We had better learn to tolerate complexity
by improving the tools and techniques we use to document software systems.
Note: I'll warn you that there are several slides dealing with problems associated with documentation because
I have no doubt that we'll all recognize these problems so it shouldn't take long to get through them...
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 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.
A one document approach may be interpreted as a single task.
Writers of technical documentation are often detached or isolated from the development groups.
Although the architecture documentation should prescribe how the 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.
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.
Note: Taking into consideration modern development environment, and techniques, hundreds and thousands of developers working on the same system simultaneously and independently, and collaborating with teams that may be separated gegraphically, I don't know that it's true that software and software development is strictly linear.
Lastly, we may want to question some of the the assumptions that underlie the stated goals of architecture documentation.
How might we address some of these problems?
In my estimation must be able to:
My approach to the project was straightforward.
I started early in the semester with the work I knew how to do, not knowing a lot about architecture concepts and architecture description at the time.
Note: Literally hundreds of pages of documentation for ode alone not including other elements of the environment (libraries, services, protocols, etc.)
Next, I identified what I considered to be critical concepts in the current thinking about architecture documentation.
Finally, I needed a method which would allow me apply the concepts.
Borrowing concepts from component-based software engineering, we create a set of documentation components
These include a wide variety of architectural elements related to the architecture
Anything we want to
Each documentation object is essentially a package of progressively more detailed versions of the documentation for one element of the architecture.
Imagine that all of these documentation components arranged in a grid
Note: I am aware that this slide takes a turn toward the discussion of a possible implementation but it is a useful mechanism/vehicle to help understand how this model might work (I hope) and this is where I'm headed at the moment.
I don't lean too heavily on a discussion of the implementation, just this slide and the next.
The browser allows us to:
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.
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.
The model supports two approaches to documenting relationships in the architecture.
This is a decision for the architect
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?
They are reusable.
Is everything a documentation component?
The approach is intended to be nonlinear, flexible, and adaptive.
To this end it:
Note: You may recognize that many of these advantages answer/address the problems of documentation discussed earlier and correspond the proposed solutions which I've also talked about earlier in this presentation.
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.
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.
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.
I'm continuing to refine the model by building a 'prototype' that works roughly as described.
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.
Thank you
"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.
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?
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:
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"
These scenarios...
This is my list of critically important concepts:
All of these figure prominently into my approach and the resulting model.
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.
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 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.
A one document approach may be interpreted as a single task.
Writers of technical documentation are often detached or isolated from the development groups.
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.
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.
How might we address some of these problems?
In my estimation must be able to:
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
Imagine that all of these documentation components arranged in a grid
The browser allows us to:
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.
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.
The model supports two approaches to documenting relationships in the architecture.
This is a decision for the architect
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?
They are reusable.
Is everything a documentation component?
The approach is intended to be nonlinear, flexible, and adaptive.
To this end it:
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.
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.
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.
I'm continuing to refine the model by building a 'prototype' that works roughly as described.
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.
Thank you
Thanks for stopping by!
No previous posts | No more posts
Please read the book "How We Decide" by Jonah Lehrer
iTunes
audible.com
amazon.com
Hi and welcome to the new robreed.net/weblog. Glad you stopped by. I've recently started to use an entirely new platform for this weblog.
Glad you asked. It's a new platform for creating weblogs (and other dynamic sites) I've written that emphasizes simplicity both in terms of usability and design. The idea is that anyone who is interested should be able to understand how the program works at the source code level. The platform is called Ode (pronounced oh-dee). You can find more info at the official blog.
I'm just now starting to put that site and other online resources together. If you don't find what you're looking for on the Ode blog, feel free to email me at robreed at gmail dot com.
Now that I have this wonderful new blog, I'll probably spend much less time on FaceBook. After all, why route all of my content through a service that I have no control over for the luxury of wading through ads, and hoping that they don't change the terms of service at a moment's notice in such a way that I'm no longer comfortable with their policies? Worst case scenario, I could be cut off from both my friends and my content. That would be a sad thing. Not to mention the fact that we already have a web, I don't really see the need to build a web on top of the web and put it in the hands of a single commercial entity. There's just something that doesn't feel right when I hear that Facebook is worth multiple billions of dollars given that all of the vast majority of its value comes from the web itself and the contributions of members like me.
I'd rather invest in my own online presence. You can always find me at robreed.net/weblog (feed)