> "Architecture is the sum of the decisions about a project that are the > most expensive to change later. "
The "decision" to not have up to date achitecture docs is one of the "decisions about a project that are the most expensive to change later". :-) Not saying it shouldn't be fixed, it's just going to be expensive to fix from a time perspective. :-) Dan On Saturday 19 February 2011 7:31:21 AM Christian Schneider wrote: > Hi All, > > I know that the theme is a big one and likely will spawn some larger > discussion still I think it is important to talk about it and to have a > common understanding. > When digging into some not so obvious issues I repeatedly stumble about > the fact that there are important things about CXF that I don“t know or > only have a vague clue of. > Another problem I often had is where to put new stuff or decide if a > classs is placed at a location where it should not be. > > These examples show in my opinion that we do not have a good > architecture documentation and no clean process to decide about > architecture and to document decisions. So I propose some things > and we see if we reach a consensus. > > The first thing is a question that always pops up and that is not so > easy. What is architecture? > I once read a nice definition that is quite open but still catches what > is important: > "Architecture is the sum of the decisions about a project that are the > most expensive to change later. " > Sorry that I am not able to point to a concret source of this. I think > this definition catches the important thing about architecture. It > should cover only those things that may later bite you. > So for example the decision it can be argued if the decision for a > logging framework is an architectural decision as we saw in Apache Camel > how fast they were able to switch to slf4j. So this was nothing > that was expensive to change. In any case I am curious what you guys > consider as a good definition for an architecture. > > I would like to come to a consensus about what we define as architecture > as a first starting point. > > The next thing is how to document our architecture. We have a good > starting point at > https://cwiki.apache.org/confluence/display/CXF20DOC/CXF+Architecture > but I think some important things are lacking. This page > describes the key structural elements and how some key elements work > together in CXF. That is very important and we should simply try to > improve it. I would also like to add our common definition of what > architecture is to that document. > > The first thing I would like to add are architectural goals. An > architecture can never be good in itself. It can only be judged against > the goals it tries to achieve. Here again we should only track the most > important goals. > > The second thing I would like to add is a page about architectural > decisions. It should contain a short description of the process how we > do these decisions and a list of decisions in a well defined format. I > would also like > to limit the decisions to a certain number so we are sure that only the > most important decisions are tracked. I added such a page as my proposal > and we should discuss if this is ok for all. As I have no idea how many > decisions we should track I think we could simply start and keep in mind > that it should not grow too large. See > https://cwiki.apache.org/confluence/display/CXF20DOC/Architectural+Decision > s > > I hope we reach a consensus about these things as I think they are very > important. > > Christian -- Daniel Kulp dk...@apache.org http://dankulp.com/blog Talend - http://www.talend.com