`

应用程序架构指南 第一部分 第一章 应用程序架构基础

阅读更多



 软件架构基本概念
 

软件架构通常被描述为组织或系统的结构,而系统是一个完成特定功能或功能集合的组件集合。换句话说,架构的重点是组织组件以支持特定功能。这种功能的组织被称为将组件分组以纳入到关注领域。 

为什么我们需要架构? 

像任何其他复杂的结构一样,软件必须建立在坚实的基础。没有考虑关键情景,没有为共同的问题做设计,或没有充分意识到关键决定带来的长期后果,都可以使你的应用程序处于危险之中。现代的工具和平台有助于简化应用程序的构建任务,但它们并没有取代根据您的具体情况设计应用程序的需求。拙劣的架构暴露的风险包括软件是不稳定的,不能支持业务需求,或者部署到生产环境时,应用程序甚至可能无法工作。 

构思软件架构时,考虑下面的高层次的关注:

>应用程序会怎样部署到生产环境?

>用户将如何使用该应用程序?

>质量属性要求是什么,例如安全性,性能,并发性,国际化和配置?

>架构的趋势是什么,是现在还是部署后,可能影响应用程序?

架构的目标

应用程序架构寻求在业务需求和技术需求之间构建一个梁,通过理解用例,然后想方设法在软件中实现这些用例。架构的目标是确定影响应用程序结构的需求。良好的架构通过构建一个技术解决方案降低业务风险。优秀的设计具有足够的灵活性,以便能够处理,随着时间的流逝,将发生在硬件和软件技术,以及用户场景和需求上的自然的变化。架构师必须考虑设计决策,质量属性之间的内在权衡(如性能和安全性),以及需要讨论用户,系统和业务需求的权衡的全部影响。

记住,架构应该:

>暴露系统的结构,但隐藏实现的细节。

>实现所有的用例场景。

>尝试解决各种各样的利益相关者的关注问题。

>既处理功能需求,也处理质量需求。

架构方法

有任何架构必须解决的关键决策,不管架构方法。至少,你必须确定您正在构建的应用程序类型,将要使用的架构风格,以及你将如何处理横切关注点(cross-cutting concerns)。本指南中,我们为框架使用了架构基准,通过必须在架构中处理的不同领域。架构基准显示在下面的图表。 



 

除了架构基准之外,可以使用下面的方法来帮助确定您的体系结构。第一步是确定你计划构建的应用程序类型。接下来,您必须了解应用程序将被怎样部署。一旦你知道您正在构建的应用程序是什么类型,和如何部署,你可以开始往下考虑架构,以便确定您将使用的风格和技术。最后,你必须考虑如何将质量属性和横切关注点(cross-cutting concerns)纳入您的系统设计。 

 

横切关注点表示设计中的关键领域,它不关联于应用程序中某一个具体的层。例如,您可能希望在表示层,业务层和数据访问层缓存数据。关键的横切关注点: 认证,授权,缓存,通信,异常管理,检测和日志。 

设计架构

创建一个灵活的架构设计,考虑以下问题:

>什么是架构的基础部分,如果它们出错了,就代表着最大的风险?

>架构的哪部分,最有可能发生变化,或哪部分的设计,可以推迟到后来有很小的影响再处理?

>什么是您的主要假设,以及你将如何测试它们?

>哪些条件可能需要你重构设计?

关键架构原则 

设计架构时,考虑以下主要原则:

>持续改变。只要有可能,设计应用程序使它可以随时间发生改变以处理新的需求和挑战。

>分析模型并减少风险。使用威胁模型来理解风险和脆弱点。在适当情况下,使用设计工具和建模系统,如统一建模语言(UML)。

>模型和视图是沟通和协作工具。设计原则和设计变更的有效的沟通对好架构是至关重要的。使用模型和其他可视化的工具有效的沟通设计,使设计变更快速沟通。

>确定关键工程决策.使用本指南中的架构框架,理解关键工程决策和最常出现错误的领域。在第一时间获得这些关键决策,使该设计更为灵活,并不太可能被变化破坏。

  • 大小: 31.5 KB
分享到:
评论

相关推荐

    Windows2000 服务器端应用程序开发设计指南

    JAWS:高性能Web服务器构架 08-06-13 ACE应用-第3章 应用模式语言开发可扩展ORB中间件 08-05-06 编程精粹 - 多年前的笔记 08-05-06 Windows2000 服务器端应用程序开发设计指南-目录 08-05-06 Win2000服务器端应用...

    BlackBerry 应用程序开发者指南 第二卷

    BlackBerry应用程序开发者指南第二卷是一本专为那些希望在BlackBerry平台上构建和发布应用程序的开发者设计的详尽参考资料。这份指南深入介绍了BlackBerry API的使用,涵盖了从基础概念到高级特性的广泛内容,旨在...

    autocad完全应用指南.autolisp+dcl+visuallisp程序设计篇(2011年4月第一版).part4.rar

    第一章autolisp主角潇洒登场 第二章autolisp的关键、基本结构与语法 第三章快速分类浏览autolisp功能函数 第四章新手上路(一)——万丈高楼平地起 第五章新手上路(二)——参数设计关键技巧 第六章对象属性的取得与活...

    ExtJS Web应用程序开发指南(第2版).zip

    ExtJS是一种基于JavaScript的开源富客户端框架,专用于构建交互式和桌面级的Web应用程序。在《ExtJS Web应用程序开发指南(第2版)》中,开发者可以深入了解如何利用这个强大的框架来创建功能丰富的Web应用。这本书...

    EL9800应用程序指南

    根据提供的文档信息,我们可以归纳出一系列与EL9800应用程序相关的知识点,这些知识点主要围绕着EL9800的应用程序指南、安装设置以及注意事项展开。 ### 一、EL9800概述 #### 1.1 标题解读 **EL9800应用程序指南**...

    autocad完全应用指南.autolisp+dcl+visuallisp程序设计篇(2011年4月第一版).part1.rar

    第一章autolisp主角潇洒登场 第二章autolisp的关键、基本结构与语法 第三章快速分类浏览autolisp功能函数 第四章新手上路(一)——万丈高楼平地起 第五章新手上路(二)——参数设计关键技巧 第六章对象属性的取得与活...

    AutoCAD完全应用指南—AutoLISP DCL Visual LISP程序设计篇(随书光盘)

    第1篇(第1~10章)为autollsp程序设计基础篇,主要介绍了autollsp的基本结构、语法、功能函数、对象属性、循环、判断式、子程序、选择集、符号表、读文件以及写文件等autolisp程序设计的相关知识与技巧。第2篇(第11章...

    autocad完全应用指南.autolisp+dcl+visuallisp程序设计篇(2011年4月第一版).part2.rar

    第一章autolisp主角潇洒登场 第二章autolisp的关键、基本结构与语法 第三章快速分类浏览autolisp功能函数 第四章新手上路(一)——万丈高楼平地起 第五章新手上路(二)——参数设计关键技巧 第六章对象属性的取得与活...

    《Extjs Web应用程序开发指南》代码(全)

    《Extjs Web应用程序开发指南》是一本专注于使用Extjs框架进行Web应用开发的专业书籍,而提供的压缩包文件包含了书中各个章节的源代码示例。这些示例代码是学习Extjs框架的重要参考资料,可以帮助读者深入理解Extjs...

    Windows2000驱动程序设计指南卷5

    首先,书中通过“第一章 网络驱动程序设计指南的向导”引导读者进入这个复杂但至关重要的领域。接着,第二章“内核模式驱动程序的网络结构”是关键章节,它将Windows 2000的网络结构与开放系统互连(OSI)模型相结合...

    《高质量程序设计指南》林锐.rar

    第一章 高质量软件开发之道 第二章 做好程序员 第三章 编程语言发展简史 第四章 C++面向对象程序设计方法概述 第二部分 C++/C编程规范 第五章 文件结构 第六章 程序的版式 第七章 命名规则 第八章 表达式与基本语句 ...

    Linux应用程序开发指南

    第一部分介绍Linux GUI编程架构以及编程基础知识,第二部分介绍Linux 编程常用C语言函数库glibc、构件库Gtk+、Gnome,第三部分介绍Linux下的GUI生成器Glade,第四部分介绍Linux编程调试工具gdb及xxgdb。第五部分包括...

    LINUX应用程序开发指南:使用GTK+ GNOME库pdf.zip

    第一部分介绍Linux GUI编程架构以及编程基础知识,第二部分介绍Linux 编程常用C语言函数库glibc、构件库Gtk+、Gnome,第三部分介绍Linux下的GUI生成器Glade,第四部分介绍Linux编程调试工具gdb及xxgdb。第五部分包括...

    网络驱动程序设计指南

    第一章介绍了NIC微端口驱动程序的类型和功能,如网络接口卡支持、微端口驱动程序代码的特点,以及与NDIS库的交互。第二章详细讲解了微端口驱动程序的操作,包括初始化、注册、发送数据、接收数据、状态指示等,并...

    linux应用程序开发指南 使用gtk+ gnome库

    第一部分介绍Linux GUI编程架构以及编程基础知识,第二部分介绍Linux 编程常用C语言函数库glibc、构件库Gtk+、Gnome,第三部分介绍Linux下的GUI生成器Glade,第四部分介绍Linux编程调试工具gdb及xxgdb。第五部分包括...

    1java认识与首个应用程序发布

    学习Java的第一章通常会涵盖这些基础知识,为后续的面向对象编程、异常处理、集合框架、IO流、多线程、网络编程等进阶主题打下基础。Java还提供了丰富的库和框架,如Spring、Hibernate、MyBatis等,用于构建复杂的...

    Delphi.6应用开发指南-第一章(走进Delphi)

    ### Delphi.6应用开发指南-第一章(走进Delphi) #### Delphi简介 Delphi是一种强大的集成开发环境(IDE),特别适用于Windows平台的应用程序开发。它基于Object Pascal语言,结合了面向对象编程的优势,同时也...

    OPCDA服务器与客户程序开发指南 书籍及第二章第三章第四章源码

    4. **第二章:OPC DA架构和组件**:这一章可能会详细讲解OPC DA的基本架构,包括服务器、客户端、数据项、组等核心概念。还会介绍如何注册和管理OPC DA组件,以及COM组件的生命周期和事件模型。 5. **第三章:OPC ...

Global site tag (gtag.js) - Google Analytics