What Is Software Architecture?

Good Essays
Software architecture represents a common abstraction of a system that most if not all of the system 's stakeholders can use as a basis for mutual understanding, negotiation, consensus, and communication [2,12]. According to Microsoft’s definition “software architecture is the process of defining a structured solution that meets all of the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability. It involves a series of decisions based on a wide range of factors, and each of these decisions can have considerable impact on the quality, performance, maintainability, and overall success of the application [11]. Software architecture manifests the earliest design decisions…show more content…
de Boer have proposed four primary views on architectural knowledge [3]. In pattern centric view, Patterns serve two purposes, patterns are reusable solutions that can be applied to recurring problems and they also form a vocabulary that provides a common frame of reference, which eases sharing architectural knowledge between developers. Requirements are the roots of a software architecture, so in requirement-centric view of architecture, requirements and the architecture need be co-developed and all the possible solutions must be specified. It requires traceability in the transition from requirements to architecture as well as root-cause analysis of architecture design. In decision centric view of architecture, the researchers have started to consider not only the resulting architecture but also the rationale behind the architecture which is as important to consider. All such architectural knowledge needs to be managed to guide system evolution and prevent knowledge vaporization. Systems that exhibit dynamism can dynamically adapt their architecture during runtime which can be referred as dynamism centric view. Based on these architectural view the software itself must understand the architectural knowledge, architecture based adaptation has to rely on rather formal ways of codification. A dynamic software architecture must provide a specification of how the architecture of the software system can change at…show more content…
Goknil [6] the requirements of a systems cannot be static they are prone to change and new requirements emerge frequently. New and/or modified requirements are integrated with the existing ones, and adaptations to the architecture and source code of the system are made. The process of integration of the new/modified requirements and adaptations to the software system is called change management. The size and complexity of software systems make change management costly and time consuming. To reduce the cost of changes, it is important to apply change management as early as possible in the software development cycle. Requirements traceability is considered crucial in change management for establishing and maintaining consistency between software development artifacts. It is the ability to link requirements back to stakeholders’ rationales and forward to corresponding design artifacts, code, and test cases. When changes for the requirements of the software system are proposed, the impact of these changes on other requirements, design elements and source code should be traced in order to determine parts of the software system to be
Get Access