We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
软件架构 是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。软件架构会包括软件组件,组件之间的关系,组件特性以及组件间的特性。软件架构可以和建筑物架构相比拟。软件架构是构建计算机软件,开发系统以及计划进行的基础(蓝图),可以列出开发团队需要完成的任务。——维基百科
和盖房子一样,对于软件开发来说,最初,设计出软件的总体架构蓝图,思考各个模块之间的关系,实施一系列相关的架构决策。然后,选择软件开发所需要的一系列技术栈、框架等,讨论关于应用的上线、部署等流程问题。最后,才能进入软件的开发阶段。在开发过程中,还需要保证软件的质量,才能设计出符合要求的系统。 开发人员需要怎样的软件架构?我们期望的软件架构,应该是贯穿在它被应用的生命周期里,应该包含:
架构设计不只是一个技术工作,它包含一系列复杂的工作,其范围包括软件工程、开发实践、业务交付等相关领域。为此,在进行架构设计的时候,需要进行一系列技术及非技术相关工作。
对于不同的项目来说,以上步骤都会有所不同,有的可能会忽略一些步骤,有的可能会更细,包含更多的步骤。对于大部分项目来说,技术方案往往都是现成的。所以这个过程中,最重要的事情是收集相关的架构需求,从过往经验、互联网、同事等渠道,获得一些技术方案。整合多个方案或者对方案进行改进。而需求是决定这些架构方案的细节。
架构并非从技术角度考虑问题,它需要从多方的利益出发,在满足利益相关者需求的同时,还要具备技术上的可实施性。所以,我们需要收集一系列资料:
按功能性来区分,需求可以分为功能性需求和非功能性需求。功能性需求定义了一个软件系统或者组件的功能,也是一个系统需提供的功能及服务。而跨功能性需求也是需求的一个重要组成部分,它指的是依靠一些条件判断系统运作的情形或特性,而不是针对系统特定行为的需求。这些非功能性需求一般是隐性的,往往难以直接观察得出。比如:
架构模式也可以认为是架构风格。前端常见的架构风格有:
如果是后端架构,风格会更多。
https://www.opengroup.org/togaf
TOGAF 是一个企业架构标准,分为如下 4个架构域:
在没有足够的时间和精力的情况下,很难建立一个涵盖 4 个架构域的详尽架构描述。此外,还有一套架构开发方法叫作 ADM,用于创建企业级架构。ADM一共分为8个阶段,如图:
不做多余过度设计,只需要考虑好扩展性。因为我们不知道未来的需求会变化成什么样时,预留的设计可能是多余的,也可能会影响系统的后续扩展。相反,如果架构考虑的不够,设计不足会使架构扩展性不强。
开发模式不同,软件架构的设计要求也不同。在瀑布模式下,先设计好系统锁需要的一系列要素,进行软件的建模、详细的架构设计、文档编写,直至设计的工作完成。在敏捷模式下,则是现有架构蓝图,实现对应架构的 PoC(概念验证)。然后再实现的过程中,基于PoC 产生的代码叠加业务代码。接着,在项目试试的过程中,不断地完善应用架构的设计,如软件建模等。
演进式指架构上一些变化,而持续性针对的是开发人员的变化。架构的持续性原则的意图是,敢于修正架构的错误部分。
如果架构上有多个可演进方向,无法做一个合适的决策,那么可以在条件更加充分的时候在做决策,而不是浪费大量的时间盲目地修改架构,那样只会造成资源浪费。——延迟决策。
最初前端是没有架构的,因为只是简单的dom操作。随后发展动态生成HTML、模板分离,前端应用开始变得复杂,诞生出了一些MVC框架,如:Backbone,Knockout 等。
在2009年Node.js 出现之后,前端的软件工程不断地改善:
系统变得越来越复杂,架构在前端的作用也变得越来越重要。MVC满足不了开发人员的足球,于是采用组件化架构,如 组件化+MV*。当我们为了解决跨框架,应用拆分独立,遗留系统迁移等问题时,又出现 微前端架构。
参考资料《前端架构:从入门到微前端》
The text was updated successfully, but these errors were encountered:
No branches or pull requests
什么是软件架构
和盖房子一样,对于软件开发来说,最初,设计出软件的总体架构蓝图,思考各个模块之间的关系,实施一系列相关的架构决策。然后,选择软件开发所需要的一系列技术栈、框架等,讨论关于应用的上线、部署等流程问题。最后,才能进入软件的开发阶段。在开发过程中,还需要保证软件的质量,才能设计出符合要求的系统。
开发人员需要怎样的软件架构?我们期望的软件架构,应该是贯穿在它被应用的生命周期里,应该包含:
架构的设计
架构设计不只是一个技术工作,它包含一系列复杂的工作,其范围包括软件工程、开发实践、业务交付等相关领域。为此,在进行架构设计的时候,需要进行一系列技术及非技术相关工作。
对于不同的项目来说,以上步骤都会有所不同,有的可能会忽略一些步骤,有的可能会更细,包含更多的步骤。对于大部分项目来说,技术方案往往都是现成的。所以这个过程中,最重要的事情是收集相关的架构需求,从过往经验、互联网、同事等渠道,获得一些技术方案。整合多个方案或者对方案进行改进。而需求是决定这些架构方案的细节。
收集架构需求
架构并非从技术角度考虑问题,它需要从多方的利益出发,在满足利益相关者需求的同时,还要具备技术上的可实施性。所以,我们需要收集一系列资料:
按功能性来区分,需求可以分为功能性需求和非功能性需求。功能性需求定义了一个软件系统或者组件的功能,也是一个系统需提供的功能及服务。而跨功能性需求也是需求的一个重要组成部分,它指的是依靠一些条件判断系统运作的情形或特性,而不是针对系统特定行为的需求。这些非功能性需求一般是隐性的,往往难以直接观察得出。比如:
架构模式
架构模式也可以认为是架构风格。前端常见的架构风格有:
如果是后端架构,风格会更多。
架构设计方法
1、架构开发方法:4+1视图法
2、架构开发方法: TOGAF 及 ADM
TOGAF: 开放组体系结构框架 (The Open Group Architecture Framework )
TOGAF 是一个企业架构标准,分为如下 4个架构域:
在没有足够的时间和精力的情况下,很难建立一个涵盖 4 个架构域的详尽架构描述。此外,还有一套架构开发方法叫作 ADM,用于创建企业级架构。ADM一共分为8个阶段,如图:
生成架构的产出物
架构设计原则
适度设计
不做多余过度设计,只需要考虑好扩展性。因为我们不知道未来的需求会变化成什么样时,预留的设计可能是多余的,也可能会影响系统的后续扩展。相反,如果架构考虑的不够,设计不足会使架构扩展性不强。
演进式
开发模式不同,软件架构的设计要求也不同。
在瀑布模式下,先设计好系统锁需要的一系列要素,进行软件的建模、详细的架构设计、文档编写,直至设计的工作完成。
在敏捷模式下,则是现有架构蓝图,实现对应架构的 PoC(概念验证)。然后再实现的过程中,基于PoC 产生的代码叠加业务代码。接着,在项目试试的过程中,不断地完善应用架构的设计,如软件建模等。
持续性
演进式指架构上一些变化,而持续性针对的是开发人员的变化。架构的持续性原则的意图是,敢于修正架构的错误部分。
如果架构上有多个可演进方向,无法做一个合适的决策,那么可以在条件更加充分的时候在做决策,而不是浪费大量的时间盲目地修改架构,那样只会造成资源浪费。——延迟决策。
前端架构发展史
最初前端是没有架构的,因为只是简单的dom操作。随后发展动态生成HTML、模板分离,前端应用开始变得复杂,诞生出了一些MVC框架,如:Backbone,Knockout 等。
在2009年Node.js 出现之后,前端的软件工程不断地改善:
系统变得越来越复杂,架构在前端的作用也变得越来越重要。MVC满足不了开发人员的足球,于是采用组件化架构,如 组件化+MV*。当我们为了解决跨框架,应用拆分独立,遗留系统迁移等问题时,又出现 微前端架构。
前端架构设计:层次设计
参考资料《前端架构:从入门到微前端》
The text was updated successfully, but these errors were encountered: