In a well received book titled “Maximising the ROI from IT investments” Thomas Pisello and Paul A. Strassmann point out that about one-third of custom software development fail, about half of the projects get delayed, get over budget or have reduced functionality. Only one-sixth of the projects are delivered on time, within budget and are according to specifications. The scenario has been ripe for intervention from solution architects who can apply their experience and understanding and save projects by providing right solutions so that the projects stay on track. If you are starting a project you need to start by developing a solution architecture document for it.
An architecture that combines role, process and documentation to address specific problems and requirements with the design of specific information systems or applications is a solution architecture. It can be a document that describes the structure of a solution to a problem. Solution Architecture depends on different solution outlines which typically define and specify – the business context; kind of data that is needed and the kind that will be generated with the help of product being developed; kinds of technology platform components needed; kinds of application components required and the resources needed to meet much needed but non-functional requirements like reliability, speed, throughput, availability, security, and scalability etc.
Being a solution architect is also probably one of the most important customer facing roles. To design a good solution architecture, the architect has to be an efficient business analyst with thorough knowledge about System Architecture and Project Management.
In simple words, Solution Architecture describes the structure, characteristics and behaviour of a solution to its stakeholders. It is an architectural description of a specific solution. It lays down the specifications by which the solution is defined, delivered, managed and operated. Generally there are many potential solutions to a problem. Each solution comes with its constraints. Solution Architecture thus is mainly concerned with finding the best solution or a set of solution options and their components.
Who is a Solution Architect?
A Solution Architect provides the strategic direction to the project. He understands both business and technical aspects of the project he works on. He compares tools and techniques and suggests the ones that best serve the requirements of a project. He understands the constraints of different options and chooses the best option for the project. He is in charge of developing different views for different stakeholders. He provides detailed component specifications and ensures appropriate technical resources are made available. He advices on technical aspects of system development and integrations. If there are any requests for changes or deviations from specifications, he ensures that relevant policies, standards and practices are correctly applied to the instances.
A good solution architecture along with the experienced solution architect help the teams develop the product that is on time, in budget and solves the problem it was designed to solve. How does a solution architecture help? Read on.
#1 Solution Architecture Is Designed To Meet The Needs Of All The Stake holders
There always are several stake holders of a product. There is an in-house as well as business aspect of development. Someone needs to tell the non – technical stakeholders all about the development and the processes. They need to be provided status updates at regular intervals. There constantly needs to be a talk about costing and budgeting with the stakeholders. This job is efficiently handled by a solution architect. He is the person who translates relevant details about a project into a language -management and other stake holders can understand. They need to be kept in loop.
#2 A Solution Architect’s Customer Facing Role In Developing a Product
He helps in the on boarding process. He supports new clients all the way during project implementation. He creates documentations and processes for configurations, customization processes and functionalities. He enables self-learning for the clients and makes it comfortable for them to navigate database visualization tools on client specific code branches. He is the one who puts in the effort to understand the business, technology and marketing goals of the clients. It helps in the development of the product. He can then offer the clients strong technology offerings with the help of developers. He is the one who ensures product demonstrations.
#3 Solution Architecture Ensures the Product is Built Using the Most Appropriate Technology
A good solution architect knows in depth about different tools and technologies. He investigates alternative architectural strategies involving them. Different strategies which depend on the usage of different platform selection, technologies and tools used and the code reuse are weighed against each other. Tools and technologies are tested and compared to find out the ones that fit. Proofs of concept are built to investigate the costs and benefits of each strategy. Product and quality requirements are assessed and the most suitable strategy is chosen to develop the product. The concerns of speed, agility and security are also addressed. He validates technologies to ensure they meet the business needs of the solution.
#4 Solution Architecture Helps Manage the Constraints
A constraint is a restriction that defines restrictions and limitations. Significant project constraints are technology, risk, scope, cost, quality, schedule and resources which need to be managed by Solution Architecture. The project uses the set of technologies that best suit the constituting modules. A scope of the project documents specific goals, deliverables, features, functions, tasks and deadlines. All of these come with their constraints which a solution architect compares, understands and then chooses the best one. Each project has a specific budget. There are related cost constraints. There also are schedule constraints where there is limitation on the start and end times of each task in a project’s critical path. If one task is delayed the whole sequence of tasks gets delayed along with the entire project. Managing a resource means managing staffing, equipment and other resources which are necessary to complete a project. Remember, ongoing projects need smart allocation of resources to manage the constraints.
#5 Solution Architecture Ensures NFRs of Product Development Are Met
If your application is to be useful there are several Non-Functional Requirements (NFRs) that should be met. Non-Functional requirements are also known as Q-O-S or technical requirements. These NFRs could include security access rights, availability requirements, performance concerns, reliability, maintainability, scalability, usability and other issues. There can be bounded NFRs, independent NFRs which can be evaluated and tested independently, negotiable NFRs and testable NFRs. Some NFRs can be implemented all at once and some can be implemented incrementally. Failing to meet any of the NFRs may result in application failing to meet business, market or internal user’s need.
Solution Architecture thus is the initial framework that provides you guidelines for product development. You need to manage the constraints well. Testing, experimenting, exploring and implementing the right mix of tools, technology, and processes will ensure you have a quality product. The research and effort you put in to prepare a good solution architecture document will guide the teams towards developing the right kind of solution which will indeed be useful to you and the ones invested in the development of your product.
And that is all from my desk, for now. Until next time, Adios.