1. 业奇农业网 > 百科 >

1、软件架构有什么?我们目前的软件开发架构是基于什么的?2、资源分类有哪些?

软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。组件的外部可见属性是指其他组件对该组件所做的假设。

1、软件架构有什么?我们目前的软件开发架构是基于什么的?2、资源分类有哪些?

软件架构设计就是从宏观上说明一套软件系统的组成与特性。

软件架构设计是一系列有层次的决策,比如:功能与展现的决策;技术架构的决策;自主研发还是合作;商业软件还是开源软件。

业务需求层出不穷;软件系统越来越复杂;参与的人越来越多;共性和特殊性的问题越来越多;技术发展日异月新。

分类描述1解决方案架构师与客户探讨业务需求,将业务、市场,与技术、产品结合起来,为客户提供解决他们需求的方案。2系统架构师也称应用架构师。最终确认和评估系统需求,并将业务转换为技术,为研发人员制订核心框架与技术规范为研发工作澄清技术细节并扫清技术障碍。3平台架构师这里的平台其实包括两个平台,一个是系统平台,也就是负责搭建多个系统整合的系统应用平台;另外一个其实是基础平台,是专门负责搭建基础技术平台;两者其实区别蛮大,也经常容易被从业人员混乱。举个简单例子,金蝶有平台架构师一职,但是金蝶BOSS应用和金蝶中间件两者招聘的对象和技术要求是截然不同的。4业务架构师业务架构其实已经开始脱离技术层面了,但是它要求架构师有跨越多系统的大局观,去整合和组织不同系统的技术平台与交互模式。其实这个职位的未来也就是CIO了。5网络架构师过去,我们可能听的最多的是网络工程师。不错,一个优秀的网络架构师必须有足够的网络技术基底,并且它的关注点也是系统的基础架构。比如说如果搭建并优化集群环境,如果构建基于云计算的系统应用与部署等等。它对于像淘宝、腾讯这样的互联网公司是极其重要的。6移动架构师移动互联网的迅猛发展横向和纵向都细分出了很多新的职责和岗位,移动架构师的职责和作用日益重要,既要整体和全局考虑整个前后端的软件系统架构,又要重点深入移动客户端的架构设计的方方面面,既要有跨平台思维,又要拿捏好原生和混合开发的尺度,另外移动应用的特点,导致移动架构师必须要比传统系统架构师更加注重非功能性的质量属性。7前端架构师这也是移动互联网的迅猛发展而细分出来的新的职责和岗位,这里的前端特指网站开发中的前端,主要考虑前端呈现层的设计(HTML/CSS/JS/AJAX/RIA/?),跨浏览器设计等等。

2006年8月底,我有幸参加了一个架构师培训,通过这个培训,清晰了很多概念,结合自己的知识和经验,对公司软件应用系统的架构设计有了很多想法,特撰写本文档,把自己学得的系统架构知识和自己的思考与大家共享,希望对公司设计人员进行设计工作时有所帮助。本文中很多内容都是我个人的观点,我个人技术的深度和广度也不够,肯定会有不少不太严谨的地方。

1. 系统架构知识

1.1. 什么是企业应用

很难给出一个精确定义,不过企业应用一般都有这些特点:

持久化数据

大量的数据

很多人同时访问数据

大量操作数据的用户界面

通常要与散布在企业周围的其他企业应用集成

所以,企业应用一般都比较复杂,架构设计大多都是针对企业应用的。

1.2. 什么是系统架构

“架构”用很多种不同的定义,这些定义很难统一,但基本上有两点都能统一:1)架构是层次的分解 2)架构是系统中不易改变的决定。

而通过这次架构培训,我这么定义架构:从核心概念上讲,架构是一套构建系统的规则;从表象上看,软件架构是一套模板,以文档、代码、工具程序等方式表现。(其他更多的软件架构的概念描述,请查看8月24日发的邮件――《软件架构基础知识.doc》)

软件架构的成果是一套模板,这套模板会通过一种方式去组织,这个组织形式也很重要,应该从不同视角去表现,以适合不同人去理解和应用。

1.3. 系统架构设计师干什么

根据系统架构的定义,系统架构师的职责当然是制定软件系统构建规则,不过一般认为,系统架构师的主要职责有:

1) 负责领导和协调整个项目中的技术活动

2) 在个人综合素养方面,系统构架师应该具有领导才能,能够在压力下作出关键性的决策并善始善终;

3) 能够赢得项目经理、客户、用户群体以及管理团队的认同和尊敬,尤其要善于和项目经理紧密协作;

4) 在各个方面都能展现出面向目标的实干作风。在专业技能方面,与其他角色相比,系统构架师通常具有全方位的技能,其见解重在广度,而不是深度。

5) 系统构架师不仅需要具备设计师的各项技能,而且应该具有问题领域和软件工程领域的实践经验,从而有能力在无法获得完整信息的情况下迅速领会问题并根据经验作出审慎的判断。

6) 如果项目较大,系统构架师将是一个团队,上述的关键素质要求可由团队成员来分担,但其中要有一名系统构架师具有足够的权威。

架构师与设计师的职责有所不同,最重要的是架构师工作的关注点是软件系统的全局问题,他是制定软件系统的规则和原则的,对整个软件系统进行规划;设计师相对来说是关注软件系统的局部和具体问题,把架构师的架构设计进行细化。

架构师是由国外引进的一个概念,国外软件开发的几个职位是技术官、架构师、设计师、开发、测试,对应我们公司应该是技术总监、架构师、系统分析员、程序员、测试人员。

1.4. 常用架构设计模式

很多OO设计原则和设计模式同样适用与架构设计,架构中使用这些原则的主要目的是为了使架构具有更好的可维护性和可复用性,并使架构具有稳定性,这些目的也是一个架构的核心价值所在。

模式的定义也不统一,一般是这样的解释,每个模式描述了一个在我们周围不断重复发生的问题以及该问题解决方案的核心。(在古代流传至今的“三十六计”就是三十六个模式,对中国人来说,这可能是让人最容易理解模式概念的一个类比。)使用模式能够减少设计的难度,更能加快设计人员之间交流和沟通。

以下是几个常用的顶层架构设计的模式

1) 分层模式

2) MVC模式

3) 客户/服务器模式

4) 流程处理模式

这些模式的介绍在王玉宝8月24日发的邮件――《软件架构基础知识.doc》中都有清晰的解释,这里不在赘述。

1.5. AOP

AOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编程。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调用者之间的解耦,AOP可以说也是这种目标的一种实现。AOP是近两年比较热门的技术,给我们带来了一个新的视角和软件架构方法。

通过使用AOP技术,可以把分散在多个模块中共同的行为分离出来统一编程,减少重复代码。

AOP和OO、SOA一样,都是架构设计中的重要视角。

1) 基本原理

AOP机制一般都需要开发语言和编译器支持,Java和.C#都支持。实现AOP有不同的方法,常见的方法是利用代理机制,其基本原理是为“其他对象提供一种代理,以控制对这个对象的访问”。

2) 常见使用AOP技术的地方

Authentication 权限验证

Caching 缓存

Context passing 内容传递

Error handling 错误处理

Lazy loading 懒加载

Debugging调试

logging, tracing, profiling and monitoring 记录跟踪 优化 校准

Performance optimization 性能优化

Persistence持久化

Resource pooling 资源池

Synchronization 同步

Transactions 事务

3) AOP也可以用于封装业务逻辑

比如,进销存软件中,更多模块的功能操作都需要重新计算库存,所以可以把库存计算分离出来,用AOP技术偶合到那些功能模块中。

本文由用户上传,如有侵权请联系删除!转转请注明出处:https://nongye.s666.cn/bk/6_6571878609.html