良好的软件体系结构设计有什么好处

良好的软件体系结构设计有什么好处
【良好的软件体系结构设计有什么好处】良好的软件体系结构设计的好处是可以尽早评估项目开发周期中的品质 。架构设计模型的建立,通常是为了明确的确定已满足了这些品质的要求,使开发小组更可能按照需求完成产品的开发 。软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件 。处理构件负责对数据进行加工,数据构件是被加工的信息 , 连接构件把体系结构的不同部分组合连接起来 。这一定义需注重区分处理构件、数据构件和连接构件,这一方法在其他的定义和方法中基本上得到保持 。
三层结构相对二层架构有哪些优点和缺点
在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构 。微软推荐的分层式结构一般分为三层,从下至上分别为:数据访问层、业务逻辑层(又或成为领域层)、表示层. 二、三层结构的优点 1、开发人员可以只关注整个结构中的其中某一层; 2、可以很容易的用新的实现来替换原有层次的实现; 3、可以降低层与层之间的依赖; 4、有利于标准化; 5、利于各层逻辑的复用 。 概括来说 , 分层式设计可以达至如下目的:分散关注、松散耦合、逻辑复用、标准定义 。 一个好的分层式结构,可以使得开发人员的分工更加明确 。一旦定义好各层次之间的接口,负责不同逻辑设计的开发人员就可以分散关注,齐头并进 。例如UI人员只需考虑用户界面的体验与操作,领域的设计人员可以仅关注业务逻辑的设计 , 而数据库设计人员也不必为繁琐的用户交互而头疼了 。每个开发人员的任务得到了确认,开发进度就可以迅速的提高 。 松散耦合的好处是显而易见的 。如果一个系统没有分层 , 那么各自的逻辑都紧紧纠缠在一起,彼此间相互依赖,谁都是不可替换的 。一旦发生改变,则牵一发而动全身,对项目的影响极为严重 。降低层与层间的依赖性,既可以良好地保证未来的可扩展,在复用性上也是优势明显 。每个功能模块一旦定义好统一的接口,就可以被各个模块所调用,而不用为相同的功能进行重复地开发 。 进行好的分层式结构设计,标准也是必不可少的 。只有在一定程度的标准化基础上,这个系统才是可扩展的,可替换的 。而层与层之间的通信也必然保证了接口的标准化 。 三、分层式结构缺陷: 1、降低了系统的性能 。这是不言而喻的 。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成 。 2、有时会导致级联的修改 。这种修改尤其体现在自上而下的方向 。
软件系统总体结构化设计的主要原则
A肯定是不对的 。应该先对系统有个总体的构想,然后再逐渐细化出模块、功能 。没有总体的规划、设计 , 怎么会知道具体的细节呢?
如何理解软件体系结构化设计的重要性和意义
如何理解软件体系结构化设
知道分析结果,探讨的
嵌入式软件架构设计
软件架构设计的几个步骤 1、分析需求和理解业务模型(或领域建模) , 并选定关键Use case 。软件的需求,可以分为从用户视角和开发人员视角来看,从用户的角度看,又可以分为功能性和非功能性需求,我们必须从不同的视角和级别去全面的认识需求并分析需求,理解业务模型 。实践表明,常常被我们忽视的非功能性需求常常会导致整个项目失败 。理解业务需求最好的方式莫过于进行领域建模,领域建模与需求分析往往是交替穿叉进行的,领域建模主要有以下三个方面的作用: ◆探索复杂问题,弄清领域知识 。Martin Fowler曾经说过,他采用面向对象方法最大的好处就是它有助于解决更为复杂的问题 。领域建模本身作为辅助思维的工具,帮助我们将注意力始终保持在最为重要的业务概念及其关系上,使我们能够不断深入地,系统的对需求进行分析和认识 。领域建模往往是一个从模糊到清晰,从零散到系统的过程 。◆决定功能范围 , 影响可扩展性 。任何模型都是对现实世界某种程序的抽象,这种抽象就会忽略某一些东西 , 例如忽略对象的属性和对象间的关系,而这些忽略往往都是带有一定的目的性的,这种忽略就决定了功能的范围 。模型揭示了各种功能背后的结构,如果说定义功能相当于“拍照片”的话,那么领域建模就相当于“做透视”,更加关注问题领域的内在结构,相当于对问题领域进行了一定的抽象,良好的领域模型不仅能很好的支持现有的功能,而且还可以在一定程度上支持未来可能出现的新需求,体现良好的可扩展性 。◆提供交流基础,促进有效沟通 。领域建模通常会使用UML图作为呈现的方式 , 这样为我们的沟通提供了方便 。当然,有时候文字在描述某些特定领域的问题时可能更适合,可以灵活运用 。在我们公司的实际软件开发流程中,往往领域建模缺少这一环节,这可能是在以后的工作中需要进一步提高之处 。虽然我们总是期望架构设计师能全面掌握需求,但由于时间和精力的限制,摆在我们面前的现实就是架构设计师没有时间对所有需求进行深入分析 , 所以我们的策略就是“把好钢用在刀刃上”,即把大部分时间和精力花在对决定架构最重要的关键需求上 。在选择关键需求时要注意:高优先级的需求往往是从用户的角度来看的 , 可能并不是真正的关键需求 。在《RUP实践者指南》一书中向我们讲述了如何确定关键功能需求?A.作为应用程序的核心或实现了系统的主要接口的功能,B.必须被实现的功能,即如果这些功能不被实现,则开发出来的软件就失去了价值,C.覆盖了系统架构的一些方面,但没有被其他重要的Use case覆盖到的功能 。2、分别从各个视角来考虑软件架构的方方面面 。软件的架构设计必须考虑到各方面,根据前期工作确立的领域模型,关键需求,系统约束等进行设计 , 必须从系统用户,开发人员,系统管理员,部署管理员,数据管理员等人员的角度去分析并解决问题 。比如说,如果我们的运行架构采用Cluster方式时,就必须小心Cache和Session等的使用;如果我们的业务逻辑要求我们要操作多个数据库时,就要考虑采用支持二阶段事务提交的方式 。只有将这些方方面面的问题都考虑到了,这样的架构设计才是完整的 。至于每一个视图中 , 我们应该设计到什么细节这一问题,实际上与整个项目的过程定义有关 。例如 , 如果我们有专门安排数据库概要设计的活动,那我们在架构设计的过程中就可以只需要关注更高层次的数据库特性及数据库之间的关系,而每一张表的数据字典可以在后续的相关活动中进行设计 , 但如果没有这样的活动,那我们就要细化到每一张表的每一个栏位,以及表之间的关系 。3、解决技术面的重点问题和难题 在软件架构设计的过程中,我们往往会需要攻克一些技术面的重点问题和难题,这完全是一项极其需要扎实的理论知识和丰富的实践经验支撑的工作 。例如,我们如何提高整个系统的性能?如何能很好的导出极其复杂的“中国式报表”(一般比西方国家产出的报表要复杂很多 , 而且很多开源的BI类的框架并不能完全解决问题)? 当遇到确实是很困难的问题,可以去百度一下或Google一下 , 也可以去请教公司的资深技术人员或专家,或者召开小范围的技术专题讨论会议,采用脑力激荡的方法试着找找答案 , 这样才能提高工作的效率 。4、召开架构设计评审会议进行同行评审 。架构设计评审是极其重要的一环,我曾将其形容为“七种武器”中的离别钩,就是因为在会议上 , 同行们可能会提很多问题或意见,而且很多意见很尖锐,所以一定要虚心接受 , 并做好记录,正所谓“良药苦口利于?。已阅娑谛小?。在评审会议之前 , 我们要完成很多准备工作,最好是能准备一份简明扼要的电子简报,把最重要的问题列出来,这样在进行评审会议时 , 就不会漫无目的,在会议前就将这些资料发给与会人员,请他们抽空先了解一下,在会议进行时,要学会控制会议的进度,提高会议的效率 。5、针对关键Use case在设计的架构上实现功能来验证架构 。对于架构设计的验证也是一项十分重要的工作,其验证技术有很多种,在我们公司通常会采用Sample的形式 , 即XP中所说的迭代0,RUP中所说的切片 。这样做的好处是既可以从实际的产品角度出发来有效的验证架构是否满足要求,又可以比抛弃型原型验证技术节省成本 。这个Sample绝不是我们在解决架构设计中的问题时拿来做实验的一些代码的拼凑,而是完整的实现某一关键Use case的符合架构设计和一系列规范的可交付的代码及相关文档 。同时,这个Sample可以作为你在给大家讲解或培训架构时的教材,也可以作为开发人员使用此架构进行开发的蓝本 , 甚至是只需要复制粘贴,加上简单的修改即可 。6、交付给客户Review 。这一环节,在很多公司可能并不存在,因为他们的软件架构并不一定需要客户Review,但像我们这种做服务的公司,最重要的就是客尊 , 落实到软件架构设计这一活动 , 就是让客户理解并接受你的架构设计方案,同时,客户也会起到帮你验证架构的作用 。通常 , 我们的架构得到客户的认可后,便可进入大规模的开发 。在交付给客户Review时,通常

良好的软件体系结构设计有什么好处

文章插图
以上就是关于良好的软件体系结构设计有什么好处的全部内容,以及良好的软件体系结构设计有什么好处的相关内容,希望能够帮到您 。