Software Architecture Introduction
- In the term of software engineering, the concept of software architecture is like to build the architecture or structure of the software.
- It should describe the major component of the software architecture their structure and describe how to interface or interact with one another.
- The software architecture and design have contained various contributed factors such as quality attributes, human design different business strategies, IT environments and design.
- A software architecture could not be operational software or nonfunctional decision are cast and the functional requirements are would be separate.
- It also consists of the simple component of an object-oriented class and programming module in the software architecture design.
We can isolate the Software Architecture and Design into two stages. The first is software architecture and the second is software design.
1. Software Architecture
- The software architecture provides the abstraction of the system complexity to a manageable, communications to establish and components among the coordination mechanism. If you define the structure solution of the S.A that should meet all requirements of the technical and operational.
- The organization involves the set of significant decisions to relate the software development and each of the decisions can be considered as the quality of impact, performance, and success in the final product. Some decision is…
- Structure elements and the interface by which the system is composed.
- Among the elements, there is specific behavior.
- The elements of the behavior and structure that are composition into a large system
- Architecture design
- Architecture style
- In which the process of the software architecture the characteristic are converting in to such as scalability, reusability, flexibility, security, and feasibility into a structured solution and should meet the expectations of the business and technology.
- The system of the software architecture depicts the structure and organization systems and also providing the explanations that will show it to behave. The components of the system that is a collection of a specific set of functions and functions. On the other word the process of the software architecture that provides the mechanism of study on which the software can be built.
The definition of the software architecture that is leading ask about the characteristic of the software can also be affected by the design of the software architecture. So there is the big list of a characteristic of the software architecture they which represents the operational requirements that the additions of the technical requirements.
Diagram: Software Architecture
Characteristics of Software Architecture
- In the characteristics of the software architecture which describe the requirements of the software and execution of software in the technical level and operation.
- For example when the owner of the product says that the changing competing of the market and the business model should be quickly adapted. So the software that should be maintainable, modular and extendable. If the urgent business deal with the request that needs to be completed successfully in the time.
- As a software architect, you can note that the low fault, tolerance, reliability, scalability, and performance that are your key characteristics.
- Therefore you can find the full fill list of software characteristics, also known as “quality attributes”
Importance of software architecture
There is the following importance of software architecture…
- The software architecture represents that allows the communication between the developer and stakeholders.
- Make a little and intellectually graspable model.
- The components are integrating with the help of a system model that the component is using for work to gather.
2. Software Design
It is a process to transform the user requirements into some of the suitable form that which the programmer need help in the software coding and implementation.
In software engineering the software design that describes the design plan of the elements of the software or system how they could be fit and works together to fulfill the system requirements. So the software design has contained the following design plan…
- Guiding the implementation task
- Include the complete details of the design
- Arrange the system requirements and also expectations with the marketing, management’s personnel, and customers.
- During the development process act as a blueprint
- Integrating, testing, and coding
Before coming toward the detail design, testing, coding and integration and after the risk analysis, domain analysis and requirements analysis.
Software design Level
There is three software design level.
High-level design
In the first level, the component’s high-level design is a break into a single entity multiple. The architecture design is the concepts of less-abstract view of the subsystem and among the modules are interacting with each other. It only focuses on the components that how the system can implement in the form of modules.
Architecture Design
In the next level of software design, the architecture design is abstract versions of the software. It identifies the many components of the system software that can interact with each other. In this level, the designer has got the proposed domain solution of the idea.
Detailed Design
In the next level of the software design it is dealt with the partial implementation and what the system is seen and sub-system in the previous level. It also contains the more details of the modules and implementation part and define the logical structure of each module and communicates with other module or interface.
Modularization
In which the process of modularization that software system divides them into multiple independent modules and each module should work independently. So various advantages of the modularization in software engineering are given below…
- Easy to maintain the system
- Understand the system should be easily
- As a requirement, a module is used for any time and do necessary to write it again and again.
Cohesion and Coupling
Cohesion:
It defines the degree of inter-dependability within the modules of the elements. The degree of chosen is greater then the design of the program is better. Good software will have high cohesion.
Types of Cohesion
Some types of cohesion are given below…
Logical Cohesion
In logical cohesion, the categorized of the logical elements are put together in the modules as known as logical cohesion.
Temporal Cohesion
In this type when we organize the elements of the module such as they are processed at a time in a similar point. It is known as temporal cohesion.
Communicational cohesion
In this cohesion when we grouped the module elements which work on the same information or data and sequentially execute them as known as communicational cohesion.
Function Cohesion
It is highly excepted and the highest degree of cohesion. In this cohesion, all elements of the module are grouped because their contribution is a single well-defined function and the function can be reused.
Procedural Cohesion
In the process of procedural cohesion when all the elements of the module are group together and which are executed sequentially in the form to perform a task are called procedural cohesion.
Coupling:
- Coupling is defined as that can be applying about many of the things like system (in system engineering), methods means (in object-oriented design) and any kind of organized system that includes the software systems. In other words which extend the system, method, subsystem and the modules that depend on the other. Good software will be low coupling and no coupling is considered to the best.
- Coupling is similar to the cohesion that it defines the level of inter-dependability among the several modules of the program. It tells about what is the level of the module interface and interacts with various modules each other.
Types of Coupling
There are some types of coupling.
Common coupling
Sometimes the multiple modules can be written and read the global data then it is called global or common coupling.
Control coupling
In these coupling, it is used to control the information by passing the communication as known as a control coupling. If the arguments indicate the different behavior is bad and good arguments if allow the factoring. For example sort of function.
Content coupling
In the content coupling, there are two modules are used. If one module is modification the data and a second module that control flow from one nodule to second modules and it is the worst form of coupling and should be avoided.
Data coupling
In the data coupling that is the dependency is occurred B/w the modules they should be based on the communicating bypassing the data is called a data coupling. If the component of the coupling is independent and communicate through the data to each other and the module does not contain the tramp data to communication. For example the billing system for the customer.
Stamp coupling
In these coupling process when the multiple modules can be passed the complete details of the data structure from one module to another module and it involves the tramp data.
Diagram: Coupling
Antipatterns