Just as a properly constructed building starts with sound planning, a blueprint that guides construction and solid foundation, the success and efficacy of an integrated enterprise software solution depends largely on the architecture on which it is built.
The goal of effective solution architecture is not necessarily related to functionality. A poorly architected system will probably function in much the same way as a well-architected one. The differentiation comes in terms of non-functional aspects that contribute significantly to organisational efficacy - performance, flexibility and maintainability.
Why are these attributes so important to businesses? Performance is the simplest of the three to tackle. This is a measure of how quickly data can move through interrelated systems, and how effectively applications can take advantage of system resources such as memory and processing power. A well architected solution will result in lower hardware investment requirements, and the better utilisation of existing resources.
Moving on to flexibility - rigidly architected solutions are problematic owing to the reality of a continually changing environment in which businesses must operate. Business rules are influenced by many factors, including legislation, regulation, fluctuating supply and demand and more.
When business rules change for any reason, programmers should be able to access and adjust the underlying technology systems easily and without interrupting business operations. This is a crucial consideration; because of the typical interconnectedness of enterprise systems, changing one system or process can have a snowball effect on the technology subsystems, resulting in unplanned downtime or unstable applications.
Maintainability of systems refers to the cost and technical complexity of supporting an enterprise environment. A badly architected solution can be compared to a house of cards - it`s unstable, intricate and is likely to topple at the slightest provocation. Maintaining an application is linked to its flexibility, and is also a consequence of changing business rules and changing business requirements. A well architected solution will feature an abstraction layer, separating the business logic from the implementation in a loosely coupled interface - the application will interface with the abstraction layer, which then interfaces with the underlying technology.
Using this approach, the risk of introducing instability during application maintenance considerably reduced and allows the organisation to take advantages of new technologies. By adopting this approach, organisations are able to generate an incremental ROI by ensuring the solution remains appropriate for changing business requirements.
So - how is better application architecture achieved? Solution architects have access to a number of tools, processes and design guidelines that can help them to produce applications that deliver performance, reliability, flexibility and maintainability. These include Microsoft`s patterns and practices, which should be used to make informed software design decisions, but which must be tempered with knowledge of unique constraints which may be particular to a geographical area - for example, limited bandwidth in SA - or to a particular vertical business sector.
But the solution architects are faced with a further challenge - that of rapidly evolving technology. Particularly where projects may take extended periods of time, a situation may arise where new technologies are introduced or the way technologies are used might change. Coping with this requires the software architect to abstract functionality away from technology and to modularise services which allows for relatively easy adaptation.
Furthermore, because solution architecture exists largely in the mind of the developer, and can be difficulty to document and record, there is a tendency for other developers to code around the predetermined architecture. This issue is addressed by using a development framework that guides the architecture by not allowing certain classes of code to be used in certain situations.
Applications designed with these principles in mind are more likely to deliver not just the functionality required by businesses, but also a better return on investment and a lower total cost though improved performance, lower support requirements and the ability to adjust to ever-changing business requirements.
Share