软件架构(一)

软件体系架构

是什么,为什么,怎么样,经典的三段论,同样适用软件的体系架构

软件体系架构:

首先要根据实际要解决的问题,对目标系统的边界进行明确的界定。

其次,选择适合系统,适合实际情况的原则,根据具体的原则,进行系统的划分,正所谓没有规矩不成方圆。

然后,系统按照某原则划分以后,变得零散,需要建立一定的沟通机制。

最后,根据沟通机制,有机的对各个部分进行组合,完成目标系统的各项工作。

简而言之,就是一个跟据原则,机制对系统进行,化整为零,化零为整的一个过程。其中,渗透的原则,机制就是架构的价值所在。

为什么要有软件的体系架构呢?

在进行软件的创造过程当中,由于人力,物力,时间等种种因素的制约,会产生各种意料之中和意料之外的状况,为了更好的解决处理这些状况,就需要一定的规范和准则来进行对工作的辅助,所以,软件体系架构就有了它存在的必要性。

软件架构又有什么分类呢?

决策派&组成派

组成派:

软件系统的架构将系统描述为计算机组建及组件之间的交互

特点:

1、关注构架实践中的客体----软件,以软件本身为描述对象。

2、分析了软件的组成,即由承担不同计算任务的组件组成,这些组件通过相互交互完成更高层次的计算任务。

决策派:

软件构架包含了关于以下问题的重要决策:软件系统的组织;组成系统的结构元素及其接口,这些元素相互协作时所体现的行为;如何组织这些元素,使它们合成更大的系统;用于指导这个系统组织的构架风格。

特点:

1、关注构架实践中的主体----人,以人的决策为描述对象。

2、归纳了构架决策的类型,指出构架决策不仅包括关于软件系统的组织、元素、子系统和构架风格等几类决策,还包括关于众多非功能需求决策。

那么,有了对架构最基本的了解,下面最应该做什么呢?

理解!

因为现实中存在着各种各样不可预知,抑或意料之外的事情,我们能做到的就是先接受并理解,然后再能按照自己的思路去解决。所以,必要的理解能力是应该具备的。

此外,事情往往不全是具体形象的,遇到抽象的问题更需要全面具体的理解,当需要你做出抽象的概括或者总结时,前提条件就是对某事物应具有充分的理解。

缺少良好的理解能力,必然导致结果的以偏概全,即,所体现的软件架构就失去了它所应该的正确性,失去正确性的软件架构也就失去了它存在的必要性。

时间: 2024-08-10 15:10:08

软件架构(一)的相关文章

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. 基于事件的隐式调用