What is Software Architecture?
Software Architecture is defined as combination of artefacts (principles, models, guidelines, policies, standards, and processes) and relationship among the artefacts (principles, models, guidelines, policies, standards, and processes) which help to guide selection, creation and deployment of action or solution aligned with the goals of the business.
Software Architecture is also called as structure of structures related to Information System that comprises of various entities and their external physical properties along the relationship among them. Software architecture is a description of components of software system and the relationship between the component of Software Architecture system in which there are sub-system and components included and various views are specified to represent the functionalities and non-functionalities of a system or software system.
Software system in defined as an artefact which is the result of software design activity and the conceptualization of software elements along with their relationship and properties can be done effectively by the use of structured framework that is called as software architecture. The software architecture documentation provides or facilitates the communication between the stakeholders by documenting the high-level of decision related to design and its component along with the pattern of reuse for the different projects implemented or deployed in the company.
The process of software work upon the extraction and the separation of concern so that complexity related to software architecture can be reduced. Language called as architecture description language help to describe Software Architecture and different architecture description languages are deployed by the number of organisation and the common element of architecture description language are component, connectors and configuration. Software Architecture also help to explain the behavior of the organisation or the structure the system of the organisation that is being followed in the organisation for specific function or set of function which ensures the business growth in the organization.
There is a difference between software design and software architecture, the software architecture defines the procedures or functionalities of the organisation but software design is defined as the process of conceptualizing the requirements of the users into the implementation of software and the first or initial phase of this process after designing is a software development life cycle which helps to implement the requirements of the user in to the software.
The structure of a system can be exposed by the use of structure while the details of the implementation has been hidden in case software architecture. Software Architecture also focuses on components and elements within the system along with the interaction of element and component with each other. Software design provides the details related to the implementation of the system and design also with the selection of structure for the implementation of the element that is included in the software architecture.
Software design and the architecture concerns overlap rather than use of fast rules to distinguish between the design and the architecture it makes sense to combine them with each other. In some of the cases the decisions are clearly related to architecture of the software effect the design of the software and decisions focus on design so that realization of architecture can be done effectively. there are number of software defect that can affect be architecture of these software such as bugging the implementation and flaws in the design.
For more details, visit https://www.sei.cmu.edu/research-capabilities/all-work/display.cfm?customel_datapageid_4050=21328
The bugs in the implementation is the main reason behind the various problems related to software security and identification of such type of flaws can be done effectively by analyzing the fundamental design principles related to software, Assessing the attack surface related to software, Enumerating the various threat agents related to software and Identification of weaknesses and gaps related security controls of software. analyzing the fundamental design principles related to software, Assessing the attack surface related to software are cost effective way to remediate and identify design flaws in software architecture. Threat Modeling, Architecture risk analysis (ARA) and Security Control Design Analysis (SCDA) are very useful techniques in finding and fixing design flaws related to software architecture. Security Control Design Analysis (SCDA) is a light weight approach that can be used to fix the bugs related to software architecture.