July 5, 2007 19:30 by
dgood
I'm working on an essay, more of a research paper, really.
I was listening to an interview with Grady Booch during which he mentioned that much software architecture is grown, or evolved, rather than planned.
That got me thinking about architecture in general, and brought to mind a quote from Linus Torvalds:
Nobody should start to undertake a large project. You start with a small _trivial_ project, and you should never expect it to get large. If you do, you'll just overdesign and generally think it is more important than it likely is at that stage. Or worse, you might be scared away by the sheer size of the work you envision. So start small, and think about the details. Don't think about some big picture and fancy design. If it doesn't solve some fairly immediate need, it's almost certainly over-designed.
http://en.wikiquote.org/wiki/Linus_Torvalds
I left off the last couple of sentences from Linus' quote which could provide more relevant context, I don't know, that's for you dear reader to decide. Personally I find that it doesn't provide any mitigation to the first couple of sentences, so it's irrelevant.
Then I began to think about software engineering in general, and particularly the essay that Steve McConnell wrote the other day about Software Engineering: Rumors of Software Engineering's Death are Greatly Exaggerated (aka Software Engineering Ignorance, Part II)
I think if you ask 10 seasoned software engineers to define software architecture, or software engineering, that you will likely get 10 different yet conceptually similar answers. So it sounds fairly simple. Then why are there so many contradictory philosophies?
- Problem: Too much architecture is not planned
- Solution: Need more planned architecture
- Problem: Too many people plan big fancy architectures
- Problem: Too many people don't engineer software
- Solution: Need more emphasis on the engineering aspects of software
So, I solicit your input on the following:
- When is it ok, or not ok to have Big Design Up Front (BDUF)?
- Can BDUF and Agile methods coexist?
- What separates Software Engineers from Software Architects?
- How big, or how complex should the architecture really be? (No lame answers of "only as big as it needs to be")
- In other words, If I'm sitting down today to begin creating the next generation of a complex system, how complex can the architecture be if I "start with a small _trivial_" architecture?
What gives?
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5