软件⼯程----------5种软件架构体系简介
⼏种架构的优缺点及举例
1. Data-Centered(以数据为驱动的体系架构)
优点:(1)数据共享;(2)可以便捷的收集,操作,保存,管理⼤量的数据;(3)具有很强的成长特性,也就是数据易扩展,易修改。(4)客户端能够很容易的与数据中⼼进⾏交流。
缺点:(1)这样的模式⽐较固定和死板,若是某⼀环节出现问题,不易察觉到错误所在。
例⼦:Windows系统的注册表。我们知道,最开始的管理⽅法是软件硬件的配置信息都保存在.ini⽂件中,这些⽂件分散在系统的各个磁盘,很难对其进⾏统⼀的维护。为此才引⼊了注册表的思维,将所有的.ini⽂件都⼏种在⼀起,形成⼀个整体,他们是共享的,注册表⾥⾯存在着系统所有硬件和软件的配置信息,如启动信息,⽤户,驱动程序,应⽤程序等关键性的信息,注册表⾥有什么样的信息,软件和硬件就会有什么样的权限或者说⾏为,这样我们就可以达到对系统整体把握的⼀个⽬的。
2. Data-Flow(数据流的架构)
优点:(1)结构清晰,我们可以清楚的认知每⼀个过滤器当中的数据变化。(2)每⼀个过滤器都是独⽴的,不容易受到外界的破坏。
缺点:(1)正是因为因为每⼀个过滤器都是独⽴的,虽然他们单独的每⼀个都不容易受到破坏,可是⼀旦有⼀个受到破坏,整个系统就会受到影响,并且需要耗费⼤量的⼯程才有可能会修复。(2)不够灵活,改造型极低。可以说是牵⼀发⽽动全⾝。(3)前⼀步是后⼀步的基础,也就是说如果前⼀步不完成,后⼀步永远执⾏不了,这就是所有顺序结构的弊端。
例⼦:(1)批处理:批处理强调数据的完整性,过程没有交互。每⼀步都是⼀个独⽴的程序,每⼀步之间通过数据传输来进⾏交互,后⼀步必须在前⼀步完成时才能开始。(2)管道过滤器:管道过滤强调数据的转换,输出的数据项相较于输出的数据范围,可能增加也可能减少,过程可交互。管道过滤器分为两个部分,过滤器和管道。过滤器负责数据的处理,管道负责数据的传输。
3. Call and Return(调⽤返回架构)
优点:(1)可以减少程序的冗余性,他将复杂的系统化整为零,分成⼀个⼀个的⼦系统,这样就有效的降低了代码的复杂度。(2)正是因为它从⼀个⼤系统分成了若⼲个⼦系统,降低了他的耦合性,增加了内聚性,这样的系统总是容易修改,修改这部分的,并不会影响那部分的。(3)往往这样的体系架构执⾏程序都只会调⽤单线程,对于系统资源是⼀种极⼤地节约。(4)层次结构更加清晰。
缺点:(1)在这样的体系架构中,会有全局变量⼀说,也就是所有的程序都能够调⽤的变量,这样就使得安全性受到了⼀定得威胁。
例⼦:调⽤返回最明显的例⼦就是主程序和⼦程序了,这个不再赘述。
4. Object-Oriented(⾯向对象架构)
优点:每个对象架构的功能⾮常明确,也可以指定给每个对象架构特定的功能模块,这样分⼯明确。并且安全性较⾼,相当于每个模块掌控⼀个功能,不⾄于说⼀个模块坏掉,整个系统随之⽡解。
缺点:这样⼀来,每个对象架构的模块之间交互成了⼀个问题,因为设计的不好,安全性就不好,要想保持安全性⼜不影响各个模块之间的交互实际上是⽐较难的。
例⼦:这个例⼦可就太多了,⽐如说⾯向对象的编程思想,其实我们现在的⽹站开发,软件开发,很多很多都是按照⼀种⾯向对象的思维模式。
5. Layered(层次结构)
开发网站需要什么软件优点:(1)结构简单,容易理解和开发。(2)不同技能的程序员可以分⼯,负责不同的层,因为每⼀层之间实际上是没有什么影响的。符合⼤部分软件公司的组织架构。(3)每⼀层都可以独⽴测试,其它层的接⼝通过模拟解决。
缺点:(1)⼀旦环境变化,需要代码调整或者增加功能时,⽐较⿇烦和费时。(2)部署⽐较⿇烦,
即使只修改⼀个⼩的地⽅,往往整个软件需要重新部署,不容易做持续发布。(3)软件升级的时候,可能需要暂停服务。(4)扩展性⽐较差,⽤户请求⼤量增加时,必须依次扩展每⼀层,由于每⼀层的内部是耦合的,扩展会很⿇烦。
例⼦:层次结构最⼤的例⼦就是JAVA EE,Java EE所使⽤的体系结构就是分层结构,早期的结构就分为视图层,业务层,持久层(数据库层)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论