软件架构的认识
2016-04-28 16:35
357 查看
这学期学习学习软件架构,对架构的概念还不是很了解。刚开始以为架构就是项目的框架、结构,这样概括其实是不全面的。架构不仅是结构,架构的产生源于人与人之间的合作交流,每个人的能力、时间和精力都是有限,但是他们要完成的项目却是复杂、精确的,这就要求从架构的角度来提高项目的质量,提高个人的时间效率。因此架构对提高生产力是有帮助的,可以缩短项目的时间,并会提高项目的质量。事实上项目的架构就是在长期进行这些活动后,积累下来的实践。可以说架构是人类发展过程中,由懵懵懂懂的,被动的去认识这个世界,变成主动的去认识,并以更高的效率去改造这个世界的方法。
架构准确的定义就是:根据要解决的问题,对目标系统的边界进行界定。并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。并对这些切分出来的部分,设立沟通机制。使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。
软件架构是架构的一个分支,它有架构的一切的特点。谈软件架构就必须先明白软件的本质和意义:就是通过把人类的日常工作生活虚拟化,减少成本,提升单个人员的生产力,提升人类自己的利益。因此软件架构出现是一开始懵懵懂懂的写软件,后来慢慢的就有意识的去切分,演变成了不同的架构。这个背后的动力也是一样的,就是提升参与的人的利益,降低成本。软件架构有两个要素:1 是一个软件系统从整体到部分的最高层次的划分。2 一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。我们在做架构时一定要明白两个问题,即这是谁的问题?有什么问题?
我们使用软件架构要解决软件的两个问题:1 业务问题。即在具体的现实生活状态下,没有软件的时候,所解决的问题的主体是谁,解决的是什么问题,是如何解决,如何运作的? 2 计算机问题。如何把现实生活用软件来模拟?模拟出来的软件,需要哪些硬件设施才能够满足要求? 并且当访问量越来越大的时候,软件能否支持硬件慢慢长大,性能线性扩展?因为硬件是可能会失效的,软件如何在硬件失效的情况下,仍然能够保证可用性,让用户能够不中断的访问软件提供的服务?怎么收集软件产生的数据,为下一阶段的工作提供依据?当我们完全了解这两个问题时,我们就可以设计出相应的架构。
使用软件架构必须要达到一下目标:1 可靠性。用户对软件系统的依赖是非常高的,因此必须保证软件可靠,稳定。 2 安全性。软件系统的安全至关重要,特别是一些商业系统。3 可伸缩性。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。4 可定制化。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。5 可扩展性。软件系统在一定程度上是开放的,允许导入新技术,从而对现有系统进行功能和性能的扩展 。 6可维护性。系统必须易于修改,更新。维护不必花大量的时间和财力。
架构准确的定义就是:根据要解决的问题,对目标系统的边界进行界定。并对目标系统按某个原则的进行切分。切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间。并对这些切分出来的部分,设立沟通机制。使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作。
软件架构是架构的一个分支,它有架构的一切的特点。谈软件架构就必须先明白软件的本质和意义:就是通过把人类的日常工作生活虚拟化,减少成本,提升单个人员的生产力,提升人类自己的利益。因此软件架构出现是一开始懵懵懂懂的写软件,后来慢慢的就有意识的去切分,演变成了不同的架构。这个背后的动力也是一样的,就是提升参与的人的利益,降低成本。软件架构有两个要素:1 是一个软件系统从整体到部分的最高层次的划分。2 一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。我们在做架构时一定要明白两个问题,即这是谁的问题?有什么问题?
我们使用软件架构要解决软件的两个问题:1 业务问题。即在具体的现实生活状态下,没有软件的时候,所解决的问题的主体是谁,解决的是什么问题,是如何解决,如何运作的? 2 计算机问题。如何把现实生活用软件来模拟?模拟出来的软件,需要哪些硬件设施才能够满足要求? 并且当访问量越来越大的时候,软件能否支持硬件慢慢长大,性能线性扩展?因为硬件是可能会失效的,软件如何在硬件失效的情况下,仍然能够保证可用性,让用户能够不中断的访问软件提供的服务?怎么收集软件产生的数据,为下一阶段的工作提供依据?当我们完全了解这两个问题时,我们就可以设计出相应的架构。
使用软件架构必须要达到一下目标:1 可靠性。用户对软件系统的依赖是非常高的,因此必须保证软件可靠,稳定。 2 安全性。软件系统的安全至关重要,特别是一些商业系统。3 可伸缩性。软件必须能够在用户的使用率、用户的数目增加很快的情况下,保持合理的性能。只有这样,才能适应用户的市场扩展得可能性。4 可定制化。同样的一套软件,可以根据客户群的不同和市场需求的变化进行调整。5 可扩展性。软件系统在一定程度上是开放的,允许导入新技术,从而对现有系统进行功能和性能的扩展 。 6可维护性。系统必须易于修改,更新。维护不必花大量的时间和财力。
相关文章推荐
- Yahoo!团队:网站性能优化的35条黄金守则
- 几大知名流量统计网站的统计脚本中相继植入广告代码的现象,严重影响上网体验
- 编程网站收集
- 资源网站
- 《大型网站技术核心原理与案例分析》读书笔记
- 为何网站首页排名总是比内页排名好
- 购物网站流程图(收藏)
- MVPC架构项目
- MVC模式中业务抽离的方法
- iPad登录网站,隐藏上传文档按钮
- 反射,架构实现利器
- MVC架构学习之EasyFirst——快点夸我爱学习~
- 架构设计:系统间通信(27)——其他消息中间件及场景应用(上)
- X86架构IO端口表
- mysql主从复制及高可用
- 分布式服务架构之java远程调用技术浅析
- 提升网站性能的35条建议
- 用CSS开启硬件加速来提高网站性能
- 一些IT行业可能需要用到的网站(随时更新)
- Java应用架构的演化之路