什么是软件架构

  软件应用架构是一个机构化解决方案,它包含了一组关于如何组织软件系统的重要决策,这些决策包括:

  如何选择构成系统的结构化元素和接口以及他们之间互相协作行为;

  如何将这些结构化或者行为性元素进行组合以构成一个更大的子系统;

  如何采用一种架构风格用以指导整个组织过程;

软件架构还综合考虑了功能性、易用性、弹性、性能、重要性、可理解性、经济性以及技术约束、权衡和美观等方面。

  架构的目标:

  1、展示系统的结构但是隐藏实现细节

  2、意识到所有用例和应用场景

  3、力求顾及各参与者的需求

  4、处理功能和质量的需求

  创建架构设计的时候应考虑的问题:

  1、架构中哪些基础部分会在决策错误的时候导致巨大的风险

  2、架构中哪些部分最容易改变,或是哪些部分的设计可以稍微延迟一点但没什么影响?

  3、您的关键假设是哪些?如何测试他们?

  4、什么情况下需要您重构设计?

  

  架构的关键设计原则:

  1、考虑变化而不是一步到位

  2、使用模型来分析和减少风险

  3、使用建模和可视化作为沟通和合作的工具

  4、找出关键的工程决策

时间: 2024-08-26 13:30:12

什么是软件架构的相关文章

SoC嵌入式软件架构设计之四 :内存空间规划分配

本文继续阐述基于低端控制器CPU的SoC固件架构设计.第一节 SoC嵌入式软件架构设计之一:系统内存需求评估 讲述了系统内存需求的评估.这一节讲述内存空间的具体规划分配.CPU有两种体系结构:哈佛结构和冯诺依曼结构.哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,如80251,代码空间与数据空间完全分开,独立编址:冯诺依曼结构是一种将程序指令存储器和数据存储器合并在一起的存储器结构,如MIPS,ARM等,其代码和数据空间是统一编址.这里就以冯诺依曼体系结构为例. 一.嵌入式系统软件分层

软件架构(一) 软件架构

本文主要阐述什么是软件架构.软件架构的重要性.什么时候软件架构尤其重要.什么是推定架构以及软件架构的三种使用方式. 1.什么是软件架构? 架构与详细设计 软件系统的设计由开发者的决策与意图组成.设计可以被划分为软件架构和详细设计. 专家们一致认同架构的主干,但是在细枝末节上却存在分歧,比如何时终止架构的设计而开始详细的设计. 在实践中,也很难将架构和详细设计区分开来. 卡内基·梅隆大学软件工程研究所(SEI)对软件架构的定义: 计算系统的软件架构时解释该系统所需的结构体的集合,其中包括:软件元素

软件架构设计的目的

软件架构设计的目的简单说就是在保持软件内在联系的前提下,分解软件系统,降低软件系统开发的复杂性,而分解软件系统的基本方法无外乎分层和分割.但是在保持软件内在联系的前提下,如何分层分割系统,分层分割到什么样的粒度,并不是一件容易的事,这方面有各种各样的分解方法,比如:关注点分离,面向方面,面向对象,面向接口,面向服务,依赖注入,以及各种各样的设计原则等, 耦合可以分为以下几种,它们之间的耦合度由高到低排列如下: (1) 内容耦合:一个模块直接访问另一模块的内容,则称这两个模块为内容耦合. 若在程序

软件架构设计系列总结

架构引用维基百科:软件体系结构是构建计算机软件实践的基础.与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础.从和目的.主题.材料和结构的联系上来说,软件架构可以和建筑物的架构相比拟.一个软件架构师需要有广泛的软件理论知识和相应的经验来实施和管理软件产品的高级设计.软件架构师定义和设计软件的模块化,模块之间的交互,用户界面风格,对外接口方法,创新的设计特性,以及高层事物的对象操作.逻辑和流程.软件

SoC嵌入式软件架构设计之三:代码分块(Bank)设计原则

上一节讲述了在没有MMU的CPU(如80251.MIPS M控制器系列.ARM cortex m系列)上实现虚拟内存管理的集成硬件设计方法,新设计的内存管理管理单元要实现虚拟内存管理还需要操作系统.代码分块(Bank)的支持,详见SoC嵌入式软件架构设计之二:没有MMU的CPU实现虚拟内存管理的设计方法.这里要阐述Bank设计的一些原则. Bank设计是为了实现不同时刻运行的Bank(代码块)运行在同一块内存上,所以在运行之前操作系统需要将已存在内存的代码/数据进行缓存处理,并加载将要运行的Ba

我的路子 - 发现游戏为模型的软件架构方式

总觉得如果一个内容被深刻地理解了,那么当在他口中说出来的时候,应该是很简单才对. 所以一直觉得,编程里那些不容易理解的,需要记住很多内容的东西都是有缺陷的.自己又比较自我认可强,看不到别人的角度,表现上有些自我.自己想的只是,事情还有很多解决方法,为什么要被那一种很难学的方式占了路子,而且找不到理解透彻的,有点为这种状况气愤,觉得肯定是没有好好做的原因,或者是一些人太安于现状的原因,或者是一些找不到出路就说没出路的人,自己没吃透却站在高处误导别人,阻碍大部分人的进一步思考. 即使这样,自己该做的

软件架构怎样进行架构

软件架构师一般都是具备计算机科学或软件工程的知识,由程序员做起,然后再慢慢发展为架构师的.在国内,很多大学目前还没有设立软件架构的学位课程,虽然IT业界对设计和架构的兴趣日渐高涨,但各学校还是无法在课程中增加相应的内容来体现这一趋势.从这个方面来说,学校教育已经远远落后于产业发展.因此,促进和发展软件架构学课程的任务将落在现在的软件架构师身上.目前的软件架构师应该帮助各大院校建立相关课程体系,一旦教育课程建立起来,知识体将不仅通过新毕业生的工作成果来得到扩展,同时也会从适合软件架构的教育研究和出

软件架构实践读后感第一篇

在读书之前,我对架构有一些自己的猜想.听说的最多的框架就是SSH,上网查过这三个字母的全称,但还没深入探究.不过在言语之间猜测,这框架应该是类的封装吧.在完成大作业的时候,连接数据库的部分不管封装的多或少,总之我是没有再因为用到多的对象而更改JavaBean,而是直接在JSP中继续写了.想到这里,觉得封装一个自己常用的数据库连接文件还是很方便的. 本书的开头是一个瑞典造战舰的例子,最后一句话为:"出师未捷身先死"的情况不再像过去那样令人钦佩了.过去经验不多,全靠先人探索和犯错来获取经验

软件架构分类(转载)

思维导图: 作者:阮一峰(以下内容) 日期:2016年9月 3日 软件架构(software architecture)就是软件的基本结构. 合适的架构是软件成功的最重要因素之一.大型软件公司通常有专门的架构师职位(architect),只有资深程序员才可以担任. O'Reilly 出版过一本免费的小册子<Software Architecture Patterns>(PDF), 介绍了五种最常见的软件架构,是非常好的入门读物.我读后受益匪浅,下面就是我的笔记. 一.分层架构 分层架构(lay

Atitit 软件架构方法的进化与演进cs bs soa roa &#160;msa&#160; attilax总结

Atitit 软件架构方法的进化与演进cs bs soa roa  msa  attilax总结 1.1. 软件体系架构是沿着单机到 CS 架构,再到 BS 的三层架构甚至多层架构逐步发展过来的,关于多层架构 1 1.2. 主进化路线Cs>> bs >>  SOA>>MSA(微服务架构1 1.3. 1 1.4. 面向资源体系架构(ROA)1 1.4.1. 管道和过滤器风格(数据流风格)2 1.5. 数据抽象与面向对象风格(调用/返回风格)2 1.6. 基于事件的隐式调用