Software Engineering teams could make bad architectural decisions leading to time-consuming revisions, costly mistakes and project failures.
Software architecture is one of the key elements that decides the success of a software engineering project. Therefore good software architectural decision making is critical for a project. Yet there are many examples in the industry where the software engineering teams fail to make right decisions and end up costing time and money.
As per the Boston Consulting Group’s research in 2021, 70% of digital transformation efforts fall short of meeting targets. A 2020 CISQ report found that the total cost of unsuccessful development projects only in the US is estimated at $260B.
There are various reasons for failures of these projects. But having right software architecture and strategy in these projects could have made a significant difference to the statistics.
We understand that a software architectural decision is the fundamental element of software architecture planing & documentation. Based on that, we asked what inputs and outputs go into software architecture decisions so we can improve the quality of software architectural decisions by improving the quality of inputs.
Inputs & Outputs of Software Architectural Decisions
System’s expected out comes are the features that stakeholders are expecting from a Software System that will be developed or being developed. These could be based on functional requirements that terns into features or none functional requirements also know as quality attributes such as Security, Scalability, Availability, etc. To make better architectural decisions teams will need to have a clear understanding of business domain and the business strategies.
So how do we make sure that we have higher quality of this input to improve Software architectural decision making? The only answer would be collaboration. By having right level of collaboration and getting the customer and management involved, architects will be able to understand the system expectations with far less ambiguity that will lead to better decision making.
Other input that goes into the mix is architectural problem solving skills of the decision maker or team. No matter how well you know the customer’s domain if you do not have right knowledge of practical and available technology in the industry to solve the problem, you won’t be able to make better decisions. And also the experience will play a key role so the decision maker has a better understanding of what works and what doesn’t based on the past experience.
There are various ways to improve the quality of this input, such as following.
While improving the quality of above two inputs it is difficult to make the architectural decisions at one go. There has to be a good feedback loop that constantly correct and guide the architectural decision making. It is also important to make right decisions at the right stage of development phase so you leave space to make important decisions later with better inputs and feedback later on.
Main outcome of the architectural decision is the implementation strategy. That’ll have high-level instructions for developers to do the implementation. Developers may gain new knowledge and experience during the development, therefore it’s important to have a good feedback loop that feed back the new knowledge back to the architectural decision making and adjust the decisions if required. Again the way to achieve good feedback loops will be right level of collaboration and communication.
Software architectural decisions will be an important ingredient for scoping the project and to plan the required resources. These decisions will help to understand involved workload and will demand the decision makers to make them earlier in the project life cycle. Therefore it is important to make the right decision that are required to achieve these outputs and delay the decisions that are not required to make upfront. Quality of these outputs will directly impact the success of the project. Also you would have to feedback the information you gain from project scoping and resource planing back to the decision making and adjust the decisions accordingly.
Build a collaborative, simplified software architecture modelling platform that improves the quality of two inputs (+ feedback loop) of making better software architectural decisions.
As an experiment we are planing to start with building a simple platform for architects and engineers to share their existing architecture designs and discuss about them. That will help them to gain experience from each other as a community.
As an early stage startup, We are interviewing Software Engineers, Architects and Managers to gain an understanding of their past experience in software engineering projects related to documentation of software architecture and decision making.
Got something different to add? We would love to hear from you.
LinkedIn: https://www.linkedin.com/in/shanikaw
Email: shanika@tecture.io