知识库 知识库
首页
  • Hyperskill - Java

    • Java basic
    • Java OOP
    • 应知
    • 扩展
    • IO & Stream
    • Error & Exception
    • Algorithm & Data structure
    • Design pattern
    • Web
    • Spring boot
  • 练习题

    • 选择题 & 填空题
    • 代码题
  • Frank - Java与生活 (OOP)

    • 参考资料
    • Java基础
    • OOP上半部分
    • OOP下半部分
  • Frank - Java API进阶

    • Base API
    • Unit Test and main function
  • 学习笔记
  • 学习笔记

    • 数据库
  • Frank - MySQL删库跑路

    • 安装、连接、配置
    • 基本操作——数据库
    • 基本操作——表
    • 基本操作——数据
    • 数据类型
    • 列属性完整性
    • 数据库设计思维
    • 单表查询
    • 多表查询
  • 学习笔记

    • 其它
  • Frank - Linux现代方法

    • 必知
    • 命令
    • 技巧
  • 技术文档
  • Git
  • GitHub技巧
  • 前端
  • Khan Academy - 语法
  • Monthly
  • 阅读
  • Others
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 标签
  • 归档
GitHub (opens new window)

Jim FuckPPT

Java小学生
首页
  • Hyperskill - Java

    • Java basic
    • Java OOP
    • 应知
    • 扩展
    • IO & Stream
    • Error & Exception
    • Algorithm & Data structure
    • Design pattern
    • Web
    • Spring boot
  • 练习题

    • 选择题 & 填空题
    • 代码题
  • Frank - Java与生活 (OOP)

    • 参考资料
    • Java基础
    • OOP上半部分
    • OOP下半部分
  • Frank - Java API进阶

    • Base API
    • Unit Test and main function
  • 学习笔记
  • 学习笔记

    • 数据库
  • Frank - MySQL删库跑路

    • 安装、连接、配置
    • 基本操作——数据库
    • 基本操作——表
    • 基本操作——数据
    • 数据类型
    • 列属性完整性
    • 数据库设计思维
    • 单表查询
    • 多表查询
  • 学习笔记

    • 其它
  • Frank - Linux现代方法

    • 必知
    • 命令
    • 技巧
  • 技术文档
  • Git
  • GitHub技巧
  • 前端
  • Khan Academy - 语法
  • Monthly
  • 阅读
  • Others
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 标签
  • 归档
GitHub (opens new window)
  • Hyperskill - Java

    • Java basic

    • Java OOP

    • 应知

    • 扩展

      • Theory:Units of information
      • Theory:IDE
      • Theory:IDEA
      • Theory:Build tools
      • Theory:Operating systems
      • Theory:Gradle basics
      • Theory:Basic project with Gradle
      • Theory:Building apps using Gradle
      • Theory:Dependency management
      • Theory:Formatted output
      • Theory:Libraries
      • Theory:Frameworks
      • Theory:Modules
      • Theory:Introduction to software architecture
        • What is software architecture?
        • Why would you need software architecture?
        • Types of software architecture
        • Conclusion
      • Theory:Class Diagrams
      • Theory:Text blocks
      • Theory:YAML
      • Theory:XML
      • Theory:JSON
    • IO & Stream

    • Error & Exception

    • Algorithm & Data structure

    • Design pattern

    • Web

    • Spring boot

  • 练习题

  • Frank - Java与生活

  • Frank - Java API进阶

  • 学习笔记

  • Java
  • Hyperskill - Java
  • 扩展
Jim
2022-07-18
目录

Theory:Introduction to software architecture

At the beginning of a development cycle for a complex application that combines multiple components, you may notice that you need to have a proper structure that represents all interactions happening within. Software architecture is the term that defines such a structure. It helps understand the relationships between each major system component and simultaneously provides the necessary documentation for developers and clients.

Every project that combines multiple different components has to have a clear software architecture to define technical and structural requirements for the system. It allows reducing any possible risks when creating a project. If you need to complete your project and establish communications within a team in a short amount of time, you need to master software architecture.

# What is software architecture?

For example, you want to develop a brand new application, that potentially could do whatever you want. What will be the first thing that you’ll do? Your answer should be, "Divide my application into several components, write documentation and draw a scheme of all the connections within it".

Basically, software architecture or SA is a pattern, which describes all inner components of the system and interactions between them. It has spheres of influence which you can classify as Direct and Indirect. By direct influence, you can make any changes to the project itself. Like improvements of security and quality attributes, optimizing project structure, and any influence on used technologies.

Indirect influence means changes to the environment of a project. On a picture down below you can see how the classification goes. SA directly influences Project Structure, IT environment, and Quality Attributes. While indirect influence encompasses Human Dynamics and Business Strategy.

img

# Why would you need software architecture?

When working on a complex project, developers need to understand what they are doing, what they will do next, and what they are supposed to get in the end. An architectural pattern that describes every connection within a system can help developers understand their project and adjust the workflow.

Here's a list of advantages of the software architecture:

  • It describes the system in a simple way without implementation details.
  • It displays all working scenarios.
  • It distinguishes functional and quality requirements.
  • It improves the working and business environment.

If you properly distribute functions between the elements of SA, you could potentially save time for the developers working on implementing new features. Also, it would be easier for the new team members to adjust to the workflow.

Then again, although creating a software architecture can make a real difference, it’s not always treated properly. Thus we experience a shortage of methods to represent SA and a lack of prioritization in making one.

# Types of software architecture

You won't always need to create an absolutely unique software architecture, because there are lots of different pattern types created as optimal solutions to commonly occurring problems. There are few types of patterns like Layered, Primary-Secondary, Peer-to-Peer, etc. You will learn more about them in future topics. To represent any pattern you could use schemes, models, diagrams, and even documents that collect every architectural decision (like Architecture Decision Record (ADR)). Also, you can visualize SA through Unified Modeling Language or UML**.** UML is a visual language that combines different types of diagrams specified for individual purposes.

For a better understanding, here's a list of a few basic types of software architecture:

  • Application architecture – description of patterns required to build an application. This type of architecture provides a team with a roadmap to build a well-structured app.
  • Information architecture – description of the content organization, structure, and labeling in a way that allows users to conveniently access the information they need.
  • Database architecture – a concept that focuses on the design, development, implementation, and maintenance of a database management system (DBMS). Simply put, it's an architecture that describes all the steps needed to realize and support a database and gives proper access to its functions for users and admins.
  • Network architecture – description of a network system's physical and logical design. Basically, it depicts relations between network components and their logical functions.

# Conclusion

Software architecture is a complex concept that combines both the knowledge of IT and a way to represent it. Having a software architecture for a project provides a few benefits, such as written documentation and plans that help developers work toward a common goal. By creating a software architecture, you're potentially saving your time in the future, making sure that your project will have a solid structure at its core.

编辑 (opens new window)
#Programming
上次更新: 2022/09/26, 16:55:15
Theory:Modules
Theory:Class Diagrams

← Theory:Modules Theory:Class Diagrams→

最近更新
01
《挪威的森林》
04-14
02
青钢影
04-14
03
Processing strings
02-18
更多文章>
Theme by Vdoing | Copyright © 2022-2023 Jim Frank | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式