Hi and welcome to Ode (pronounced oh-dee). Glad you stopped by.
Important: Ode is very new.
In the coming weeks I intend to post a lot of information to this site, and of course the complete project (including a set of sample themes and documentation) will be available for you to download.
Please do check back or subscribe to this site's feed if you're interested.
-Rob
Ultimately, Ode should support all of the key features found in other personal publishing packages for the web, including:
In fact the majority of these features are already implemented.
Because content are plain text files and Ode uses the filesystem for its content database, negotiating an Ode site amounts to:
When taken together with the wealth of software available for these tasks, Ode is a powerful and flexible little tool.
Create any number of categories and subcategories in any arrangement that works for you.
/Review/
/Review/Movies/
/Review/Software/
/Review/Software/Open_Source/
/Tufts/Courses/Comp250SA/
Here's one you'll never need to do:
/2008/
/2008/02/
/2008/02/06/
Ode handle dates like this automatically.
Static websites work like this too, but because Ode is not static we can take better advantage of this arrangement.
For example:
Interacting with a remote server is no more complicated than file transfer, which allows for a great degree of flexibility.
You're free to use:
...or any other file transfer/data exchange protocol that works for your environment.
There are other advantages to keeping content as discrete plain text files related to:
Resource requirements should be minimal.
External Dependencies
Internal Dependencies
Perl's strengths are also some of its weaknesses:
For these reasons Perl's critics often deride it as a 'write-only' language.
There's nothing about the language that prevents code from being well-written:
Finally, it's unnecessary because managing Ode's packages (addins) is straightforward.
It should not be necessary to introduce mulitple 'modes' of interaction.
It should be possible to synchronize local and remote instances of the same site.
Go on to the next slide for a little more info about this presentation.
Thanks.
Thanks.
"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.
Requirements
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
Thanks for stopping by!
No previous posts | No more posts
Hi and welcome to ode-is-simple.com. Glad you stopped by.
I Hope you decide to give Ode a try!
Glad you asked. It's a new platform for creating weblogs (and other types of dynamic sites) which 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.
Find out more...
I'm just now starting to put this site and other online resources together. If you don't find what you're looking for here, please email me at ode.is.simple at gmail dot com.
I encourage you to subscribe to this site's feed to keep up with all of the news and info related to Ode.
Isn't Facebook enough? Ask yourself if you're comfortable handing over all of your content to a service that you have no control over for the luxury of wading through ads, and then hoping that they don't change the terms of service at a moment's notice in such a way that you're no longer comfortable with their policies.
Worst case scenario, you could be cut off from both your friends and your content.
That would be a sad :(
Perhaps more important is the fact that we already have a web. If you're like me, you don't see the need to build a web on top of the web and put it in the hands of a single commercial entity. Something about that just doesn't feel like a step in the right direction.
The beauty of the web is its distributed, interconnected diversity!
The good news is that there all alternatives. Start a weblog and invest in your own online presence. Through your weblog, you can keep in touch with friends and family, link to and discuss topics of interest to you, interact with online services like Twitter, YouTube, Flickr, and Google Maps, just to name a few, and that's just the beginning. Your weblog is yours. It's Your own little slice of the Web.
Coming!