Thursday 23 April 2015

Factors influencing the software architecture

Software architecture is not just a result of design based on requirements.

Dear developer there is more involved in this, try to zoom out, leave code lines behind, and think about people,business, investment and forces that try to shape the architecture  ;).

The final design is an outcome of technical, business and social factors.


Architecture is influenced by :


  • stakeholders
  • the development organisation
  • the technical environment
  • the architect's background and experience
Stakeholders have an interest in the design of an architecture, they maybe : costumers, users, developers, project managers, marketers,.. each of which has different concerns.
For example customers are the people who pay for the project's development, and they are concerned about cost ,functionality, lifetime, development time to market,.. .

On the other hand management (i.e: development org. or customer org.) might be concerned about adhering to the development schedule, maintaining product quality, investing to achieve strategic goals.

Customers' quality attribute requirements are rarely understood and documented, which may result in : business goals not achieved, inevitable conflicts between stakeholders.

An architect must :
  • understand the real constraint of the system
  • manage stakeholders' expectations
  • negotiate system's priority
  • make tradeoffs
Depending on the technical environment the architecture is affected.(.NET, Java, EJB, COM, REST,Aspect Oriented Programming,SOA,WWW,..)

An architect has to be aware of these concerns as early as possible. All those people expect to have their concerns address.




Architect's own experience with systems he has successfully/ unsuccessfully designed, influences the architecture, they are less likely to use a failed architecture for a solution.

Architectures in turn affect the factors that influences them

Once the architect is created and the system is built, they affect the stakeholders requirements, architect's experience and technical environment.

For example a stakeholder who has seen the architecture of similar systems will ask for particular kind of features - such as SOA.
Occasionally, a system or architecture, can change the technical environment in which system builders operate.Again SOA, or EJB and above of all WWW could be an example.

This introduces a cycle called(by SEI) Architecture Business Cycle(ABC), the following image depicts this concept:


No comments:

Post a Comment