So, what is the definition of software architecture? Well, there are multiple definitions out there. Some of them useful, some of them not. But in my mind the most accurate one is from Grady Booch:
All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change.
This definition outlines the most important issue an architect has to deal with – making decisions. Architecture decisions are strategic decisions with a heavy impact. If you decide wrong, the cost to fix that decision later will be high. It is like when you build a house – you can decide to build it with or without a basement. But once you started building your house, changing the decision will cause significant cost.
So what can you do? Well, not making a decision is not an option. If you are a software architect you have to make decisions. That’s what being an architect is about. Use your experience, ask your peers, check if others had to make the same decision already and what they decided (and why), and use prototypes to evaluate your options. All that will support you in your decision making process. However, there will never be a guarantee that your decision is correct. You will only find that out later. So, plan to do refactoring and re-engineering of your architecture along the way, so that you can incorporate your learnings. Do not assume your architecture to be static and final – it will constantly need to be adopted. Oh, and accept that you make mistakes on the way and admit them when that happens. Because to architect is human.
Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter, Flattr, Xing, t3n, LinkedIn, Pinterest oder Google eventuell ins Ausland übertragen und unter Umständen auch dort gespeichert. Näheres erfahren Sie durch einen Klick auf das i.
