Fundamentals of Software Architecture
02 Dec, 2022
In the world of technology, starting from small children to young people and starting from young to old people everyone using their Smartphones, Laptops, Computers, PDAs etc to solve any simpler or complex task online by using some software programs, there everything looks very simple to user. Also that’s the purpose of a good software to provide good quality of services in a user-friendly environment. There the overall abstraction of any software product makes it looks like simple and very easier for user to use. But in back if we will see building a complex software application includes complex processes which comprises of a number of elements of which coding is a small part.
After gathering of business requirement by a business analyst then developer team starts working on the Software Requirement Specification (SRS), sequentially it undergoes various steps like testing, acceptance, deployment, maintenance etc. Every software development process is carried out by following some sequential steps which comes under this Software Development Life Cycle (SDLC).
In the design phase of Software Development Life Cycle the software architecture is defined and documented. So in this article we will clearly discuss about one of significant element of Software Development Life Cycle (SDLC) i.e the Software Architecture.
Software Architecture :
Software Architecture defines fundamental organization of a system and more simply defines a structured solution. It defines how components of a software system are assembled, their relationship and communication between them. It serves as a blueprint for software application and development basis for developer team.
Software architecture defines a list of things which results in making many things easier in the software development process.
- A software architecture defines structure of a system.
- A software architecture defines behavior of a system.
- A software architecture defines component relationship.
- A software architecture defines communication structure.
- A software architecture balances stakeholder’s needs.
- A software architecture influences team structure.
- A software architecture focuses on significant elements.
- A software architecture captures early design decisions.
Characteristics of Software Architecture :
Architects separate architecture characteristics into broad categories depending upon operation, rarely appearing requirements, structure etc. Below some important characteristics which are commonly considered are explained.
- Operational Architecture Characteristics :
- Availability
- Performance
- Reliability
- Low fault tolerance
- Scalability
- Structural Architecture Characteristics :
- Configurability
- Extensibility
- Supportability
- Portability
- Maintainability
- Cross-Cutting Architecture Characteristics :
- Accessibility
- Security
- Usability
- Privacy
- Feasibility
SOLID principles of Software architecture :
Each character of the word SOLID defines one principle of software architecture. This SOLID principle is followed to avoid product strategy mistakes. A software architecture must adhere to SOLID principle to avoid any architectural or developmental failure.
S.O.L.I.D PRINCIPLE
- Single Responsibility –
Each services should have a single objective. - Open-Closed Principle –
Software modules should be independent and expandable. - Liskov Substitution Principle –
Independent services should be able to communicate and substitute each other. - Interface Segregation Principle –
Software should be divided into such microservices there should not be any redundancies. - Dependency Inversion Principle –
Higher-levels modules should not be depending on low-lower-level modules and changes in higher level will not affect to lower level.
Importance of Software Architecture :
Software architecture comes under design phase of software development life cycle. It is one of initial step of whole software development process. Without software architecture proceeding to software development is like building a house without designing architecture of house.
So software architecture is one of important part of software application development. In technical and developmental aspects point of view below are reasons software architecture are important.
- Selects quality attributes to be optimized for a system.
- Facilitates early prototyping.
- Allows to be built a system in component wise.
- Helps in managing the changes in System.
Besides all these software architecture is also important for many other factors like quality of software, reliability of software, maintainability of software, Supportability of software and performance of software and so on.
Advantages of Software Architecture :
- Provides a solid foundation for software project.
- Helps in providing increased performance.
- Reduces development cost.
Disadvantages of Software Architecture :
- Sometimes getting good tools and standardization becomes a problem for software architecture.
- Initial prediction of success of project based on architecture is not always possible.
From above it’s clear how much important a software architecture for the development of a software application. So a good software architecture is also responsible for delivering a good quality software product.
软件架构的基本原理
02 十二月, 2022
在科技的世界里,从小孩子到年轻人,从年轻人到老年人,每个人都在使用他们的智能手机、笔记本电脑、电脑、PDA等,通过使用一些软件程序在网上解决任何比较简单或复杂的任务,在那里,一切对用户来说都显得非常简单。这也是好软件的目的,即在用户友好的环境中提供良好的服务质量。任何软件产品的整体抽象化使它看起来很简单,用户使用起来也很容易。但在后面,如果我们看到建立一个复杂的软件应用程序包括复杂的过程,其中包括许多元素,而编码只是其中的一小部分。
在业务分析师收集了业务需求后,开发团队开始在[软件需求规范(SRS)](https://www.geeksforgeeks.org/software-requirement-specification-srs-format/)上工作,依次经历各种步骤,如测试、验收、部署、维护等。每一个软件开发过程都是按照一些连续的步骤进行的,这些步骤属于软件开发生命周期(SDLC)。
在软件开发生命周期的设计阶段,软件架构被定义和记录。因此,在这篇文章中,我们将清楚地讨论软件开发生命周期(SDLC)的一个重要元素,即软件架构。
软件体系结构:*
软件架构定义了一个系统的基本组织,更简单地定义了一个结构化的解决方案。它定义了一个软件系统的组件是如何组装的,它们之间的关系和通信。它作为软件应用的蓝图和开发团队的开发基础。
软件架构定义了一系列的事情,使软件开发过程中的许多事情变得更容易。
- 一个软件架构定义了一个系统的结构。
- 一个软件架构定义了系统的行为。
- 一个软件体系结构定义了组件的关系。
- 一个软件架构定义了通信结构。
- 软件架构平衡利益相关者的需求。
- 一个软件架构影响着团队结构。
- 一个软件架构专注于重要的元素。
- 一个软件架构可以捕捉到早期的设计决策。
软件架构的特点:。
架构师根据操作、很少出现的要求、结构等,将架构的特征分为大类。下面解释了一些通常被认为是重要的特征。
- 操作性的架构特点。
- 可用性
- 性能
- 可靠性
- 低容错性
- 可扩展性
- 结构架构特点 :
- 可配置性
- 可扩展性
- 可支持性
- 可移植性
- 可维护性
- 跨领域的架构特征 :
- 可访问性
- 安全性
- 可用性
- 隐私
- 可行性
软件架构的SOLID原则:
SOLID*这个词的每个字符都定义了软件架构的一个原则。遵循这个SOLID原则是为了避免产品策略的错误。一个软件架构必须遵守SOLID原则,以避免任何架构或开发的失败。
S.O.L.I.D原则
- 单一责任 -
每个服务都应该有一个单一的目标。 -
- 开放-封闭原则 -
软件模块应该是独立的和可扩展的。
- 开放-封闭原则 -
- 3.利斯科夫替代原则 -
独立的服务应能相互沟通和替代。 - 4.接口隔离原则--。
软件应该被划分为这样的微服务,不应该有任何冗余。 - 5.依赖反转原则 -*
高层的模块不应该依赖于低层的模块,高层的变化不会影响到低层。
软件架构的重要性:。
软件架构属于软件开发生命周期的设计阶段。它是整个软件开发过程的最初步骤之一。没有软件架构的软件开发就像没有设计房屋的架构就建造房屋一样。
因此,软件架构是软件应用程序开发的一个重要部分。从技术和发展的角度来看,以下是软件架构的重要原因。
- 为系统选择要优化的质量属性。
- 促进早期原型设计。
- 允许以组件的方式建立系统。
- 有助于管理系统的变化。
除了这些,软件架构对许多其他因素也很重要,如软件的质量、软件的可靠性、软件的可维护性、软件的可支持性和软件的性能等等。
软件架构的优点:*
- 为软件项目提供一个坚实的基础。
- 有助于提供更高的性能。
- 减少了开发成本。
软件架构的缺点:*。
- 有时获得好的工具和标准化成为软件架构的一个问题。
- 根据架构初步预测项目的成功并不总是可能的。
从上面可以看出,**软件架构对于一个软件应用程序的开发是多么的重要。因此,一个好的软件架构也负责提供一个高质量的软件产品。
标签:development,软件架构,架构,----,Architecture,architecture,software,Software From: https://www.cnblogs.com/zhuangzhongxu/p/17173049.html