Starting from Fundamental Principles
People keep talking about the power of simple business practice but software architecture is one of those areas when this must be treated very seriously. A good software architecture system will build on the fundamentals as it progresses towards the desired complexity. A bad software architecture system will start off with complexity and then work backwards towards simplicity as the problems start to pile up.
There are egos involved in any industry including information technology. Some people take it to be a matter of professional pride that they build the most complex system available on the market. This is despite the fact that the business activities of the client might require that simplicity is the bye word. Ignoring things that are obvious is a common mistake when designing software architecture.
- The simplicity of the software architecture must be achieved in such a way as to allow for the effective interaction of different sections of the organization. This is about making sure that all areas of the client’s structure are working towards the specific goals that have been agreed upon in the software architecture plan.
- Outsourcing must be balanced with the merits of working from within the organization. There might be some technical expertise within the organization which can be exploited in terms of building the software architecture but at the same time there is nothing to stop the organization from borrowing the expertise of a professional external provider. The information technology team can be consulted as to whether they are able to handle the project.
- The most challenging points of software architecture are the sections at which different functionality interact. That is where errors are more likely to happen. Most organizational conflicts about ownership are based on these interaction points. Handling them is a diplomatic as well as practical exercise.
- When you are implementing a software architecture system, you have to have a mechanism for identifying the stakeholders and understanding when they have made their point. Often you will be confused by bureaucratic decision making systems but just cut out the fluff and get to the people who really make the decisions in the organization.
- Implementing software architecture is a process that sometimes involves an element of change management. You will be inevitably discarding old working practices in favor of new ones and therefore you might encounter some resistance. If you do not know how to deal with this situation, then the project will not achieve the objectives that you desire.
- Communication will be a challenge as well as a tool in software architecture. Ignorance about the progress of an important project can cause panic amongst the rank and file members of the organization. You have a role to play in holding workshops and consultative meetings which will explain to the business how the software architecture system will work in practice.
- Surprises are to be expected when implementing software architecture. Nothing every runs smoothly in major projects so a contingency plan is a must. Plan for the unexpected when dealing with software architecture.