Software Architecture
Before we try to understand the term Software Architecture, let us understand what is an Architecture?
Architecture is a process of planning and designing of a complex product. Say an Example for Civil engineers, product may be buildings, dams, bridges etc....
So now You may be able to define “what is a Software Architecture?”. It is a process of planning and designing a software.
For a definition,
Software architecture is the process of defining a structured solution that meets all the technical and operational requirements, while optimizing common quality attributes such as performance, security, and manageability.
Let us see what are the Advantages of Software Architecture?
to make sure that the architecture provides a solid framework for the work undertaken by the designers and implementers.
An important benefit of architecture is that it allows us to reason about the impact of making a change before it is undertaken. An architecture identifies the major components and their interactions, the dependencies between components, and traceability from these components to the requirements that they realize.
Key Architecture Principles
Consider the following key principles when designing your architecture:
Build to change instead of building to last. Consider how the application may need to change over time to address new requirements and challenges, and build in the flexibility to support this.
Model to analyze and reduce risk. Use design tools, modeling systems such as Unified Modeling Language (UML), and visualizations where appropriate to help you capture requirements and architectural and design decisions, and to analyze their impact. However, do not formalize the model to the extent that it suppresses the capability to iterate and adapt the design easily.
Use models and visualizations as a communication and collaboration tool. Efficient communication of the design, the decisions you make, and ongoing changes to the design, is critical to good architecture. Use models, views, and other visualizations of the architecture to communicate and share your design efficiently with all the stakeholders, and to enable rapid communication of changes to the design.
Identify key engineering decisions. Invest in getting these key decisions right the first time so that the design is more flexible and less likely to be broken by changes.
Design Pattern
From the previous section we understood about software architecture. Here we are going to describe about design patterns.
When ever you are planning and designing something, you may get similar kind of difficulties in different project. Here comes the use of Design Pattern.
Definition:- In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design.
A design pattern isn't a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations.
A pattern must explain why a particular situation causes problems, and why the proposed solution is considered a good one. A pattern must also explain when it is applicable.
No comments:
Post a Comment