软件架构的认识

这学期学习学习软件架构,对架构的概念还不是很了解。刚开始以为架构就是项目的框架、结构,这样概括其实是不全面的。架构不仅是结构,架构的产生源于人与人之间的合作交流,每个人的能力、时间和精力都是有限,但是他们要完成的项目却是复杂、精确的,这就要求从架构的角度来提高项目的质量,提高个人的时间效率。因此架构对提高生产力是有帮助的,可以缩短项目的时间,并会提高项目的质量。事实上项目的架构就是在长期进行这些活动后,积累下来的实践。可以说架构是人类发展过程中,由懵懵懂懂的,被动的去认识这个世界,变成主动的去认识,并以更高的效率去改造这个世界的方法。

架构准确的定义就是:根据要解决的问题,对目标系统的边界进行界定。并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。并对这些切分出来的部分,设立沟通机制。使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。

软件架构是架构的一个分支,它有架构的一切的特点。谈软件架构就必须先明白软件的本质和意义:就是通过把人类的日常工作生活虚拟化,减少成本,提升单个人员的生产力,提升人类自己的利益。因此软件架构出现是一开始懵懵懂懂的写软件,后来慢慢的就有意识的去切分,演变成了不同的架构。这个背后的动力也是一样的,就是提升参与的人的利益,降低成本。软件架构有两个要素:1 是一个软件系统从整体到部分的最高层次的划分。2 一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。我们在做架构时一定要明白两个问题,即这是谁的问题?有什么问题?

我们使用软件架构要解决软件的两个问题:1 业务问题。即在具体的现实生活状态下,没有软件的时候,所解决的问题的主体是谁,解决的是什么问题,是如何解决,如何运作的? 2 计算机问题。如何把现实生活用软件来模拟?模拟出来的软件,需要哪些硬件设施才能够满足要求? 并且当访问量越来越大的时候,软件能否支持硬件慢慢长大,性能线性扩展?因为硬件是可能会失效的,软件如何在硬件失效的情况下,仍然能够保证可用性,让用户能够不中断的访问软件提供的服务?怎么收集软件产生的数据,为下一阶段的工作提供依据?当我们完全了解这两个问题时,我们就可以设计出相应的架构。

使用软件架构必须要达到一下目标:1 可靠性。用户对软件系统的依赖是非常高的,因此必须保证软件可靠,稳定。 2 安全性。软件系统的安全至关重要,特别是一些商业系统。3 可伸缩性。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。4 可定制化。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。5 可扩展性。软件系统在一定程度上是开放的,允许导入新技术,从而对现有系统进行功能和性能的扩展 。 6可维护性。系统必须易于修改,更新。维护不必花大量的时间和财力。

 

时间: 2024-11-03 13:13:21

软件架构的认识的相关文章

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