Sunday, December 8, 2019

Three Perspectives of Software Architecture

 It’s important to keep improving the maturity of software architecture through strengthening in expressing and evaluating ideas of quantified qualities and costs as well as improving engineering methodologies and disciplines.

Software Architecture intuitively denotes the high level structures of a software system. It can be defined as the set of structures needed to reason about the software system, which comprise software elements, the relations between them, and the properties of both business elements and relations.

Software architecture is not a solution in itself, but rather a component of the overall business objective. That aspect is often confused as too many architectures are constructed without regard as to why it is there to begin with. Here are some perspectives of the software architecture.

Start small and think big: Architecture helps to set up the environment for implementing business solutions such that it becomes hard to not think about the big picture and do good design. Understand the 'big picture' from who is sponsoring the endeavor and keep in touch with them on a regular basis. Start small, create a core team and in the process identify resources from other areas that can assist with the business initiative, and build on the momentum while keeping an eye on the scale, adoption, and flexibility.

In practice, a common problem is many enterprise-wide initiatives are developed on such a grand scale, it causes project failure with short of expectation via varies of shareholders. Thus, it’s important to create business proposals of opportunities and options, investigate methods of implementing tailored management solutions. Start with a small release in an area that is receptive to change and build on these smaller successes to the enterprise initiative.

The business/IT/software architectures are the effective management tools to help evaluate whether the business initiative is worth the effort with tangible ROI, budget/workforce assignment, the impact to the company, the employees, and the IT resources can be clearly gauged before beginning, to make sure that at an early stage, your customers, the rest of your organization can reap the benefits and are aware of this.

Do the cost-benefit analysis: In most cases, the software architecture would be an interplay of BIDAT (Business, Information, Data, Application, Technology) Fundamentally, you have to determine why you are doing software architecture, which strategic business goals or objectives are you trying to reach. IT shouldn’t answer these questions by itself. It needs to invite the business across functions to provide information about the potential benefit and cost, and the ROI calculations should be a joint undertaking.

With the hyperconnectivity nature of the digital organization, the extending software architecture goes beyond conventional boundaries, to integrate internally with other business units, externally with partners, service providers and others. Find a way to engage the full organization in any improvement efforts (soliciting input, feedback, project assignments, etc.) Once you have the desired results clearly defined with appropriate metrics, and comprehensive value/cost analysis, you can build a team inclusive of stakeholders and business partners to further define the charter, prioritize and allocate resources to improve cost effectiveness.


Ensure the standards and reusability: Software Architecture is both an art and science. An architecture abstract layers include such as Generalization (Reuse), Specialization (Customization), Classification (portfolio Management). Governance sometimes may not serve the goal of creating good art, but deploying services or components to the enterprise without governance is the trap to failures. The key is the use of artifacts describing the system with some governance body ensuring the standards and reuse. 

Re-usability which is about creating simple building blocks that can be applied over and over to minimize design cost and maximize value over the life cycle will bring in required simplicity at an enterprise level. Therefore, re-usability and simplicity compliment each other to a certain level of granularity within the organization. 

The value derives from understanding the requirements and what is driving them and value/cost/risk analysis needs to be done coherently, Know when to reuse and when not to reuse: where it may be bad, where there may be risks, but also where, if appropriately mitigated the reuse could be good. IT/software architecture needs to play a significant role in orchestrating the organizational reusability, agility, and flexibility, to craft the cohesive business competency.

Software systems are massively complex and they need to be flexible to continuously change with the needs of the business. Requirement, quality, and cost factor should be prioritizing while comfort zone and market trends taking place when architecting software and facilitating business solution. It’s important to keep improving the maturity of software architecture through strengthening in expressing and evaluating ideas of quantified qualities and costs as well as improving engineering methodologies and disciplines.

0 comments:

Post a Comment