[转]应用软件系统架构设计的“七种武器”

简介:

作者:张明星 出处: dev2dev.bea.com.cn
 
    对于软件架构这一概念,有太多的版本,目前在业界由大师级人物或组织提出的对这一概念的阐述就超过十种以上,我个人比较赞同RUP(Rational Unified Process)中对软件架构的定义,即软件架构包含了关于以下问题的重要决策:

  • 软件系统的组织;
  • 选择组成系统的结构元素和它们之间的接口,以及当这些元素相互协作时所体现的行为;
  • 如何组合这些元素,使它们逐渐合成为更大的子系统;
  • 用于指导这个系统组织的架构风格:这些元素以及它们的接口,协作和组合。

    本文我们并不是要探讨软件架构的定义,只是想基于上面这种定义来谈谈在软件系统架构设计的过程中,我们会常常用到的一些“武器”。

长生剑:UML(UML2)

    UML(Unified Modeling Language)这一建模语言已经成了软件设计人员的必备工具,几年前就曾有过“苦干年之后,不通UML者无法染指软件开发”的言论,虽然从目前来看,UML的应用还并未达到如此程度,但使用UML最大的好处在我看来就是减少了沟通的成本,让我们把一些想法能够很清晰直观的表达出来,在设计的过程中,使用得较多的是用例图,类图,组件图,部署图和时序图。当下,各种设计和建模工具对UML都有良好的支持,UML本身也是一门不断发展的语言,现在UML2已经成为主流。UML本身也极为简单,对于初学者来说可能有些概念比较难懂,可以结合实际的程序来理解,这样会事半功倍,但我认为也不会太高深,熟练使用就达到了应有的境界。

    剑谱:

    UML官方网站 http://www.uml.org/

    《UML基础、案例与应用(第3版)》,此书作为UML入门较为适合,书中也以详实案例来教会我们怎么使用UML。

孔雀翎:Office

    架构设计的成果就是两项重要的产出物,一是框架代码,二是架构设计文档。在架构设计文档中,除了包括一些UML图之外,还有一些UML无法表示的图表,采用Office来制作和撰写这份文档再合适不过,最常用的就是Word,Excel和Visio。

    掌握这门“武器”不难,可利用这门武器把各类文档写好就难了,除了专业能力,良好的文字表达能力也是十分重要的,一个成熟的架构设计师在我看来应该也能写得一手好文章,最基本的要求就是能够准确的表达你想要表达的意思。
秘籍:

    《Word排版艺术》,在大陆十分有名的台湾IT作家候捷的作品(之所以这样说是我曾经跟我们公司在台北的同事聊起过此人,几乎没人知道此人),此书一度借着他的名气卖得很火,因为他出书很多,在这方面也有很多优秀的经验,值得借鉴。

碧玉刀:IDE(IBM RSA或Borland Together)

    通常我们所说的IDE(Integration Development Environment)是指集成开发环境,在这里我借用这个词,指的是集成设计环境。随着软件业的发展和进步,支持一整套开发流程的全系列软件越来越多,越来越好,这其中以IBM Rational Software Delivery Platform最为突出,RSA(Rational Software Architect)就是其中一项,作为建模工具,对领域模型的设计,UML及SOA(Service-Oriented Architecture)等都有较好的支持,同时可以与RMC(Rational Method Composer)结合,充分发挥MDA(Model Driven Architecture)的思想,把RUP流程发挥到极至。

    不过发现RSA也有不好用和不听话的时候,最新的RSA V7.0里面的反向工程就不是很好用,反向过来后很多关系消失了。
Together作为老牌儿的建模工具,也有着先进的思想和设计,其核心包括四个方面:只维护单一模型库(Live Source技术);符合最小的元模型;扰乱改变模型;支持持续的质量测量。同时,对正反向工程也有良好的支援。也正是因为其有自己的思想和独特的一套,Borland公司也才会将其并入旗下。

    刀谱:

    IBM RSA之《教学指导》,Eclipse平台都有这东东,大家自己去发掘吧,通俗易懂。

    IBM RSA相关的Redbook(http://www.redbooks.ibm.com/),大名鼎鼎的红宝书,相信入行不久就一定会知道的(其实在大学的时候就人有看什么GRE的红宝书,TOEFL的红宝书,估计红宝书一词来源于此)

    《Getting Started Guide for Borland Together 2006 for Eclipse》官方教你怎么玩转Together,权威信不用质疑,英文版,但看起来并不难懂。

多情环:架构设计类经典书籍

    架构设计类好书不多,但也不是没有,我也没有认真读过几本,但觉得有那么两本还值得推荐:《Pattern Of Enterprise Application Architecture》,Martin Flower的经典之作,几乎是架构设计人员的必读之书,详细论述了企业应用各layers上的模式和设计思想;《Large-Scale Software Architecture》,告诉你什么样的人才是架构师,然后以构件为粒度深入探讨架构的方方面面,同时用UML呈现,也是一份UML在架构设计中应用的最佳实践;《J2EE Core Pattern》,设计Java平台应用系统的经典参考书,对GOF(Gong Of Four)的设计模式在Java中的应用和扩展进行了深入的讨论,看看你的设计中可以运用其中的哪些核心模式。

    秘籍:

    有一套适合自己的学习知识的方法,对于IT行业的人来说,要看的书籍和资料远远超过其他行业,面对如此繁杂的知识,要有自己的方法学会去整理,要做到看必有收获,否则不如去温习古龙或是金老爷子的小说。我常常喜欢用Mind Manager等软件把读书笔记和心得记录下来,也常常回过头来看看这些笔记,以前喜欢手抄,信奉什么好记心不如乱笔头,但后来发现有些落后,不能与时俱进,方式肯定会被淘汰,人自然也会被踢出局。

霸王枪:Internet/Intranet

    当今时代,离开网络这条枪对于IT从业人员来说寸步难行,大多公司目前都还没有自己完善的Intranet,公司知识库的资料与Internet的资源相比可谓是小巫见大巫,但千万不要忽视了公司通过SEPG(Software Engineering Process Group)或相似职能部门积累起来的知识,这些东西往往关注于行业,领域或适合于你所在公司的实际状况,从这个方面考虑的话,其力量超越Internet,是很好的模板。常常我们会遇到自己不能解决的问题,这个时候就需要去网上百度一下;在架构设计文档中,我总喜欢弄个术语表,而对于有些术语的解释,你会发现百度原来也是一本好辞典。

    枪谱:

    百度,谷歌

    利用搜索引擎,可以快速的获得自己需要的资料,大幅提高效率,也不至于让你淹死在浩如烟海的信息海洋中。

    之所以将百度写在前面,是因为我的个人习惯,常常在搜索的时候会优先考虑用百度,在百度搜不到的情况下才去谷歌,百度出来的大都是中文资料,对于母语是中文的人来说,会提高我们的阅读速度和理解效率,命中率较高,较好的分词技术,值得推荐。谷歌当然不错,相信不用多说。

离别钩:评审

    邀请你公司的架构设计同行,资深技术专家,公司领导,或行业中的其他专家,还有你的PM(Project Manager),充分利用团队的力量,对于你所做的架构设计的初稿进行评审,在评审前先把重点部分,特别是你想跟大家一起讨论更好解决方式的部分整理成简单的演示文稿(PPT)发给大家,同时把详细资料也发给大家,请大家在有空的时候提前了解。在评审会议时,要先向与会人员介绍一下项目背景,需求,千万不要忘了非功能性需求(包括性能,安全,可扩展性等方面),然后再从重点的议题开始与大家一起讨论,这样可提高效率。

    秘籍:

    虚心听取各方面意见。评审时大家会提出各种各样的问题,有时候可能会提出各种让你很生气的问题,这个时候一定要克制住自己的情绪,虚心的听取他们提出的建议,对各种问题进行解释,让他们真正明白你的意思,同时也从他们那里获取有用的建议。

拳头:激情

    这也是与人最密切相关的一样武器,拳头是你身体密不可分的一部分,激情也是你思想密不可分的一部分,要想把架构设计做好,有做好一件事的激情是必不可少的,你要对新知识,新技术充满好奇心,要有创新精神,在前人的基础上,结合自己的所学去进行一些小的创新,其实人类的进步也就是靠这样的一次次的小创新,以最大程度的确保架构的稳定性和可扩展性,同时也尽可能的提高程序开发的效率。

    秘籍:

    确定自己的发展方向就是做一个技术专家。如果你对自己的职业规划有一些想法,不妨可以考虑一下这个方向,国外的很多大师级的人物因技术牛而成就了卓越的事业,国内目前也有向这个方向发展的趋势。

    我认为做一个技术专家与向管理方向发展并不冲突,技术专家也可以是管理行家,软件行业的很多人都是“技术优则管理”,否则你在管理者的位置上却不懂得基本的技术,在各方面都会遇到绊脚石,也没有人真正的服你。

    正如古龙所说,“武器是死的,人却是活的”。“武器”是否能令你觉得神奇刺激,主要还得看使用它的是什么人,虽然架构设计不是人人都可以做的,但我相信这几种武器通过大家自己的努力一定可以掌握。


   本文转自loose_went博客园博客,原文链接:http://www.cnblogs.com/michaelxu/archive/2008/09/30/1302347.html ,如需转载请自行联系原作者
相关文章
|
3月前
|
人工智能 自然语言处理 开发工具
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
本文介绍统一多模态 Transformer(UMT)在跨模态表示学习中的应用与优化,涵盖模型架构、实现细节与实验效果,探讨其在图文检索、图像生成等任务中的卓越性能。
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
|
2月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
491 3
|
4月前
|
存储 机器学习/深度学习 缓存
软考软件评测师——计算机组成与体系结构(分级存储架构)
本内容全面解析了计算机存储系统的四大核心领域:虚拟存储技术、局部性原理、分级存储体系架构及存储器类型。虚拟存储通过软硬件协同扩展内存,支持动态加载与地址转换;局部性原理揭示程序运行特性,指导缓存设计优化;分级存储架构从寄存器到外存逐级扩展,平衡速度、容量与成本;存储器类型按寻址和访问方式分类,并介绍新型存储技术。最后探讨了存储系统未来优化趋势,如异构集成、智能预取和近存储计算等,为突破性能瓶颈提供了新方向。
|
18天前
|
人工智能 JavaScript 前端开发
GenSX (不一样的AI应用框架)架构学习指南
GenSX 是一个基于 TypeScript 的函数式 AI 工作流框架,以“函数组合替代图编排”为核心理念。它通过纯函数组件、自动追踪与断点恢复等特性,让开发者用自然代码构建可追溯、易测试的 LLM 应用。支持多模型集成与插件化扩展,兼具灵活性与工程化优势。
87 6
|
4月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
252 0
|
1月前
|
人工智能 Cloud Native 中间件
划重点|云栖大会「AI 原生应用架构论坛」看点梳理
本场论坛将系统性阐述 AI 原生应用架构的新范式、演进趋势与技术突破,并分享来自真实生产环境下的一线实践经验与思考。
|
1月前
|
机器学习/深度学习 人工智能 vr&ar
H4H:面向AR/VR应用的NPU-CIM异构系统混合卷积-Transformer架构搜索——论文阅读
H4H是一种面向AR/VR应用的混合卷积-Transformer架构,基于NPU-CIM异构系统,通过神经架构搜索实现高效模型设计。该架构结合卷积神经网络(CNN)的局部特征提取与视觉Transformer(ViT)的全局信息处理能力,提升模型性能与效率。通过两阶段增量训练策略,缓解混合模型训练中的梯度冲突问题,并利用异构计算资源优化推理延迟与能耗。实验表明,H4H在相同准确率下显著降低延迟和功耗,为AR/VR设备上的边缘AI推理提供了高效解决方案。
279 0
|
24天前
|
机器学习/深度学习 自然语言处理 算法
48_动态架构模型:NAS在LLM中的应用
大型语言模型(LLM)在自然语言处理领域的突破性进展,很大程度上归功于其庞大的参数量和复杂的网络架构。然而,随着模型规模的不断增长,计算资源消耗、推理延迟和部署成本等问题日益凸显。如何在保持模型性能的同时,优化模型架构以提高效率,成为2025年大模型研究的核心方向之一。神经架构搜索(Neural Architecture Search, NAS)作为一种自动化的网络设计方法,正在为这一挑战提供创新性解决方案。本文将深入探讨NAS技术如何应用于LLM的架构优化,特别是在层数与维度调整方面的最新进展,并通过代码实现展示简单的NAS实验。
|
2月前
|
Web App开发 Linux 虚拟化
Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
156 0
Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
|
2月前
|
机器学习/深度学习 数据采集 存储
技术赋能下的能源智慧管理:MyEMS 开源系统的架构创新与应用深化
在全球能源转型与“双碳”战略推动下,MyEMS作为基于Python的开源能源管理系统,凭借模块化架构与AI技术,助力重点用能单位实现数字化、智能化能源管理。系统支持多源数据采集、智能分析、设备数字孪生与自适应优化控制,全面满足国家级能耗监测要求,并已在制造、数据中心、公共建筑等领域成功应用,助力节能降碳,推动绿色可持续发展。
79 0