高级软件架构设计.ppt_第1页
高级软件架构设计.ppt_第2页
高级软件架构设计.ppt_第3页
高级软件架构设计.ppt_第4页
高级软件架构设计.ppt_第5页
已阅读5页,还剩230页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,高级软件架构设计,MSN :LPTSTR 512 Mail3360LPTSTR,康凯,1,2,目录, 单元1:软件生命周期和软件体系结构导论单元2:技术体系结构观点-面向对象编程的原则和模式24用GRASP模式指导设计27领域模型47面向对象设计的基本原则71单元3:用统一建模语言辅助系统分析和设计103介绍统一建模语言和分析常见困难问题103用RUP统一建模语言建模和分析117单元4:设计模式和软件设计思想131设计模式132常见软件体系结构风格分析和适用性第5单元:体系结构设计实践第1单元:软件生命周期和软件体系结构导论第4单元:信息技术产业的人才结构和软件架构师知识系统的定位软件架构

2、师应该掌握软件体系结构设计软件工厂的特征、层次、主要理论、方向和趋势,以实现软件开发的产业化。 软件架构师的定位,系统架构师的职责:1。了解系统的业务需求,制定系统的总体框架(包括技术框架和业务框架)2。培训系统框架的相关技术和服务,指导开发,解决系统开发和运行中的各种问题。系统架构师的目的是在系统级别上掌握系统的重用、扩展、安全性、性能、可伸缩性和简洁性。系统架构师的能力要求:首先,与系统架构相关的知识和经验。第二,较强的自学、分析和解决问题的能力。第三,写作,交流和表达,以及训练。a,6,角色软件架构师定义了领导系统的整体分析、设计和实施,以及负责软件架构和关键技术决策的角色。负责领导和协

3、调技术活动(分析、设计和实施等。)在整个项目中推动重大的技术决策,并最终表达对确定软件体系结构和系统的相关体系结构有重要意义的方面。包括系统需求、设计、实施和部署,确定设计要素的分组和这些主要分组之间的接口,为技术决策提供规则,平衡各利益相关方的不同关注点,解决技术风险,并确保相关决策得到有效沟通和理解、评估和接受。软件体系结构实现的系统需求评估和确认。专业技能和技术全面、成熟、成熟,有很强的洞察力和丰富的经验,缺乏完整的信息。具有战略性和前瞻性思维能力,善于把握全局,能够在更高的抽象层次上思考。在项目开发的所有问题领域都有经验,包括彻底理解项目需求和执行软件工程活动,如分析和设计。具备领导素

4、质,能够在团队中推进技术工作,并在项目压力下做出坚实的关键决策。具有优秀的说服、鼓励和指导沟通技巧,赢得项目成员的信任。a,9,以目标导向和积极的方式关注项目结果,不带任何情绪。建筑师应该是项目背后的技术驱动力,而不是精通建筑设计理论、实践和工具,并掌握各种参考架构、主要可重用架构机制和模式的建筑师或梦想家(追求完美)。具备系统设计者的所有技能,但范围更广,抽象程度更高。作为整个软件系统结构的总设计师,软件架构师的知识体系、技能和经验决定了软件系统的可靠性、安全性、可维护性、可扩展性和可移植性。因此,一个优秀的软件架构师必须拥有丰富的知识、技能和经验。通过比较软件架构师和系统分析师在软件开发中

5、的职责和角色,不难发现软件架构师和系统分析师所必需的知识体系是不同的。系统分析员的主要职责是需求分析、开发管理、操作和维护等。而软件架构师的主要工作是架构和设计。因此,在系统分析师必须具备的知识系统中,对系统架构和设计的知识系统要求相对较低;然而,软件架构师在需求分析、项目管理、操作和维护方面的知识要求相对较低。知识信息系统集成知识系统软件架构知识系统成为一名合格的软件架构师。MFC、MSF、MOF、RUP、J2EE、Spring、SOA、JUnit、ORM、软件架构师在做什么?想、想、再想,深刻理解和准确把握施工业务需求,分析所有可见的问题、障碍和风险,充分参考现有成功方案,降低风险,交流、

6、讨论、博弈、提问,不断质疑提出的方案,避免漏洞,广泛听取各级意见,开拓思路,反复质疑,逐步完善现有设计理念,在实施前验证设计方案的正确性。a,14。软件架构师的知识结构,软件知识,对信息技术建设生命周期的各个环节有深刻的理解,包括系统/模块逻辑设计、物理设计、代码开发、项目管理、测试、发布、操作和维护等。掌握在1-2个主流技术平台上开发系统的方法。了解各种应用系统的结构。了解建筑设计的主要理论、流派和框架。一、十五、软件架构师的知识结构和业务知识,并深刻理解系统建设的业务需求。了解系统的非功能性需求以及操作和维护需求。了解企业信息技术公共设施、网络环境和外部系统。一、16、软件架构师的思维模式

7、,基于框架的思维架构设计的层次(企业、应用等),它的生命周期(什么、为什么、在哪里、如何、何时等)的成功经验和方法指导,合理地把握技术细节,把握各个层次的内容,合理地忽略不必要的技术细节。a、17、软件架构师的思维方式、风险管理意识、成功经验、避免不必要的风险、多面性、多维性、多向性、包容性、避免排他性的分析、质疑、抽象和归纳,都没有绝对好的架构设计。只有比较优秀的解决方案,一、信息系统综合知识体系,十八、(1)计算机系统综合知识:包括计算机组成和体系结构、嵌入式系统和操作系统。(2)系统配置和方法:包括系统配置技术和系统性能的知识。(3)典型的系统应用:包括网络应用、数据库应用和多媒体系统的

8、知识。(4)系统开发:包括编程语言、软件开发方法、需求分析和设计方法、测试评估方法、开发管理、应用系统建设、系统审计、外部资源使用和基于中间件的开发。(5)安全和可靠性技术:包括数据安全和保密性、防入侵和防病毒、容错技术、可靠性模型和分析技术、系统可靠性、保护私有信息的安全规章制度。标准化包括标准化基础知识、标准化分类、编码标准、数据交换标准、软件工程标准、信息安全标准、基于组件的软件标准和标准化组织。(7)信息化基础:包括政府信息化和电子政务、企业信息化和电子商务、信息化相关法律法规等知识。(8)数学和英语:至少具有大学或以上数学和英语基础知识。,a,20,软件体系结构知识体系,(1)系统计

9、划:包括项目建议书和可行性分析、系统方案制定、评估和改进、新旧系统的分析和比较、现有软件、硬件和数据资源的有效利用等。(2)软件架构设计:包括软件架构的概念、软件架构和设计、架构风格、特定领域的架构风格、基于架构的软件开发方法、架构评估、软件产品线和系统演进等。(3)设计模式:包括设计模式的概念、组成、分类和实现,以及模式和软件架构之间的关系。(4)系统设计:包括流程设计、人机界面设计、文件和存储设计、数据库设计、网络应用系统设计、系统运行环境集成和设计、中间件和应用服务器、性能设计和性能评估等。(5)软件建模:包括定义问题和解决模型、结构化系统建模和数据流图、面向对象系统建模、数据库建模和逆

10、向工程。分布式系统设计:包括分布式通信协议设计、基于对象和web的分布式设计、基于消息和协作的分布式设计以及异构分布式系统的互操作性设计。(7)嵌入式系统设计:包括任务调度和多任务设计的实现、中断处理和异常处理、嵌入式系统开发和设计等。(8)系统可靠性分析和设计:包括系统故障模型和可靠性模型、系统可靠性分析和可靠性计算、提高系统可靠性的措施、系统故障对策、系统备份和恢复等。(9)系统安全和保密设计:包括系统访问控制技术、数据完整性、数据和文件加密、通信安全和系统安全设计等。(10)复杂架构设计:包括操作系统、编译器和大型基础库的架构。根据软件架构师的职责、角色和知识体系,从实用的角度来看,合格

11、的软件架构师应具备以下能力和经验:(1)8年以上软件项目开发的实际工作经验,包括至少3年的代码编写工作经验和4年基于面向对象和组件开发方法的软件产品设计经验。(二)具有5个以上大中型开发项目的总体规划和方案设计经验,以及大中型应用系统开发实施的成功案例。(3)深刻理解相关技术标准,掌握软件工程标准和规范。(4)深刻理解并熟练应用。Net或Java技术和整个解决方案,掌握网络服务和流行的架构。a,23,(5)对设计模式有深刻的理解,并能在此基础上设计出适合产品特性和质量属性的框架。(6)具有面向对象的分析、设计和开发能力,精通UML和XML,并精通使用Rational Rose和PowerDes

12、igner等工具进行设计。(7)有良好的团队合作意识,有较强的沟通能力和书面表达能力。(8)有较强的精力和学习能力,能快速掌握新技术和新方法。A,24,单元2:技术架构视图-面向对象编程原理和模式,A,25,A,26,A,27,使用GRASP模式来指导设计,A,28,A,29,A,30,A,31,A,32,A,33,32,45,A,46,A,47,域模型,A,48,从EJB到轻量级框架的分层域模型,A,49,分层结构,呈现业务层业务层外观业务层核心域对象管理/业务层为了确定行为,我们必须确定他们的责任和合作。一个类的责任意味着这个类想做、知道或决定的一切都是通过一个或多个方法完成的。类中有属性

13、和关联,协作就是调用其他关联类来履行自己的职责。价值对象-没有身份,没有行为。例如,地址类。工厂-定义创建实体的方法,封装实例化的对象并将一些相关的对象注入。存储库管理实体的集合,主要包括查找和删除实体的方法。实现类可以调用持久层的服务(如Hibernate、Ibatis)来实现整个应用程序的工作流。服务包含无法分配的单个实体的行为,并且由作用于多个对象的方法组成。例如,您可以调用存储库来查找实体对象并将它们委托给这些对象。服务与facade相似,但不同的是,它不处理以下事情:1)执行事务。2)收集返回到表示层的数据。3)解耦对象。4)其他事情。服务可以说是业务的协调者,业务逻辑可以分散到实体

14、对象中。a,51,域模型,失血模型,贫血模型,充血模型,血液肿胀模型,a,52,失血模型,DO只具有属性和它的getter/setter方法,没有任何业务逻辑。缺点:行为和数据是分开的,这在许多情况下导致维护和理解的困难。a,53,贫血模型,DO包含独立于持久性的域逻辑;依赖于持久性的域逻辑属于服务层。服务(业务逻辑、事务封装)DAO DO具有各层单向依赖、结构清晰、易于实现和维护的优点。设计简单易行,底层模型非常稳定。缺点:DO部分的持久性逻辑放在服务层,这是不够的。服务层太重。a,54,拥塞模型,类似于贫血模型,在如何划分业务逻辑上是不同的:大多数业务逻辑应该放在DO(包括持久逻辑)中,而

15、服务层很薄,它只封装事务和少量逻辑,不处理DAO层。服务的优势(事务封装)DO DAO:面向对象的服务层非常薄,它只作为一个门面,不处理DAO。缺点:道和道相互依赖。如何划分服务层逻辑和域层逻辑没有明确的规则,这取决于设计者自己的理解。服务层封装事务,并且必须为所有DO逻辑提供相应的事务封装方法,从而重新定义所有域逻辑。服务的事务封装相当于将面向对象的域逻辑转换成流程的服务事务脚本。领域层拥塞模型实现的面向对象在服务层变得面向过程。56,血腥模型,取消了服务层,只留下DO和DAO层,并在DO的域逻辑上封装事务。事务封装、业务逻辑的优势道(RoR甚至被合并到一个层):层次化的简化符合面向对象的缺点:服务逻辑也被强制加入到DO中,这导致了DO的不稳定性。DO向web层暴露了太多的信息,这可能会导致不必要的耦合。原则:业务对象封装内部业务逻辑a,57,而应用程序服务封装外部业务逻辑。a,58,EJB到轻量级框架,EJB POJO(业务逻辑)轻量级框架(Hibernate,JDO,iBATIS(持久性),Spring(事务管

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论