What is Software Architecture?
Software Architecture is a collection of abstract representations communicating the fundamental structure of a software system. Due to complexity and layered nature of systems in the wild, architects are required to build multidimensional views to communicate to engineers who build the system, other architects integrating with the system and technicians who support it exactly what the components look like, and how everything fits together.
The term Software Architect was borrowed from the built environment, which produces blueprints and other architectural designs for constructing buildings. The analogy has since become mainstream and has developed into a branch of Computer Science, on par with others such as Software Engineering, Algorithm Design and Artificial Intelligence.
Why is Software Architecture important?
Software Architecture, as practice, is a critical process in making fundamental decisions about how software systems should be built. In the simplest terms, Architects interpret functional and non-functional requirements to formulate different conceptual models of the system, which is then formalized into solution designs. These designs are based on an organisation's technology landscape (the pieces of technology already in use), strategic considerations around technology and the emergence of new technologies in specific areas and capabilities important to the system's successful development, implementation and operation.
From all of these considerations, the architect is able to document a number of artefacts that will serve as blueprint for the development and implementation of the system.
Formal architecture frameworks, as use in enterprise environments, often cover different domains such as Business Architecture, Data Architecture, Application Architecture and Technology (hardware) Architecture. These domains are often governed through Enterprise Architecture structures and processes as part of the larger organisation's Corporate Governance Framework.
What makes our Architects special?
Architects are key members of any software development, integration or implementation project. Not only are our architects responsible for designing the system, its components and integration flows and layouts, within our Feature Team engagement model, the architect also leads the development and implementation team from the first line of code, until the system is signed off by the client.
When the architect is incorporated into the Feature Team, significant value is generated. Firstly, the architect takes personal responsibility to communicate the finest details to the engineering team while growing the solution from idea to product with the team. The long-term involvement of the architect also allows for continuous refinement of the design, as the system starts to materialise, and deficiencies emerge or optimisations are identified. The architect is further close enough to the team to identify deviations from the design and have the ability to apply early course corrections, thereby reducing the risk of defects and delivery drift.
Finally, as Team (or Delivery) Lead, our architects are responsible for product quality, by combining design, engineering and quality assurance into the job description. This approach allows no room for error and binds the architect and engineers to take joint accountability for the success and quality of the deliverables.
Do Architects only work in Feature Teams?
No, not at all.
Our architects can work as part of a deployed Feature Team, or as specialist consultants supporting other activities within your organisation. They also provide specialist consulting services in the areas of software development, software qualty, product re-engineering or implementing governance processes and frameworks.