Archive for the ‘customer experience’ tag
Software Architecture: The road map to a successful customer experience
Software architecture is a concept in software development that conceptually defines the overall structure of a system.
The term software architecture can be more defined into 3 areas such as:
- Enterprise Architecture – The long term architecture and how it aligns with the business strategy.
- Data Architecture – Aligns how data is being produced and consumed and its interrelationships between other data objects etc.
- System Architecture – How the individual application is structured
You might be asking what the purpose of having a well thought out software architecture is, it’s pretty simple:
Software Architecture is the road map to a successful customer experience
Based on the number of systems an organization has and the number of services that these applications provide, it will determine the type of software architecture you need to implement. At the end of the day, what drives the architecture is the customer experience of the product. You want to make sure you look at both sides of the coin: the technical side and the business side. A well designed architecture that provides sub-par value to the consumer has no benefit other than creating an interdependent system that just sits there.
Here are some of the reasons why you want a durable software architecture:
1. Strategic Advantage - Having highly flexible and scalable systems allows a team to quickly adapt to competitive environments and market conditions. The more modular the system, the more you can align it with business objectives.
2. Designing better systems - When designing new systems you want to pay close attention and be careful about the architecture of the system. If it’s not scalable, flexible and does not perform well in high load business environments the product or service that you are selling to your customers will NOT be sufficient.
3. Enables re-use – A good architecture is structured into components that are easily reusable. If there is a function that is used many times it should be isolated. This lowers the cost to create additional functionality as well as it makes things easier to debug when resolving issues because the core functionality related to that function/service is on its own.
4. Controls complexity – Systems are complex, have different uses, interactions and integration points. To meet the demand of software systems today, this complexity needs to be properly managed and scoped out. If the system becomes too complex it will be prone to failure and upper management would be less inclined to touch the application and make changes to it at the risk of breaking existing functionality. Note: If you’re system is too complex, it is probably an indication that new design decisions need to be made to make it more robust and easily maintainable.
5. Enforces best practices – Developers and implementers have a wide array of options and strategies to develop one solution. There are industry standards that are well accepted and agreed upon by the general software community. Following best practices align with industry standards and objectives. The number one reason why a system is poorly designed is because it doesn’t conform to best practices.
Conclusion
Software architecture has been here for a while. Many system solutions have different requirements and therefore implement different architectures. In the service based economy, many companies today are converging towards a service oriented architecture approach to easily align with the strategy of the business. The most important thing to understand is that requirements and architectures continually evolve. One thing that worked well this year may not be the best solution in 3-5 years from now. Your customer changes dramatically and the architecture and software must adapt to meet their needs.
Grab RSS feed